diff --git a/Source/Render/DX7/SurfaceDX7.cpp b/Source/Render/DX7/SurfaceDX7.cpp index f2456cd..6b6e5b2 100644 --- a/Source/Render/DX7/SurfaceDX7.cpp +++ b/Source/Render/DX7/SurfaceDX7.cpp @@ -31,8 +31,7 @@ namespace { return static_cast((value >> (channel.expansion & 31)) << (channel.shift & 31)); } - // OFFSET: 0x00543220 - // FUNCTION: fn_01787 +// INLINED std::uint16_t Color(DeviceOwnerDX7& owner, unsigned red, unsigned green, unsigned blue) { return static_cast(Channel(red, owner.red) + Channel(green, owner.green) + Channel(blue, owner.blue)); } @@ -229,6 +228,16 @@ void CSurfaceDX7::Stretch(int, int, int width, int height) { this->m_owner->renderTarget->Blt(&destination, this->m_surface, nullptr, DDBLT_WAIT, nullptr); } +// OFFSET: 0x00543220 +// FUNCTION: fn_01787 +std::uint16_t DeviceOwnerDX7::PackColor(int red, int green, int blue) { + return static_cast( + (static_cast(red >> (this->red.expansion & 31)) << (this->red.shift & 31)) + + (static_cast(green >> (this->green.expansion & 31)) << (this->green.shift & 31)) + + (static_cast(blue >> (this->blue.expansion & 31)) << (this->blue.shift & 31)) + ); +} + // OFFSET: 0x00543270 // FUNCTION: fn_01788 DWORD DeviceOwnerDX7::BlueMask() {