diff options
| author | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2009-08-26 14:36:53 +0000 |
|---|---|---|
| committer | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2009-08-26 14:36:53 +0000 |
| commit | f3499bc61cd525e6d342854ebe212d4c977662dc (patch) | |
| tree | 97d471be3079c5b494abbd4ff688fec5b7be8fad | |
| parent | f865dc1d5ebe04cb07c43406e53490bee2659df2 (diff) | |
| download | pcsxr-f3499bc61cd525e6d342854ebe212d4c977662dc.tar.gz | |
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@27779 e17a0e51-4ae3-4d35-97c3-1a29b211df97
| -rw-r--r-- | ChangeLog | 12 | ||||
| -rw-r--r-- | doc/tweaks.txt | 7 | ||||
| -rw-r--r-- | gui/Cheat.c | 6 | ||||
| -rw-r--r-- | win32/gui/CheatDlg.c | 640 | ||||
| -rw-r--r-- | win32/gui/WndMain.c | 34 | ||||
| -rw-r--r-- | win32/pcsx.dev | 4 | ||||
| -rw-r--r-- | win32/pcsx.rc | 39 | ||||
| -rw-r--r-- | win32/resource.h | 10 |
8 files changed, 673 insertions, 79 deletions
@@ -1,3 +1,15 @@ +August 26, 2009 Wei Mingzhi <weimingzhi@gmail.com> + + * win32/pcsx.rc: Completed the Cheat Search dialog. + * win32/resource.h: Likewise. + * win32/gui/CheatDlg.c: Implemented the Cheat Search dialog. Fixed MinGW + compilation issue. + * win32/gui/pcsx.dev: Fixed Dev-C++ build. + * win32/WndMain.c: Moved Language menu into the Config menu. + * gui/CheatDlg.c: Clamp values when editing value in Cheat Search dialog. + * doc/tweaks.txt: Added instructions to allow CD-DA playing when using + image files (as suggested by dario86). + August 24, 2009 Wei Mingzhi <weimingzhi@gmail.com> * win32/gui/WndMain.c: Set the language to the OS language by default. diff --git a/doc/tweaks.txt b/doc/tweaks.txt index 0788302f..4c29ab58 100644 --- a/doc/tweaks.txt +++ b/doc/tweaks.txt @@ -23,3 +23,10 @@ function. These can all be found at Configuration -> CPU. * Enable Interpreter CPU: Enables interpretive emulation. This is often more compatible, but at the price of emulation speed. + +Currently, PCSX-Reloaded does not support CD-DA tracks when loading +image files. In this case, to experience music in games such as Tekken +and Wipeout 2097, a CD emulation software should be used in conjunction +with the emulator. DAEMON Tools (http://www.daemon-tools.cc) and CDEmu +(http://cdemu.sourceforge.net) were tested to work under Windows and +GNU/Linux respectively. diff --git a/gui/Cheat.c b/gui/Cheat.c index f324ee7d..ec398a44 100644 --- a/gui/Cheat.c +++ b/gui/Cheat.c @@ -831,10 +831,16 @@ static void OnCheatSearchDlg_ModifyClicked(GtkWidget *widget, gpointer user_data switch (current_searchtype) { case SEARCHTYPE_8BIT: + if (val > 0xFF) { + val = 0xFF; + } psxMemWrite8(addr, (u8)val); break; case SEARCHTYPE_16BIT: + if (val > 0xFFFF) { + val = 0xFFFF; + } psxMemWrite16(addr, (u16)val); break; diff --git a/win32/gui/CheatDlg.c b/win32/gui/CheatDlg.c index 88cb3214..05b4285f 100644 --- a/win32/gui/CheatDlg.c +++ b/win32/gui/CheatDlg.c @@ -19,6 +19,9 @@ #include <windows.h>
#include <windowsx.h>
+#ifndef _WIN32_IE
+#define _WIN32_IE 0x0400
+#endif
#include <commctrl.h>
#include <stdio.h>
#include "psxcommon.h"
@@ -80,28 +83,28 @@ static LRESULT WINAPI CheatEditDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM break;
case WM_COMMAND:
- switch (wParam) {
- case IDOK: - Edit_GetText(GetDlgItem(hW, IDC_DESCR), szDescr, 256); - Edit_GetText(GetDlgItem(hW, IDC_CODE), szCode, 1024); - - if (EditCheat(iEditItem, szDescr, szCode) != 0) { - SysMessage(_("Invalid cheat code!")); - } - else { + switch (LOWORD(wParam)) {
+ case IDOK:
+ Edit_GetText(GetDlgItem(hW, IDC_DESCR), szDescr, 256);
+ Edit_GetText(GetDlgItem(hW, IDC_CODE), szCode, 1024);
+
+ if (EditCheat(iEditItem, szDescr, szCode) != 0) {
+ SysMessage(_("Invalid cheat code!"));
+ }
+ else {
EndDialog(hW, TRUE);
return TRUE;
}
break;
case IDCANCEL:
- EndDialog(hW, TRUE);
+ EndDialog(hW, FALSE);
return TRUE;
}
break;
case WM_CLOSE:
- EndDialog(hW, TRUE);
+ EndDialog(hW, FALSE);
return TRUE;
}
@@ -121,28 +124,28 @@ static LRESULT WINAPI CheatAddDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM break;
case WM_COMMAND:
- switch (wParam) {
- case IDOK: - Edit_GetText(GetDlgItem(hW, IDC_DESCR), szDescr, 256); - Edit_GetText(GetDlgItem(hW, IDC_CODE), szCode, 1024); - - if (AddCheat(szDescr, szCode) != 0) { - SysMessage(_("Invalid cheat code!")); - } - else { + switch (LOWORD(wParam)) {
+ case IDOK:
+ Edit_GetText(GetDlgItem(hW, IDC_DESCR), szDescr, 256);
+ Edit_GetText(GetDlgItem(hW, IDC_CODE), szCode, 1024);
+
+ if (AddCheat(szDescr, szCode) != 0) {
+ SysMessage(_("Invalid cheat code!"));
+ }
+ else {
EndDialog(hW, TRUE);
return TRUE;
}
break;
case IDCANCEL:
- EndDialog(hW, TRUE);
+ EndDialog(hW, FALSE);
return TRUE;
}
break;
case WM_CLOSE:
- EndDialog(hW, TRUE);
+ EndDialog(hW, FALSE);
return TRUE;
}
@@ -194,9 +197,9 @@ LRESULT WINAPI CheatDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) { break;
case WM_COMMAND:
- switch (wParam) {
+ switch (LOWORD(wParam)) {
case IDCANCEL:
- EndDialog(hW, TRUE);
+ EndDialog(hW, FALSE);
return TRUE;
case IDC_ADDCODE:
@@ -204,7 +207,7 @@ LRESULT WINAPI CheatDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) { szDescr[0] = '\0';
szCode[0] = '\0';
- DialogBox(gApp.hInstance, MAKEINTRESOURCE(IDD_CHEATEDIT), hW, CheatAddDlgProc);
+ DialogBox(gApp.hInstance, MAKEINTRESOURCE(IDD_CHEATEDIT), hW, (DLGPROC)CheatAddDlgProc);
if (NumCheats > i) {
// new cheat added
@@ -230,7 +233,7 @@ LRESULT WINAPI CheatDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) { iEditItem = ListView_GetSelectionMark(List);
if (iEditItem != -1) {
- DialogBox(gApp.hInstance, MAKEINTRESOURCE(IDD_CHEATEDIT), hW, CheatEditDlgProc);
+ DialogBox(gApp.hInstance, MAKEINTRESOURCE(IDD_CHEATEDIT), hW, (DLGPROC)CheatEditDlgProc);
memset(&item, 0, sizeof(item));
@@ -274,10 +277,10 @@ LRESULT WINAPI CheatDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) { case IDC_LOADCODE:
memset(&szFileName, 0, sizeof(szFileName));
- memset(&szFileTitle, 0, sizeof(szFileTitle));
- memset(&szFilter, 0, sizeof(szFilter));
+ memset(&szFileTitle, 0, sizeof(szFileTitle));
+ memset(&szFilter, 0, sizeof(szFilter));
- strcpy(szFilter, _("PCSX Cheat Code Files"));
+ strcpy(szFilter, _("PCSX Cheat Code Files"));
strcatz(szFilter, "*.*");
ofn.lStructSize = sizeof(OPENFILENAME);
@@ -303,10 +306,10 @@ LRESULT WINAPI CheatDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) { case IDC_SAVECODE:
memset(&szFileName, 0, sizeof(szFileName));
- memset(&szFileTitle, 0, sizeof(szFileTitle));
- memset(&szFilter, 0, sizeof(szFilter));
+ memset(&szFileTitle, 0, sizeof(szFileTitle));
+ memset(&szFilter, 0, sizeof(szFilter));
- strcpy(szFilter, _("PCSX Cheat Code Files"));
+ strcpy(szFilter, _("PCSX Cheat Code Files"));
strcatz(szFilter, "*.*");
ofn.lStructSize = sizeof(OPENFILENAME);
@@ -354,7 +357,7 @@ LRESULT WINAPI CheatDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) { break;
case WM_CLOSE:
- EndDialog(hW, TRUE);
+ EndDialog(hW, FALSE);
return TRUE;
}
@@ -388,14 +391,284 @@ static uint32_t current_valueto = 0; static void UpdateCheatSearchDlg(HWND hW) {
char buf[256];
+ int i;
- // clear all combo boxes
SendMessage(GetDlgItem(hW, IDC_SEARCHFOR), CB_RESETCONTENT, 0, 0);
- SendMessage(GetDlgItem(hW, IDC_DATATYPE), CB_RESETCONTENT, 0, 0);
- SendMessage(GetDlgItem(hW, IDC_DATABASE), CB_RESETCONTENT, 0, 0);
+ SendMessage(GetDlgItem(hW, IDC_RESLIST), LB_RESETCONTENT, 0, 0);
+
+ Button_Enable(GetDlgItem(hW, IDC_FREEZE), FALSE);
+ Button_Enable(GetDlgItem(hW, IDC_MODIFY), FALSE);
+ Button_Enable(GetDlgItem(hW, IDC_COPY), FALSE);
+
+ SendMessage(GetDlgItem(hW, IDC_SEARCHFOR), CB_ADDSTRING, 0, (LPARAM)_("Equal Value"));
+ SendMessage(GetDlgItem(hW, IDC_SEARCHFOR), CB_ADDSTRING, 0, (LPARAM)_("Not Equal Value"));
+ SendMessage(GetDlgItem(hW, IDC_SEARCHFOR), CB_ADDSTRING, 0, (LPARAM)_("Range"));
+
+ if (prevM != NULL) {
+ SendMessage(GetDlgItem(hW, IDC_SEARCHFOR), CB_ADDSTRING, 0, (LPARAM)_("Increased By"));
+ SendMessage(GetDlgItem(hW, IDC_SEARCHFOR), CB_ADDSTRING, 0, (LPARAM)_("Decreased By"));
+ SendMessage(GetDlgItem(hW, IDC_SEARCHFOR), CB_ADDSTRING, 0, (LPARAM)_("Increased"));
+ SendMessage(GetDlgItem(hW, IDC_SEARCHFOR), CB_ADDSTRING, 0, (LPARAM)_("Decreased"));
+ SendMessage(GetDlgItem(hW, IDC_SEARCHFOR), CB_ADDSTRING, 0, (LPARAM)_("Different"));
+ SendMessage(GetDlgItem(hW, IDC_SEARCHFOR), CB_ADDSTRING, 0, (LPARAM)_("No Change"));
+ }
+
+ SendMessage(GetDlgItem(hW, IDC_SEARCHFOR), CB_SETCURSEL, (WPARAM)current_search, 0);
+
+ if (current_search == SEARCH_RANGE) {
+ ShowWindow(GetDlgItem(hW, IDC_LABEL_TO), SW_SHOW);
+ ShowWindow(GetDlgItem(hW, IDC_VALUETO), SW_SHOW);
+ }
+ else {
+ ShowWindow(GetDlgItem(hW, IDC_LABEL_TO), SW_HIDE);
+ ShowWindow(GetDlgItem(hW, IDC_VALUETO), SW_HIDE);
+ }
+
+ SendMessage(GetDlgItem(hW, IDC_DATATYPE), CB_SETCURSEL, (WPARAM)current_searchtype, 0);
+ SendMessage(GetDlgItem(hW, IDC_DATABASE), CB_SETCURSEL, (WPARAM)current_searchbase, 0);
+
+ if (current_searchbase == SEARCHBASE_HEX) {
+ sprintf(buf, "%X", current_valuefrom);
+ SetWindowText(GetDlgItem(hW, IDC_VALUEFROM), buf);
+ sprintf(buf, "%X", current_valueto);
+ SetWindowText(GetDlgItem(hW, IDC_VALUETO), buf);
+ }
+ else {
+ sprintf(buf, "%u", current_valuefrom);
+ SetWindowText(GetDlgItem(hW, IDC_VALUEFROM), buf);
+ sprintf(buf, "%u", current_valueto);
+ SetWindowText(GetDlgItem(hW, IDC_VALUETO), buf);
+ }
+
+ if (prevM == NULL) {
+ SendMessage(GetDlgItem(hW, IDC_RESLIST), LB_ADDSTRING, (WPARAM)0, (LPARAM)_("Enter the values and start your search."));
+ EnableWindow(GetDlgItem(hW, IDC_RESLIST), FALSE);
+ }
+ else {
+ if (NumSearchResults == 0) {
+ SendMessage(GetDlgItem(hW, IDC_RESLIST), LB_ADDSTRING, (WPARAM)0, (LPARAM)_("No addresses found."));
+ EnableWindow(GetDlgItem(hW, IDC_RESLIST), FALSE);
+ }
+ else if (NumSearchResults > 100) {
+ SendMessage(GetDlgItem(hW, IDC_RESLIST), LB_ADDSTRING, (WPARAM)0, (LPARAM)_("Too many addresses found."));
+ EnableWindow(GetDlgItem(hW, IDC_RESLIST), FALSE);
+ }
+ else {
+ for (i = 0; i < NumSearchResults; i++) {
+ u32 addr = SearchResults[i];
+
+ switch (current_searchtype) {
+ case SEARCHTYPE_8BIT:
+ sprintf(buf, _("%.8X Current: %u (%.2X), Previous: %u (%.2X)"),
+ addr, PSXMu8(addr), PSXMu8(addr), PrevMu8(addr), PrevMu8(addr));
+ break;
+
+ case SEARCHTYPE_16BIT:
+ sprintf(buf, _("%.8X Current: %u (%.4X), Previous: %u (%.4X)"),
+ addr, PSXMu16(addr), PSXMu16(addr), PrevMu16(addr), PrevMu16(addr));
+ break;
+
+ case SEARCHTYPE_32BIT:
+ sprintf(buf, _("%.8X Current: %u (%.8X), Previous: %u (%.8X)"),
+ addr, PSXMu32(addr), PSXMu32(addr), PrevMu32(addr), PrevMu32(addr));
+ break;
+
+ default:
+ assert(FALSE); // impossible
+ break;
+ }
+
+ SendMessage(GetDlgItem(hW, IDC_RESLIST), LB_ADDSTRING, (WPARAM)0, (LPARAM)buf);
+ SendMessage(GetDlgItem(hW, IDC_RESLIST), LB_SETITEMDATA, i, (LPARAM)i);
+ }
+ EnableWindow(GetDlgItem(hW, IDC_RESLIST), TRUE);
+ }
+ }
+
+ sprintf(buf, _("Founded Addresses: %d"), NumSearchResults);
+ Static_SetText(GetDlgItem(hW, IDC_LABEL_RESULTSFOUND), buf);
+}
+
+static int iCurItem = 0;
+
+static LRESULT WINAPI CheatFreezeProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) {
+ u32 val;
+ char buf[256];
+
+ switch (uMsg) {
+ case WM_INITDIALOG:
+ SetWindowText(hW, _("Freeze"));
+ Static_SetText(GetDlgItem(hW, IDC_LABEL_ADDRESS), _("Address:"));
+ Static_SetText(GetDlgItem(hW, IDC_LABEL_VALUE), _("Value:"));
+
+ sprintf(buf, "%.8X", SearchResults[iCurItem]);
+ SetWindowText(GetDlgItem(hW, IDC_ADDRESS), buf);
+
+ switch (current_searchtype) {
+ case SEARCHTYPE_8BIT:
+ val = PSXMu8(SearchResults[iCurItem]);
+ break;
+
+ case SEARCHTYPE_16BIT:
+ val = PSXMu16(SearchResults[iCurItem]);
+ break;
+
+ case SEARCHTYPE_32BIT:
+ val = PSXMu32(SearchResults[iCurItem]);
+ break;
+
+ default:
+ assert(FALSE); // should not reach here
+ break;
+ }
+
+ sprintf(buf, "%u", val);
+ SetWindowText(GetDlgItem(hW, IDC_VALUE), buf);
+ break;
+
+ case WM_COMMAND:
+ switch (LOWORD(wParam)) {
+ case IDOK:
+ val = 0;
+ GetWindowText(GetDlgItem(hW, IDC_VALUE), buf, 255);
+ sscanf(buf, "%u", &val);
+
+ switch (current_searchtype) {
+ case SEARCHTYPE_8BIT:
+ if (val > (u32)0xFF) {
+ val = 0xFF;
+ }
+ sprintf(szCode, "%.8X %.4X", (SearchResults[iCurItem] & 0x1FFFFF) | (CHEAT_CONST8 << 24), val);
+ break;
+
+ case SEARCHTYPE_16BIT:
+ if (val > (u32)0xFFFF) {
+ val = 0xFFFF;
+ }
+ sprintf(szCode, "%.8X %.4X", (SearchResults[iCurItem] & 0x1FFFFF) | (CHEAT_CONST16 << 24), val);
+ break;
+
+ case SEARCHTYPE_32BIT:
+ sprintf(szCode, "%.8X %.4X\n%.8X %.4X",
+ (SearchResults[iCurItem] & 0x1FFFFF) | (CHEAT_CONST16 << 24), val & 0xFFFF,
+ ((SearchResults[iCurItem] + 2) & 0x1FFFFF) | (CHEAT_CONST16 << 24), ((val & 0xFFFF0000) >> 16) & 0xFFFF);
+ break;
+
+ default:
+ assert(FALSE); // should not reach here
+ break;
+ }
+
+ sprintf(szDescr, _("Freeze %.8X"), SearchResults[iCurItem]);
+
+ if (DialogBox(gApp.hInstance, MAKEINTRESOURCE(IDD_CHEATEDIT), hW, (DLGPROC)CheatAddDlgProc)) {
+ Cheats[NumCheats - 1].Enabled = 1;
+ EndDialog(hW, TRUE);
+ return TRUE;
+ }
+ break;
+
+ case IDCANCEL:
+ EndDialog(hW, FALSE);
+ return TRUE;
+ }
+ break;
+
+ case WM_CLOSE:
+ EndDialog(hW, FALSE);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static LRESULT WINAPI CheatModifyProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) {
+ u32 val;
+ char buf[256];
+
+ switch (uMsg) {
+ case WM_INITDIALOG:
+ SetWindowText(hW, _("Modify"));
+ Static_SetText(GetDlgItem(hW, IDC_LABEL_ADDRESS), _("Address:"));
+ Static_SetText(GetDlgItem(hW, IDC_LABEL_VALUE), _("Value:"));
+
+ sprintf(buf, "%.8X", SearchResults[iCurItem]);
+ SetWindowText(GetDlgItem(hW, IDC_ADDRESS), buf);
+
+ switch (current_searchtype) {
+ case SEARCHTYPE_8BIT:
+ val = PSXMu8(SearchResults[iCurItem]);
+ break;
+
+ case SEARCHTYPE_16BIT:
+ val = PSXMu16(SearchResults[iCurItem]);
+ break;
+
+ case SEARCHTYPE_32BIT:
+ val = PSXMu32(SearchResults[iCurItem]);
+ break;
+
+ default:
+ assert(FALSE); // should not reach here
+ break;
+ }
+
+ sprintf(buf, "%u", val);
+ SetWindowText(GetDlgItem(hW, IDC_VALUE), buf);
+ break;
+
+ case WM_COMMAND:
+ switch (LOWORD(wParam)) {
+ case IDOK:
+ val = 0;
+ GetWindowText(GetDlgItem(hW, IDC_VALUE), buf, 255);
+ sscanf(buf, "%u", &val);
+
+ switch (current_searchtype) {
+ case SEARCHTYPE_8BIT:
+ if (val > 0xFF) {
+ val = 0xFF;
+ }
+ psxMemWrite8(SearchResults[iCurItem], (u8)val);
+ break;
+
+ case SEARCHTYPE_16BIT:
+ if (val > 0xFFFF) {
+ val = 0xFFFF;
+ }
+ psxMemWrite16(SearchResults[iCurItem], (u16)val);
+ break;
+
+ case SEARCHTYPE_32BIT:
+ psxMemWrite32(SearchResults[iCurItem], (u32)val);
+ break;
+
+ default:
+ assert(FALSE); // should not reach here
+ break;
+ }
+
+ EndDialog(hW, TRUE);
+ return TRUE;
+
+ case IDCANCEL:
+ EndDialog(hW, TRUE);
+ return FALSE;
+ }
+ break;
+
+ case WM_CLOSE:
+ EndDialog(hW, TRUE);
+ return FALSE;
+ }
+
+ return FALSE;
}
LRESULT WINAPI CheatSearchDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) {
+ char buf[256];
+ uint32_t i;
+
switch (uMsg) {
case WM_INITDIALOG:
SetWindowText(hW, _("Cheat Search"));
@@ -412,43 +685,330 @@ LRESULT WINAPI CheatSearchDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lPar Button_SetText(GetDlgItem(hW, IDC_NEWSEARCH), _("&New Search"));
Button_SetText(GetDlgItem(hW, IDCANCEL), _("C&lose"));
+ SendMessage(GetDlgItem(hW, IDC_DATATYPE), CB_ADDSTRING, 0, (LPARAM)_("8-bit"));
+ SendMessage(GetDlgItem(hW, IDC_DATATYPE), CB_ADDSTRING, 0, (LPARAM)_("16-bit"));
+ SendMessage(GetDlgItem(hW, IDC_DATATYPE), CB_ADDSTRING, 0, (LPARAM)_("32-bit"));
+ SendMessage(GetDlgItem(hW, IDC_DATABASE), CB_ADDSTRING, 0, (LPARAM)_("Decimal"));
+ SendMessage(GetDlgItem(hW, IDC_DATABASE), CB_ADDSTRING, 0, (LPARAM)_("Hexadecimal"));
+
UpdateCheatSearchDlg(hW);
break;
case WM_COMMAND:
- switch (LOBYTE(wParam)) {
+ switch (LOWORD(wParam)) {
case IDCANCEL:
- EndDialog(hW, TRUE);
+ EndDialog(hW, FALSE);
return TRUE;
case IDC_FREEZE:
+ iCurItem = SendMessage(GetDlgItem(hW, IDC_RESLIST), LB_GETCURSEL, 0, 0);
+ DialogBox(gApp.hInstance, MAKEINTRESOURCE(IDD_CHEATVALEDIT), hW, (DLGPROC)CheatFreezeProc);
break;
case IDC_MODIFY:
+ iCurItem = SendMessage(GetDlgItem(hW, IDC_RESLIST), LB_GETCURSEL, 0, 0);
+ DialogBox(gApp.hInstance, MAKEINTRESOURCE(IDD_CHEATVALEDIT), hW, (DLGPROC)CheatModifyProc);
+ UpdateCheatSearchDlg(hW);
break;
case IDC_COPY:
+ i = SendMessage(GetDlgItem(hW, IDC_RESLIST), LB_GETCURSEL, 0, 0);
+ sprintf(buf, "%.8X", SearchResults[i]);
+
+ if (OpenClipboard(gApp.hWnd)) {
+ HGLOBAL hglbCopy = GlobalAlloc(GHND, 256);
+ char *p;
+
+ if (hglbCopy != NULL) {
+ p = (char *)GlobalLock(hglbCopy);
+ strcpy(p, buf);
+ GlobalUnlock(p);
+
+ EmptyClipboard();
+ SetClipboardData(CF_TEXT, (HANDLE)hglbCopy);
+ }
+
+ CloseClipboard();
+ }
break;
case IDC_SEARCH:
+ current_search = SendMessage(GetDlgItem(hW, IDC_SEARCHFOR), CB_GETCURSEL, 0, 0);
+ current_searchtype = SendMessage(GetDlgItem(hW, IDC_DATATYPE), CB_GETCURSEL, 0, 0);
+ current_searchbase = SendMessage(GetDlgItem(hW, IDC_DATABASE), CB_GETCURSEL, 0, 0);
+ current_valuefrom = 0;
+ current_valueto = 0;
+
+ if (current_searchbase == SEARCHBASE_DEC) {
+ GetWindowText(GetDlgItem(hW, IDC_VALUEFROM), (LPTSTR)buf, 255);
+ sscanf(buf, "%u", ¤t_valuefrom);
+ GetWindowText(GetDlgItem(hW, IDC_VALUETO), (LPTSTR)buf, 255);
+ sscanf(buf, "%u", ¤t_valueto);
+ }
+ else {
+ GetWindowText(GetDlgItem(hW, IDC_VALUEFROM), (LPTSTR)buf, 255);
+ sscanf(buf, "%x", ¤t_valuefrom);
+ GetWindowText(GetDlgItem(hW, IDC_VALUETO), (LPTSTR)buf, 255);
+ sscanf(buf, "%x", ¤t_valueto);
+ }
+
+ switch (current_searchtype) {
+ case SEARCHTYPE_8BIT:
+ if (current_valuefrom > (u32)0xFF) {
+ current_valuefrom = 0xFF;
+ }
+ if (current_valueto > (u32)0xFF) {
+ current_valueto = 0xFF;
+ }
+ break;
+
+ case SEARCHTYPE_16BIT:
+ if (current_valuefrom > (u32)0xFFFF) {
+ current_valuefrom = 0xFFFF;
+ }
+ if (current_valueto > (u32)0xFFFF) {
+ current_valueto = 0xFFFF;
+ }
+ break;
+ }
+
+ if (current_search == SEARCH_RANGE && current_valuefrom > current_valueto) {
+ u32 t = current_valuefrom;
+ current_valuefrom = current_valueto;
+ current_valueto = t;
+ }
+
+ switch (current_search) {
+ case SEARCH_EQUALVAL:
+ switch (current_searchtype) {
+ case SEARCHTYPE_8BIT:
+ CheatSearchEqual8((u8)current_valuefrom);
+ break;
+
+ case SEARCHTYPE_16BIT:
+ CheatSearchEqual16((u16)current_valuefrom);
+ break;
+
+ case SEARCHTYPE_32BIT:
+ CheatSearchEqual32((u32)current_valuefrom);
+ break;
+ }
+ break;
+
+ case SEARCH_NOTEQUALVAL:
+ switch (current_searchtype) {
+ case SEARCHTYPE_8BIT:
+ CheatSearchNotEqual8((u8)current_valuefrom);
+ break;
+
+ case SEARCHTYPE_16BIT:
+ CheatSearchNotEqual16((u16)current_valuefrom);
+ break;
+
+ case SEARCHTYPE_32BIT:
+ CheatSearchNotEqual32((u32)current_valuefrom);
+ break;
+ }
+ break;
+
+ case SEARCH_RANGE:
+ switch (current_searchtype) {
+ case SEARCHTYPE_8BIT:
+ CheatSearchRange8((u8)current_valuefrom, (u8)current_valueto);
+ break;
+
+ case SEARCHTYPE_16BIT:
+ CheatSearchRange16((u16)current_valuefrom, (u16)current_valueto);
+ break;
+
+ case SEARCHTYPE_32BIT:
+ CheatSearchRange32((u32)current_valuefrom, (u32)current_valueto);
+ break;
+ }
+ break;
+
+ case SEARCH_INCBY:
+ switch (current_searchtype) {
+ case SEARCHTYPE_8BIT:
+ CheatSearchIncreasedBy8((u8)current_valuefrom);
+ break;
+
+ case SEARCHTYPE_16BIT:
+ CheatSearchIncreasedBy16((u16)current_valuefrom);
+ break;
+
+ case SEARCHTYPE_32BIT:
+ CheatSearchIncreasedBy32((u32)current_valuefrom);
+ break;
+ }
+ break;
+
+ case SEARCH_DECBY:
+ switch (current_searchtype) {
+ case SEARCHTYPE_8BIT:
+ CheatSearchDecreasedBy8((u8)current_valuefrom);
+ break;
+
+ case SEARCHTYPE_16BIT:
+ CheatSearchDecreasedBy16((u16)current_valuefrom);
+ break;
+
+ case SEARCHTYPE_32BIT:
+ CheatSearchDecreasedBy32((u32)current_valuefrom);
+ break;
+ }
+ break;
+
+ case SEARCH_INC:
+ switch (current_searchtype) {
+ case SEARCHTYPE_8BIT:
+ CheatSearchIncreased8();
+ break;
+
+ case SEARCHTYPE_16BIT:
+ CheatSearchIncreased16();
+ break;
+
+ case SEARCHTYPE_32BIT:
+ CheatSearchIncreased32();
+ break;
+ }
+ break;
+
+ case SEARCH_DEC:
+ switch (current_searchtype) {
+ case SEARCHTYPE_8BIT:
+ CheatSearchDecreased8();
+ break;
+
+ case SEARCHTYPE_16BIT:
+ CheatSearchDecreased16();
+ break;
+
+ case SEARCHTYPE_32BIT:
+ CheatSearchDecreased32();
+ break;
+ }
+ break;
+
+ case SEARCH_DIFFERENT:
+ switch (current_searchtype) {
+ case SEARCHTYPE_8BIT:
+ CheatSearchDifferent8();
+ break;
+
+ case SEARCHTYPE_16BIT:
+ CheatSearchDifferent16();
+ break;
+
+ case SEARCHTYPE_32BIT:
+ CheatSearchDifferent32();
+ break;
+ }
+ break;
+
+ case SEARCH_NOCHANGE:
+ switch (current_searchtype) {
+ case SEARCHTYPE_8BIT:
+ CheatSearchNoChange8();
+ break;
+
+ case SEARCHTYPE_16BIT:
+ CheatSearchNoChange16();
+ break;
+
+ case SEARCHTYPE_32BIT:
+ CheatSearchNoChange32();
+ break;
+ }
+ break;
+
+ default:
+ assert(FALSE); // not possible
+ break;
+ }
+
+ UpdateCheatSearchDlg(hW);
break;
case IDC_NEWSEARCH:
+ FreeCheatSearchMem();
+ FreeCheatSearchResults();
+
+ current_search = SEARCH_EQUALVAL;
+ current_searchtype = SEARCHTYPE_8BIT;
+ current_searchbase = SEARCHBASE_DEC;
+ current_valuefrom = 0;
+ current_valueto = 0;
+
+ UpdateCheatSearchDlg(hW);
break;
case IDC_SEARCHFOR:
+ EnableWindow(GetDlgItem(hW, IDC_VALUEFROM), TRUE);
+
+ if (SendMessage(GetDlgItem(hW, IDC_SEARCHFOR), CB_GETCURSEL, 0, 0) == SEARCH_RANGE) {
+ ShowWindow(GetDlgItem(hW, IDC_LABEL_TO), SW_SHOW);
+ ShowWindow(GetDlgItem(hW, IDC_VALUETO), SW_SHOW);
+ }
+ else {
+ ShowWindow(GetDlgItem(hW, IDC_LABEL_TO), SW_HIDE);
+ ShowWindow(GetDlgItem(hW, IDC_VALUETO), SW_HIDE);
+
+ if (SendMessage(GetDlgItem(hW, IDC_SEARCHFOR), CB_GETCURSEL, 0, 0) >= SEARCH_INC) {
+ EnableWindow(GetDlgItem(hW, IDC_VALUEFROM), FALSE);
+ }
+ }
break;
case IDC_DATABASE:
+ if (SendMessage(GetDlgItem(hW, IDC_DATABASE), CB_GETCURSEL, 0, 0) == SEARCHBASE_DEC) {
+ if (current_searchbase == SEARCHBASE_HEX) {
+ GetWindowText(GetDlgItem(hW, IDC_VALUEFROM), (LPTSTR)buf, 255);
+ sscanf(buf, "%x", &i);
+ sprintf(buf, "%u", i);
+ SetWindowText(GetDlgItem(hW, IDC_VALUEFROM), (LPCTSTR)buf);
+
+ GetWindowText(GetDlgItem(hW, IDC_VALUETO), (LPTSTR)buf, 255);
+ sscanf(buf, "%x", &i);
+ sprintf(buf, "%u", i);
+ SetWindowText(GetDlgItem(hW, IDC_VALUETO), (LPCTSTR)buf);
+ }
+ }
+ else if (current_searchbase == SEARCHBASE_DEC){
+ GetWindowText(GetDlgItem(hW, IDC_VALUEFROM), (LPTSTR)buf, 255);
+ sscanf(buf, "%u", &i);
+ sprintf(buf, "%X", i);
+ SetWindowText(GetDlgItem(hW, IDC_VALUEFROM), (LPCTSTR)buf);
+
+ GetWindowText(GetDlgItem(hW, IDC_VALUETO), (LPTSTR)buf, 255);
+ sscanf(buf, "%u", &i);
+ sprintf(buf, "%X", i);
+ SetWindowText(GetDlgItem(hW, IDC_VALUETO), (LPCTSTR)buf);
+ }
+ current_searchbase = SendMessage(GetDlgItem(hW, IDC_DATABASE), CB_GETCURSEL, 0, 0);
break;
- case IDC_DATATYPE:
+ case IDC_RESLIST:
+ switch (HIWORD(wParam)) {
+ case LBN_SELCHANGE:
+ Button_Enable(GetDlgItem(hW, IDC_FREEZE), TRUE);
+ Button_Enable(GetDlgItem(hW, IDC_MODIFY), TRUE);
+ Button_Enable(GetDlgItem(hW, IDC_COPY), TRUE);
+ break;
+
+ case LBN_SELCANCEL:
+ Button_Enable(GetDlgItem(hW, IDC_FREEZE), FALSE);
+ Button_Enable(GetDlgItem(hW, IDC_MODIFY), FALSE);
+ Button_Enable(GetDlgItem(hW, IDC_COPY), FALSE);
+ break;
+ }
break;
}
break;
case WM_CLOSE:
- EndDialog(hW, TRUE);
+ EndDialog(hW, FALSE);
return TRUE;
}
diff --git a/win32/gui/WndMain.c b/win32/gui/WndMain.c index 40414ab2..6825ea13 100644 --- a/win32/gui/WndMain.c +++ b/win32/gui/WndMain.c @@ -1499,20 +1499,8 @@ void CreateMainMenu() { ADDMENUITEM(0, _("Cheat &Search..."), ID_CONFIGURATION_CHEATSEARCH);
ADDMENUITEM(0, _("Ch&eat Code..."), ID_CONFIGURATION_CHEATLIST);
ADDSEPARATOR(0);
- ADDMENUITEM(0, _("&Memory cards..."), ID_CONFIGURATION_MEMORYCARDMANAGER);
- ADDMENUITEM(0, _("C&PU..."), ID_CONFIGURATION_CPU);
- ADDSEPARATOR(0);
- ADDMENUITEM(0, _("&NetPlay..."), ID_CONFIGURATION_NETPLAY);
- ADDSEPARATOR(0);
- ADDMENUITEM(0, _("&Controllers..."), ID_CONFIGURATION_CONTROLLERS);
- ADDMENUITEM(0, _("CD-&ROM..."), ID_CONFIGURATION_CDROM);
- ADDMENUITEM(0, _("&Sound..."), ID_CONFIGURATION_SOUND);
- ADDMENUITEM(0, _("&Graphics..."), ID_CONFIGURATION_GRAPHICS);
- ADDSEPARATOR(0);
- ADDMENUITEM(0, _("&Plugins && Bios..."), ID_CONFIGURATION);
-
#ifdef ENABLE_NLS
- ADDSUBMENU(0, _("&Language"));
+ ADDSUBMENUS(0, 1, _("&Language"));
if (langs != langs) free(langs);
langs = (_langs*)malloc(sizeof(_langs));
@@ -1522,20 +1510,32 @@ void CreateMainMenu() { langs = (_langs*)realloc(langs, sizeof(_langs)*(i+1));
strcpy(langs[i].lang, lang);
if (!strcmp(Config.Lang, lang)) {
- ADDMENUITEMC(0, ParseLang(langs[i].lang), ID_LANGS + i);
+ ADDMENUITEMC(1, ParseLang(langs[i].lang), ID_LANGS + i);
} else {
- ADDMENUITEM(0, ParseLang(langs[i].lang), ID_LANGS + i);
+ ADDMENUITEM(1, ParseLang(langs[i].lang), ID_LANGS + i);
}
i++;
}
CloseLanguages();
langsMax = i;
if (!strcmp(Config.Lang, "English")) {
- ADDMENUITEMC(0, _("English"), ID_LANGS);
+ ADDMENUITEMC(1, _("English"), ID_LANGS);
} else {
- ADDMENUITEM(0, _("English"), ID_LANGS);
+ ADDMENUITEM(1, _("English"), ID_LANGS);
}
+ ADDSEPARATOR(0);
#endif
+ ADDMENUITEM(0, _("&Memory cards..."), ID_CONFIGURATION_MEMORYCARDMANAGER);
+ ADDMENUITEM(0, _("C&PU..."), ID_CONFIGURATION_CPU);
+ ADDSEPARATOR(0);
+ ADDMENUITEM(0, _("&NetPlay..."), ID_CONFIGURATION_NETPLAY);
+ ADDSEPARATOR(0);
+ ADDMENUITEM(0, _("&Controllers..."), ID_CONFIGURATION_CONTROLLERS);
+ ADDMENUITEM(0, _("CD-&ROM..."), ID_CONFIGURATION_CDROM);
+ ADDMENUITEM(0, _("&Sound..."), ID_CONFIGURATION_SOUND);
+ ADDMENUITEM(0, _("&Graphics..."), ID_CONFIGURATION_GRAPHICS);
+ ADDSEPARATOR(0);
+ ADDMENUITEM(0, _("&Plugins && Bios..."), ID_CONFIGURATION);
ADDSUBMENU(0, _("&Help"));
ADDMENUITEM(0, _("&About..."), ID_HELP_ABOUT);
diff --git a/win32/pcsx.dev b/win32/pcsx.dev index f038aa72..348e38a1 100644 --- a/win32/pcsx.dev +++ b/win32/pcsx.dev @@ -1099,11 +1099,11 @@ BuildCmd=$(CC) -c cheat.c -o cheat.o $(CFLAGS) [Unit106]
FileName=gui\CheatDlg.c
-CompileCpp=1
+CompileCpp=0
Folder=gui
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
-BuildCmd=
+BuildCmd=$(CC) -c CheatDlg.c -o CheatDlg.o $(CFLAGS)
diff --git a/win32/pcsx.rc b/win32/pcsx.rc index 4dca7a5e..d2b6277c 100644 --- a/win32/pcsx.rc +++ b/win32/pcsx.rc @@ -188,7 +188,7 @@ IDD_CONFIG DIALOGEX 0, 0, 322, 161 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION |
WS_SYSMENU
CAPTION "Configuration"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Sans Serif", 0, 0, 0x1
BEGIN
COMBOBOX IDC_LISTGPU,10,10,145,74,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
@@ -234,7 +234,7 @@ END IDD_CHEATLIST DIALOGEX 0, 0, 392, 201
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Edit Cheat Codes"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Sans Serif", 0, 0, 0x1
BEGIN
PUSHBUTTON "&Close",IDCANCEL,324,180,61,14
CONTROL "List2",IDC_CODELIST,"SysListView32",LVS_REPORT |
@@ -283,21 +283,34 @@ BEGIN WS_TABSTOP
END
-IDD_CHEATEDIT DIALOGEX 0, 0, 261, 175
+IDD_CHEATEDIT DIALOGEX 0, 0, 242, 161
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
WS_SYSMENU
CAPTION "Edit Cheat Code"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
- DEFPUSHBUTTON "OK",IDOK,139,154,50,14
- PUSHBUTTON "Cancel",IDCANCEL,197,154,50,14
- LTEXT "Description:",IDC_LABEL_DESCR,16,15,39,8
- LTEXT "Cheat Code:",IDC_LABEL_CODE,15,49,42,8
- EDITTEXT IDC_DESCR,15,25,232,14,ES_AUTOHSCROLL
- EDITTEXT IDC_CODE,15,60,231,84,ES_MULTILINE | ES_UPPERCASE |
+ DEFPUSHBUTTON "OK",IDOK,126,143,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,185,143,50,14
+ LTEXT "Description:",IDC_LABEL_DESCR,7,6,39,8
+ LTEXT "Cheat Code:",IDC_LABEL_CODE,6,40,42,8
+ EDITTEXT IDC_DESCR,6,17,232,14,ES_AUTOHSCROLL
+ EDITTEXT IDC_CODE,6,52,231,84,ES_MULTILINE | ES_UPPERCASE |
ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN
END
+IDD_CHEATVALEDIT DIALOGEX 0, 0, 162, 57
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Enter New Value"
+FONT 8, "MS Sans Serif", 0, 0, 0x0
+BEGIN
+ DEFPUSHBUTTON "OK",IDOK,25,40,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,87,40,50,14
+ LTEXT "Address:",IDC_LABEL_ADDRESS,7,7,30,8
+ LTEXT "Value:",IDC_LABEL_VALUE,8,24,30,8
+ EDITTEXT IDC_ADDRESS,41,4,113,12,ES_AUTOHSCROLL | WS_DISABLED
+ EDITTEXT IDC_VALUE,41,22,113,12,ES_AUTOHSCROLL
+END
+
/////////////////////////////////////////////////////////////////////////////
//
@@ -357,14 +370,6 @@ BEGIN TOPMARGIN, 7
BOTTOMMARGIN, 194
END
-
- IDD_CHEATEDIT, DIALOG
- BEGIN
- LEFTMARGIN, 7
- RIGHTMARGIN, 254
- TOPMARGIN, 7
- BOTTOMMARGIN, 168
- END
END
#endif // APSTUDIO_INVOKED
diff --git a/win32/resource.h b/win32/resource.h index 5aa19f1c..fc9f0660 100644 --- a/win32/resource.h +++ b/win32/resource.h @@ -1,5 +1,5 @@ //{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
+// Microsoft Developer Studio generated include file.
// Used by pcsx.rc
//
#define IDS_TITLE 1
@@ -30,6 +30,7 @@ #define IDD_CHEATEDIT 114
#define IDD_CP0REGS 115
#define IDC_COPY 115
+#define IDD_CHEATVALEDIT 115
#define IDD_COP2D 116
#define IDD_COP2C 117
#define MAIN_LOGO 118
@@ -37,6 +38,7 @@ #define IDD_MEMVIEW 136
#define IDC_EDIT2 1001
#define IDC_CODE 1001
+#define IDC_VALUE 1001
#define IDC_MCD2 1004
#define IDC_ASMCHECK1 1005
#define IDC_MCD1 1005
@@ -57,6 +59,7 @@ #define IDC_EDIT1 1013
#define IDC_CDDA 1013
#define IDC_DESCR 1013
+#define IDC_ADDRESS 1013
#define IDC_CLOSE 1014
#define IDC_PCSX_ABOUT_TEXT 1014
#define IDC_PSXOUT 1014
@@ -141,6 +144,7 @@ #define IDC_LABEL_CODE 1051
#define IDC_GPR5 1052
#define IDC_LISTGPU 1052
+#define IDC_LABEL_ADDRESS 1052
#define IDC_GPR6 1053
#define IDC_LISTSPU 1053
#define IDC_GPR7 1054
@@ -331,9 +335,9 @@ //
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 114
+#define _APS_NEXT_RESOURCE_VALUE 116
#define _APS_NEXT_COMMAND_VALUE 40047
-#define _APS_NEXT_CONTROL_VALUE 1052
+#define _APS_NEXT_CONTROL_VALUE 1053
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
|
