Add warning simulate block transfer , setting info

Add some games compatibility required buffered rendering and warning
required simulate block transfer set to on
This commit is contained in:
zminhquanz 2017-03-21 14:23:31 +07:00
parent 892a7a5caa
commit ea0aab9340
5 changed files with 99 additions and 4 deletions

View File

@ -53,6 +53,7 @@ void Compatibility::CheckSettings(IniFile &iniFile, const std::string &gameID) {
CheckSetting(iniFile, gameID, "DrawSyncEatCycles", &flags_.DrawSyncEatCycles); CheckSetting(iniFile, gameID, "DrawSyncEatCycles", &flags_.DrawSyncEatCycles);
CheckSetting(iniFile, gameID, "FakeMipmapChange", &flags_.FakeMipmapChange); CheckSetting(iniFile, gameID, "FakeMipmapChange", &flags_.FakeMipmapChange);
CheckSetting(iniFile, gameID, "RequireBufferedRendering", &flags_.RequireBufferedRendering); 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) { void Compatibility::CheckSetting(IniFile &iniFile, const std::string &gameID, const char *option, bool *flag) {

View File

@ -53,6 +53,7 @@ struct CompatFlags {
bool DrawSyncEatCycles; bool DrawSyncEatCycles;
bool FakeMipmapChange; bool FakeMipmapChange;
bool RequireBufferedRendering; bool RequireBufferedRendering;
bool RequireBlockTransfer;
}; };
class IniFile; class IniFile;

View File

@ -222,6 +222,11 @@ void EmuScreen::bootGame(const std::string &filename) {
I18NCategory *gr = GetI18NCategory("Graphics"); I18NCategory *gr = GetI18NCategory("Graphics");
host->NotifyUserMessage(gr->T("BufferedRenderingRequired", "Warning: This game requires Rendering Mode to be set to Buffered."), 15.0f); 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() { void EmuScreen::bootComplete() {

View File

@ -211,6 +211,10 @@ void GameSettingsScreen::CreateViews() {
renderingModeChoice->OnChoice.Handle(this, &GameSettingsScreen::OnRenderingMode); renderingModeChoice->OnChoice.Handle(this, &GameSettingsScreen::OnRenderingMode);
renderingModeChoice->SetDisabledPtr(&g_Config.bSoftwareRendering); renderingModeChoice->SetDisabledPtr(&g_Config.bSoftwareRendering);
CheckBox *blockTransfer = graphicsSettings->Add(new CheckBox(&g_Config.bBlockTransferGPU, gr->T("Simulate Block Transfer", "Simulate Block Transfer (unfinished)"))); 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); blockTransfer->SetDisabledPtr(&g_Config.bSoftwareRendering);
graphicsSettings->Add(new ItemHeader(gr->T("Frame Rate Control"))); graphicsSettings->Add(new ItemHeader(gr->T("Frame Rate Control")));
@ -277,6 +281,10 @@ void GameSettingsScreen::CreateViews() {
hwTransform->SetDisabledPtr(&g_Config.bSoftwareRendering); hwTransform->SetDisabledPtr(&g_Config.bSoftwareRendering);
CheckBox *swSkin = graphicsSettings->Add(new CheckBox(&g_Config.bSoftwareSkinning, gr->T("Software Skinning"))); 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); swSkin->SetDisabledPtr(&g_Config.bSoftwareRendering);
CheckBox *vtxCache = graphicsSettings->Add(new CheckBox(&g_Config.bVertexCache, gr->T("Vertex Cache"))); 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())); 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) { beziersChoice->OnChoice.Add([=](EventParams &e) {
if (g_Config.iSplineBezierQuality != 0) { 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; return UI::EVENT_CONTINUE;
}); });
@ -321,6 +329,7 @@ void GameSettingsScreen::CreateViews() {
CheckBox *tessellationHW = graphicsSettings->Add(new CheckBox(&g_Config.bHardwareTessellation, gr->T("Hardware Tessellation"))); CheckBox *tessellationHW = graphicsSettings->Add(new CheckBox(&g_Config.bHardwareTessellation, gr->T("Hardware Tessellation")));
tessellationHW->OnClick.Add([=](EventParams &e) { tessellationHW->OnClick.Add([=](EventParams &e) {
bezierChoiceDisable_ = g_Config.bSoftwareRendering || g_Config.bHardwareTessellation; 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; return UI::EVENT_CONTINUE;
}); });
tessHWEnable_ = IsBackendSupportHWTess() && !g_Config.bSoftwareRendering && g_Config.bHardwareTransform; 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"))); CheckBox *deposterize = graphicsSettings->Add(new CheckBox(&g_Config.bTexDeposterize, gr->T("Deposterize")));
deposterize->OnClick.Add([=](EventParams &e) { 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; return UI::EVENT_CONTINUE;
}); });
deposterize->SetDisabledPtr(&g_Config.bSoftwareRendering); deposterize->SetDisabledPtr(&g_Config.bSoftwareRendering);

View File

@ -165,7 +165,7 @@ NPJH50348 = true
ULJM06009 = true ULJM06009 = true
[RequireBufferedRendering] [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 # Midnight Club: LA Remix
ULUS10383 = true ULUS10383 = true
ULES01144 = true ULES01144 = true
@ -189,4 +189,79 @@ ULES00151 = true
ULJM05255 = true ULJM05255 = true
ULJM05359 = true ULJM05359 = true
ULJM05885 = true ULJM05885 = true
NPJH50825 = true 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