diff --git a/Core/Compatibility.cpp b/Core/Compatibility.cpp index c6741b9383..590e0a96fc 100644 --- a/Core/Compatibility.cpp +++ b/Core/Compatibility.cpp @@ -53,6 +53,7 @@ void Compatibility::CheckSettings(IniFile &iniFile, const std::string &gameID) { CheckSetting(iniFile, gameID, "DrawSyncEatCycles", &flags_.DrawSyncEatCycles); CheckSetting(iniFile, gameID, "FakeMipmapChange", &flags_.FakeMipmapChange); CheckSetting(iniFile, gameID, "RequireBufferedRendering", &flags_.RequireBufferedRendering); + CheckSetting(iniFile, gameID, "RequireBlockTransfer", &flags_.RequireBlockTransfer); } void Compatibility::CheckSetting(IniFile &iniFile, const std::string &gameID, const char *option, bool *flag) { diff --git a/Core/Compatibility.h b/Core/Compatibility.h index 88960c725c..5354629bcb 100644 --- a/Core/Compatibility.h +++ b/Core/Compatibility.h @@ -53,6 +53,7 @@ struct CompatFlags { bool DrawSyncEatCycles; bool FakeMipmapChange; bool RequireBufferedRendering; + bool RequireBlockTransfer; }; class IniFile; diff --git a/UI/EmuScreen.cpp b/UI/EmuScreen.cpp index d03d862ba3..869c89171a 100644 --- a/UI/EmuScreen.cpp +++ b/UI/EmuScreen.cpp @@ -222,6 +222,11 @@ void EmuScreen::bootGame(const std::string &filename) { I18NCategory *gr = GetI18NCategory("Graphics"); host->NotifyUserMessage(gr->T("BufferedRenderingRequired", "Warning: This game requires Rendering Mode to be set to Buffered."), 15.0f); } + + if (PSP_CoreParameter().compat.flags().RequireBlockTransfer && g_Config.bBlockTransferGPU == false) { + I18NCategory *gr = GetI18NCategory("Graphics"); + host->NotifyUserMessage(gr->T("BlockTransferRequired", "Warning: This game requires Simulate Block Transfer Mode to be set to On."), 15.0f); + } } void EmuScreen::bootComplete() { diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index 42d542036f..3b5f1df4ce 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -211,6 +211,10 @@ void GameSettingsScreen::CreateViews() { renderingModeChoice->OnChoice.Handle(this, &GameSettingsScreen::OnRenderingMode); renderingModeChoice->SetDisabledPtr(&g_Config.bSoftwareRendering); CheckBox *blockTransfer = graphicsSettings->Add(new CheckBox(&g_Config.bBlockTransferGPU, gr->T("Simulate Block Transfer", "Simulate Block Transfer (unfinished)"))); + blockTransfer->OnClick.Add([=](EventParams &e) { + settingInfo_->Show(gr->T("BlockTransfer Tip", "Some games require that"), e.v); + return UI::EVENT_CONTINUE; + }); blockTransfer->SetDisabledPtr(&g_Config.bSoftwareRendering); graphicsSettings->Add(new ItemHeader(gr->T("Frame Rate Control"))); @@ -277,6 +281,10 @@ void GameSettingsScreen::CreateViews() { hwTransform->SetDisabledPtr(&g_Config.bSoftwareRendering); CheckBox *swSkin = graphicsSettings->Add(new CheckBox(&g_Config.bSoftwareSkinning, gr->T("Software Skinning"))); + swSkin->OnClick.Add([=](EventParams &e) { + settingInfo_->Show(gr->T("SoftwareSkinning Tip", "Reduce drawcalls and faster in games that use the advanced skinning technique, but some games slower"), e.v); + return UI::EVENT_CONTINUE; + }); swSkin->SetDisabledPtr(&g_Config.bSoftwareRendering); CheckBox *vtxCache = graphicsSettings->Add(new CheckBox(&g_Config.bVertexCache, gr->T("Vertex Cache"))); @@ -311,7 +319,7 @@ void GameSettingsScreen::CreateViews() { PopupMultiChoice *beziersChoice = graphicsSettings->Add(new PopupMultiChoice(&g_Config.iSplineBezierQuality, gr->T("LowCurves", "Spline/Bezier curves quality"), quality, 0, ARRAY_SIZE(quality), gr->GetName(), screenManager())); beziersChoice->OnChoice.Add([=](EventParams &e) { if (g_Config.iSplineBezierQuality != 0) { - settingInfo_->Show(gr->T("LowCurves Tip", "This option will significantly improve/reduce the quality of rendered splines and bezier curves"), e.v); + settingInfo_->Show(gr->T("LowCurves Tip", "Improve/Reduce the quality of rendered splines and bezier curves"), e.v); } return UI::EVENT_CONTINUE; }); @@ -321,6 +329,7 @@ void GameSettingsScreen::CreateViews() { CheckBox *tessellationHW = graphicsSettings->Add(new CheckBox(&g_Config.bHardwareTessellation, gr->T("Hardware Tessellation"))); tessellationHW->OnClick.Add([=](EventParams &e) { bezierChoiceDisable_ = g_Config.bSoftwareRendering || g_Config.bHardwareTessellation; + settingInfo_->Show(gr->T("HardwareTessellation Tip", "Using hardware to tessellate, can't work together with Spline/Bezier curves setting "), e.v); return UI::EVENT_CONTINUE; }); tessHWEnable_ = IsBackendSupportHWTess() && !g_Config.bSoftwareRendering && g_Config.bHardwareTransform; @@ -357,7 +366,11 @@ void GameSettingsScreen::CreateViews() { CheckBox *deposterize = graphicsSettings->Add(new CheckBox(&g_Config.bTexDeposterize, gr->T("Deposterize"))); deposterize->OnClick.Add([=](EventParams &e) { - settingInfo_->Show(gr->T("Deposterize Tip", "Fixes small in-texture glitches that may happen when the texture is upscaled"), e.v); + if (g_Config.bTexDeposterize == true) { + settingInfo_->Show(gr->T("Deposterize Tip", "Fixes small in-texture glitches that may happen when the texture is upscaled"), e.v); + } else { + settingInfo_->Show(gr->T("Deposterize Tip", "You may seem to have some artifacts in the game if you uncheck that after you have set the Upscale Level"), e.v); + } return UI::EVENT_CONTINUE; }); deposterize->SetDisabledPtr(&g_Config.bSoftwareRendering); diff --git a/assets/compat.ini b/assets/compat.ini index 7f5e16dc6f..8c54684422 100644 --- a/assets/compat.ini +++ b/assets/compat.ini @@ -165,7 +165,7 @@ NPJH50348 = true ULJM06009 = true [RequireBufferedRendering] -# Warn the user that the game will not work, if buffered rendering is not enabled. +# Warn the user that the game will not work and have issue, if buffered rendering is not enabled. # Midnight Club: LA Remix ULUS10383 = true ULES01144 = true @@ -189,4 +189,79 @@ ULES00151 = true ULJM05255 = true ULJM05359 = true ULJM05885 = true -NPJH50825 = true \ No newline at end of file +NPJH50825 = true +# GOW : Chains Of Olympus +UCUS98653 = true +UCUS98705 = true +UCES00842 = true +ULJM05438 = true +ULJM05348 = true +UCKS45084 = true +NPUG80325 = true +NPEG00023 = true +NPHG00028 = true +NPJG00120 = true +# Daxter +UCUS98618 = true +UCES00044 = true +NPUG80329 = true +NPEG00025 = true +# Ys Seven +ULUS10551 = true +ULJM05475 = true +NPEH00065 = true +NPJH50350 = true +ULJM08041 = true +NPEH00065 = true +# The Legend of Heroes: Trails in the Sky +ULUS10540 = true +ULUS10578 = true +ULES01556 = true +ULJM05170 = true +ULJM08033 = true +NPJH50373 = true +# Grand Knights History +ULJS00394 = true +ULJS19068 = true +NPJH50518 = true +# Tactics Orge +ULUS10565 = true +ULES01500 = true +ULJM05753 = true +NPJH50348 = true +ULJM06009 = true +UCKS45164 = true +# Metal Gear Solid : Peace Walker +ULUS10509 = true +ULES01372 = true +ULJM08038 = true +NPJH50045 = true +ULJM05630 = true +# Star Ocean : Second Evolution +ULUS10375 = true +ULES01187 = true +ULJM05591 = true +ULJM05325 = true +UCAS40203 = true + +[RequireBlockTransfer] +# Warn the user that the game will have issue graphic, if simulate block transfer is not enabled. +# Ys Seven need it to fix minimap. See issues #2928 +ULUS10551 = true +ULJM05475 = true +NPEH00065 = true +NPJH50350 = true +ULJM08041 = true +NPEH00065 = true +# The Legend of Heroes: Trails in the Sky need it to fix graphical glitch in menu screen. See issues #8053 +ULUS10540 = true +ULUS10578 = true +ULES01556 = true +ULJM05170 = true +ULJM08033 = true +NPJH50373 = true +# Grand Knights History need it to fix blackboxes on characters and flickering texture . See issues #2135 , #6099 +ULJS00394 = true +ULJS19068 = true +NPJH50518 = true +# TODO: Will add some games in the future \ No newline at end of file