diff --git a/Source/Core/VideoCommon/Src/Fifo.cpp b/Source/Core/VideoCommon/Src/Fifo.cpp index f8f1b49d4b..ee05646f72 100644 --- a/Source/Core/VideoCommon/Src/Fifo.cpp +++ b/Source/Core/VideoCommon/Src/Fifo.cpp @@ -16,6 +16,8 @@ // http://code.google.com/p/dolphin-emu/ #include + +#include "VideoConfig.h" #include "Setup.h" #include "MemoryUtil.h" #include "Thread.h" @@ -131,7 +133,8 @@ void Fifo_EnterLoop(const SVideoInitialize &video_initialize) while (fifoStateRun) { video_initialize.pPeekMessages(); - VideoFifo_CheckEFBAccess(); + if (g_ActiveConfig.bEFBAccessEnable) + VideoFifo_CheckEFBAccess(); VideoFifo_CheckSwapRequest(); s_criticalFifo.Enter(); diff --git a/Source/Core/VideoCommon/Src/VideoConfig.cpp b/Source/Core/VideoCommon/Src/VideoConfig.cpp index 239c527134..a83b9c4566 100644 --- a/Source/Core/VideoCommon/Src/VideoConfig.cpp +++ b/Source/Core/VideoCommon/Src/VideoConfig.cpp @@ -87,6 +87,7 @@ void VideoConfig::Load(const char *ini_file) iniFile.Get("Enhancements", "MaxAnisotropy", &iMaxAnisotropy, 3); // NOTE - this is x in (1 << x) iniFile.Get("Enhancements", "PostProcessingShader", &sPostProcessingShader, ""); + iniFile.Get("Hacks", "EFBAccessEnable", &bEFBAccessEnable, true); iniFile.Get("Hacks", "EFBCopyDisable", &bEFBCopyDisable, 0); iniFile.Get("Hacks", "EFBCopyDisableHotKey", &bEFBCopyDisableHotKey, 0); iniFile.Get("Hacks", "EFBToTextureEnable", &bCopyEFBToRAM, 0); diff --git a/Source/Core/VideoCommon/Src/VideoConfig.h b/Source/Core/VideoCommon/Src/VideoConfig.h index 3b4224bb86..bf0c88c3dc 100644 --- a/Source/Core/VideoCommon/Src/VideoConfig.h +++ b/Source/Core/VideoCommon/Src/VideoConfig.h @@ -104,7 +104,8 @@ struct VideoConfig bool bFreeLook; // Hacks - bool bEFBCopyDisable; + bool bEFBAccessEnable; + bool bEFBCopyDisable; // should reverse polarity of this one :) true=disabled can be confusing bool bEFBCopyDisableHotKey; bool bHack; bool bCopyEFBToRAM; diff --git a/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp b/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp index 10877fb756..0028feb611 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp @@ -93,6 +93,7 @@ struct TabDirect3D : public W32Util::Tab CheckDlgButton(hDlg, IDC_ASPECT_4_3, g_Config.bKeepAR43 ? TRUE : FALSE); CheckDlgButton(hDlg, IDC_WIDESCREEN_HACK, g_Config.bWidescreenHack ? TRUE : FALSE); CheckDlgButton(hDlg, IDC_SAFE_TEXTURE_CACHE, g_Config.bSafeTextureCache ? TRUE : FALSE); + CheckDlgButton(hDlg, IDC_EFB_ACCESS_ENABLE, g_Config.bEFBAccessEnable ? TRUE : FALSE); } void Command(HWND hDlg,WPARAM wParam) @@ -118,6 +119,9 @@ struct TabDirect3D : public W32Util::Tab case IDC_SAFE_TEXTURE_CACHE: g_Config.bSafeTextureCache = Button_GetCheck(GetDlgItem(hDlg, IDC_SAFE_TEXTURE_CACHE)) == 0 ? false : true; break; + case IDC_EFB_ACCESS_ENABLE: + g_Config.bEFBAccessEnable = Button_GetCheck(GetDlgItem(hDlg, IDC_EFB_ACCESS_ENABLE)) == 0 ? false : true; + break; default: break; } diff --git a/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp b/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp index 853de6e158..801f982e72 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp @@ -499,7 +499,8 @@ u32 Renderer::AccessEFB(EFBAccessType type, int x, int y) val = ((float)((u16 *)drect.pBits)[0])/((float)0xFFFF); break; default: - val=0; + val = 0; + break; }; // [0.0, 1.0] ==> [0, 0xFFFFFFFF] z = ((u32)(val * 0xffffff));// 0xFFFFFFFF; diff --git a/Source/Plugins/Plugin_VideoDX9/Src/main.cpp b/Source/Plugins/Plugin_VideoDX9/Src/main.cpp index eb05f7ae86..7c508e6e0f 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/main.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/main.cpp @@ -442,6 +442,9 @@ void VideoFifo_CheckEFBAccess() u32 Video_AccessEFB(EFBAccessType type, u32 x, u32 y) { + if (!g_ActiveConfig.bEFBAccessEnable) + return 0; + s_accessEFBArgs.type = type; s_accessEFBArgs.x = x; s_accessEFBArgs.y = y; diff --git a/Source/Plugins/Plugin_VideoDX9/Src/resource.h b/Source/Plugins/Plugin_VideoDX9/Src/resource.h index 3450e15fdf..d8ccc10252 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/resource.h +++ b/Source/Plugins/Plugin_VideoDX9/Src/resource.h @@ -1227,6 +1227,8 @@ #define IDC_ASPECT_16_10 1037 #define IDC_SAFE_TEXTURE_CACHE 1037 #define psh15 0x040e +#define IDC_EFBACCESSENABLE 1038 +#define IDC_EFB_ACCESS_ENABLE 1038 #define psh16 0x040f #define _WIN32_WINDOWS 0x0410 #define chx1 0x0410 @@ -1544,7 +1546,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 106 #define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1037 +#define _APS_NEXT_CONTROL_VALUE 1039 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/Source/Plugins/Plugin_VideoDX9/Src/resource.rc b/Source/Plugins/Plugin_VideoDX9/Src/resource.rc index c51ad5849f..5d07369b51 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/resource.rc +++ b/Source/Plugins/Plugin_VideoDX9/Src/resource.rc @@ -27,28 +27,30 @@ BEGIN LTEXT "Will not work correctly on older GPU:s.",IDC_STATIC,7,47,170,8 END -IDD_SETTINGS DIALOGEX 0, 0, 231, 194 +IDD_SETTINGS DIALOGEX 0, 0, 244, 217 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN LTEXT "&Graphics card:",IDC_STATIC,7,9,61,8 - COMBOBOX IDC_ADAPTER,68,7,156,84,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_ADAPTER,68,7,169,84,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "&Fullscreen",IDC_FULLSCREENENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,68,25,56,8 CONTROL "&V-Sync",IDC_VSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,68,38,141,8 CONTROL "&Render to main window",IDC_RENDER_TO_MAINWINDOW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,68,50,141,8 LTEXT "Full&screen resolution:",IDC_STATIC,7,98,69,8 - COMBOBOX IDC_RESOLUTION,87,98,137,73,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_RESOLUTION,87,98,150,73,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "&Windowed resolution:",IDC_STATIC,7,117,74,8 - COMBOBOX IDC_RESOLUTIONWINDOWED,87,116,137,73,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_RESOLUTIONWINDOWED,87,116,150,73,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Rotate windowed mode 90 degrees (for &Ikaruga)",IDC_CHECK1, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,87,132,137,17 + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,87,132,150,17 LTEXT "&Anti-alias mode:",IDC_STATIC,7,157,61,8 - COMBOBOX IDC_ANTIALIASMODE,68,155,156,73,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_ANTIALIASMODE,68,155,169,73,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "&Aspect Ratio:",IDC_STATIC,7,66,52,8 CONTROL "4:3",IDC_ASPECT_4_3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,68,66,59,11 CONTROL "16:9",IDC_ASPECT_16_9,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,68,80,49,11 CONTROL "&Widescreen Hack",IDC_WIDESCREEN_HACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,128,81,73,10 CONTROL "&Safe Texture Cache",IDC_SAFE_TEXTURE_CACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,68,172,85,11 + CONTROL "&Enable CPU->EFB access (can cause slowdowns, enables pull stars in SMG and lens flare in Zeldas)",IDC_EFB_ACCESS_ENABLE, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,68,187,169,23 END IDD_DEBUGGER DIALOGEX 0, 0, 234, 254 @@ -114,13 +116,13 @@ BEGIN IDD_SETTINGS, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 224 + RIGHTMARGIN, 237 VERTGUIDE, 7 VERTGUIDE, 68 VERTGUIDE, 81 VERTGUIDE, 87 TOPMARGIN, 7 - BOTTOMMARGIN, 187 + BOTTOMMARGIN, 210 END IDD_DEBUGGER, DIALOG