From e2bb100244c286eacafaa3768a9dec9613c18b86 Mon Sep 17 00:00:00 2001 From: zilmar Date: Mon, 20 Apr 2020 14:13:29 +0930 Subject: [PATCH] GLideNUI-wtl: Add language for frame buffer --- src/GLideNUI-wtl/GLideNUI.rc | Bin 52546 -> 52766 bytes src/GLideNUI-wtl/Language.cpp | 38 +++++++++ src/GLideNUI-wtl/Language.h | 40 +++++++++ src/GLideNUI-wtl/config-framebuffer.cpp | 104 +++++++++++++++++++++--- src/GLideNUI-wtl/config-framebuffer.h | 5 +- src/GLideNUI-wtl/resource.h | Bin 18064 -> 18524 bytes translations/wtl/gliden64_de.Lang | 34 ++++++++ translations/wtl/gliden64_en.Lang | 40 +++++++++ translations/wtl/gliden64_es.Lang | 33 +++++++- translations/wtl/gliden64_fr.Lang | 33 +++++++- translations/wtl/gliden64_it.Lang | 7 +- translations/wtl/gliden64_ja.Lang | 5 ++ translations/wtl/gliden64_pl.Lang | 7 +- translations/wtl/gliden64_pt_BR.Lang | 7 +- 14 files changed, 335 insertions(+), 18 deletions(-) diff --git a/src/GLideNUI-wtl/GLideNUI.rc b/src/GLideNUI-wtl/GLideNUI.rc index 95ac0f54c98b5f1c3ff9411bcdb5144246598fbf..8a8291bbd13a19be40b7ca64e0cba31d8bb31023 100644 GIT binary patch delta 150 zcmX>!i+SE0<_$iHlSTGRaK5=B{Blhv}|52JDiHuV5-}10 delta 115 zcmbO?hxyPf<_$iHlh;Y}Z7xXUVwx;hB{X?OGT-DdOTNkTiVZe%q?}^`3$kSjfd$`X zSxkPBp)h$;<`0lKuOWj4gDHa!gCT@POX1D$vQikqT7I>1P43Czn0&)TVDbh{ Koy|{jtP%l^7AheC diff --git a/src/GLideNUI-wtl/Language.cpp b/src/GLideNUI-wtl/Language.cpp index 11797a18..706b06b9 100644 --- a/src/GLideNUI-wtl/Language.cpp +++ b/src/GLideNUI-wtl/Language.cpp @@ -115,6 +115,44 @@ void loadDefaultStrings(void) g_defaultStrings.insert(LANG_STRINGS::value_type(EMULATION_BACKGROUND_TOOLTIP, "Background is a complex macro command used to render large (normally full screen) images. Since background images usually don't fit texture memory, the microcode splits them on narrow strips and renders them one by one. HLE code has two modes to emulate background commands:\nOne piece: The whole background image rendred as one textured rectangle. This method is normally much faster, but the result is not always correct.\nStripped: This method emulates background commands as close as possible to actual microcode implementation. It's slower but more precise. Another problem: some games may have gaps between rendered strips in high resolution. Use "Render 2D elements in N64 resolution" option to remove the gaps.\n[Recommended: Game dependent, mostly Stripped]")); g_defaultStrings.insert(LANG_STRINGS::value_type(EMULATION_ONE_PIECE, "One piece")); g_defaultStrings.insert(LANG_STRINGS::value_type(EMULATION_STRIPPED, "Stripped")); + + //Frame Buffer Tab + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_ENABLE, "Emulate frame buffer")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_ENABLE_INFO, "Unchecking this option disables many effects including cropping, aspect ratio, N64 resolution factor, N64-style depth compare and more. Don't uncheck this option unless you have performance issues.")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_COPY_AUX_BUFFERS, "Copy auxiliary color buffers to N64 memory (sometimes slow, fewer game issues)")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_COPY_AUX_BUFFERS_TOOLTIP, "When checked, the auxiliary color buffer is copied to N64 memory right after rendering to it is finished. This option helps to correctly emulate frame buffer effects in some games. This option may noticeably reduce performance.\n[Recommended: Usually unchecked]")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_SWAP, "Frame buffer swap on:")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_SWAP_TOOLTIP, "This option controls how often GLideN64 updates the main frame buffer.\nVertical interrupt : Update the buffer as quickly as possible, every vertical interrupt per second(50 for PAL and 60 for NTSC games).This option is the most compatible.Use this mode unless you have performance problems.\nVI origin change : The VI origin changes corresponding to the game's actual FPS. N64 games typically run between 20 to 30 FPS so the buffers swap less often than the first mode. This mode does not work for games that use single buffering, which is rare.\nColor buffer change: This option checks to see if the frame buffer has been changed. There are some games where this doesn't work.")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_VERTICAL_INTERRUPT, "Vertical interrupt (recommended, fewest game issues)")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_VI_ORIGIN_CHANGE, "VI origin change (faster, few game issues)")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_COLOR_BUFFER_CHANGE, "Color buffer change (fastest, some game issues)")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_INFO_ENABLE, "Use emulator help to read/write frame buffers")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_INFO_ENABLE_TOOLTIP, "Some emulators do a poor job of detecting when to read/write frame buffers. You can disable emulator help to let GLideN64 read/write frame buffers itself.\n[Recommended: Usually unchecked, but for some games/emulators it may be faster checked]")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_READ_COLOR_CHUNK, "Read color buffer in 4 KB chunks")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_READ_COLOR_CHUNK_TOOLTIP, "When checked, the color buffer will be read in chunks. Otherwise, the buffer will be read in its entirety. If a game needs to read the entire buffer, selecting this option may be slow.\n[Recommended: Usually unchecked, because the color buffer is usually read entirely]")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_READ_DEPTH_CHUNK, "Read depth buffer in 4 KB chunks")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_READ_DEPTH_CHUNK_TOOLTIP, "When checked, the depth buffer will be read in chunks. Otherwise the buffer will be read in its entirety. If a game needs to read the entire buffer, selecting this option may be slow.\n[Recommended: Checked, because the depth buffer is not often read entirely]")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_COPY_COLOR_BUFFER, "Copy video card frame buffer to N64 memory:")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_COPY_COLOR_BUFFER_TOOLTIP, "In some games GLideN64 can't detect when the game uses the frame buffer. With these options, you can have GLideN64 copy each frame of your video card's frame buffer to N64 memory.\nNever: Disable copying buffers from video card.\nSynchronous: Effects are detected for all games, but it can be slow. Use for games where Asynchronous doesn't work.\nAsynchronous: Effects are detected for most games. [Recommended: Usually Asynchronous]")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_COPY_NEVER, "Never (fastest, many game issues)")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_COPY_SYNCHRONOUS, "Synchronous (slowest, fewest game issues)")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_COPY_ASYNCHRONOUS, "Asynchronous (fast, few game issues)")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_COPY_DEPTH_BUFFER, "Copy video card depth buffer to N64 memory:")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_COPY_DEPTH_BUFFER_TOOLTIP, "The depth buffer is used to emulate some effects (e.g. coronas):\nNever: Depth buffer is disabled.\nFrom VRAM: Your video card's depth buffer is copied to N64 memory each frame, which can be slow on some games.\nIn software: Generally faster than copying from VRAM, but the result can be imperfect.\n[Recommended: In software]")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_COPY_DEPTH_NEVER, "Never (fastest, most game issues)")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_COPY_DEPTH_VRAM, "From VRAM (slow, some game issues)")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_COPY_DEPTH_SOFTWARE, "In software (fast, fewest game issues)")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_N64_DEPTH_COMPARE, "N64-style depth compare (experimental, disables MSAA)")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_N64_DEPTH_COMPARE_TOOLTIP, "The N64 uses a unique method of calculating depth to the camera. When enabled, GlideN64 uses shaders to try to emulate these calculations correctly. Not compatible with anti-aliasing. Experimental!\nFast mode requires OpenGL 4.2 and fragment shader interlock extensions.\nCompatible mode requires only core OpenGL 4.2 Can be slow!\n[Recommended: Sometimes checked, for several games]")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_N64_DEPTH_DISABLE, "Disable")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_N64_DEPTH_FAST, "Fast")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_N64_DEPTH_COMPATIBLE, "Compatible")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_FORCE_DEPTH_BUFFER_CLEAR, "Force depth buffer clear")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_FORCE_DEPTH_BUFFER_CLEAR_TOOLTIP, "Enable force depth buffer clear. A hack. Necessary for Eikou no Saint Andrews.\n[Recommended: except for Eikou no Saint Andrews]")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_RENDER_FRAMEBUFFER, "Render N64 frame buffer to output")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_RENDER_FRAMEBUFFER_TOOLTIP, "When this option is checked, the frame buffer is rendered directly to the screen. This prevents some graphic problems but may cause slowdowns or visual quality problems.\n[Recommended: Usually unchecked]")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_COPY_DEPTH_TO_MAIN, "Copy depth to main depth buffer")); + g_defaultStrings.insert(LANG_STRINGS::value_type(FRAMEBUFFER_COPY_DEPTH_TO_MAIN_TOOLTIP, "This option is required for some Reshade depth dependant effects, such as SSAO and depth of field.\n[Recommended: only if you use Reshade and need depth dependant effects]")); } LANG_STR GetNextLangString(FILE * file) diff --git a/src/GLideNUI-wtl/Language.h b/src/GLideNUI-wtl/Language.h index 25314050..01bff599 100644 --- a/src/GLideNUI-wtl/Language.h +++ b/src/GLideNUI-wtl/Language.h @@ -117,6 +117,46 @@ enum languageStringID EMULATION_BACKGROUND_TOOLTIP = 3030, EMULATION_ONE_PIECE = 3031, EMULATION_STRIPPED = 3032, + + /********************************************************************************* + * Frame Buffer Tab * + *********************************************************************************/ + FRAMEBUFFER_ENABLE = 4000, + FRAMEBUFFER_ENABLE_INFO = 4001, + FRAMEBUFFER_COPY_AUX_BUFFERS = 4002, + FRAMEBUFFER_COPY_AUX_BUFFERS_TOOLTIP = 4003, + FRAMEBUFFER_SWAP = 4004, + FRAMEBUFFER_SWAP_TOOLTIP = 4005, + FRAMEBUFFER_VERTICAL_INTERRUPT = 4006, + FRAMEBUFFER_VI_ORIGIN_CHANGE = 4007, + FRAMEBUFFER_COLOR_BUFFER_CHANGE = 4008, + FRAMEBUFFER_INFO_ENABLE = 4009, + FRAMEBUFFER_INFO_ENABLE_TOOLTIP = 4010, + FRAMEBUFFER_READ_COLOR_CHUNK = 4011, + FRAMEBUFFER_READ_COLOR_CHUNK_TOOLTIP = 4012, + FRAMEBUFFER_READ_DEPTH_CHUNK = 4013, + FRAMEBUFFER_READ_DEPTH_CHUNK_TOOLTIP = 4014, + FRAMEBUFFER_COPY_COLOR_BUFFER = 4015, + FRAMEBUFFER_COPY_COLOR_BUFFER_TOOLTIP = 4016, + FRAMEBUFFER_COPY_NEVER = 4017, + FRAMEBUFFER_COPY_SYNCHRONOUS = 4018, + FRAMEBUFFER_COPY_ASYNCHRONOUS = 4019, + FRAMEBUFFER_COPY_DEPTH_BUFFER = 4020, + FRAMEBUFFER_COPY_DEPTH_BUFFER_TOOLTIP = 4021, + FRAMEBUFFER_COPY_DEPTH_NEVER = 4022, + FRAMEBUFFER_COPY_DEPTH_VRAM = 4023, + FRAMEBUFFER_COPY_DEPTH_SOFTWARE = 4024, + FRAMEBUFFER_N64_DEPTH_COMPARE = 4025, + FRAMEBUFFER_N64_DEPTH_COMPARE_TOOLTIP = 4026, + FRAMEBUFFER_N64_DEPTH_DISABLE = 4027, + FRAMEBUFFER_N64_DEPTH_FAST = 4028, + FRAMEBUFFER_N64_DEPTH_COMPATIBLE = 4029, + FRAMEBUFFER_FORCE_DEPTH_BUFFER_CLEAR = 4030, + FRAMEBUFFER_FORCE_DEPTH_BUFFER_CLEAR_TOOLTIP = 4031, + FRAMEBUFFER_RENDER_FRAMEBUFFER = 4032, + FRAMEBUFFER_RENDER_FRAMEBUFFER_TOOLTIP = 4033, + FRAMEBUFFER_COPY_DEPTH_TO_MAIN = 4034, + FRAMEBUFFER_COPY_DEPTH_TO_MAIN_TOOLTIP = 4035, }; struct LanguageFile diff --git a/src/GLideNUI-wtl/config-framebuffer.cpp b/src/GLideNUI-wtl/config-framebuffer.cpp index 2ba740ae..f5dfc41c 100644 --- a/src/GLideNUI-wtl/config-framebuffer.cpp +++ b/src/GLideNUI-wtl/config-framebuffer.cpp @@ -1,6 +1,7 @@ #include "config-framebuffer.h" #include "resource.h" #include "../Config.h" +#include "Language.h" CFrameBufferTab::CFrameBufferTab() : CConfigTab(IDD_TAB_FRAME_BUFFER) @@ -9,6 +10,9 @@ CFrameBufferTab::CFrameBufferTab() : BOOL CFrameBufferTab::OnInitDialog(CWindow /*wndFocus*/, LPARAM /*lInitParam*/) { + TTInit(); + TTSize(400); + SIZE iconSz = { ::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON) }; m_EmulateFBIcon.SubclassWindow(GetDlgItem(IDC_EMULATE_FB_ICON)); m_EmulateFBIcon.SetIcon(MAKEINTRESOURCE(IDI_ICON_WARNING), iconSz.cx, iconSz.cy); @@ -16,29 +20,105 @@ BOOL CFrameBufferTab::OnInitDialog(CWindow /*wndFocus*/, LPARAM /*lInitParam*/) m_EmulateFBIcon.SetBackroundBrush((HBRUSH)GetStockObject(WHITE_BRUSH)); CComboBox frameBufferSwapComboBox(GetDlgItem(IDC_CMB_FRAMEBUFFER_SWAP)); - frameBufferSwapComboBox.AddString(L"Vertical interrupt (recommended, fewest game issues)"); - frameBufferSwapComboBox.AddString(L"VI origin change (faster, few game issues)"); - frameBufferSwapComboBox.AddString(L"Color buffer change (fastest, some game issues)"); + frameBufferSwapComboBox.AddString(wGS(FRAMEBUFFER_VERTICAL_INTERRUPT).c_str()); + frameBufferSwapComboBox.AddString(wGS(FRAMEBUFFER_VI_ORIGIN_CHANGE).c_str()); + frameBufferSwapComboBox.AddString(wGS(FRAMEBUFFER_COLOR_BUFFER_CHANGE).c_str()); CComboBox copyColorBufferComboBox(GetDlgItem(IDC_CMB_COPY_COLOR_BUFFER)); - copyColorBufferComboBox.AddString(L"Never (fastest, many game issues)"); - copyColorBufferComboBox.AddString(L"Synchronous (slowest, fewest game issues)"); - copyColorBufferComboBox.AddString(L"Asynchronous (fast, few game issues)"); + copyColorBufferComboBox.AddString(wGS(FRAMEBUFFER_COPY_NEVER).c_str()); + copyColorBufferComboBox.AddString(wGS(FRAMEBUFFER_COPY_SYNCHRONOUS).c_str()); + copyColorBufferComboBox.AddString(wGS(FRAMEBUFFER_COPY_ASYNCHRONOUS).c_str()); CComboBox copyDepthBufferComboBox(GetDlgItem(IDC_CMB_COPY_DEPTH_BUFFER)); - copyDepthBufferComboBox.AddString(L"Never (fastest, most game issues)"); - copyDepthBufferComboBox.AddString(L"From VRAM (slow, some game issues)"); - copyDepthBufferComboBox.AddString(L"In software (fast, fewest game issues)"); + copyDepthBufferComboBox.AddString(wGS(FRAMEBUFFER_COPY_DEPTH_NEVER).c_str()); + copyDepthBufferComboBox.AddString(wGS(FRAMEBUFFER_COPY_DEPTH_VRAM).c_str()); + copyDepthBufferComboBox.AddString(wGS(FRAMEBUFFER_COPY_DEPTH_SOFTWARE).c_str()); CComboBox n64DepthCompareComboBox(GetDlgItem(IDC_CMB_N64_DEPTH_COMPARE)); - n64DepthCompareComboBox.AddString(L"Disable"); - n64DepthCompareComboBox.AddString(L"Fast"); - n64DepthCompareComboBox.AddString(L"Compatible"); + n64DepthCompareComboBox.AddString(wGS(FRAMEBUFFER_N64_DEPTH_DISABLE).c_str()); + n64DepthCompareComboBox.AddString(wGS(FRAMEBUFFER_N64_DEPTH_FAST).c_str()); + n64DepthCompareComboBox.AddString(wGS(FRAMEBUFFER_N64_DEPTH_COMPATIBLE).c_str()); return true; } void CFrameBufferTab::ApplyLanguage(void) { + SetDlgItemTextW(IDC_CHK_ENABLE_FRAMEBUFFER, wGS(FRAMEBUFFER_ENABLE).c_str()); + SetDlgItemTextW(IDC_FRAME_BUFFER_INFO, wGS(FRAMEBUFFER_ENABLE_INFO).c_str()); + SetDlgItemTextW(IDC_CHK_COPY_AUX_BUFFERS, wGS(FRAMEBUFFER_COPY_AUX_BUFFERS).c_str()); + SetDlgItemTextW(IDC_TXT_FRAMEBUFFER_SWAP, wGS(FRAMEBUFFER_SWAP).c_str()); + SetDlgItemTextW(IDC_CHK_FB_INFO_ENABLE, wGS(FRAMEBUFFER_INFO_ENABLE).c_str()); + SetDlgItemTextW(IDC_CHK_READ_COLOR_CHUNK, wGS(FRAMEBUFFER_READ_COLOR_CHUNK).c_str()); + SetDlgItemTextW(IDC_CHK_READ_DEPTH_CHUNK, wGS(FRAMEBUFFER_READ_DEPTH_CHUNK).c_str()); + SetDlgItemTextW(IDC_TXT_COPY_COLOR_BUFFER, wGS(FRAMEBUFFER_COPY_COLOR_BUFFER).c_str()); + SetDlgItemTextW(IDC_TXT_COPY_DEPTH_BUFFER, wGS(FRAMEBUFFER_COPY_DEPTH_BUFFER).c_str()); + SetDlgItemTextW(IDC_TXT_N64_DEPTH_COMPARE, wGS(FRAMEBUFFER_N64_DEPTH_COMPARE).c_str()); + SetDlgItemTextW(IDC_CHK_FORCE_DEPTH_BUFFER_CLEAR, wGS(FRAMEBUFFER_FORCE_DEPTH_BUFFER_CLEAR).c_str()); + SetDlgItemTextW(IDC_CHK_RENDER_FRAMEBUFFER, wGS(FRAMEBUFFER_RENDER_FRAMEBUFFER).c_str()); + SetDlgItemTextW(IDC_CHK_COPY_DEPTH_TO_MAIN_DEPTH_BUFFER, wGS(FRAMEBUFFER_COPY_DEPTH_TO_MAIN).c_str()); + + std::wstring tooltip = wGS(FRAMEBUFFER_COPY_AUX_BUFFERS_TOOLTIP); + TTSetTxt(GetDlgItem(IDC_CHK_COPY_AUX_BUFFERS), tooltip.c_str()); + tooltip = wGS(FRAMEBUFFER_SWAP_TOOLTIP); + TTSetTxt(GetDlgItem(IDC_TXT_FRAMEBUFFER_SWAP), tooltip.c_str()); + TTSetTxt(GetDlgItem(IDC_CMB_FRAMEBUFFER_SWAP), tooltip.c_str()); + tooltip = wGS(FRAMEBUFFER_INFO_ENABLE_TOOLTIP); + TTSetTxt(GetDlgItem(IDC_CHK_FB_INFO_ENABLE), tooltip.c_str()); + tooltip = wGS(FRAMEBUFFER_READ_COLOR_CHUNK_TOOLTIP); + TTSetTxt(GetDlgItem(IDC_CHK_READ_COLOR_CHUNK), tooltip.c_str()); + tooltip = wGS(FRAMEBUFFER_READ_DEPTH_CHUNK_TOOLTIP); + TTSetTxt(GetDlgItem(IDC_CHK_READ_DEPTH_CHUNK), tooltip.c_str()); + tooltip = wGS(FRAMEBUFFER_COPY_COLOR_BUFFER_TOOLTIP); + TTSetTxt(GetDlgItem(IDC_TXT_COPY_COLOR_BUFFER), tooltip.c_str()); + TTSetTxt(GetDlgItem(IDC_CMB_COPY_COLOR_BUFFER), tooltip.c_str()); + tooltip = wGS(FRAMEBUFFER_COPY_DEPTH_BUFFER_TOOLTIP); + TTSetTxt(GetDlgItem(IDC_TXT_COPY_COLOR_BUFFER), tooltip.c_str()); + TTSetTxt(GetDlgItem(IDC_CMB_COPY_DEPTH_BUFFER), tooltip.c_str()); + tooltip = wGS(FRAMEBUFFER_N64_DEPTH_COMPARE_TOOLTIP); + TTSetTxt(GetDlgItem(IDC_TXT_N64_DEPTH_COMPARE), tooltip.c_str()); + TTSetTxt(GetDlgItem(IDC_CMB_N64_DEPTH_COMPARE), tooltip.c_str()); + tooltip = wGS(FRAMEBUFFER_FORCE_DEPTH_BUFFER_CLEAR_TOOLTIP); + TTSetTxt(GetDlgItem(IDC_CHK_FORCE_DEPTH_BUFFER_CLEAR), tooltip.c_str()); + tooltip = wGS(FRAMEBUFFER_RENDER_FRAMEBUFFER_TOOLTIP); + TTSetTxt(GetDlgItem(IDC_CHK_RENDER_FRAMEBUFFER), tooltip.c_str()); + tooltip = wGS(FRAMEBUFFER_COPY_DEPTH_TO_MAIN_TOOLTIP); + TTSetTxt(GetDlgItem(IDC_CHK_COPY_DEPTH_TO_MAIN_DEPTH_BUFFER), tooltip.c_str()); + + CComboBox frameBufferSwapComboBox(GetDlgItem(IDC_CMB_FRAMEBUFFER_SWAP)); + int selectedIndx = frameBufferSwapComboBox.GetCurSel(); + frameBufferSwapComboBox.ResetContent(); + frameBufferSwapComboBox.AddString(wGS(FRAMEBUFFER_VERTICAL_INTERRUPT).c_str()); + frameBufferSwapComboBox.AddString(wGS(FRAMEBUFFER_VI_ORIGIN_CHANGE).c_str()); + frameBufferSwapComboBox.AddString(wGS(FRAMEBUFFER_COLOR_BUFFER_CHANGE).c_str()); + if (selectedIndx >= 0) + frameBufferSwapComboBox.SetCurSel(selectedIndx); + + CComboBox copyColorBufferComboBox(GetDlgItem(IDC_CMB_COPY_COLOR_BUFFER)); + selectedIndx = copyColorBufferComboBox.GetCurSel(); + copyColorBufferComboBox.ResetContent(); + copyColorBufferComboBox.AddString(wGS(FRAMEBUFFER_COPY_NEVER).c_str()); + copyColorBufferComboBox.AddString(wGS(FRAMEBUFFER_COPY_SYNCHRONOUS).c_str()); + copyColorBufferComboBox.AddString(wGS(FRAMEBUFFER_COPY_ASYNCHRONOUS).c_str()); + if (selectedIndx >= 0) + copyColorBufferComboBox.SetCurSel(selectedIndx); + + CComboBox copyDepthBufferComboBox(GetDlgItem(IDC_CMB_COPY_DEPTH_BUFFER)); + selectedIndx = copyDepthBufferComboBox.GetCurSel(); + copyDepthBufferComboBox.ResetContent(); + copyDepthBufferComboBox.AddString(wGS(FRAMEBUFFER_COPY_DEPTH_NEVER).c_str()); + copyDepthBufferComboBox.AddString(wGS(FRAMEBUFFER_COPY_DEPTH_VRAM).c_str()); + copyDepthBufferComboBox.AddString(wGS(FRAMEBUFFER_COPY_DEPTH_SOFTWARE).c_str()); + if (selectedIndx >= 0) + copyDepthBufferComboBox.SetCurSel(selectedIndx); + + CComboBox n64DepthCompareComboBox(GetDlgItem(IDC_CMB_N64_DEPTH_COMPARE)); + selectedIndx = n64DepthCompareComboBox.GetCurSel(); + n64DepthCompareComboBox.ResetContent(); + n64DepthCompareComboBox.AddString(wGS(FRAMEBUFFER_N64_DEPTH_DISABLE).c_str()); + n64DepthCompareComboBox.AddString(wGS(FRAMEBUFFER_N64_DEPTH_FAST).c_str()); + n64DepthCompareComboBox.AddString(wGS(FRAMEBUFFER_N64_DEPTH_COMPATIBLE).c_str()); + if (selectedIndx >= 0) + n64DepthCompareComboBox.SetCurSel(selectedIndx); } LRESULT CFrameBufferTab::OnColorStatic(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) diff --git a/src/GLideNUI-wtl/config-framebuffer.h b/src/GLideNUI-wtl/config-framebuffer.h index 11a5934d..9d62cc48 100644 --- a/src/GLideNUI-wtl/config-framebuffer.h +++ b/src/GLideNUI-wtl/config-framebuffer.h @@ -1,10 +1,12 @@ #pragma once #include "config-tab.h" #include "wtl-BitmapPicture.h" +#include "wtl-tooltip.h" #include "resource.h" class CFrameBufferTab : - public CConfigTab + public CConfigTab, + public CToolTipDialog { public: BEGIN_MSG_MAP(CFrameBufferTab) @@ -13,6 +15,7 @@ public: MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColorStatic) COMMAND_HANDLER_EX(IDC_CHK_ENABLE_FRAMEBUFFER, BN_CLICKED, OnEnableFramebuffer) COMMAND_HANDLER_EX(IDC_CHK_FB_INFO_ENABLE, BN_CLICKED, OnFbInfoEnable) + CHAIN_MSG_MAP(CToolTipDialog) END_MSG_MAP() CFrameBufferTab(); diff --git a/src/GLideNUI-wtl/resource.h b/src/GLideNUI-wtl/resource.h index 89e4ee09a39fd73a0961b8fa0f19dde733f106cf..e9b01e6556beb4a937b58c2f660e9d042e990f49 100644 GIT binary patch delta 106 zcmbQx%Xnu3;|3j<$tTpMCa-f~oBTvhY?6Y^WF9xENsa=OqZEx84JR8aDoze?;F!Ek z(TLfQ!EAD&l{}a)qy*s`YRXS8V3nBs$zEad1}8Q~%gyR8&lwrbCkLvDPtI`_nQY}2 F1^^