diff --git a/DDrawCompat/D3dDdi/Resource.cpp b/DDrawCompat/D3dDdi/Resource.cpp index 6eb2612..a9e89ca 100644 --- a/DDrawCompat/D3dDdi/Resource.cpp +++ b/DDrawCompat/D3dDdi/Resource.cpp @@ -1526,10 +1526,10 @@ namespace D3dDdi return; } - DDraw::PrimarySurface::updatePalette(); - if (isFullscreen) { + DDraw::PrimarySurface::updatePalette(); + const Int2 ar = m_device.getAdapter().getAspectRatio(); g_presentationRect = calculateScaledRect({ 0, 0, ar.x, ar.y }, DDraw::RealPrimarySurface::getMonitorRect()); auto& si = m_origData.pSurfList[0]; @@ -1544,6 +1544,8 @@ namespace D3dDdi } else { + Gdi::Palette::setHardwarePalette(Gdi::Palette::getSystemPalette().data()); + g_presentationRect = {}; Gdi::VirtualScreen::setFullscreenMode(false); Gdi::Cursor::setEmulated(false); diff --git a/DDrawCompat/Gdi/Palette.cpp b/DDrawCompat/Gdi/Palette.cpp index f5050ff..0ba8d8d 100644 --- a/DDrawCompat/Gdi/Palette.cpp +++ b/DDrawCompat/Gdi/Palette.cpp @@ -3,6 +3,8 @@ #include #include #include +#include +#include #include #include #include @@ -170,7 +172,10 @@ namespace } paletteInfo.isRealized = true; - std::memcpy(g_hardwarePalette, g_systemPalette, sizeof(g_hardwarePalette)); + if (!DDraw::RealPrimarySurface::isFullscreen() || !DDraw::PrimarySurface::s_palette) + { + std::memcpy(g_hardwarePalette, g_systemPalette, sizeof(g_hardwarePalette)); + } Gdi::VirtualScreen::updatePalette(g_systemPalette); return LOG_RESULT(count); }