From 90d2d95c72753a8a7eaf5a21c409ddec63a36831 Mon Sep 17 00:00:00 2001 From: LPFaint99 Date: Thu, 30 Jul 2009 07:08:31 +0000 Subject: [PATCH] plugins can now compile with unicode excluding DX9 git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3905 8ced0084-cf51-0410-be5f-012b33b47a6e --- .../Plugins/Plugin_DSP_HLE/Src/ConfigDlg.cpp | 6 +- .../Plugin_DSP_LLE/Src/DSPConfigDlgLLE.cpp | 6 +- .../Plugin_PadSimple/Src/GUI/ConfigDlg.cpp | 2 +- .../Plugin_PadSimpleEvnt/Src/PadSimple.cpp | 2 +- Source/Plugins/Plugin_VideoOGL/Src/GLUtil.cpp | 9 +-- .../Plugin_VideoOGL/Src/GUI/ConfigDlg.cpp | 66 +++++++++---------- .../Plugins/Plugin_VideoOGL/Src/OS/Win32.cpp | 2 +- .../Plugin_Wiimote/Src/ConfigBasicDlg.cpp | 4 +- .../Plugin_Wiimote/Src/ConfigGamepad.cpp | 8 +-- .../Plugin_Wiimote/Src/ConfigPadDlg.cpp | 13 ++-- .../Plugin_Wiimote/Src/ConfigRecording.cpp | 39 +++++------ 11 files changed, 75 insertions(+), 82 deletions(-) diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/ConfigDlg.cpp b/Source/Plugins/Plugin_DSP_HLE/Src/ConfigDlg.cpp index e6b736271b..fb521760a7 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/ConfigDlg.cpp +++ b/Source/Plugins/Plugin_DSP_HLE/Src/ConfigDlg.cpp @@ -60,9 +60,9 @@ DSPConfigDialogHLE::DSPConfigDialogHLE(wxWindow *parent, wxWindowID id, const wx // Add tooltips m_buttonEnableHLEAudio->SetToolTip(wxT("This is the most common sound type")); m_buttonEnableDTKMusic->SetToolTip(wxT("This is sometimes used to play music tracks from the disc")); - m_buttonEnableThrottle->SetToolTip(wxT("This is sometimes used together with pre-rendered movies.\n" - "Disabling this also disables the speed throttle which this causes,\n" - "meaning that there will be no upper limit on your FPS.")); + m_buttonEnableThrottle->SetToolTip(wxT("This is sometimes used together with pre-rendered movies.\n") + wxT("Disabling this also disables the speed throttle which this causes,\n") + wxT("meaning that there will be no upper limit on your FPS.")); m_buttonEnableRE0Fix->SetToolTip(wxT("This fixes audo in RE0 and maybe some other games.")); m_BackendSelection->SetToolTip(wxT("Changing this will have no effect while the emulator is running!")); diff --git a/Source/Plugins/Plugin_DSP_LLE/Src/DSPConfigDlgLLE.cpp b/Source/Plugins/Plugin_DSP_LLE/Src/DSPConfigDlgLLE.cpp index c4e134e5c2..709c601b9c 100644 --- a/Source/Plugins/Plugin_DSP_LLE/Src/DSPConfigDlgLLE.cpp +++ b/Source/Plugins/Plugin_DSP_LLE/Src/DSPConfigDlgLLE.cpp @@ -52,9 +52,9 @@ DSPConfigDialogLLE::DSPConfigDialogLLE(wxWindow *parent, wxWindowID id, const wx // Add tooltips m_buttonEnableDTKMusic->SetToolTip(wxT("This is sometimes used to play music tracks from the disc")); - m_buttonEnableThrottle->SetToolTip(wxT("This is sometimes used together with pre-rendered movies.\n" - "Disabling this also disables the speed throttle which this causes,\n" - "meaning that there will be no upper limit on your FPS.")); + m_buttonEnableThrottle->SetToolTip(wxT("This is sometimes used together with pre-rendered movies.\n") + wxT("Disabling this also disables the speed throttle which this causes,\n") + wxT("meaning that there will be no upper limit on your FPS.")); m_BackendSelection->SetToolTip(wxT("Changing this will have no effect while the emulator is running!")); // Create sizer and add items to dialog diff --git a/Source/Plugins/Plugin_PadSimple/Src/GUI/ConfigDlg.cpp b/Source/Plugins/Plugin_PadSimple/Src/GUI/ConfigDlg.cpp index 8115966b94..e928b58ee7 100644 --- a/Source/Plugins/Plugin_PadSimple/Src/GUI/ConfigDlg.cpp +++ b/Source/Plugins/Plugin_PadSimple/Src/GUI/ConfigDlg.cpp @@ -160,7 +160,7 @@ void PADConfigDialogSimple::CreateGUIControls() if (xresult == ERROR_SUCCESS) { - arrayStringFor_X360Pad.Add(wxString::Format("%i", x+1)); + arrayStringFor_X360Pad.Add(wxString::Format(wxT("%i"), x+1)); } } #endif diff --git a/Source/Plugins/Plugin_PadSimpleEvnt/Src/PadSimple.cpp b/Source/Plugins/Plugin_PadSimpleEvnt/Src/PadSimple.cpp index e45235e766..3a35f69dba 100644 --- a/Source/Plugins/Plugin_PadSimpleEvnt/Src/PadSimple.cpp +++ b/Source/Plugins/Plugin_PadSimpleEvnt/Src/PadSimple.cpp @@ -211,7 +211,7 @@ void GetDllInfo(PLUGIN_INFO* _PluginInfo) void SetDllGlobals(PLUGIN_GLOBALS* _pPluginGlobals) { globals = _pPluginGlobals; - LogManager::SetInstance((LogManager *)globals->logManager); +// LogManager::SetInstance((LogManager *)globals->logManager); } diff --git a/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.cpp b/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.cpp index c8ab460e1f..676fa7523b 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.cpp @@ -83,7 +83,8 @@ void OpenGL_SetWindowText(const char *text) #elif defined(HAVE_COCOA) && HAVE_COCOA cocoaGLSetTitle(GLWin.cocoaWin, text); #elif defined(_WIN32) - SetWindowText(EmuWindow::GetWnd(), text); + // TODO convert text to unicode and change SetWindowTextA to SetWindowText + SetWindowTextA(EmuWindow::GetWnd(), text); #elif defined(USE_WX) && USE_WX GLWin.frame->SetTitle(wxString::FromAscii(text)); #elif defined(HAVE_X11) && HAVE_X11 // GLX @@ -233,10 +234,10 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _iwidth, int _iheight // Create a separate window if (!g_Config.renderToMainframe || g_VideoInitialize.pWindowHandle == NULL) - g_VideoInitialize.pWindowHandle = (void*)EmuWindow::Create(NULL, g_hInstance, "Please wait..."); + g_VideoInitialize.pWindowHandle = (void*)EmuWindow::Create(NULL, g_hInstance, _T("Please wait...")); // Create a child window else - g_VideoInitialize.pWindowHandle = (void*)EmuWindow::Create((HWND)g_VideoInitialize.pWindowHandle, g_hInstance, "Please wait..."); + g_VideoInitialize.pWindowHandle = (void*)EmuWindow::Create((HWND)g_VideoInitialize.pWindowHandle, g_hInstance, _T("Please wait...")); // Show the window EmuWindow::Show(); @@ -269,7 +270,7 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _iwidth, int _iheight // Try To Set Selected Mode And Get Results. NOTE: CDS_FULLSCREEN Gets Rid Of Start Bar. if (ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL) { - if (MessageBox(NULL,"The Requested Fullscreen Mode Is Not Supported By\nYour Video Card. Use Windowed Mode Instead?","NeHe GL",MB_YESNO|MB_ICONEXCLAMATION)==IDYES) + if (MessageBox(NULL, _T("The Requested Fullscreen Mode Is Not Supported By\nYour Video Card. Use Windowed Mode Instead?"), _T("NeHe GL"),MB_YESNO|MB_ICONEXCLAMATION)==IDYES) g_Config.bFullscreen = false; else return false; diff --git a/Source/Plugins/Plugin_VideoOGL/Src/GUI/ConfigDlg.cpp b/Source/Plugins/Plugin_VideoOGL/Src/GUI/ConfigDlg.cpp index dce4c455f5..42098b2012 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/GUI/ConfigDlg.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/GUI/ConfigDlg.cpp @@ -231,27 +231,26 @@ void GFXConfigDialogOGL::CreateGUIControls() m_EFBCopyDisableHotKey->SetValue(g_Config.bEFBCopyDisableHotKey); // Tool tips - m_Fullscreen->SetToolTip(wxT( - "This will create a Fullscreen window using the chosen Fullscreen resolution." - "\nPress Alt+Enter to switch between Fullscreen and Windowed mode." - "\n\nApplies instanty during gameplay: ")); - m_NativeResolution->SetToolTip(wxT( - "This will use the game's native resolution and stretch it to fill the" - "\nwindow instead of changing the internal display resolution. It" - "\nmay result in a blurrier image, but it may also give a higher" - "\nFPS if you have a slow graphics card." - "\n\nApplies instanty during gameplay: ")); + m_Fullscreen->SetToolTip( + wxT("This will create a Fullscreen window using the chosen Fullscreen resolution.") + wxT("\nPress Alt+Enter to switch between Fullscreen and Windowed mode.") + wxT("\n\nApplies instanty during gameplay: ")); + m_NativeResolution->SetToolTip( + wxT("This will use the game's native resolution and stretch it to fill the") + wxT("\nwindow instead of changing the internal display resolution. It") + wxT("\nmay result in a blurrier image, but it may also give a higher") + wxT("\nFPS if you have a slow graphics card.") + wxT("\n\nApplies instanty during gameplay: ")); m_2xResolution->SetToolTip(wxT( "Applies instanty during gameplay: ")); - m_Crop->SetToolTip(wxT( - "Crop the picture instead of creating a letterbox. It will assume that your screen" - "\nis of the 5:4 format if you have selected the 4:3 aspect ratio. It will assume" - "\nthat your screen is of the 16:10 format if you have selected the 16:9 aspect ratio." - "\n\nApplies instanty during gameplay: ")); - m_WindowResolutionCB->SetToolTip(wxT( - "Select internal resolution for the separate rendering window. This resolution also applies" - " to the fullscreen mode" - "\n\nApplies instanty during gameplay: ")); + m_Crop->SetToolTip( + wxT("Crop the picture instead of creating a letterbox. It will assume that your screen") + wxT("\nis of the 5:4 format if you have selected the 4:3 aspect ratio. It will assume") + wxT("\nthat your screen is of the 16:10 format if you have selected the 16:9 aspect ratio.") + wxT("\n\nApplies instanty during gameplay: ")); + m_WindowResolutionCB->SetToolTip( + wxT("Select internal resolution for the separate rendering window. This resolution also applies") + wxT(" to the fullscreen mode\n\nApplies instanty during gameplay: ")); m_MSAAModeCB->SetToolTip(wxT( "Applies instanty during gameplay: ")); m_EFBCopyDisableHotKey->SetToolTip(wxT( @@ -386,8 +385,8 @@ void GFXConfigDialogOGL::CreateGUIControls() m_StaticBox_EFB = new wxStaticBox(m_PageAdvanced, ID_STATICBOX_EFB, wxT("EFB Copy")); m_CheckBox_DisableCopyEFB = new wxCheckBox(m_PageAdvanced, ID_CHECKBOX_DISABLECOPYEFB, wxT("Disable")); m_CheckBox_DisableCopyEFB->SetValue(g_Config.bEFBCopyDisable); - m_CheckBox_DisableCopyEFB->SetToolTip(wxT("This may lead to a higher FPS in for example Zelda - TP." - " But it may also cause graphical errors and missing graphics.")); + m_CheckBox_DisableCopyEFB->SetToolTip(wxT("This may lead to a higher FPS in for example Zelda - TP.") + wxT(" But it may also cause graphical errors and missing graphics.")); m_Radio_CopyEFBToRAM = new wxRadioButton(m_PageAdvanced, ID_RADIO_COPYEFBTORAM, wxT("Copy EFB to system RAM (real)")); m_Radio_CopyEFBToRAM->SetToolTip(wxT("[This option will apply immediately and does not require a restart to take effect.]")); @@ -405,9 +404,9 @@ void GFXConfigDialogOGL::CreateGUIControls() m_DumpEFBTarget->SetValue(g_Config.bDumpEFBTarget); m_DumpFrames = new wxCheckBox(m_PageAdvanced, ID_DUMPFRAMES, wxT("Dump Rendered Frames"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); #ifdef _WIN32 - m_DumpFrames->SetToolTip(wxT( - "When dumping begins, you will be prompted to choose a video codec to" - " encode the video in.")); + m_DumpFrames->SetToolTip( + wxT("When dumping begins, you will be prompted to choose a video codec to") + wxT(" encode the video in.")); #else m_DumpFrames->SetToolTip(wxT( "!!WARNING!! This option dumps raw bitmaps of each frame, and will fill up" @@ -438,12 +437,12 @@ void GFXConfigDialogOGL::CreateGUIControls() m_SafeTextureCache->SetValue(g_Config.bSafeTextureCache); // Tool tips - m_SafeTextureCache->SetToolTip(wxT("This is useful to prevent Metroid Prime from crashing, but can cause problems in other games." - "\n[This option will apply immediately and does not require a restart. However it may not" - " be entirely safe to change it midgames.]")); + m_SafeTextureCache->SetToolTip(wxT("This is useful to prevent Metroid Prime from crashing, but can cause problems in other games.") + wxT("\n[This option will apply immediately and does not require a restart. However it may not") + wxT(" be entirely safe to change it midgames.]")); - m_DstAlphaPass->SetToolTip(wxT("This renders a second time to set alpha to a constant value," - "\nDisabling it may speed up some games, but could also cause glitches.")); + m_DstAlphaPass->SetToolTip(wxT("This renders a second time to set alpha to a constant value,") + wxT("\nDisabling it may speed up some games, but could also cause glitches.")); m_DisableFog->SetToolTip(wxT("This option should not require a restart.")); // Sizers @@ -509,10 +508,10 @@ void GFXConfigDialogOGL::CreateGUIControls() void GFXConfigDialogOGL::AboutClick(wxCommandEvent& WXUNUSED (event)) { - wxMessageBox(_T("Dolphin OpenGL Plugin\nBy zerofrog(@gmail.com)\n\n" - "A card supporting Vertex/Pixel Shader 2.0 or higher, framebuffer objects, " - "and multiple render targets is required in order to use this plugin."), - _T("Dolphin OGL"), wxOK, this); + wxMessageBox(wxT("Dolphin OpenGL Plugin\nBy zerofrog(@gmail.com)\n\n") + wxT("A card supporting Vertex/Pixel Shader 2.0 or higher, framebuffer objects, ") + wxT("and multiple render targets is required in order to use this plugin."), + wxT("Dolphin OGL"), wxOK, this); } void GFXConfigDialogOGL::ReloadShaderClick(wxCommandEvent& WXUNUSED (event)) @@ -819,4 +818,3 @@ void Config::UpdateProjectionHack() } } - diff --git a/Source/Plugins/Plugin_VideoOGL/Src/OS/Win32.cpp b/Source/Plugins/Plugin_VideoOGL/Src/OS/Win32.cpp index a876bb9fd3..8829f69da9 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/OS/Win32.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/OS/Win32.cpp @@ -144,7 +144,7 @@ HWND m_hMain = NULL; // The main CPanel HINSTANCE m_hInstance = NULL; WNDCLASSEX wndClass; -const TCHAR m_szClassName[] = "DolphinEmuWnd"; +const TCHAR m_szClassName[] = _T("DolphinEmuWnd"); int g_winstyle; // --------------------------------------------------------------------- diff --git a/Source/Plugins/Plugin_Wiimote/Src/ConfigBasicDlg.cpp b/Source/Plugins/Plugin_Wiimote/Src/ConfigBasicDlg.cpp index d68a34f6e2..a7686799bf 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/ConfigBasicDlg.cpp +++ b/Source/Plugins/Plugin_Wiimote/Src/ConfigBasicDlg.cpp @@ -164,8 +164,8 @@ void WiimoteBasicConfigDialog::CreateGUIControls() m_UseRealWiimote[0]->SetValue(g_Config.bUseRealWiimote); m_ConnectRealWiimote[i]->SetToolTip(wxT("Connected to the real wiimote. This can not be changed during gameplay.")); - m_UseRealWiimote[i]->SetToolTip(wxT("Use the real Wiimote in the game. This can be changed during gameplay. This can not be selected" - " when a recording is to be done. No status in this window will be updated when this is checked.")); + m_UseRealWiimote[i]->SetToolTip(wxT("Use the real Wiimote in the game. This can be changed during gameplay. This can not be selected") + wxT(" when a recording is to be done. No status in this window will be updated when this is checked.")); m_SizeReal[i] = new wxStaticBoxSizer(wxVERTICAL, m_Controller[i], wxT("Real Wiimote")); m_SizeReal[i]->Add(m_ConnectRealWiimote[i], 0, wxEXPAND | wxALL, 5); diff --git a/Source/Plugins/Plugin_Wiimote/Src/ConfigGamepad.cpp b/Source/Plugins/Plugin_Wiimote/Src/ConfigGamepad.cpp index f12708c1ec..ababc6322d 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/ConfigGamepad.cpp +++ b/Source/Plugins/Plugin_Wiimote/Src/ConfigGamepad.cpp @@ -285,7 +285,7 @@ void WiimotePadConfigDialog::ToBlank(bool _ToBlank) if(GetButtonText(i, j).ToAscii() == "-1") SetButtonText(i, (char *)"", j); #else - if(GetButtonText(i, j) == "-1") SetButtonText(i, "", j); + if(GetButtonText(i, j) == wxT("-1")) SetButtonText(i, "", j); #endif } else @@ -515,9 +515,9 @@ void WiimotePadConfigDialog::DoGetButtons(int _GetId) SetButtonTextAll(_GetId, (char *)"-1"); // Notify the user - wxMessageBox(wxString::Format(wxT( - "You selected a key with a to low key code (%i), please" - " select another key with a higher key code."), pressed) + wxMessageBox(wxString::Format( + wxT("You selected a key with a to low key code (%i), please") + wxT(" select another key with a higher key code."), pressed) , wxT("Notice"), wxICON_INFORMATION); } diff --git a/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.cpp b/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.cpp index 0e90bd9a22..5035225633 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.cpp +++ b/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.cpp @@ -413,14 +413,11 @@ void WiimotePadConfigDialog::CreatePadGUIControls() // Tooltips m_Joyname[i]->SetToolTip(wxT("Save your settings and configure another joypad")); - m_CheckC2S[i]->SetToolTip(wxT( - "This will convert a circular stick radius to a square stick radius." - " This can be useful for the pitch and roll emulation." - )); - m_CheckC2SLabel[i]->SetToolTip(wxT( - "To produce a perfect square circle in the 'Out' window you have to manually set" - "\nyour diagonal values here from what is shown in the 'In' window." - )); + m_CheckC2S[i]->SetToolTip(wxT("This will convert a circular stick radius to a square stick radius.") + wxT(" This can be useful for the pitch and roll emulation.")); + m_CheckC2SLabel[i]->SetToolTip( + wxT("To produce a perfect square circle in the 'Out' window you have to manually set") + wxT("\nyour diagonal values here from what is shown in the 'In' window.")); // Sizers m_gDeadZone[i] = new wxBoxSizer(wxVERTICAL); diff --git a/Source/Plugins/Plugin_Wiimote/Src/ConfigRecording.cpp b/Source/Plugins/Plugin_Wiimote/Src/ConfigRecording.cpp index e4a3a710fb..223b5f9267 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/ConfigRecording.cpp +++ b/Source/Plugins/Plugin_Wiimote/Src/ConfigRecording.cpp @@ -89,10 +89,10 @@ void WiimoteRecordingConfigDialog::SaveFile() file.Set(SaveName.c_str(), "HotKeyIR", m_RecordHotKeyIR[i]->GetSelection()); // Movement name - file.Set(SaveName.c_str(), "MovementName", m_RecordText[i]->GetValue().c_str()); + file.Set(SaveName.c_str(), "MovementName", (const char*)m_RecordText[i]->GetValue().mb_str(wxConvUTF8)); // Game name - file.Set(SaveName.c_str(), "GameName", m_RecordGameText[i]->GetValue().c_str()); + file.Set(SaveName.c_str(), "GameName", (const char*)m_RecordGameText[i]->GetValue().mb_str(wxConvUTF8)); // Recording speed (currently always saved directly after a recording) /* @@ -120,10 +120,9 @@ void WiimoteRecordingConfigDialog::CreateGUIControlsRecording() m_UpdateMeters->SetValue(g_Config.bUpdateRealWiimote); - m_UpdateMeters->SetToolTip(wxT( - "You can turn this off when a game is running to avoid a potential slowdown that may come from redrawing the\n" - "configuration screen. Remember that you also need to press '+' on your Wiimote before you can record movements." - )); + m_UpdateMeters->SetToolTip( + wxT("You can turn this off when a game is running to avoid a potential slowdown that may come from redrawing the\n") + wxT("configuration screen. Remember that you also need to press '+' on your Wiimote before you can record movements.")); // Width and height of the gauges static const int Gw = 35, Gh = 110; //ugly @@ -234,27 +233,25 @@ void WiimoteRecordingConfigDialog::CreateGUIControlsRecording() wxStaticText * m_TextPlaySpeed = new wxStaticText(m_PageRecording, wxID_ANY, wxT("Pl. s."), wxDefaultPosition, wxSize(40, -1), wxALIGN_CENTRE); // Tool tips - m_TextRec->SetToolTip(wxT( - "To record a movement first press this button, then start the recording by pressing 'A' on the Wiimote and stop the recording\n" - "by letting go of 'A'")); - m_TextHotKeyWm->SetToolTip(wxT( - "Select a hotkey for playback of Wiimote movements. You can combine it with an" - " optional Shift, Ctrl, or Alt switch." - )); + m_TextRec->SetToolTip( + wxT("To record a movement first press this button, then start the recording by pressing 'A' on the Wiimote and stop the recording\n") + wxT("by letting go of 'A'")); + m_TextHotKeyWm->SetToolTip( + wxT("Select a hotkey for playback of Wiimote movements. You can combine it with an") + wxT(" optional Shift, Ctrl, or Alt switch.")); m_TextHotKeyNc->SetToolTip(wxT( "Select a hotkey for playback of Nunchuck movements")); m_TextHotKeyIR->SetToolTip(wxT( "Select a hotkey for playback of Nunchuck movements")); m_TextRecSpeed->SetToolTip(wxT( "Recording speed in average measurements per second")); - m_TextPlaySpeed->SetToolTip(wxT( - "Playback speed: A playback speed of 100 means that the playback occurs at the same rate as it was recorded. (You can see the\n" - "current update rate in the Status window above when a game is running.) However, if your framerate is only at 50% of full speed\n" - "you may want to select a playback rate of 50, because then the game might perceive the playback as a full speed playback. (This\n" - "holds if Wiimote_Update() is tied to the framerate, I'm not sure that this is the case. It seemed to vary somewhat with different\n" - "framerates but perhaps not enough to say that it was exactly tied to the framerate.) So until this is better understood you'll have\n" - "to try different playback rates and see which one that works." - )); + m_TextPlaySpeed->SetToolTip( + wxT("Playback speed: A playback speed of 100 means that the playback occurs at the same rate as it was recorded. (You can see the\n") + wxT("current update rate in the Status window above when a game is running.) However, if your framerate is only at 50% of full speed\n") + wxT("you may want to select a playback rate of 50, because then the game might perceive the playback as a full speed playback. (This\n") + wxT("holds if Wiimote_Update() is tied to the framerate, I'm not sure that this is the case. It seemed to vary somewhat with different\n") + wxT("framerates but perhaps not enough to say that it was exactly tied to the framerate.) So until this is better understood you'll have\n") + wxT("to try different playback rates and see which one that works.")); sRealRecord[0] = new wxBoxSizer(wxHORIZONTAL); sRealRecord[0]->Add(m_TextRec, 0, wxEXPAND | (wxLEFT), 5);