diff --git a/Windows/GEDebugger/CtrlDisplayListView.cpp b/Windows/GEDebugger/CtrlDisplayListView.cpp index 1a15448d7d..1a3f015e15 100644 --- a/Windows/GEDebugger/CtrlDisplayListView.cpp +++ b/Windows/GEDebugger/CtrlDisplayListView.cpp @@ -1,7 +1,8 @@ #include "Windows/GEDebugger/CtrlDisplayListView.h" -#include "Core/Config.h" #include "Windows/GEDebugger/GEDebugger.h" +#include "Windows/InputBox.h" #include "Windows/Main.h" +#include "Core/Config.h" #include const PTCHAR CtrlDisplayListView::windowClass = _T("CtrlDisplayListView"); @@ -328,7 +329,7 @@ void CtrlDisplayListView::onMouseUp(WPARAM wParam, LPARAM lParam, int button) redraw(); } break; - case IDC_DEBUG_LIST_SETSTALL: + case ID_GEDBG_SETSTALLADDR: { gpuDebug->ResetListStall(list.id,curAddress); list.stall = curAddress; @@ -354,6 +355,24 @@ void CtrlDisplayListView::onMouseUp(WPARAM wParam, LPARAM lParam, int button) redraw(); } break; + case ID_GEDBG_GOTOPC: + setCurAddress(list.pc); + scrollAddressIntoView(); + redraw(); + break; + case ID_GEDBG_GOTOADDR: + { + u32 newAddress = curAddress; + if (!InputBox_GetHex(GetModuleHandle(NULL), wnd, L"Address", curAddress, newAddress)) { + break; + } + if (Memory::IsValidAddress(newAddress)) { + setCurAddress(newAddress); + scrollAddressIntoView(); + redraw(); + } + } + break; } return; } diff --git a/Windows/InputBox.cpp b/Windows/InputBox.cpp index 7d24b4f2b4..bb840adb8d 100644 --- a/Windows/InputBox.cpp +++ b/Windows/InputBox.cpp @@ -117,8 +117,11 @@ bool InputBox_GetHex(HINSTANCE hInst, HWND hParent, const wchar_t *title, u32 de if (value == IDOK) { - wscanf(out.c_str(),"%08x",&outvalue); - return true; + if (swscanf(out.c_str(), L"0x%08x", &outvalue) == 1) + return true; + if (swscanf(out.c_str(), L"%08x", &outvalue) == 1) + return true; + return false; } else { diff --git a/Windows/ppsspp.rc b/Windows/ppsspp.rc index 6dfd2910b0..c9afedb438 100644 --- a/Windows/ppsspp.rc +++ b/Windows/ppsspp.rc @@ -505,7 +505,7 @@ BEGIN MENUITEM "Copy Instruction (Disasm)", ID_DISASM_COPYINSTRUCTIONDISASM MENUITEM "Disassemble to File", ID_DISASM_DISASSEMBLETOFILE MENUITEM SEPARATOR - MENUITEM "Assemble Ppcode", ID_DISASM_ASSEMBLE + MENUITEM "Assemble Opcode", ID_DISASM_ASSEMBLE MENUITEM SEPARATOR MENUITEM "Run to Cursor", ID_DISASM_RUNTOHERE MENUITEM "Jump to Cursor", ID_DISASM_SETPCTOHERE @@ -558,9 +558,11 @@ BEGIN MENUITEM SEPARATOR MENUITEM "Run to Cursor", ID_DISASM_RUNTOHERE MENUITEM "Jump to Cursor", ID_DISASM_SETPCTOHERE - MENUITEM "Set Stall" IDC_DEBUG_LIST_SETSTALL + MENUITEM "Set Stall" ID_GEDBG_SETSTALLADDR MENUITEM "Toggle Breakpoint", ID_DISASM_TOGGLEBREAKPOINT MENUITEM SEPARATOR + MENUITEM "Go to Displaylist PC", ID_GEDBG_GOTOPC + MENUITEM "Go to Address...", ID_GEDBG_GOTOADDR MENUITEM "Go to in Memory View", ID_DISASM_GOTOINMEMORYVIEW END END diff --git a/Windows/resource.h b/Windows/resource.h index 603b7c8161..b3381de14f 100644 --- a/Windows/resource.h +++ b/Windows/resource.h @@ -284,7 +284,9 @@ #define IDC_DEBUG_BOTTOMTABS 40127 #define ID_DEBUG_HIDEBOTTOMTABS 40128 #define ID_DEBUG_TOGGLEBOTTOMTABTITLES 40129 -#define IDC_DEBUG_LIST_SETSTALL 40130 +#define ID_GEDBG_SETSTALLADDR 40130 +#define ID_GEDBG_GOTOPC 40131 +#define ID_GEDBG_GOTOADDR 40132 // Dummy option to let the buffered rendering hotkey cycle through all the options. #define ID_OPTIONS_BUFFEREDRENDERINGDUMMY 40500 @@ -297,7 +299,7 @@ #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 254 -#define _APS_NEXT_COMMAND_VALUE 40131 +#define _APS_NEXT_COMMAND_VALUE 40133 #define _APS_NEXT_CONTROL_VALUE 1191 #define _APS_NEXT_SYMED_VALUE 101 #endif