dolphinwx and debuggerwx can now be compiled with unicode
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3906 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
90d2d95c72
commit
8302ac84de
|
@ -115,16 +115,17 @@
|
||||||
// Shorts - dirs
|
// Shorts - dirs
|
||||||
// User dirs
|
// User dirs
|
||||||
#define FULL_USERDATA_DIR ROOT_DIR DIR_SEP USERDATA_DIR DIR_SEP
|
#define FULL_USERDATA_DIR ROOT_DIR DIR_SEP USERDATA_DIR DIR_SEP
|
||||||
|
#define T_FULLUSERDATA_DIR _T(ROOT_DIR) _T(DIR_SEP) _T(USERDATA_DIR) _T(DIR_SEP)
|
||||||
|
|
||||||
#define FULL_GC_USER_DIR FULL_USERDATA_DIR GC_USER_DIR DIR_SEP
|
#define FULL_GC_USER_DIR FULL_USERDATA_DIR GC_USER_DIR DIR_SEP
|
||||||
//#define GC_USER_EUR_DIR FULL_GC_USER_DIR EUR_DIR
|
#define T_FULL_GC_USER_DIR T_FULLUSERDATA_DIR _T(GC_USER_DIR) _T(DIR_SEP)
|
||||||
//#define GC_USER_USA_DIR FULL_GC_USER_DIR USA_DIR
|
|
||||||
//#define GC_USER_JAP_DIR FULL_GC_USER_DIR JAP_DIR
|
|
||||||
|
|
||||||
#define FULL_WII_USER_DIR FULL_USERDATA_DIR WII_USER_DIR DIR_SEP
|
#define FULL_WII_USER_DIR FULL_USERDATA_DIR WII_USER_DIR DIR_SEP
|
||||||
#define FULL_WII_ROOT_DIR FULL_USERDATA_DIR WII_USER_DIR // This is the "root" for Wii fs, so that it may be used with created devices
|
#define FULL_WII_ROOT_DIR FULL_USERDATA_DIR WII_USER_DIR // This is the "root" for Wii fs, so that it may be used with created devices
|
||||||
|
|
||||||
#define FULL_GAMECONFIG_DIR FULL_USERDATA_DIR GAMECONFIG_DIR DIR_SEP
|
#define FULL_GAMECONFIG_DIR FULL_USERDATA_DIR GAMECONFIG_DIR DIR_SEP
|
||||||
|
#define T_FULL_GAMECONFIG_DIR T_FULLUSERDATA_DIR _T(GAMECONFIG_DIR) _T(DIR_SEP)
|
||||||
|
|
||||||
#define FULL_CONFIG_DIR FULL_USERDATA_DIR CONFIG_DIR DIR_SEP
|
#define FULL_CONFIG_DIR FULL_USERDATA_DIR CONFIG_DIR DIR_SEP
|
||||||
#define FULL_CACHE_DIR FULL_USERDATA_DIR CACHE_DIR DIR_SEP
|
#define FULL_CACHE_DIR FULL_USERDATA_DIR CACHE_DIR DIR_SEP
|
||||||
#define FULL_STATESAVES_DIR FULL_USERDATA_DIR STATESAVES_DIR DIR_SEP
|
#define FULL_STATESAVES_DIR FULL_USERDATA_DIR STATESAVES_DIR DIR_SEP
|
||||||
|
|
|
@ -351,6 +351,18 @@ void StackTrace( HANDLE hThread, LPCTSTR lpszMessage, FILE *file )
|
||||||
ResumeThread( hThread );
|
ResumeThread( hThread );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StackTrace( HANDLE hThread, wchar_t const*lpszMessage, FILE *file, DWORD eip, DWORD esp, DWORD ebp )
|
||||||
|
{
|
||||||
|
// TODO: remove when Common builds as unicode
|
||||||
|
size_t origsize = wcslen(lpszMessage) + 1;
|
||||||
|
const size_t newsize = 100;
|
||||||
|
size_t convertedChars = 0;
|
||||||
|
char nstring[newsize];
|
||||||
|
wcstombs_s(&convertedChars, nstring, origsize, lpszMessage, _TRUNCATE);
|
||||||
|
|
||||||
|
StackTrace(hThread, nstring, file, eip, esp, ebp );
|
||||||
|
}
|
||||||
|
|
||||||
void StackTrace( HANDLE hThread, LPCTSTR lpszMessage, FILE *file, DWORD eip, DWORD esp, DWORD ebp )
|
void StackTrace( HANDLE hThread, LPCTSTR lpszMessage, FILE *file, DWORD eip, DWORD esp, DWORD ebp )
|
||||||
{
|
{
|
||||||
STACKFRAME callStack;
|
STACKFRAME callStack;
|
||||||
|
|
|
@ -34,6 +34,7 @@ BOOL InitSymInfo( PCSTR );
|
||||||
BOOL UninitSymInfo();
|
BOOL UninitSymInfo();
|
||||||
void StackTrace( HANDLE, LPCTSTR, FILE *file);
|
void StackTrace( HANDLE, LPCTSTR, FILE *file);
|
||||||
void StackTrace( HANDLE, LPCTSTR, FILE *file, DWORD eip, DWORD esp, DWORD ebp);
|
void StackTrace( HANDLE, LPCTSTR, FILE *file, DWORD eip, DWORD esp, DWORD ebp);
|
||||||
|
void StackTrace( HANDLE hThread, wchar_t const* lpszMessage, FILE *file, DWORD eip, DWORD esp, DWORD ebp);
|
||||||
|
|
||||||
// functions by Masken
|
// functions by Masken
|
||||||
void etfprintf(FILE *file, const char *format, ...);
|
void etfprintf(FILE *file, const char *format, ...);
|
||||||
|
|
|
@ -488,7 +488,7 @@ bool DeleteDirRecursively(const char *directory)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the current directory, caller should free
|
// Returns the current directory, caller should free
|
||||||
const char *GetCurrentDirectory()
|
const char *GetCurrentDir()
|
||||||
{
|
{
|
||||||
const char *dir;
|
const char *dir;
|
||||||
// Get the current working directory (getcwd uses malloc)
|
// Get the current working directory (getcwd uses malloc)
|
||||||
|
@ -502,7 +502,7 @@ const char *GetCurrentDirectory()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sets the current directory to the given directory
|
// Sets the current directory to the given directory
|
||||||
bool SetCurrentDirectory(const char *_rDirectory)
|
bool SetCurrentDir(const char *_rDirectory)
|
||||||
{
|
{
|
||||||
return __chdir(_rDirectory) == 0;
|
return __chdir(_rDirectory) == 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,10 +76,10 @@ u32 ScanDirectoryTree(const char *directory, FSTEntry& parentEntry);
|
||||||
bool DeleteDirRecursively(const char *directory);
|
bool DeleteDirRecursively(const char *directory);
|
||||||
|
|
||||||
// Returns the current directory, caller should free
|
// Returns the current directory, caller should free
|
||||||
const char *GetCurrentDirectory();
|
const char *GetCurrentDir();
|
||||||
|
|
||||||
// Set the current directory to given directory
|
// Set the current directory to given directory
|
||||||
bool SetCurrentDirectory(const char *directory);
|
bool SetCurrentDir(const char *directory);
|
||||||
|
|
||||||
|
|
||||||
// Returns a pointer to a string with a Dolphin data dir in the user's home
|
// Returns a pointer to a string with a Dolphin data dir in the user's home
|
||||||
|
|
|
@ -354,7 +354,7 @@ CBreakPointWindow::OnAddMemoryCheckMany(wxCommandEvent& event)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
wxMessageBox(_T("You have no " FULL_GAMECONFIG_DIR "MemoryChecks.ini file"));
|
wxMessageBox(_T("You have no ") T_FULL_GAMECONFIG_DIR _T("MemoryChecks.ini file"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// =================
|
// =================
|
||||||
|
|
|
@ -460,9 +460,9 @@ void CCodeWindow::CreateMenu(const SCoreStartupParameter& _LocalCoreStartupParam
|
||||||
), wxITEM_CHECK);
|
), wxITEM_CHECK);
|
||||||
|
|
||||||
jitunlimited = pCoreMenu->Append(IDM_JITUNLIMITED, _T("&Unlimited JIT Cache"),
|
jitunlimited = pCoreMenu->Append(IDM_JITUNLIMITED, _T("&Unlimited JIT Cache"),
|
||||||
_T("Avoid any involuntary JIT cache clearing, this may prevent Zelda TP from crashing."
|
_T("Avoid any involuntary JIT cache clearing, this may prevent Zelda TP from crashing.")
|
||||||
" [This option must be selected before a game is started.]"
|
_T(" [This option must be selected before a game is started.]"),
|
||||||
), wxITEM_CHECK);
|
wxITEM_CHECK);
|
||||||
|
|
||||||
|
|
||||||
#ifdef JIT_OFF_OPTIONS
|
#ifdef JIT_OFF_OPTIONS
|
||||||
|
|
|
@ -272,25 +272,24 @@ void CConfigMain::CreateGUIControls()
|
||||||
Theme->SetSelection(SConfig::GetInstance().m_LocalCoreStartupParameter.iTheme);
|
Theme->SetSelection(SConfig::GetInstance().m_LocalCoreStartupParameter.iTheme);
|
||||||
|
|
||||||
// ToolTips
|
// ToolTips
|
||||||
UseDynaRec->SetToolTip(wxT("Disabling this will cause Dolphin to run in interpreter mode,"
|
UseDynaRec->SetToolTip(wxT("Disabling this will cause Dolphin to run in interpreter mode,")
|
||||||
"\nwhich can be more accurate, but is MUCH slower"));
|
wxT("\nwhich can be more accurate, but is MUCH slower"));
|
||||||
ConfirmStop->SetToolTip(wxT("Show a confirmation box before stopping a game."));
|
ConfirmStop->SetToolTip(wxT("Show a confirmation box before stopping a game."));
|
||||||
UsePanicHandlers->SetToolTip(wxT("Show a message box when a potentially serious error has occured."
|
UsePanicHandlers->SetToolTip(wxT("Show a message box when a potentially serious error has occured.")
|
||||||
" Disabling this may avoid annoying and non-fatal messages, but it may also mean that Dolphin"
|
wxT(" Disabling this may avoid annoying and non-fatal messages, but it may also mean that Dolphin")
|
||||||
" suddenly crashes without any explanation at all."
|
wxT(" suddenly crashes without any explanation at all."));
|
||||||
));
|
|
||||||
AutoHideCursor->SetToolTip(wxT("This will auto hide the cursor in fullscreen mode."));
|
AutoHideCursor->SetToolTip(wxT("This will auto hide the cursor in fullscreen mode."));
|
||||||
HideCursor->SetToolTip(wxT("This will always hide the cursor when it's over the rendering window."
|
HideCursor->SetToolTip(wxT("This will always hide the cursor when it's over the rendering window.")
|
||||||
"\nIt can be convenient in a Wii game that already has a cursor."));
|
wxT("\nIt can be convenient in a Wii game that already has a cursor."));
|
||||||
WiimoteStatusLEDs->SetToolTip(wxT("Show which wiimotes are connected in the statusbar."));
|
WiimoteStatusLEDs->SetToolTip(wxT("Show which wiimotes are connected in the statusbar."));
|
||||||
WiimoteStatusSpeakers->SetToolTip(wxT("Show wiimote speaker status in the statusbar."));
|
WiimoteStatusSpeakers->SetToolTip(wxT("Show wiimote speaker status in the statusbar."));
|
||||||
DSPThread->SetToolTip(wxT("This should be on when using HLE and off when using LLE."));
|
DSPThread->SetToolTip(wxT("This should be on when using HLE and off when using LLE."));
|
||||||
UseDualCore->SetToolTip(wxT("This splits the Video and CPU threads, so they can be run on separate cores."
|
UseDualCore->SetToolTip(wxT("This splits the Video and CPU threads, so they can be run on separate cores.")
|
||||||
"\nCauses major speed improvements on PCs with more than one core,"
|
wxT("\nCauses major speed improvements on PCs with more than one core,")
|
||||||
"\nbut can also cause occasional crashes/glitches."));
|
wxT("\nbut can also cause occasional crashes/glitches."));
|
||||||
|
|
||||||
InterfaceLang->SetToolTip(wxT("For the time being this will only change the text shown in"
|
InterfaceLang->SetToolTip(wxT("For the time being this will only change the text shown in")
|
||||||
"\nthe game list of PAL GC games."));
|
wxT("\nthe game list of PAL GC games."));
|
||||||
// Copyright notice
|
// Copyright notice
|
||||||
Theme->SetItemToolTip(0, wxT("Created by Milosz Wlazlo [miloszwl@miloszwl.com, miloszwl.deviantart.com]"));
|
Theme->SetItemToolTip(0, wxT("Created by Milosz Wlazlo [miloszwl@miloszwl.com, miloszwl.deviantart.com]"));
|
||||||
Theme->SetItemToolTip(1, wxT("Created by VistaIcons.com"));
|
Theme->SetItemToolTip(1, wxT("Created by VistaIcons.com"));
|
||||||
|
@ -728,7 +727,7 @@ void CConfigMain::ChooseMemcardPath(std::string& strMemcard, bool isSlotA)
|
||||||
{
|
{
|
||||||
std::string filename = std::string(wxFileSelector(
|
std::string filename = std::string(wxFileSelector(
|
||||||
wxT("Choose a file to open"),
|
wxT("Choose a file to open"),
|
||||||
wxT(FULL_GC_USER_DIR),
|
T_FULL_GC_USER_DIR,
|
||||||
isSlotA ? wxT(GC_MEMCARDA) : wxT(GC_MEMCARDB),
|
isSlotA ? wxT(GC_MEMCARDA) : wxT(GC_MEMCARDB),
|
||||||
wxEmptyString,
|
wxEmptyString,
|
||||||
wxT("Gamecube Memory Cards (*.raw,*.gcp)|*.raw;*.gcp")).mb_str());
|
wxT("Gamecube Memory Cards (*.raw,*.gcp)|*.raw;*.gcp")).mb_str());
|
||||||
|
|
|
@ -431,7 +431,7 @@ void CFrame::OnOpen(wxCommandEvent& WXUNUSED (event))
|
||||||
|
|
||||||
void CFrame::DoOpen(bool Boot)
|
void CFrame::DoOpen(bool Boot)
|
||||||
{
|
{
|
||||||
std::string currentDir = File::GetCurrentDirectory();
|
std::string currentDir = File::GetCurrentDir();
|
||||||
|
|
||||||
wxString path = wxFileSelector(
|
wxString path = wxFileSelector(
|
||||||
_T("Select the file to load"),
|
_T("Select the file to load"),
|
||||||
|
@ -447,12 +447,12 @@ void CFrame::DoOpen(bool Boot)
|
||||||
|
|
||||||
bool fileChosen = !path.IsEmpty();
|
bool fileChosen = !path.IsEmpty();
|
||||||
|
|
||||||
std::string currentDir2 = File::GetCurrentDirectory();
|
std::string currentDir2 = File::GetCurrentDir();
|
||||||
|
|
||||||
if (currentDir != currentDir2)
|
if (currentDir != currentDir2)
|
||||||
{
|
{
|
||||||
PanicAlert("Current dir changed from %s to %s after wxFileSelector!",currentDir.c_str(),currentDir2.c_str());
|
PanicAlert("Current dir changed from %s to %s after wxFileSelector!",currentDir.c_str(),currentDir2.c_str());
|
||||||
File::SetCurrentDirectory(currentDir.c_str());
|
File::SetCurrentDir(currentDir.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -330,18 +330,17 @@ void CGameListCtrl::InsertItemInReportView(long _Index)
|
||||||
SetItem(_Index, COLUMN_TITLE, name, -1);
|
SetItem(_Index, COLUMN_TITLE, name, -1);
|
||||||
if (CopySJISToString(description, rISOFile.GetDescription(0).c_str()))
|
if (CopySJISToString(description, rISOFile.GetDescription(0).c_str()))
|
||||||
SetItem(_Index, COLUMN_NOTES, description, -1);
|
SetItem(_Index, COLUMN_NOTES, description, -1);
|
||||||
m_gameList.append(std::string(name.mb_str()) + " (J)\n");
|
m_gameList.append(StringFromFormat("%s (J)\n", (const char*)name.mb_str(wxConvUTF8)));
|
||||||
break;
|
break;
|
||||||
case DiscIO::IVolume::COUNTRY_USA:
|
case DiscIO::IVolume::COUNTRY_USA:
|
||||||
if (CopySJISToString(name, rISOFile.GetName(0).c_str()))
|
if (CopySJISToString(name, rISOFile.GetName(0).c_str()))
|
||||||
SetItem(_Index, COLUMN_TITLE, name, -1);
|
SetItem(_Index, COLUMN_TITLE, name, -1);
|
||||||
if (CopySJISToString(description, rISOFile.GetDescription(0).c_str()))
|
if (CopySJISToString(description, rISOFile.GetDescription(0).c_str()))
|
||||||
SetItem(_Index, COLUMN_NOTES, description, -1);
|
SetItem(_Index, COLUMN_NOTES, description, -1);
|
||||||
m_gameList.append(std::string(name.mb_str()) + " (U)\n");
|
m_gameList.append(StringFromFormat("%s (U)\n", (const char*)name.mb_str(wxConvUTF8)));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
m_gameList.append(std::string(
|
m_gameList.append(StringFromFormat("%s (E)\n", rISOFile.GetName((int)SConfig::GetInstance().m_InterfaceLanguage).c_str()));
|
||||||
wxString::From8BitData(rISOFile.GetName((int)SConfig::GetInstance().m_InterfaceLanguage).c_str()).mb_str()) + " (E)\n");
|
|
||||||
SetItem(_Index, COLUMN_TITLE,
|
SetItem(_Index, COLUMN_TITLE,
|
||||||
wxString::From8BitData(rISOFile.GetName((int)SConfig::GetInstance().m_InterfaceLanguage).c_str()), -1);
|
wxString::From8BitData(rISOFile.GetName((int)SConfig::GetInstance().m_InterfaceLanguage).c_str()), -1);
|
||||||
SetItem(_Index, COLUMN_NOTES,
|
SetItem(_Index, COLUMN_NOTES,
|
||||||
|
@ -1081,6 +1080,11 @@ bool CGameListCtrl::CopySJISToString( wxString& _rDestination, const char* _src
|
||||||
_src, (int)strlen(_src),
|
_src, (int)strlen(_src),
|
||||||
(LPWSTR)pUnicodeStrBuffer, unicodeNameSize))
|
(LPWSTR)pUnicodeStrBuffer, unicodeNameSize))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#ifdef _UNICODE
|
||||||
|
_rDestination = (LPWSTR)pUnicodeStrBuffer;
|
||||||
|
returnCode = true;
|
||||||
|
#else
|
||||||
u32 ansiNameSize = WideCharToMultiByte(CP_ACP, 0,
|
u32 ansiNameSize = WideCharToMultiByte(CP_ACP, 0,
|
||||||
(LPCWSTR)pUnicodeStrBuffer, unicodeNameSize,
|
(LPCWSTR)pUnicodeStrBuffer, unicodeNameSize,
|
||||||
NULL, NULL, NULL, NULL);
|
NULL, NULL, NULL, NULL);
|
||||||
|
@ -1100,6 +1104,7 @@ bool CGameListCtrl::CopySJISToString( wxString& _rDestination, const char* _src
|
||||||
delete pAnsiStrBuffer;
|
delete pAnsiStrBuffer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
delete pUnicodeStrBuffer;
|
delete pUnicodeStrBuffer;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (C) 2003 Dolphin Project.
|
// Copyright (C) 2003-2009 Dolphin Project.
|
||||||
|
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -23,6 +23,7 @@
|
||||||
#include "PatchAddEdit.h"
|
#include "PatchAddEdit.h"
|
||||||
#include "ARCodeAddEdit.h"
|
#include "ARCodeAddEdit.h"
|
||||||
#include "ConfigManager.h"
|
#include "ConfigManager.h"
|
||||||
|
#include "StringUtil.h"
|
||||||
|
|
||||||
struct WiiPartition
|
struct WiiPartition
|
||||||
{
|
{
|
||||||
|
@ -190,7 +191,9 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW
|
||||||
wxString name;
|
wxString name;
|
||||||
CopySJISToString(name, OpenGameListItem->GetName(0).c_str());
|
CopySJISToString(name, OpenGameListItem->GetName(0).c_str());
|
||||||
|
|
||||||
SetTitle(wxString::Format(_("%s%s: %s - %s"), filename.c_str(), extension.c_str(), OpenGameListItem->GetUniqueID().c_str(), name.c_str()));
|
SetTitle(wxString::Format(wxT("%s%s"),
|
||||||
|
wxString::FromAscii(StringFromFormat("%s%s: %s - ", filename.c_str(), extension.c_str(), OpenGameListItem->GetUniqueID().c_str()).c_str()),
|
||||||
|
name.c_str()).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
CISOProperties::~CISOProperties()
|
CISOProperties::~CISOProperties()
|
||||||
|
@ -792,7 +795,7 @@ bool CISOProperties::SaveGameConfig()
|
||||||
else
|
else
|
||||||
GameIni.Set("EmuState", "EmulationStateId", EmuState->GetSelection());
|
GameIni.Set("EmuState", "EmulationStateId", EmuState->GetSelection());
|
||||||
|
|
||||||
GameIni.Set("EmuState", "EmulationIssues", EmuIssues->GetValue());
|
GameIni.Set("EmuState", "EmulationIssues", (const char*)EmuIssues->GetValue().mb_str(wxConvUTF8));
|
||||||
|
|
||||||
PatchList_Save();
|
PatchList_Save();
|
||||||
ActionReplayList_Save();
|
ActionReplayList_Save();
|
||||||
|
@ -1032,6 +1035,10 @@ bool CISOProperties::CopySJISToString( wxString& _rDestination, const char* _src
|
||||||
_src, (int)strlen(_src),
|
_src, (int)strlen(_src),
|
||||||
(LPWSTR)pUnicodeStrBuffer, unicodeNameSize))
|
(LPWSTR)pUnicodeStrBuffer, unicodeNameSize))
|
||||||
{
|
{
|
||||||
|
#ifdef _UNICODE
|
||||||
|
_rDestination = (LPWSTR)pUnicodeStrBuffer;
|
||||||
|
returnCode = true;
|
||||||
|
#else
|
||||||
u32 ansiNameSize = WideCharToMultiByte(CP_ACP, 0,
|
u32 ansiNameSize = WideCharToMultiByte(CP_ACP, 0,
|
||||||
(LPCWSTR)pUnicodeStrBuffer, unicodeNameSize,
|
(LPCWSTR)pUnicodeStrBuffer, unicodeNameSize,
|
||||||
NULL, NULL, NULL, NULL);
|
NULL, NULL, NULL, NULL);
|
||||||
|
@ -1051,6 +1058,7 @@ bool CISOProperties::CopySJISToString( wxString& _rDestination, const char* _src
|
||||||
delete pAnsiStrBuffer;
|
delete pAnsiStrBuffer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
delete pUnicodeStrBuffer;
|
delete pUnicodeStrBuffer;
|
||||||
}
|
}
|
||||||
|
|
|
@ -241,7 +241,7 @@ void CMemcardManager::CreateGUIControls()
|
||||||
sPages[slot]->Add(0, 0, 1, wxEXPAND|wxALL, 0);
|
sPages[slot]->Add(0, 0, 1, wxEXPAND|wxALL, 0);
|
||||||
sPages[slot]->Add(m_NextPage[slot], 0, wxEXPAND|wxALL, 1);
|
sPages[slot]->Add(m_NextPage[slot], 0, wxEXPAND|wxALL, 1);
|
||||||
|
|
||||||
m_MemcardPath[slot] = new wxFilePickerCtrl(this, ID_MEMCARDPATH_A + slot, wxT(FULL_GC_USER_DIR), wxT("Choose a memory card:"),
|
m_MemcardPath[slot] = new wxFilePickerCtrl(this, ID_MEMCARDPATH_A + slot, T_FULL_GC_USER_DIR, wxT("Choose a memory card:"),
|
||||||
wxT("Gamecube Memory Cards (*.raw,*.gcp)|*.raw;*.gcp"), wxDefaultPosition, wxDefaultSize, wxFLP_USE_TEXTCTRL|wxFLP_OPEN);
|
wxT("Gamecube Memory Cards (*.raw,*.gcp)|*.raw;*.gcp"), wxDefaultPosition, wxDefaultSize, wxFLP_USE_TEXTCTRL|wxFLP_OPEN);
|
||||||
|
|
||||||
m_MemcardList[slot] = new CMemcardListCtrl(this, ID_MEMCARDLIST_A + slot, wxDefaultPosition, wxSize(350,400),
|
m_MemcardList[slot] = new CMemcardListCtrl(this, ID_MEMCARDLIST_A + slot, wxDefaultPosition, wxSize(350,400),
|
||||||
|
@ -553,13 +553,13 @@ void CMemcardManager::CopyDeleteClick(wxCommandEvent& event)
|
||||||
slot = SLOT_A;
|
slot = SLOT_A;
|
||||||
case ID_SAVEIMPORT_B:
|
case ID_SAVEIMPORT_B:
|
||||||
{
|
{
|
||||||
wxString temp = wxFileSelector(_T("Select a save file to import"),
|
wxString temp = wxFileSelector(wxT("Select a save file to import"),
|
||||||
(strcmp(DefaultIOPath.c_str(), "/Users/GC") == 0) ? wxString::FromAscii(""): wxString::FromAscii(DefaultIOPath.c_str()), wxEmptyString, wxEmptyString, wxString::Format
|
(strcmp(DefaultIOPath.c_str(), "/Users/GC") == 0) ? wxString::FromAscii(""): wxString::FromAscii(DefaultIOPath.c_str()), wxEmptyString, wxEmptyString, wxString::Format
|
||||||
(
|
(
|
||||||
_T("Gamecube save files(*.gci,*.gcs,*.sav)|*.gci;*.gcs;*.sav|"
|
wxT("Gamecube save files(*.gci,*.gcs,*.sav)|*.gci;*.gcs;*.sav|")
|
||||||
"Native GCI files (*.gci)|*.gci|"
|
wxT("Native GCI files (*.gci)|*.gci|")
|
||||||
"MadCatz Gameshark files(*.gcs)|*.gcs|"
|
wxT("MadCatz Gameshark files(*.gcs)|*.gcs|")
|
||||||
"Datel MaxDrive/Pro files(*.sav)|*.sav"),
|
wxT("Datel MaxDrive/Pro files(*.sav)|*.sav"),
|
||||||
wxFileSelectorDefaultWildcardStr,
|
wxFileSelectorDefaultWildcardStr,
|
||||||
wxFileSelectorDefaultWildcardStr
|
wxFileSelectorDefaultWildcardStr
|
||||||
),
|
),
|
||||||
|
@ -567,10 +567,10 @@ void CMemcardManager::CopyDeleteClick(wxCommandEvent& event)
|
||||||
const char * fileName = temp.ToAscii();
|
const char * fileName = temp.ToAscii();
|
||||||
if (!temp.empty() && !fileName2.empty())
|
if (!temp.empty() && !fileName2.empty())
|
||||||
{
|
{
|
||||||
wxString temp2 = wxFileSelector(_T("Save GCI as.."),
|
wxString temp2 = wxFileSelector(wxT("Save GCI as.."),
|
||||||
wxEmptyString, wxEmptyString, _T(".gci"), wxString::Format
|
wxEmptyString, wxEmptyString, wxT(".gci"), wxString::Format
|
||||||
(
|
(
|
||||||
_T("GCI File(*.gci)|*.gci"),
|
wxT("GCI File(*.gci)|*.gci"),
|
||||||
wxFileSelectorDefaultWildcardStr,
|
wxFileSelectorDefaultWildcardStr,
|
||||||
wxFileSelectorDefaultWildcardStr
|
wxFileSelectorDefaultWildcardStr
|
||||||
),
|
),
|
||||||
|
@ -595,12 +595,12 @@ void CMemcardManager::CopyDeleteClick(wxCommandEvent& event)
|
||||||
memoryCard[slot]->DEntry_GameCode(index,tempC);
|
memoryCard[slot]->DEntry_GameCode(index,tempC);
|
||||||
memoryCard[slot]->DEntry_FileName(index,tempC2);
|
memoryCard[slot]->DEntry_FileName(index,tempC2);
|
||||||
sprintf(tempC, "%s_%s.gci", tempC, tempC2);
|
sprintf(tempC, "%s_%s.gci", tempC, tempC2);
|
||||||
wxString temp = wxFileSelector(_T("Export save as.."), wxString::FromAscii(DefaultIOPath.c_str()),
|
wxString temp = wxFileSelector(wxT("Export save as.."), wxString::FromAscii(DefaultIOPath.c_str()),
|
||||||
wxString::FromAscii(tempC), _T(".gci"), wxString::Format
|
wxString::FromAscii(tempC), wxT(".gci"), wxString::Format
|
||||||
(
|
(
|
||||||
_T("Native GCI files (*.gci)|*.gci|"
|
wxT("Native GCI files (*.gci)|*.gci|")
|
||||||
"MadCatz Gameshark files(*.gcs)|*.gcs|"
|
wxT("MadCatz Gameshark files(*.gcs)|*.gcs|")
|
||||||
"Datel MaxDrive/Pro files(*.sav)|*.sav"),
|
wxT("Datel MaxDrive/Pro files(*.sav)|*.sav"),
|
||||||
wxFileSelectorDefaultWildcardStr,
|
wxFileSelectorDefaultWildcardStr,
|
||||||
wxFileSelectorDefaultWildcardStr
|
wxFileSelectorDefaultWildcardStr
|
||||||
),
|
),
|
||||||
|
|
|
@ -55,8 +55,8 @@ void NetPlay::OnNetEvent(wxCommandEvent& event)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_numClients--;
|
m_numClients--;
|
||||||
AppendText( wxString::Format(wxT("ERROR : Network Error !\n"
|
AppendText( wxString::Format(wxT("ERROR : Network Error !\n")
|
||||||
"*Player : %s has been dropped from the game.\n\n"),
|
wxT("*Player : %s has been dropped from the game.\n\n"),
|
||||||
(const char *)event.GetString().mb_str()) );
|
(const char *)event.GetString().mb_str()) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,8 +154,8 @@ void NetPlay::LoadGame()
|
||||||
// Sleep a bit to start the game at more or less the same time than the peer
|
// Sleep a bit to start the game at more or less the same time than the peer
|
||||||
wxMilliSleep(fping/2);
|
wxMilliSleep(fping/2);
|
||||||
|
|
||||||
m_Logging->AppendText(wxString::Format(wxT("** Everyone is ready... Loading Game ! **\n"
|
m_Logging->AppendText(wxString::Format(wxT("** Everyone is ready... Loading Game ! **\n")
|
||||||
"** Ping to client(s) is : %f ms\n"), fping));
|
wxT("** Ping to client(s) is : %f ms\n"), fping));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_Logging->AppendText(_("** Everyone is ready... Loading Game ! **\n"));
|
m_Logging->AppendText(_("** Everyone is ready... Loading Game ! **\n"));
|
||||||
|
@ -200,9 +200,7 @@ bool NetPlay::GetNetPads(u8 padnb, SPADStatus PadStatus, u32 *netValues)
|
||||||
{
|
{
|
||||||
if (m_numClients < 1)
|
if (m_numClients < 1)
|
||||||
{
|
{
|
||||||
m_Logging->AppendText(_("** WARNING : "
|
m_Logging->AppendText(_("** WARNING : Ping too high (>2000ms) or connection lost ! \n** WARNING : Stopping Netplay... \n"));
|
||||||
"Ping too high (>2000ms) or connection lost ! \n"
|
|
||||||
"** WARNING : Stopping Netplay... \n"));
|
|
||||||
NetClass_ptr = NULL;
|
NetClass_ptr = NULL;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -302,9 +300,7 @@ bool NetPlay::GetNetPads(u8 padnb, SPADStatus PadStatus, u32 *netValues)
|
||||||
else {
|
else {
|
||||||
if (m_loopframe > 126)
|
if (m_loopframe > 126)
|
||||||
{
|
{
|
||||||
m_Logging->AppendText(_("** WARNING : "
|
m_Logging->AppendText(_("** WARNING : Ping too high (>2000ms) or connection lost ! \n** WARNING : Stopping Netplay... \n"));
|
||||||
"Ping too high (>2000ms) or connection lost ! \n"
|
|
||||||
"** WARNING : Stopping Netplay... \n"));
|
|
||||||
NetClass_ptr = NULL;
|
NetClass_ptr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -414,8 +414,7 @@ void *ClientSide::Entry()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Event->AppendText(_("UDP Connection FAILED !\n"
|
Event->AppendText(_("UDP Connection FAILED !\nERROR : Unable to establish UDP Connection, please Check UDP Port forwarding !"));
|
||||||
"ERROR : Unable to establish UDP Connection, please Check UDP Port forwarding !"));
|
|
||||||
m_socket.Close();
|
m_socket.Close();
|
||||||
Event->SendEvent(HOST_ERROR);
|
Event->SendEvent(HOST_ERROR);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -143,8 +143,8 @@ void NetPlay::OnHost(wxCommandEvent& WXUNUSED(event))
|
||||||
// Create the GUI
|
// Create the GUI
|
||||||
m_isHosting = true;
|
m_isHosting = true;
|
||||||
DrawNetWindow();
|
DrawNetWindow();
|
||||||
m_Logging->AppendText(wxString::Format(wxT("WARNING : Hosting requires port to be forwarded in firewall!\n"
|
m_Logging->AppendText(wxString::Format(wxT("WARNING : Hosting requires port to be forwarded in firewall!\n")
|
||||||
"*Creation Successful on port %d : Waiting for peers...\n"), m_port));
|
wxT("*Creation Successful on port %d : Waiting for peers...\n"), m_port));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue