diff --git a/Source/Core/DolphinWX/Src/ISOProperties.cpp b/Source/Core/DolphinWX/Src/ISOProperties.cpp index 385bf0c183..6f9570306b 100644 --- a/Source/Core/DolphinWX/Src/ISOProperties.cpp +++ b/Source/Core/DolphinWX/Src/ISOProperties.cpp @@ -305,7 +305,7 @@ void CISOProperties::CreateGUIControls(bool IsWad) sbVideoOverrides = new wxStaticBoxSizer(wxVERTICAL, m_GameConfig, _("Video")); ForceFiltering = new wxCheckBox(m_GameConfig, ID_FORCEFILTERING, _("Force Filtering"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); EFBCopyDisable = new wxCheckBox(m_GameConfig, ID_EFBCOPYDISABLE, _("Disable Copy to EFB"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); - EFBToTextureEnable = new wxCheckBox(m_GameConfig, ID_EFBTOTEXTUREENABLE, _("Enable EFB To RAM"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); + EFBToTextureEnable = new wxCheckBox(m_GameConfig, ID_EFBTOTEXTUREENABLE, _("Enable EFB To Texture"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); SafeTextureCache = new wxCheckBox(m_GameConfig, ID_SAFETEXTURECACHE, _("Safe Texture Cache"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); DstAlphaPass = new wxCheckBox(m_GameConfig, ID_DSTALPHAPASS, _("Distance Alpha Pass"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); UseXFB = new wxCheckBox(m_GameConfig, ID_USEXFB, _("Use XFB"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); diff --git a/Source/Core/InputCommon/Src/Configuration.cpp b/Source/Core/InputCommon/Src/Configuration.cpp index 43b6169fa5..79245bfe2f 100644 --- a/Source/Core/InputCommon/Src/Configuration.cpp +++ b/Source/Core/InputCommon/Src/Configuration.cpp @@ -16,6 +16,11 @@ // http://code.google.com/p/dolphin-emu/ // +#include // System +#include +#include +#include "Common.h" // Common + #if defined HAVE_WX && HAVE_WX #include #endif @@ -25,9 +30,6 @@ #include #endif -#include "SDL_Util.h" // Local - - namespace InputCommon { diff --git a/Source/Core/VideoCommon/Src/VideoConfig.cpp b/Source/Core/VideoCommon/Src/VideoConfig.cpp index 614811c813..95c8981b1c 100644 --- a/Source/Core/VideoCommon/Src/VideoConfig.cpp +++ b/Source/Core/VideoCommon/Src/VideoConfig.cpp @@ -87,9 +87,9 @@ void VideoConfig::Load(const char *ini_file) iniFile.Get("Enhancements", "PostProcessingShader", &sPostProcessingShader, ""); iniFile.Get("Hacks", "EFBAccessEnable", &bEFBAccessEnable, true); - iniFile.Get("Hacks", "EFBCopyDisable", &bEFBCopyDisable, 0); + iniFile.Get("Hacks", "EFBCopyDisable", &bEFBCopyDisable, false); iniFile.Get("Hacks", "EFBCopyDisableHotKey", &bOSDHotKey, 0); - iniFile.Get("Hacks", "EFBToTextureEnable", &bCopyEFBToRAM, true); + iniFile.Get("Hacks", "EFBToTextureEnable", &bCopyEFBToTexture, false); iniFile.Get("Hacks", "EFBScaledCopy", &bCopyEFBScaled, true); iniFile.Get("Hacks", "FIFOBPHack", &bFIFOBPhack, false); iniFile.Get("Hacks", "ProjectionHack", &iPhackvalue, 0); @@ -119,8 +119,8 @@ void VideoConfig::GameIniLoad(const char *ini_file) iniFile.Get("Video", "EFBCopyDisable", &bEFBCopyDisable, 0); if (iniFile.Exists("Video", "EFBCopyDisableHotKey")) iniFile.Get("Video", "EFBCopyDisableHotKey", &bOSDHotKey, 0); - if (iniFile.Exists("Video", "EFBToRAMEnable")) - iniFile.Get("Video", "EFBToRAMEnable", &bCopyEFBToRAM, 0); + if (iniFile.Exists("Video", "EFBToTextureEnable")) + iniFile.Get("Video", "EFBToTextureEnable", &bCopyEFBToTexture, 0); if (iniFile.Exists("Video", "EFBScaledCopy")) iniFile.Get("Video", "EFBScaledCopy", &bCopyEFBScaled, 0); if (iniFile.Exists("Video", "SafeTextureCache")) @@ -184,7 +184,7 @@ void VideoConfig::Save(const char *ini_file) iniFile.Set("Hacks", "EFBAccessEnable", bEFBAccessEnable); iniFile.Set("Hacks", "EFBCopyDisable", bEFBCopyDisable); iniFile.Set("Hacks", "EFBCopyDisableHotKey", bOSDHotKey); - iniFile.Set("Hacks", "EFBToTextureEnable", bCopyEFBToRAM); + iniFile.Set("Hacks", "EFBToTextureEnable", bCopyEFBToTexture); iniFile.Set("Hacks", "EFBScaledCopy", bCopyEFBScaled); iniFile.Set("Hacks", "FIFOBPHack", bFIFOBPhack); iniFile.Set("Hacks", "ProjectionHack", iPhackvalue); diff --git a/Source/Core/VideoCommon/Src/VideoConfig.h b/Source/Core/VideoCommon/Src/VideoConfig.h index 359dc549d3..19775d47f6 100644 --- a/Source/Core/VideoCommon/Src/VideoConfig.h +++ b/Source/Core/VideoCommon/Src/VideoConfig.h @@ -116,7 +116,7 @@ struct VideoConfig bool bEFBCopyDisable; // should reverse polarity of this one :) true=disabled can be confusing bool bOSDHotKey; bool bHack; - bool bCopyEFBToRAM; + bool bCopyEFBToTexture; bool bCopyEFBScaled; bool bSafeTextureCache; bool bFIFOBPhack; diff --git a/Source/Plugins/Plugin_VideoDX9/Src/BPFunctions.cpp b/Source/Plugins/Plugin_VideoDX9/Src/BPFunctions.cpp index 3d86f6ee80..ce4b6a9d91 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/BPFunctions.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/BPFunctions.cpp @@ -84,15 +84,16 @@ void CopyEFB(const BPCmd &bp, const EFBRectangle &rc, const u32 &address, const if (!g_ActiveConfig.bEFBCopyDisable) { //uncomment this to see the efb to ram work in progress - if (g_ActiveConfig.bCopyEFBToRAM) + if (g_ActiveConfig.bCopyEFBToTexture) + { + // To D3D Texture + TextureCache::CopyRenderTargetToTexture(address, fromZBuffer, isIntensityFmt, copyfmt, scaleByHalf, rc); + } + else { //ToRam TextureConverter::EncodeToRam(address, fromZBuffer, isIntensityFmt, copyfmt, scaleByHalf, rc); } - else // To D3D Texture - { - TextureCache::CopyRenderTargetToTexture(address, fromZBuffer, isIntensityFmt, copyfmt, scaleByHalf, rc); - } } } diff --git a/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp b/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp index 8f2597e52c..7e63da5863 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp @@ -152,6 +152,7 @@ struct TabAdvanced : public W32Util::Tab //ComboBox_AddString(opt,"Recompile to vbuffers and shaders"); // ComboBox_SetCurSel(opt,g_Config.iCompileDLsLevel); + Button_SetCheck(GetDlgItem(hDlg,IDC_OSDHOTKEY), g_Config.bOSDHotKey); Button_SetCheck(GetDlgItem(hDlg,IDC_OVERLAYFPS), g_Config.bShowFPS); Button_SetCheck(GetDlgItem(hDlg,IDC_OVERLAYSTATS), g_Config.bOverlayStats); Button_SetCheck(GetDlgItem(hDlg,IDC_OVERLAYPROJSTATS), g_Config.bOverlayProjStats); @@ -162,10 +163,10 @@ struct TabAdvanced : public W32Util::Tab Button_SetCheck(GetDlgItem(hDlg,IDC_DISABLEFOG), g_Config.bDisableFog); Button_SetCheck(GetDlgItem(hDlg,IDC_ENABLEEFBCOPY), !g_Config.bEFBCopyDisable); - if(g_Config.bCopyEFBToRAM) - Button_SetCheck(GetDlgItem(hDlg,IDC_EFBTORAM), TRUE); + if(g_Config.bCopyEFBToTexture) + Button_SetCheck(GetDlgItem(hDlg,IDC_EFBTOTEX), true); else - Button_SetCheck(GetDlgItem(hDlg,IDC_EFBTOTEX), TRUE); + Button_SetCheck(GetDlgItem(hDlg,IDC_EFBTORAM), true); Button_SetCheck(GetDlgItem(hDlg,IDC_TEXFMT_OVERLAY), g_Config.bTexFmtOverlayEnable); @@ -198,6 +199,7 @@ struct TabAdvanced : public W32Util::Tab g_Config.bTexFmtOverlayEnable = Button_GetCheck(GetDlgItem(hDlg,IDC_TEXFMT_OVERLAY)) ? true : false; g_Config.bTexFmtOverlayCenter = Button_GetCheck(GetDlgItem(hDlg,IDC_TEXFMT_CENTER)) ? true : false; + g_Config.bOSDHotKey = Button_GetCheck(GetDlgItem(hDlg,IDC_OSDHOTKEY)) ? true : false; g_Config.bShowFPS = Button_GetCheck(GetDlgItem(hDlg,IDC_OVERLAYFPS)) ? true : false; g_Config.bOverlayStats = Button_GetCheck(GetDlgItem(hDlg,IDC_OVERLAYSTATS)) ? true : false; g_Config.bOverlayProjStats = Button_GetCheck(GetDlgItem(hDlg,IDC_OVERLAYPROJSTATS)) ? true : false; @@ -207,7 +209,7 @@ struct TabAdvanced : public W32Util::Tab g_Config.bShowShaderErrors = Button_GetCheck(GetDlgItem(hDlg,IDC_SHOWSHADERERRORS)) ? true : false; g_Config.bDisableFog = Button_GetCheck(GetDlgItem(hDlg,IDC_DISABLEFOG)) ? true : false; g_Config.bEFBCopyDisable = Button_GetCheck(GetDlgItem(hDlg,IDC_ENABLEEFBCOPY)) ? false : true; - g_Config.bCopyEFBToRAM = Button_GetCheck(GetDlgItem(hDlg,IDC_EFBTORAM)) ? true : false; + g_Config.bCopyEFBToTexture = Button_GetCheck(GetDlgItem(hDlg,IDC_EFBTORAM)) ? false : true; g_Config.Save(FULL_CONFIG_DIR "gfx_dx9.ini"); diff --git a/Source/Plugins/Plugin_VideoDX9/Src/EmuWindow.cpp b/Source/Plugins/Plugin_VideoDX9/Src/EmuWindow.cpp index 64b5cc775e..09ca597675 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/EmuWindow.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/EmuWindow.cpp @@ -23,6 +23,9 @@ #include "D3DBase.h" #include "Fifo.h" + +int OSDChoice = 0 , OSDTime = 0, OSDInternalW = 0, OSDInternalH = 0; + namespace EmuWindow { HWND m_hWnd = NULL; @@ -104,6 +107,14 @@ LRESULT CALLBACK WndProc( HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam ) return 0; } break; + case '3': // OSD keys + case '4': + case '5': + case '6': + case '7': + if (g_Config.bOSDHotKey) + OSDMenu(wParam); + break; } // Tell the hotkey function that this key was pressed g_VideoInitialize.pKeyPress(LOWORD(wParam), GetAsyncKeyState(VK_SHIFT) != 0, GetAsyncKeyState(VK_CONTROL) != 0); @@ -171,6 +182,57 @@ LRESULT CALLBACK WndProc( HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam ) return DefWindowProc(hWnd, iMsg, wParam, lParam); } +// --------------------------------------------------------------------- +// OSD Menu +// ------------- +// Let's begin with 3 since 1 and 2 are default Wii keys +// ------------- +void OSDMenu(WPARAM wParam) +{ + switch( LOWORD( wParam )) + { + case '3': + OSDChoice = 1; + // Toggle native resolution +/* + if (!(g_Config.bNativeResolution || g_Config.b2xResolution)) + g_Config.bNativeResolution = true; + else if (g_Config.bNativeResolution && Renderer::AllowCustom()) + { g_Config.bNativeResolution = false; if (Renderer::Allow2x()) {g_Config.b2xResolution = true;} } + else if (Renderer::AllowCustom()) + g_Config.b2xResolution = false; +*/ + OSDInternalW = D3D::GetBackBufferWidth(); + OSDInternalH = D3D::GetBackBufferHeight(); + break; + case '4': + OSDChoice = 2; + // Toggle aspect ratio + g_Config.iAspectRatio = (g_Config.iAspectRatio + 1) & 3; + break; + case '5': + OSDChoice = 3; + // Toggle EFB copy + if (g_Config.bEFBCopyDisable || g_Config.bCopyEFBToTexture) + { + g_Config.bEFBCopyDisable = !g_Config.bEFBCopyDisable; + g_Config.bCopyEFBToTexture = false; + } + else + { + g_Config.bCopyEFBToTexture = !g_Config.bCopyEFBToTexture; + } + break; + case '6': + OSDChoice = 4; + g_Config.bDisableFog = !g_Config.bDisableFog; + break; + case '7': + OSDChoice = 5; + g_Config.bDisableLighting = !g_Config.bDisableLighting; + break; + } +} HWND OpenWindow(HWND parent, HINSTANCE hInstance, int width, int height, const TCHAR *title) { diff --git a/Source/Plugins/Plugin_VideoDX9/Src/EmuWindow.h b/Source/Plugins/Plugin_VideoDX9/Src/EmuWindow.h index 557a9a3466..7ec058037f 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/EmuWindow.h +++ b/Source/Plugins/Plugin_VideoDX9/Src/EmuWindow.h @@ -14,6 +14,7 @@ void Close(); void SetSize(int displayWidth, int displayHeight); void ToggleFullscreen(HWND hParent, bool bForceFull = false); bool IsSizing(); +void OSDMenu(WPARAM wParam); } diff --git a/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp b/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp index 9c97bd1b2e..fef661e943 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp @@ -19,6 +19,7 @@ #include #include +#include "StringUtil.h" #include "Common.h" #include "Thread.h" #include "Timer.h" @@ -363,6 +364,88 @@ int Renderer::GetFullTargetHeight() { return s_Fulltarget_height; } float Renderer::GetTargetScaleX() { return xScale; } float Renderer::GetTargetScaleY() { return yScale; } +// Create On-Screen-Messages +void Renderer::DrawDebugText() +{ + // OSD Menu messages + if (g_ActiveConfig.bOSDHotKey) + { + if (OSDChoice > 0) + { + OSDTime = Common::Timer::GetTimeMs() + 3000; + OSDChoice = -OSDChoice; + } + if ((u32)OSDTime > Common::Timer::GetTimeMs()) + { + std::string T1 = "", T2 = ""; + std::vector T0; + +/* + int W, H; + sscanf(g_ActiveConfig.cInternalRes, "%dx%d", &W, &H); + std::string OSDM1 = + g_ActiveConfig.bNativeResolution || g_ActiveConfig.b2xResolution ? + (g_ActiveConfig.bNativeResolution ? + StringFromFormat("%i x %i (native)", OSDInternalW, OSDInternalH) + : StringFromFormat("%i x %i (2x)", OSDInternalW, OSDInternalH)) + : StringFromFormat("%i x %i (custom)", W, H); +*/ + std::string OSDM1 = StringFromFormat("%i x %i", OSDInternalW, OSDInternalH); + std::string OSDM21; + switch(g_ActiveConfig.iAspectRatio) + { + case ASPECT_AUTO: + OSDM21 = "Auto"; + break; + case ASPECT_FORCE_16_9: + OSDM21 = "16:9"; + break; + case ASPECT_FORCE_4_3: + OSDM21 = "4:3"; + break; + case ASPECT_STRETCH: + OSDM21 = "Stretch"; + break; + } + std::string OSDM22 = + g_ActiveConfig.bCrop ? " (crop)" : ""; + std::string OSDM3 = g_ActiveConfig.bEFBCopyDisable ? "Disabled" : + g_ActiveConfig.bCopyEFBToTexture ? "To Texture" : "To RAM"; + + // If there is more text than this we will have a collission + if (g_ActiveConfig.bShowFPS) + { T1 += "\n\n"; T2 += "\n\n"; } + + // The rows + T0.push_back(StringFromFormat("3: Internal Resolution: %s\n", OSDM1.c_str())); + T0.push_back(StringFromFormat("4: Aspect Ratio: %s%s\n", OSDM21.c_str(), OSDM22.c_str())); + T0.push_back(StringFromFormat("5: Copy EFB: %s\n", OSDM3.c_str())); + T0.push_back(StringFromFormat("6: Fog: %s\n", g_ActiveConfig.bDisableFog ? "Disabled" : "Enabled")); + T0.push_back(StringFromFormat("7: Material Lighting: %s\n", g_ActiveConfig.bDisableLighting ? "Disabled" : "Enabled")); + + // The latest changed setting in yellow + T1 += (OSDChoice == -1) ? T0.at(0) : "\n"; + T1 += (OSDChoice == -2) ? T0.at(1) : "\n"; + T1 += (OSDChoice == -3) ? T0.at(2) : "\n"; + T1 += (OSDChoice == -4) ? T0.at(3) : "\n"; + T1 += (OSDChoice == -5) ? T0.at(4) : "\n"; + + // The other settings in cyan + T2 += (OSDChoice != -1) ? T0.at(0) : "\n"; + T2 += (OSDChoice != -2) ? T0.at(1) : "\n"; + T2 += (OSDChoice != -3) ? T0.at(2) : "\n"; + T2 += (OSDChoice != -4) ? T0.at(3) : "\n"; + T2 += (OSDChoice != -5) ? T0.at(4) : "\n"; + + // Render a shadow, and then the text + Renderer::RenderText(T1.c_str(), 21, 21, 0xDD000000); + Renderer::RenderText(T1.c_str(), 20, 20, 0xFFffff00); + Renderer::RenderText(T2.c_str(), 21, 21, 0xDD000000); + Renderer::RenderText(T2.c_str(), 20, 20, 0xFF00FFFF); + } + } +} + void Renderer::RenderText(const char *text, int left, int top, u32 color) { D3D::font.DrawTextScaled((float)left, (float)top, 20, 20, 0.0f, color, text, false); @@ -569,6 +652,8 @@ static void EFBTextureToD3DBackBuffer(const EFBRectangle& sourceRc) StringCchPrintfA(fps, 20, "FPS: %d\n", s_fps); D3D::font.DrawTextScaled(0,30,20,20,0.0f,0xFF00FFFF,fps,false); } + Renderer::DrawDebugText(); + if (g_ActiveConfig.bOverlayStats) { Statistics::ToString(st); diff --git a/Source/Plugins/Plugin_VideoDX9/Src/resource.h b/Source/Plugins/Plugin_VideoDX9/Src/resource.h index 8a07274723..a42fbedc6e 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/resource.h +++ b/Source/Plugins/Plugin_VideoDX9/Src/resource.h @@ -35,6 +35,7 @@ #define IDC_FORCEANISOTROPY 1027 #define IDC_LOADHIRESTEXTURE 1028 #define IDC_EFBSCALEDCOPY 1029 +#define IDC_OSDHOTKEY 1030 #define IDC_COMBO2 1040 #define IDC_ASPECTRATIO 1040 #define IDC_CHECK1 1100 diff --git a/Source/Plugins/Plugin_VideoDX9/Src/resource.rc b/Source/Plugins/Plugin_VideoDX9/Src/resource.rc index dc9e505f6a..adcd7bdb55 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/resource.rc +++ b/Source/Plugins/Plugin_VideoDX9/Src/resource.rc @@ -68,8 +68,9 @@ BEGIN CONTROL "&Overlay some statistics",IDC_OVERLAYSTATS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,137,90,8 CONTROL "Show s&hader compilation errors",IDC_SHOWSHADERERRORS, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,151,114,8 - CONTROL "Enable &Wireframe",IDC_WIREFRAME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,18,78,8 - CONTROL "Disable Fog",IDC_DISABLEFOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,114,33,87,8 + CONTROL "Enable &Wireframe",IDC_WIREFRAME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,114,48,87,8 + CONTROL "Disable Fog",IDC_DISABLEFOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,18,78,8 + CONTROL "Enable Hotkey",IDC_OSDHOTKEY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,114,33,87,8 CONTROL "Enable EFB copy",IDC_ENABLEEFBCOPY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,33,81,8 CONTROL "To RAM",IDC_EFBTORAM,"Button",BS_AUTORADIOBUTTON | WS_GROUP,29,44,59,10 CONTROL "To Texture",IDC_EFBTOTEX,"Button",BS_AUTORADIOBUTTON,29,57,60,10 diff --git a/Source/Plugins/Plugin_VideoOGL/Src/BPFunctions.cpp b/Source/Plugins/Plugin_VideoOGL/Src/BPFunctions.cpp index 6825cd1563..9d7a46ff38 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/BPFunctions.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/BPFunctions.cpp @@ -81,10 +81,10 @@ void CopyEFB(const BPCmd &bp, const EFBRectangle &rc, const u32 &address, const // bpmem.zcontrol.pixel_format to PIXELFMT_Z24 is when the game wants to copy from ZBuffer (Zbuffer uses 24-bit Format) if (!g_ActiveConfig.bEFBCopyDisable) { - if (g_ActiveConfig.bCopyEFBToRAM) // To RAM - TextureConverter::EncodeToRam(address, fromZBuffer, isIntensityFmt, copyfmt, scaleByHalf, rc); - else // To OGL Texture + if (g_ActiveConfig.bCopyEFBToTexture) // To OGL Texture TextureMngr::CopyRenderTargetToTexture(address, fromZBuffer, isIntensityFmt, copyfmt, scaleByHalf, rc); + else // To RAM + TextureConverter::EncodeToRam(address, fromZBuffer, isIntensityFmt, copyfmt, scaleByHalf, rc); } } diff --git a/Source/Plugins/Plugin_VideoOGL/Src/GUI/ConfigDlg.cpp b/Source/Plugins/Plugin_VideoOGL/Src/GUI/ConfigDlg.cpp index 1268eadac6..57fe41aa25 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/GUI/ConfigDlg.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/GUI/ConfigDlg.cpp @@ -415,7 +415,7 @@ void GFXConfigDialogOGL::CreateGUIControls() m_Radio_CopyEFBToRAM->SetToolTip(wxT("[This option will apply immediately and does not require a restart to take effect.]")); m_Radio_CopyEFBToGL = new wxRadioButton(m_PageAdvanced, ID_RADIO_COPYEFBTOGL, wxT("Copy EFB to GL texture (hack)")); m_Radio_CopyEFBToGL->SetToolTip(wxT("[This option will apply immediately and does not require a restart to take effect.]")); - g_Config.bCopyEFBToRAM ? m_Radio_CopyEFBToRAM->SetValue(true) : m_Radio_CopyEFBToGL->SetValue(true); + g_Config.bCopyEFBToTexture ? m_Radio_CopyEFBToGL->SetValue(true) : m_Radio_CopyEFBToRAM->SetValue(true); // Utility sbUtilities = new wxStaticBoxSizer(wxVERTICAL, m_PageAdvanced, wxT("Utilities")); @@ -718,10 +718,10 @@ void GFXConfigDialogOGL::AdvancedSettingsChanged(wxCommandEvent& event) g_Config.bHack = m_Hack->IsChecked(); break; case ID_RADIO_COPYEFBTORAM: - g_Config.bCopyEFBToRAM = true; + g_Config.bCopyEFBToTexture = false; break; case ID_RADIO_COPYEFBTOGL: - g_Config.bCopyEFBToRAM = false; + g_Config.bCopyEFBToTexture = true; break; case ID_PROJSTATS: g_Config.bOverlayProjStats = m_ProjStats->IsChecked(); diff --git a/Source/Plugins/Plugin_VideoOGL/Src/OS/Win32.cpp b/Source/Plugins/Plugin_VideoOGL/Src/OS/Win32.cpp index 2913f6654d..ba80e6979d 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/OS/Win32.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/OS/Win32.cpp @@ -110,13 +110,20 @@ void OSDMenu(WPARAM wParam) case '4': OSDChoice = 2; // Toggle aspect ratio - g_Config.iAspectRatio++; - g_Config.iAspectRatio &= 3; + g_Config.iAspectRatio = (g_Config.iAspectRatio + 1) & 3; break; case '5': OSDChoice = 3; // Toggle EFB copy - g_Config.bEFBCopyDisable = !g_Config.bEFBCopyDisable; + if (g_Config.bEFBCopyDisable || g_Config.bCopyEFBToTexture) + { + g_Config.bEFBCopyDisable = !g_Config.bEFBCopyDisable; + g_Config.bCopyEFBToTexture = false; + } + else + { + g_Config.bCopyEFBToTexture = !g_Config.bCopyEFBToTexture; + } break; case '6': OSDChoice = 4; diff --git a/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp b/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp index 6f5f10e7cb..56f0ed602f 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp @@ -1079,9 +1079,9 @@ void Renderer::Swap(u32 xfbAddr, FieldType field, u32 fbWidth, u32 fbHeight) GL_REPORT_ERRORD(); g_Config.iSaveTargetId = 0; - bool last_copy_efb_to_ram = g_ActiveConfig.bCopyEFBToRAM; + bool last_copy_efb_to_ram = !g_ActiveConfig.bCopyEFBToTexture; UpdateActiveConfig(); - if (last_copy_efb_to_ram != g_ActiveConfig.bCopyEFBToRAM) + if (last_copy_efb_to_ram != g_ActiveConfig.bCopyEFBToTexture) TextureMngr::ClearRenderTargets(); // For testing zbuffer targets. @@ -1188,14 +1188,26 @@ void Renderer::DrawDebugText() StringFromFormat("%i x %i (native)", OSDInternalW, OSDInternalH) : StringFromFormat("%i x %i (2x)", OSDInternalW, OSDInternalH)) : StringFromFormat("%i x %i (custom)", W, H); - std::string OSDM21 = ""; - // !(g_ActiveConfig.bKeepAR43 || g_ActiveConfig.bKeepAR169) ? "-": (g_ActiveConfig.bKeepAR43 ? "4:3" : "16:9"); + std::string OSDM21; + switch(g_ActiveConfig.iAspectRatio) + { + case ASPECT_AUTO: + OSDM21 = "Auto"; + break; + case ASPECT_FORCE_16_9: + OSDM21 = "16:9"; + break; + case ASPECT_FORCE_4_3: + OSDM21 = "4:3"; + break; + case ASPECT_STRETCH: + OSDM21 = "Stretch"; + break; + } std::string OSDM22 = g_ActiveConfig.bCrop ? " (crop)" : ""; - std::string OSDM31 = - g_ActiveConfig.bCopyEFBToRAM ? "RAM" : "Texture"; - std::string OSDM32 = - g_ActiveConfig.bEFBCopyDisable ? "No" : "Yes"; + std::string OSDM3 = g_ActiveConfig.bEFBCopyDisable ? "Disabled" : + g_ActiveConfig.bCopyEFBToTexture ? "To Texture" : "To RAM"; // If there is more text than this we will have a collission if (g_ActiveConfig.bShowFPS) @@ -1203,8 +1215,8 @@ void Renderer::DrawDebugText() // The rows T0.push_back(StringFromFormat("3: Internal Resolution: %s\n", OSDM1.c_str())); - T0.push_back(StringFromFormat("4: Lock Aspect Ratio: %s%s\n", OSDM21.c_str(), OSDM22.c_str())); - T0.push_back(StringFromFormat("5: Copy Embedded Framebuffer to %s: %s\n", OSDM31.c_str(), OSDM32.c_str())); + T0.push_back(StringFromFormat("4: Aspect Ratio: %s%s\n", OSDM21.c_str(), OSDM22.c_str())); + T0.push_back(StringFromFormat("5: Copy EFB: %s\n", OSDM3.c_str())); T0.push_back(StringFromFormat("6: Fog: %s\n", g_ActiveConfig.bDisableFog ? "Disabled" : "Enabled")); T0.push_back(StringFromFormat("7: Material Lighting: %s\n", g_ActiveConfig.bDisableLighting ? "Disabled" : "Enabled"));