mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Assemble opcode by typing
This commit is contained in:
parent
e1126af4eb
commit
c7c826b7b6
4 changed files with 32 additions and 3 deletions
|
@ -80,6 +80,7 @@ LRESULT CALLBACK CtrlDisAsmView::wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPA
|
|||
ccp->onVScroll(wParam,lParam);
|
||||
break;
|
||||
case WM_MOUSEWHEEL:
|
||||
ccp->dontRedraw = false;
|
||||
if (GET_WHEEL_DELTA_WPARAM(wParam) > 0)
|
||||
{
|
||||
ccp->scrollWindow(-3);
|
||||
|
@ -92,6 +93,9 @@ LRESULT CALLBACK CtrlDisAsmView::wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPA
|
|||
case WM_KEYDOWN:
|
||||
ccp->onKeyDown(wParam,lParam);
|
||||
return 0;
|
||||
case WM_CHAR:
|
||||
ccp->onChar(wParam,lParam);
|
||||
return 0;
|
||||
case WM_SYSKEYDOWN:
|
||||
ccp->onKeyDown(wParam,lParam);
|
||||
return 0; // return a value so that windows doesn't execute the standard syskey action
|
||||
|
@ -161,6 +165,7 @@ CtrlDisAsmView::CtrlDisAsmView(HWND _wnd)
|
|||
hasFocus = false;
|
||||
controlHeld = false;
|
||||
dontRedraw = false;
|
||||
keyTaken = false;
|
||||
|
||||
matchAddress = -1;
|
||||
searching = false;
|
||||
|
@ -295,7 +300,7 @@ void CtrlDisAsmView::assembleOpcode(u32 address, std::string defaultText)
|
|||
return;
|
||||
}
|
||||
|
||||
bool result = InputBox_GetString(MainWindow::GetHInstance(),wnd,"Assemble opcode",(char*)defaultText.c_str(),op);
|
||||
bool result = InputBox_GetString(MainWindow::GetHInstance(),wnd,"Assemble opcode",(char*)defaultText.c_str(),op,false);
|
||||
if (result == false) return;
|
||||
|
||||
result = MIPSAsm::MipsAssembleOpcode(op,debugger,address,encoded);
|
||||
|
@ -511,10 +516,21 @@ void CtrlDisAsmView::followBranch()
|
|||
}
|
||||
}
|
||||
|
||||
void CtrlDisAsmView::onChar(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
if (keyTaken) return;
|
||||
|
||||
char str[2];
|
||||
str[0] = wParam;
|
||||
str[1] = 0;
|
||||
assembleOpcode(curAddress,str);
|
||||
}
|
||||
|
||||
void CtrlDisAsmView::onKeyDown(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
dontRedraw = false;
|
||||
u32 windowEnd = windowStart+visibleRows*instructionSize;
|
||||
keyTaken = true;
|
||||
|
||||
if (controlHeld)
|
||||
{
|
||||
|
@ -594,6 +610,7 @@ void CtrlDisAsmView::onKeyDown(WPARAM wParam, LPARAM lParam)
|
|||
debugger->toggleBreakpoint(curAddress);
|
||||
break;
|
||||
default:
|
||||
keyTaken = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -663,6 +680,7 @@ void CtrlDisAsmView::toggleBreakpoint()
|
|||
|
||||
void CtrlDisAsmView::onMouseDown(WPARAM wParam, LPARAM lParam, int button)
|
||||
{
|
||||
dontRedraw = false;
|
||||
int x = LOWORD(lParam);
|
||||
int y = HIWORD(lParam);
|
||||
|
||||
|
|
|
@ -68,6 +68,7 @@ class CtrlDisAsmView
|
|||
int matchAddress;
|
||||
bool searching;
|
||||
bool dontRedraw;
|
||||
bool keyTaken;
|
||||
|
||||
void assembleOpcode(u32 address, std::string defaultText);
|
||||
void disassembleToFile();
|
||||
|
@ -85,6 +86,7 @@ public:
|
|||
static LRESULT CALLBACK wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||
static CtrlDisAsmView * getFrom(HWND wnd);
|
||||
|
||||
void onChar(WPARAM wParam, LPARAM lParam);
|
||||
void onPaint(WPARAM wParam, LPARAM lParam);
|
||||
void onVScroll(WPARAM wParam, LPARAM lParam);
|
||||
void onKeyDown(WPARAM wParam, LPARAM lParam);
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
static TCHAR textBoxContents[256];
|
||||
static TCHAR out[256];
|
||||
static TCHAR windowTitle[256];
|
||||
static bool defaultSelected;
|
||||
|
||||
static INT_PTR CALLBACK InputBoxFunc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
|
@ -12,6 +13,7 @@ static INT_PTR CALLBACK InputBoxFunc(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
case WM_INITDIALOG:
|
||||
SetWindowText(GetDlgItem(hDlg,IDC_INPUTBOX),textBoxContents);
|
||||
SetWindowText(hDlg, windowTitle);
|
||||
if (defaultSelected == false) PostMessage(GetDlgItem(hDlg,IDC_INPUTBOX),EM_SETSEL,-1,-1);
|
||||
return TRUE;
|
||||
case WM_COMMAND:
|
||||
switch (wParam)
|
||||
|
@ -35,13 +37,19 @@ void InputBoxFunc()
|
|||
|
||||
}
|
||||
|
||||
bool InputBox_GetString(HINSTANCE hInst, HWND hParent, TCHAR *title, TCHAR *defaultvalue, TCHAR *outvalue)
|
||||
bool InputBox_GetString(HINSTANCE hInst, HWND hParent, TCHAR *title, TCHAR *defaultvalue, TCHAR *outvalue, bool selected)
|
||||
{
|
||||
defaultSelected = selected;
|
||||
if (defaultvalue && strlen(defaultvalue)<255)
|
||||
strcpy(textBoxContents,defaultvalue);
|
||||
else
|
||||
strcpy(textBoxContents,"");
|
||||
|
||||
if (title != NULL)
|
||||
strcpy(windowTitle,title);
|
||||
else
|
||||
strcpy(windowTitle,"");
|
||||
|
||||
if (IDOK==DialogBox(hInst,(LPCSTR)IDD_INPUTBOX,hParent,InputBoxFunc))
|
||||
{
|
||||
strcpy(outvalue,out);
|
||||
|
@ -54,6 +62,7 @@ bool InputBox_GetString(HINSTANCE hInst, HWND hParent, TCHAR *title, TCHAR *defa
|
|||
bool InputBox_GetString(HINSTANCE hInst, HWND hParent, TCHAR *title, TCHAR *defaultvalue, TCHAR *outvalue, size_t outlength)
|
||||
{
|
||||
const char *defaultTitle = "Input value";
|
||||
defaultSelected = true;
|
||||
|
||||
if (defaultvalue && strlen(defaultvalue)<255)
|
||||
strcpy(textBoxContents,defaultvalue);
|
||||
|
|
|
@ -3,6 +3,6 @@
|
|||
#include "Globals.h"
|
||||
|
||||
#include "Common/CommonWindows.h"
|
||||
bool InputBox_GetString(HINSTANCE hInst, HWND hParent, TCHAR *title, TCHAR *defaultvalue, TCHAR *outvalue);
|
||||
bool InputBox_GetString(HINSTANCE hInst, HWND hParent, TCHAR *title, TCHAR *defaultvalue, TCHAR *outvalue, bool selected = true);
|
||||
bool InputBox_GetString(HINSTANCE hInst, HWND hParent, TCHAR *title, TCHAR *defaultvalue, TCHAR *outvalue, size_t outlength);
|
||||
bool InputBox_GetHex(HINSTANCE hInst, HWND hParent, TCHAR *title, u32 defaultvalue, u32 &outvalue);
|
||||
|
|
Loading…
Add table
Reference in a new issue