* Cheats: added "Add from CHT file..." button

This commit is contained in:
ansstuff 2012-12-29 14:32:02 +00:00
parent 15adae5df9
commit 3cb74f7780
5 changed files with 76 additions and 34 deletions

View File

@ -86,8 +86,8 @@ struct CHEATF *cheats=0,*cheatsl=0;
#define CHEATC_EXCLUDED 0x4000
#define CHEATC_NOSHOW 0xC000
static uint16 *CheatComp=0;
static int savecheats;
static uint16 *CheatComp = 0;
int savecheats = 0;
static DECLFR(SubCheatsRead)
{
@ -215,7 +215,6 @@ void FCEU_LoadGameCheats(FILE *override)
}
FCEU_DispMessage("Cheats file loaded.",0); //Tells user a cheats file was loaded.
FCEU_printf("Cheats file loaded.\n",0); //Sends message to message log.
while(fgets(linebuf,2048,fp)>0)
{
char *tbuf=linebuf;

View File

@ -8,3 +8,5 @@ void FCEU_PowerCheats(void);
int FCEU_CheatGetByte(uint32 A);
void FCEU_CheatSetByte(uint32 A, uint8 V);
extern int savecheats;

View File

@ -25,6 +25,7 @@
#include "debugger.h"
#include "../../fceu.h"
#include "../../cart.h"
#include "../../cheat.h" // For FCEU_LoadGameCheats()
static HWND pwindow = 0; //Handle to Cheats dialog
HWND hCheat = 0; //mbg merge 7/19/06 had to add
@ -541,6 +542,39 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l
else SetDlgItemText(hwndDlg,IDC_CHEAT_COM,(LPTSTR)U8ToStr(c));
if(hMemView)UpdateColorTable(); //if the memory viewer is open then update any blue freeze locations in it as well
break;
case IDC_BTN_CHEAT_ADDFROMFILE:
{
OPENFILENAME ofn;
memset(&ofn, 0, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwndDlg;
ofn.hInstance = fceu_hInstance;
ofn.lpstrTitle = "Open Cheats file";
const char filter[] = "Cheat files (*.cht)\0*.cht\0All Files (*.*)\0*.*\0\0";
ofn.lpstrFilter = filter;
char nameo[2048] = {0};
ofn.lpstrFile = nameo;
ofn.nMaxFile = 2048;
ofn.Flags = OFN_EXPLORER|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_FILEMUSTEXIST;
std::string initdir = FCEU_GetPath(FCEUMKF_CHEAT);
ofn.lpstrInitialDir = initdir.c_str();
if (GetOpenFileName(&ofn))
{
FILE* file = FCEUD_UTF8fopen(nameo, "rb");
if (file)
{
FCEU_LoadGameCheats(file);
EnableWindow(GetDlgItem(hwndDlg,IDC_BTN_CHEAT_DEL),TRUE);
EnableWindow(GetDlgItem(hwndDlg,IDC_BTN_CHEAT_UPD),TRUE);
if (hMemView) UpdateColorTable(); //if the memory viewer is open then update any blue freeze locations in it as well
UpdateCheatsAdded();
savecheats = 1;
}
}
break;
}
case IDC_BTN_CHEAT_RESET:
FCEUI_CheatSearchBegin();
ShowResults(hwndDlg);
@ -726,19 +760,20 @@ void InitializeCheatsAdded(HWND hwndDlg)
char temp[64];
if (FrozenAddressCount < 256)
sprintf(temp,"Active Cheats %d", FrozenAddressCount);
else if (FrozenAddressCount == 256)
{
sprintf(temp,"Active Cheats %d (Max Limit)", FrozenAddressCount);
EnableWindow(GetDlgItem(hwndDlg,IDC_BTN_CHEAT_ADD),FALSE);
}
else
{
sprintf(temp,"%d Error: Too many cheats loaded!", FrozenAddressCount);
EnableWindow(GetDlgItem(hwndDlg,IDC_BTN_CHEAT_ADD),FALSE);
}
SetDlgItemText(hwndDlg,201,temp);
RedoCheatsLB(hwndDlg);
else if (FrozenAddressCount == 256)
{
sprintf(temp,"Active Cheats %d (Max Limit)", FrozenAddressCount);
EnableWindow(GetDlgItem(hwndDlg,IDC_BTN_CHEAT_ADD),FALSE);
EnableWindow(GetDlgItem(hwndDlg,IDC_BTN_CHEAT_ADDFROMFILE),FALSE);
}
else
{
sprintf(temp,"%d Error: Too many cheats loaded!", FrozenAddressCount);
EnableWindow(GetDlgItem(hwndDlg,IDC_BTN_CHEAT_ADD),FALSE);
EnableWindow(GetDlgItem(hwndDlg,IDC_BTN_CHEAT_ADDFROMFILE),FALSE);
}
SetDlgItemText(hwndDlg,201,temp);
RedoCheatsLB(hwndDlg);
}
//Used by cheats and external dialogs such as hex editor to update items in the cheat search dialog
@ -756,11 +791,13 @@ void UpdateCheatsAdded()
{
sprintf(temp,"Active Cheats %d (Max Limit)", FrozenAddressCount);
EnableWindow(GetDlgItem(hCheat,IDC_BTN_CHEAT_ADD),FALSE);
EnableWindow(GetDlgItem(hCheat,IDC_BTN_CHEAT_ADDFROMFILE),FALSE);
}
else
{
sprintf(temp,"%d Error: Too many cheats loaded!", FrozenAddressCount);
EnableWindow(GetDlgItem(hCheat,IDC_BTN_CHEAT_ADD),FALSE);
EnableWindow(GetDlgItem(hCheat,IDC_BTN_CHEAT_ADDFROMFILE),FALSE);
}
SetDlgItemText(hCheat,201,temp);
RedoCheatsLB(hCheat);

View File

@ -498,7 +498,7 @@ CHEATCONTEXTMENUS MENU
BEGIN
POPUP "CheatListPopup"
BEGIN
MENUITEM "Toggle Cheat\tDbl-Clk", CHEAT_CONTEXT_TOGGLECHEAT
MENUITEM "Toggle selected Cheats\tDbl-Clk", CHEAT_CONTEXT_TOGGLECHEAT
MENUITEM "Poke Cheat Value", CHEAT_CONTEXT_POKECHEATVALUE
MENUITEM "Goto In Hex Editor", CHEAT_CONTEXT_GOTOINHEXEDITOR
MENUITEM "Delete Selected Cheats", ID_CHEATLISTPOPUP_DELETESELECTEDCHEATS
@ -1670,25 +1670,25 @@ BEGIN
LTEXT "New Selection Name:",-1,5,240,68,8
END
CHEATCONSOLE DIALOGEX 0, 0, 379, 186
CHEATCONSOLE DIALOGEX 0, 0, 379, 189
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Cheat Search"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
GROUPBOX "Active Cheats",201,5,1,129,168,WS_TABSTOP
GROUPBOX "Cheat Search",202,139,1,234,168,WS_TABSTOP
LISTBOX IDC_LIST_CHEATS,11,11,118,102,LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL
LTEXT "Name:",IDC_STATIC,12,118,22,10
LTEXT "Addr:",IDC_STATIC,12,134,18,10
LTEXT "Val:",IDC_STATIC,61,134,12,10
LTEXT "Cmp:",IDC_STATIC,95,134,16,10
EDITTEXT IDC_CHEAT_NAME,35,116,94,12,ES_AUTOHSCROLL | ES_WANTRETURN
EDITTEXT IDC_CHEAT_ADDR,31,132,25,12,ES_UPPERCASE | ES_WANTRETURN
EDITTEXT IDC_CHEAT_VAL,74,132,16,12,ES_UPPERCASE | ES_WANTRETURN
EDITTEXT IDC_CHEAT_COM,113,132,16,12,ES_UPPERCASE | ES_WANTRETURN
DEFPUSHBUTTON "Add",IDC_BTN_CHEAT_ADD,11,148,36,16
PUSHBUTTON "Delete",IDC_BTN_CHEAT_DEL,52,148,36,16
PUSHBUTTON "Update",IDC_BTN_CHEAT_UPD,93,148,36,16
GROUPBOX "Active Cheats",201,5,2,129,182,WS_TABSTOP
GROUPBOX "Cheat Search",202,140,2,233,182,WS_TABSTOP
LISTBOX IDC_LIST_CHEATS,11,11,118,98,LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL
LTEXT "Name:",IDC_STATIC,12,114,22,10
LTEXT "Addr:",IDC_STATIC,12,130,18,10
LTEXT "Val:",IDC_STATIC,61,130,12,10
LTEXT "Cmp:",IDC_STATIC,95,130,16,10
EDITTEXT IDC_CHEAT_NAME,35,112,94,12,ES_AUTOHSCROLL | ES_WANTRETURN
EDITTEXT IDC_CHEAT_ADDR,31,128,25,12,ES_UPPERCASE | ES_WANTRETURN
EDITTEXT IDC_CHEAT_VAL,74,128,16,12,ES_UPPERCASE | ES_WANTRETURN
EDITTEXT IDC_CHEAT_COM,113,128,16,12,ES_UPPERCASE | ES_WANTRETURN
DEFPUSHBUTTON "Add",IDC_BTN_CHEAT_ADD,11,144,36,16
PUSHBUTTON "Delete",IDC_BTN_CHEAT_DEL,52,144,36,16
PUSHBUTTON "Update",IDC_BTN_CHEAT_UPD,93,144,36,16
PUSHBUTTON "Reset",IDC_BTN_CHEAT_RESET,146,12,55,15
PUSHBUTTON "Known Value:",IDC_BTN_CHEAT_KNOWN,146,31,55,15
LTEXT "0x",IDC_STATIC,205,34,9,8
@ -1707,7 +1707,9 @@ BEGIN
GROUPBOX "Possibilities",IDC_CHEAT_BOX_POSSIBILITIES,263,8,105,156,WS_TABSTOP
LISTBOX IDC_CHEAT_LIST_POSSIBILITIES,268,18,85,142,LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_WANTKEYBOARDINPUT | WS_TABSTOP
SCROLLBAR IDC_CHEAT_SCRL_POSSIBILITIES,354,18,10,142,SBS_VERT
CONTROL "Pause when active",IDC_CHEAT_PAUSEWHENACTIVE,"Button",BS_AUTOCHECKBOX,10,172,76,10
CONTROL " Pause emulation when this window is active",IDC_CHEAT_PAUSEWHENACTIVE,
"Button",BS_AUTOCHECKBOX,147,169,157,10
PUSHBUTTON "Add from CHT file...",IDC_BTN_CHEAT_ADDFROMFILE,23,163,93,16
END
IDD_LUA DIALOGEX 0, 0, 270, 150
@ -2102,7 +2104,7 @@ BEGIN
"CHEATCONSOLE", DIALOG
BEGIN
TOPMARGIN, 7
BOTTOMMARGIN, 188
END
IDD_LUA, DIALOG

View File

@ -403,6 +403,8 @@
#define MENU_PAL 311
#define IDC_DEBUGGER_VAL_SPR 311
#define IDC_LABEL_TWEAKCOUNT 311
#define IDC_BTN_CHEAT_UPD2 311
#define IDC_BTN_CHEAT_ADDFROMFILE 311
#define IDC_DEBUGGER_BOOKMARK 312
#define IDC_DEBUGGER_CYCLES_EXCEED 313
#define IDC_DEBUGGER_INSTRUCTIONS_EXCEED 314