From ed3783db5528edaf610f5f32e3aa2ca034ca050a Mon Sep 17 00:00:00 2001 From: rainwarrior Date: Wed, 24 Aug 2016 19:21:43 +0000 Subject: [PATCH] Hex editor memview: 1. expanded bookmarks to work correctly with all views (not just RAM) 2. fixed Find dialog to be able to find the first or last byte of the memory region. --- trunk/src/drivers/win/memview.cpp | 29 +++++++++++++++-------------- trunk/src/drivers/win/memview.h | 3 +++ trunk/src/drivers/win/memviewsp.cpp | 21 +++++++++++++-------- trunk/src/drivers/win/memviewsp.h | 3 ++- 4 files changed, 33 insertions(+), 23 deletions(-) diff --git a/trunk/src/drivers/win/memview.cpp b/trunk/src/drivers/win/memview.cpp index d9f50c68..9190bcb0 100644 --- a/trunk/src/drivers/win/memview.cpp +++ b/trunk/src/drivers/win/memview.cpp @@ -124,8 +124,10 @@ popupmenu[] = {0x8000,0xFFFF, MODE_NES_MEMORY, ID_ADDRESS_SEEK_IN_ROM, "Go Here In ROM File"}, {0x8000,0xFFFF, MODE_NES_MEMORY, ID_ADDRESS_CREATE_GG_CODE, "Create Game Genie Code At This Address"}, {0x0000,0xFFFF, MODE_NES_MEMORY, ID_ADDRESS_BOOKMARK, "Add / Remove bookmark"}, -} ; - + {0x0000,0xFFFF, MODE_NES_PPU, ID_ADDRESS_BOOKMARK, "Add / Remove bookmark"}, + {0x0000,0xFFFF, MODE_NES_OAM, ID_ADDRESS_BOOKMARK, "Add / Remove bookmark"}, + {0x0000,0xFFFF, MODE_NES_FILE, ID_ADDRESS_BOOKMARK, "Add / Remove bookmark"}, +}; #define POPUPNUM (sizeof popupmenu / sizeof popupmenu[0]) int LoadTableFile(); @@ -721,6 +723,7 @@ void UpdateColorTable() for (j=0;j= CurOffset) && ((int)hexBookmarks[j].address < CurOffset+DataAmount)) TextColorList[hexBookmarks[j].address - CurOffset] = RGB(0,0xCC,0); // Green for Bookmarks } @@ -1316,13 +1319,12 @@ LRESULT CALLBACK MemViewCallB(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa if (wParam >= '0' && wParam <= '9') { - int newValue = handleBookmarkMenu(wParam - '0'); + int bookmark = wParam - '0'; + int newValue = handleBookmarkMenu(bookmark); if (newValue != -1) { - CurOffset = newValue; - CursorEndAddy = -1; - CursorStartAddy = hexBookmarks[wParam - '0'].address; + ChangeMemViewFocus(hexBookmarks[bookmark].editmode,newValue,-1); UpdateColorTable(); } } @@ -1736,9 +1738,9 @@ LRESULT CALLBACK MemViewCallB(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa break; case ID_ADDRESS_BOOKMARK: { - if (toggleBookmark(hwnd, CursorStartAddy)) + if (toggleBookmark(hwnd, CursorStartAddy, EditingMode)) { - MessageBox(hDebug, "Can't set more than 64 breakpoints", "Error", MB_OK | MB_ICONERROR); + MessageBox(hDebug, "Can't set more than 64 bookmarks", "Error", MB_OK | MB_ICONERROR); } else { @@ -2048,13 +2050,12 @@ LRESULT CALLBACK MemViewCallB(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa default: if (wParam >= ID_FIRST_BOOKMARK && wParam < (ID_FIRST_BOOKMARK + 64)) { - int newValue = handleBookmarkMenu(wParam - ID_FIRST_BOOKMARK); + int bookmark = wParam - ID_FIRST_BOOKMARK; + int newValue = handleBookmarkMenu(bookmark); if (newValue != -1) { - CurOffset = newValue; - CursorEndAddy = -1; - CursorStartAddy = hexBookmarks[wParam - ID_FIRST_BOOKMARK].address; + ChangeMemViewFocus(hexBookmarks[bookmark].editmode,newValue,-1); UpdateColorTable(); } return 0; @@ -2260,7 +2261,7 @@ void FindNext(){ return; } if(!FindDirectionUp){ - for(i = CursorStartAddy+1;i+datasize < MaxSize;i++){ + for(i = CursorStartAddy+1;i+datasize <= MaxSize;i++){ found = 1; for(j = 0;j < datasize;j++){ if(GetMemViewData(i+j) != data[j])found = 0; @@ -2281,7 +2282,7 @@ void FindNext(){ } } } else { //FindDirection is up - for(i = CursorStartAddy-1;i > 0;i--){ + for(i = CursorStartAddy-1;i >= 0;i--){ found = 1; for(j = 0;j < datasize;j++){ if(GetMemViewData(i+j) != data[j])found = 0; diff --git a/trunk/src/drivers/win/memview.h b/trunk/src/drivers/win/memview.h index 599b4388..928e5593 100644 --- a/trunk/src/drivers/win/memview.h +++ b/trunk/src/drivers/win/memview.h @@ -12,3 +12,6 @@ void SetHexEditorAddress(int gotoaddress); extern HWND hMemView, hMemFind; extern int EditingMode; + +extern char EditString[4][20]; + diff --git a/trunk/src/drivers/win/memviewsp.cpp b/trunk/src/drivers/win/memviewsp.cpp index 66624ca0..83efde3d 100644 --- a/trunk/src/drivers/win/memviewsp.cpp +++ b/trunk/src/drivers/win/memviewsp.cpp @@ -23,6 +23,7 @@ #include #include #include "memviewsp.h" +#include "memview.h" #include "common.h" HexBookmark hexBookmarks[64]; @@ -30,8 +31,9 @@ int nextBookmark = 0; /// Finds the bookmark for a given address /// @param address The address to find. +/// @param editmode The editing mode of the hex editor (RAM/PPU/OAM/ROM) /// @return The index of the bookmark at that address or -1 if there's no bookmark at that address. -int findBookmark(unsigned int address) +int findBookmark(unsigned int address, int editmode) { int i; @@ -43,7 +45,7 @@ int findBookmark(unsigned int address) for (i=0;i