diff --git a/src/drivers/win/memwatch.cpp b/src/drivers/win/memwatch.cpp index 3ddf6968..e9bda4fe 100644 --- a/src/drivers/win/memwatch.cpp +++ b/src/drivers/win/memwatch.cpp @@ -52,6 +52,16 @@ const unsigned int MEMW_MAX_NUMBER_OF_RECENT_FILES = sizeof(memw_recent_files)/s static HMENU memwrecentmenu; +//Ram change globals------------------------ +unsigned int ramChange = 0; +char editbox00current[5]; +char editbox00last[5]; +int edit00last = 0; +int edit00now = 0; +unsigned int edit00count = 0; +char edit00changem[5]; +//------------------------------------------ + void UpdateMemw_RMenu(HMENU menu, char **strs, unsigned int mitem, unsigned int baseid) { MENUITEMINFO moo; @@ -290,6 +300,7 @@ void UpdateMemWatch() MoveToEx(hdc,xPositions[i],yPositions[i],NULL); TextOut(hdc,0,0,text,strlen(text)); } + } } @@ -735,19 +746,23 @@ static BOOL CALLBACK MemWatchCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA break; case MEMW_OPTIONS_LOADSTART: //Load on Start up - MemWatchLoadOnStart ^= 1; - CheckMenuItem(memwmenu, MEMW_OPTIONS_LOADSTART, MemWatchLoadOnStart ? MF_CHECKED : MF_UNCHECKED); + MemWatchLoadOnStart ^= 1; + CheckMenuItem(memwmenu, MEMW_OPTIONS_LOADSTART, MemWatchLoadOnStart ? MF_CHECKED : MF_UNCHECKED); break; case MEMW_OPTIONS_LOADLASTFILE: //Load last file when opening memwatch - MemWatchLoadFileOnStart ^= 1; - CheckMenuItem(memwmenu, MEMW_OPTIONS_LOADLASTFILE, MemWatchLoadFileOnStart ? MF_CHECKED : MF_UNCHECKED); + MemWatchLoadFileOnStart ^= 1; + CheckMenuItem(memwmenu, MEMW_OPTIONS_LOADLASTFILE, MemWatchLoadFileOnStart ? MF_CHECKED : MF_UNCHECKED); break; case MEMW_HELP_WCOMMANDS: OpenHelpWindow(memwhelp); break; - + case MEMW_EDIT00RESET: + edit00last = 0; + edit00now = 0; + edit00count = 0; + break; default: if (LOWORD(wParam) >= MEMW_MENU_FIRST_RECENT_FILE && LOWORD(wParam) < MEMW_MENU_FIRST_RECENT_FILE+MEMW_MAX_NUMBER_OF_RECENT_FILES) OpenMemwatchRecentFile(LOWORD(wParam) - MEMW_MENU_FIRST_RECENT_FILE); @@ -812,8 +827,6 @@ static BOOL CALLBACK MemWatchCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA //Open the Memory Watch dialog void CreateMemWatch() -//void CreateMemWatch(HWND parent) - adelikat: old code made use of this but parent was only used in a line commented out. Taking out for my own needs :P - { if(NeedsInit) //Clear the strings { @@ -873,3 +886,27 @@ void AddMemWatch(char memaddress[32]) } } +void RamChange() +{ + //Debug: Show frame counter--------------------------------- + extern int currFrameCounter; + char counterbuf[32] = {0}; + ramChange++; + sprintf(counterbuf,"%d/%d",currFrameCounter,ramChange); + SetDlgItemText(hwndMemWatch,MEMW_STATIC,counterbuf); + //---------------------------------------------------------- + MWRec& mwrec = mwrecs[0]; + if(mwrec.valid && GameInfo) + { + GetDlgItemText(hwndMemWatch, MW_ADDR00, editbox00current, 6); + edit00last = edit00now; + edit00now = GetMem(mwrec.addr); + + if (edit00now > edit00last) //If current value is > then last value + edit00count++; //Increase counter + + sprintf(edit00changem, "%d", edit00count); //Convert counter to text + SetDlgItemText(hwndMemWatch, MEMW_RESULTS, edit00changem); //Display text in results box + } + +} diff --git a/src/drivers/win/memwatch.h b/src/drivers/win/memwatch.h index 2f5eabf3..378a44e5 100644 --- a/src/drivers/win/memwatch.h +++ b/src/drivers/win/memwatch.h @@ -2,6 +2,7 @@ void UpdateMemWatch(); void CreateMemWatch(); void CloseMemoryWatch(); void AddMemWatch(char memaddress[32]); +void RamChange(); extern char * MemWatchDir; extern bool MemWatchLoadOnStart; extern bool MemWatchLoadFileOnStart; diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index f4d3cbd2..1983d0e6 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -778,7 +778,7 @@ BEGIN LTEXT "Type a key, or press Escape to disable.",65429,53,14,125,8 END -MEMWATCH DIALOGEX 0, 0, 260, 203 +MEMWATCH DIALOGEX 0, 0, 260, 269 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Memory Watch" MENU MEMWATCHMENU @@ -840,6 +840,15 @@ BEGIN LTEXT "Name",65425,171,7,20,8 LTEXT "Address",65424,135,7,26,8 LTEXT "Value",MW_ValueLabel2,231,7,19,8 + LTEXT "Frames",MEMW_STATIC,209,249,44,8 + LTEXT "results",MEMW_RESULTS,100,228,36,8 + GROUPBOX "Memory Change Monitoring",IDC_STATIC,0,202,256,59 + LTEXT "Address",IDC_STATIC,6,213,26,8 + LTEXT "Value",IDC_STATIC,101,213,19,8 + LTEXT "Change formula",IDC_STATIC,44,213,50,8 + LTEXT "01",IDC_STATIC,21,228,9,8 + PUSHBUTTON " ",MEMW_EDIT00RESET,137,230,11,7 + LTEXT "Reset",IDC_STATIC,133,213,20,8 END DEBUGGER DIALOGEX 54, 74, 548, 305 @@ -1403,6 +1412,11 @@ BEGIN BOTTOMMARGIN, 268 END + "MEMWATCH", DIALOG + BEGIN + BOTTOMMARGIN, 261 + END + "DEBUGGER", DIALOG BEGIN RIGHTMARGIN, 547 diff --git a/src/drivers/win/resource.h b/src/drivers/win/resource.h index 4f4d3b6d..8f920686 100644 --- a/src/drivers/win/resource.h +++ b/src/drivers/win/resource.h @@ -361,6 +361,9 @@ #define IDC_LIST2 1149 #define CHECK_SOUND_MUTETURBO 1179 #define IDC_EDIT_AUTHOR 1180 +#define MEMW_STATIC 1181 +#define MEMW_RESULTS 1184 +#define MEMW_EDIT00RESET 1185 #define MENU_NETWORK 40040 #define MENU_PALETTE 40041 #define MENU_SOUND 40042 @@ -548,7 +551,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 124 #define _APS_NEXT_COMMAND_VALUE 40257 -#define _APS_NEXT_CONTROL_VALUE 1181 +#define _APS_NEXT_CONTROL_VALUE 1186 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/src/fceu.cpp b/src/fceu.cpp index d78d2502..53b176ea 100644 --- a/src/fceu.cpp +++ b/src/fceu.cpp @@ -59,7 +59,7 @@ #include "drivers/win/main.h" #include "drivers/win/cheat.h" #include "drivers/win/texthook.h" - +#include "drivers/win/memwatch.h" #else #include "drivers/sdl/sdl.h" #endif @@ -584,6 +584,7 @@ void FCEUI_Emulate(uint8 **pXBuf, int32 **SoundBuf, int32 *SoundBufSize, int ski #ifdef WIN32 UpdateCheatList(); UpdateTextHooker(); + RamChange(); // FCEUI_AviVideoUpdate(XBuf); #endif