This commit is contained in:
parent
b3caff23d2
commit
50f238c98c
|
@ -207,14 +207,12 @@ void RefreshAllToolWindows()
|
|||
if (ToolWindowList == NULL)
|
||||
return;
|
||||
|
||||
EnterCriticalSection(&win_execute_sync);
|
||||
wnd = ToolWindowList;
|
||||
while (wnd)
|
||||
{
|
||||
wnd->Refresh();
|
||||
wnd = wnd->next;
|
||||
}
|
||||
LeaveCriticalSection(&win_execute_sync);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -81,6 +81,10 @@ public:
|
|||
void Show() { ShowWindow(hWnd, SW_SHOW); }
|
||||
void Hide() { ShowWindow(hWnd, SW_HIDE); }
|
||||
|
||||
// SetTitle()
|
||||
// Changes the title of the window.
|
||||
void SetTitle(char* title) { SetWindowText(hWnd, title); }
|
||||
|
||||
// Refresh()
|
||||
// Refreshes the window. Called by RefreshAllToolWindows().
|
||||
void Refresh() { InvalidateRect(hWnd, NULL, FALSE); }
|
||||
|
|
|
@ -1210,6 +1210,7 @@ static struct MainLoopData
|
|||
int fps;
|
||||
int fps3d;
|
||||
int fpsframecount;
|
||||
int toolframecount;
|
||||
} mainLoopData = {0};
|
||||
|
||||
|
||||
|
@ -1265,6 +1266,8 @@ static void StepRunLoop_Paused()
|
|||
|
||||
static void StepRunLoop_User()
|
||||
{
|
||||
const int kFramesPerToolUpdate = 6;
|
||||
|
||||
Hud.fps = mainLoopData.fps;
|
||||
Hud.fps3d = mainLoopData.fps3d;
|
||||
|
||||
|
@ -1278,19 +1281,15 @@ static void StepRunLoop_User()
|
|||
}
|
||||
|
||||
|
||||
// TODO: make that thing properly threaded
|
||||
static DWORD tools_time_last = 0;
|
||||
DWORD time_now = timeGetTime();
|
||||
if((time_now - tools_time_last) >= 50)
|
||||
mainLoopData.toolframecount++;
|
||||
if (mainLoopData.toolframecount == kFramesPerToolUpdate)
|
||||
{
|
||||
if(MemView_IsOpened(ARMCPU_ARM9)) MemView_Refresh(ARMCPU_ARM9);
|
||||
if(MemView_IsOpened(ARMCPU_ARM7)) MemView_Refresh(ARMCPU_ARM7);
|
||||
// if(IORegView_IsOpened()) IORegView_Refresh();
|
||||
if(SoundView_IsOpened()) SoundView_Refresh();
|
||||
RefreshAllToolWindows();
|
||||
|
||||
tools_time_last = time_now;
|
||||
mainLoopData.toolframecount = 0;
|
||||
}
|
||||
if(SoundView_IsOpened()) SoundView_Refresh();
|
||||
RefreshAllToolWindows();
|
||||
|
||||
|
||||
Update_RAM_Watch();
|
||||
Update_RAM_Search();
|
||||
|
@ -2022,7 +2021,6 @@ int _main()
|
|||
|
||||
GInfo_Init();
|
||||
|
||||
MemView_Init();
|
||||
SoundView_Init();
|
||||
|
||||
ViewDisasm_ARM7 = new TOOLSCLASS(hAppInst, IDD_DESASSEMBLEUR_VIEWER7, (DLGPROC) ViewDisasm_ARM7Proc);
|
||||
|
@ -2252,12 +2250,9 @@ int _main()
|
|||
|
||||
GInfo_DeInit();
|
||||
|
||||
MemView_DlgClose(ARMCPU_ARM9);
|
||||
MemView_DlgClose(ARMCPU_ARM7);
|
||||
SoundView_DlgClose();
|
||||
//IORegView_DlgClose();
|
||||
|
||||
MemView_DeInit();
|
||||
SoundView_DeInit();
|
||||
|
||||
//if (input!=NULL) delete input;
|
||||
|
@ -2273,6 +2268,8 @@ int _main()
|
|||
if (ViewDisasm_ARM9!=NULL) delete ViewDisasm_ARM9;
|
||||
if (ViewDisasm_ARM7!=NULL) delete ViewDisasm_ARM7;
|
||||
|
||||
CloseAllToolWindows();
|
||||
|
||||
delete MainWindow;
|
||||
|
||||
if (lpDDClipPrimary!=NULL) IDirectDraw7_Release(lpDDClipPrimary);
|
||||
|
@ -3856,14 +3853,10 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
|
|||
//OpenToolWindow(IORegView);
|
||||
return 0;
|
||||
case IDM_MEMORY:
|
||||
/* ViewMem_ARM7->regClass("MemViewBox7", ViewMem_ARM7BoxProc);
|
||||
if (!ViewMem_ARM7->open())
|
||||
ViewMem_ARM7->unregClass();
|
||||
ViewMem_ARM9->regClass("MemViewBox9", ViewMem_ARM9BoxProc);
|
||||
if (!ViewMem_ARM9->open())
|
||||
ViewMem_ARM9->unregClass();*/
|
||||
if(!MemView_IsOpened(ARMCPU_ARM9)) MemView_DlgOpen(HWND_DESKTOP, "ARM9 memory", ARMCPU_ARM9);
|
||||
if(!MemView_IsOpened(ARMCPU_ARM7)) MemView_DlgOpen(HWND_DESKTOP, "ARM7 memory", ARMCPU_ARM7);
|
||||
//if(!MemView_IsOpened(ARMCPU_ARM9)) MemView_DlgOpen(HWND_DESKTOP, "ARM9 memory", ARMCPU_ARM9);
|
||||
//if(!MemView_IsOpened(ARMCPU_ARM7)) MemView_DlgOpen(HWND_DESKTOP, "ARM7 memory", ARMCPU_ARM7);
|
||||
if (RegWndClass("MemView_ViewBox", MemView_ViewBoxProc, sizeof(CMemView*)))
|
||||
OpenToolWindow(new CMemView());
|
||||
return 0;
|
||||
case IDM_SOUND_VIEW:
|
||||
if(!SoundView_IsOpened()) SoundView_DlgOpen(HWND_DESKTOP);
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
#include "CWindow.h"
|
||||
#include "../MMU.h"
|
||||
#include "debug.h"
|
||||
#include "resource.h"
|
||||
|
@ -34,171 +34,105 @@ using namespace std;
|
|||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
typedef struct MemView_DataStruct
|
||||
CMemView::CMemView()
|
||||
: CToolWindow(IDD_MEM_VIEW, MemView_DlgProc, "ARM9 memory")
|
||||
, cpu(ARMCPU_ARM9)
|
||||
, address(0x02000000)
|
||||
, viewMode(0)
|
||||
, sel(FALSE)
|
||||
, selPart(0)
|
||||
, selAddress(0x00000000)
|
||||
, selNewVal(0x00000000)
|
||||
{
|
||||
MemView_DataStruct(u8 CPU) : cpu(CPU), address(0x02000000), viewMode(0), sel(FALSE), selPart(0), selAddress(0x00000000), selNewVal(0x000000000)
|
||||
{
|
||||
}
|
||||
|
||||
HWND hDlg;
|
||||
|
||||
u8 cpu;
|
||||
u32 address;
|
||||
u8 viewMode;
|
||||
|
||||
BOOL sel;
|
||||
u8 selPart;
|
||||
u32 selAddress;
|
||||
u32 selNewVal;
|
||||
} MemView_DataStruct;
|
||||
|
||||
MemView_DataStruct * MemView_Data[2] = {NULL, NULL};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
BOOL MemView_Init()
|
||||
{
|
||||
WNDCLASSEX wc;
|
||||
|
||||
wc.cbSize = sizeof(wc);
|
||||
wc.lpszClassName = "MemView_ViewBox";
|
||||
wc.hInstance = hAppInst;
|
||||
wc.lpfnWndProc = MemView_ViewBoxProc;
|
||||
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
wc.hIcon = 0;
|
||||
wc.lpszMenuName = 0;
|
||||
wc.hbrBackground = GetSysColorBrush(COLOR_BTNFACE);
|
||||
wc.style = 0;
|
||||
wc.cbClsExtra = 0;
|
||||
wc.cbWndExtra = sizeof(MemView_DataStruct);
|
||||
wc.hIconSm = 0;
|
||||
|
||||
RegisterClassEx(&wc);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
void MemView_DeInit()
|
||||
CMemView::~CMemView()
|
||||
{
|
||||
UnregisterClass("MemView_ViewBox", hAppInst);
|
||||
DestroyWindow(hWnd);
|
||||
hWnd = NULL;
|
||||
|
||||
UnregWndClass("MemView_ViewBox");
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
BOOL MemView_DlgOpen(HWND hParentWnd, char *Title, u8 CPU)
|
||||
{
|
||||
HWND hDlg;
|
||||
|
||||
MemView_Data[CPU] = new MemView_DataStruct(CPU);
|
||||
if(MemView_Data[CPU] == NULL)
|
||||
return 0;
|
||||
|
||||
hDlg = CreateDialogParam(hAppInst, MAKEINTRESOURCE(IDD_MEM_VIEW), hParentWnd, MemView_DlgProc, (LPARAM)MemView_Data[CPU]);
|
||||
if(hDlg == NULL)
|
||||
{
|
||||
delete MemView_Data[CPU];
|
||||
MemView_Data[CPU] = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
MemView_Data[CPU]->hDlg = hDlg;
|
||||
|
||||
SetWindowText(hDlg, Title);
|
||||
|
||||
ShowWindow(hDlg, SW_SHOW);
|
||||
UpdateWindow(hDlg);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
void MemView_DlgClose(u8 CPU)
|
||||
{
|
||||
if(MemView_Data[CPU] != NULL)
|
||||
{
|
||||
DestroyWindow(MemView_Data[CPU]->hDlg);
|
||||
delete MemView_Data[CPU];
|
||||
MemView_Data[CPU] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
BOOL MemView_IsOpened(u8 CPU)
|
||||
{
|
||||
return (MemView_Data[CPU] != NULL);
|
||||
}
|
||||
|
||||
void MemView_Refresh(u8 CPU)
|
||||
{
|
||||
InvalidateRect(MemView_Data[CPU]->hDlg, NULL, FALSE);
|
||||
UpdateWindow(MemView_Data[CPU]->hDlg);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
LRESULT MemView_DlgPaint(HWND hDlg, MemView_DataStruct *data, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
HDC hdc;
|
||||
PAINTSTRUCT ps;
|
||||
|
||||
hdc = BeginPaint(hDlg, &ps);
|
||||
|
||||
EndPaint(hDlg, &ps);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
INT_PTR CALLBACK MemView_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
MemView_DataStruct *data = (MemView_DataStruct*)GetWindowLongPtr(hDlg, DWLP_USER);
|
||||
if((data == NULL) && (uMsg != WM_INITDIALOG))
|
||||
CMemView* wnd = (CMemView*)GetWindowLongPtr(hDlg, DWLP_USER);
|
||||
if((wnd == NULL) && (uMsg != WM_INITDIALOG))
|
||||
return 0;
|
||||
|
||||
switch(uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
if(data == NULL)
|
||||
{
|
||||
data = (MemView_DataStruct*)lParam;
|
||||
SetWindowLongPtr(hDlg, DWLP_USER, (LONG)data);
|
||||
}
|
||||
HWND cur;
|
||||
|
||||
CheckRadioButton(hDlg, IDC_8_BIT, IDC_32_BIT, IDC_8_BIT);
|
||||
wnd = (CMemView*)lParam;
|
||||
SetWindowLongPtr(hDlg, DWLP_USER, (LONG)wnd);
|
||||
SetWindowLongPtr(GetDlgItem(hDlg, IDC_MEMVIEWBOX), DWLP_USER, (LONG)wnd);
|
||||
|
||||
SendMessage(GetDlgItem(hDlg, IDC_ADDRESS), EM_SETLIMITTEXT, 8, 0);
|
||||
SetWindowText(GetDlgItem(hDlg, IDC_ADDRESS), "02000000");
|
||||
wnd->font = CreateFont(16, 0, 0, 0, FW_MEDIUM, FALSE, FALSE, FALSE, DEFAULT_CHARSET,
|
||||
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, GetFontQuality(), FIXED_PITCH, "Courier New");
|
||||
|
||||
SetWindowLongPtr(GetDlgItem(hDlg, IDC_MEMVIEWBOX), DWLP_USER, (LONG)data);
|
||||
cur = GetDlgItem(hDlg, IDC_CPU);
|
||||
SendMessage(cur, CB_ADDSTRING, 0, (LPARAM)"ARM9");
|
||||
SendMessage(cur, CB_ADDSTRING, 0, (LPARAM)"ARM7");
|
||||
SendMessage(cur, CB_SETCURSEL, 0, 0);
|
||||
|
||||
InvalidateRect(hDlg, NULL, FALSE); UpdateWindow(hDlg);
|
||||
cur = GetDlgItem(hDlg, IDC_VIEWMODE);
|
||||
SendMessage(cur, CB_ADDSTRING, 0, (LPARAM)"Bytes");
|
||||
SendMessage(cur, CB_ADDSTRING, 0, (LPARAM)"Halfwords");
|
||||
SendMessage(cur, CB_ADDSTRING, 0, (LPARAM)"Words");
|
||||
SendMessage(cur, CB_SETCURSEL, 0, 0);
|
||||
|
||||
cur = GetDlgItem(hDlg, IDC_ADDRESS);
|
||||
SendMessage(cur, EM_SETLIMITTEXT, 8, 0);
|
||||
SetWindowText(cur, "02000000");
|
||||
|
||||
wnd->Refresh();
|
||||
}
|
||||
return 1;
|
||||
|
||||
case WM_CLOSE:
|
||||
case WM_DESTROY:
|
||||
MemView_DlgClose(data->cpu);
|
||||
return 1;
|
||||
|
||||
case WM_PAINT:
|
||||
MemView_DlgPaint(hDlg, data, wParam, lParam);
|
||||
CloseToolWindow(wnd);
|
||||
return 1;
|
||||
|
||||
case WM_COMMAND:
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDCANCEL:
|
||||
MemView_DlgClose(data->cpu);
|
||||
CloseToolWindow(wnd);
|
||||
return 1;
|
||||
|
||||
case IDC_8_BIT:
|
||||
case IDC_16_BIT:
|
||||
case IDC_32_BIT:
|
||||
data->sel = FALSE;
|
||||
data->selAddress = 0x00000000;
|
||||
data->selPart = 0;
|
||||
data->selNewVal = 0x00000000;
|
||||
CheckRadioButton(hDlg, IDC_8_BIT, IDC_32_BIT, LOWORD(wParam));
|
||||
data->viewMode = (LOWORD(wParam) - IDC_8_BIT);
|
||||
InvalidateRect(hDlg, NULL, FALSE); UpdateWindow(hDlg);
|
||||
case IDC_CPU:
|
||||
if ((HIWORD(wParam) == CBN_SELCHANGE) || (HIWORD(wParam) == CBN_CLOSEUP))
|
||||
{
|
||||
wnd->cpu = SendMessage((HWND)lParam, CB_GETCURSEL, 0, 0);
|
||||
|
||||
wnd->sel = FALSE;
|
||||
wnd->selAddress = 0x00000000;
|
||||
wnd->selPart = 0;
|
||||
wnd->selNewVal = 0x00000000;
|
||||
|
||||
wnd->SetTitle((wnd->cpu == ARMCPU_ARM9) ? "ARM9 memory":"ARM7 memory");
|
||||
|
||||
wnd->Refresh();
|
||||
}
|
||||
return 1;
|
||||
|
||||
case IDC_VIEWMODE:
|
||||
if ((HIWORD(wParam) == CBN_SELCHANGE) || (HIWORD(wParam) == CBN_CLOSEUP))
|
||||
{
|
||||
wnd->viewMode = SendMessage((HWND)lParam, CB_GETCURSEL, 0, 0);
|
||||
|
||||
wnd->sel = FALSE;
|
||||
wnd->selAddress = 0x00000000;
|
||||
wnd->selPart = 0;
|
||||
wnd->selNewVal = 0x00000000;
|
||||
|
||||
wnd->Refresh();
|
||||
}
|
||||
return 1;
|
||||
|
||||
case IDC_GO:
|
||||
|
@ -251,14 +185,15 @@ INT_PTR CALLBACK MemView_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
|||
address |= ((ch - 'a' + 0xA) << shift);
|
||||
}
|
||||
|
||||
data->sel = FALSE;
|
||||
data->selAddress = 0x00000000;
|
||||
data->selPart = 0;
|
||||
data->selNewVal = 0x00000000;
|
||||
wnd->address = min((u32)0xFFFFFF00, (address & 0xFFFFFFF0));
|
||||
|
||||
data->address = min((u32)0xFFFFFF00, (address & 0xFFFFFFF0));
|
||||
SetScrollPos(GetDlgItem(hDlg, IDC_MEMVIEWBOX), SB_VERT, ((data->address >> 4) & 0x000FFFFF), TRUE);
|
||||
InvalidateRect(hDlg, NULL, FALSE); UpdateWindow(hDlg);
|
||||
wnd->sel = FALSE;
|
||||
wnd->selAddress = 0x00000000;
|
||||
wnd->selPart = 0;
|
||||
wnd->selNewVal = 0x00000000;
|
||||
|
||||
SetScrollPos(GetDlgItem(hDlg, IDC_MEMVIEWBOX), SB_VERT, ((wnd->address >> 4) & 0x000FFFFF), TRUE);
|
||||
wnd->Refresh();
|
||||
}
|
||||
return 1;
|
||||
|
||||
|
@ -283,7 +218,7 @@ INT_PTR CALLBACK MemView_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
|||
u8 memory[0x100];
|
||||
int line;
|
||||
|
||||
MMU_DumpMemBlock(data->cpu, data->address, 0x100, memory);
|
||||
MMU_DumpMemBlock(wnd->cpu, wnd->address, 0x100, memory);
|
||||
|
||||
f = fopen(fileName, "a");
|
||||
|
||||
|
@ -291,9 +226,9 @@ INT_PTR CALLBACK MemView_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
|||
{
|
||||
int i;
|
||||
|
||||
fprintf(f, "%08X\t\t", (data->address + (line << 4)));
|
||||
fprintf(f, "%08X\t\t", (wnd->address + (line << 4)));
|
||||
|
||||
switch(data->viewMode)
|
||||
switch(wnd->viewMode)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
|
@ -363,7 +298,7 @@ INT_PTR CALLBACK MemView_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
|||
FILE *f;
|
||||
u8 memory[0x100];
|
||||
|
||||
MMU_DumpMemBlock(data->cpu, data->address, 0x100, memory);
|
||||
MMU_DumpMemBlock(wnd->cpu, wnd->address, 0x100, memory);
|
||||
|
||||
f = fopen(fileName, "ab");
|
||||
|
||||
|
@ -382,16 +317,21 @@ INT_PTR CALLBACK MemView_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
|||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
LRESULT MemView_ViewBoxPaint(HWND hCtl, MemView_DataStruct *data, WPARAM wParam, LPARAM lParam)
|
||||
LRESULT MemView_ViewBoxPaint(CMemView* wnd, HWND hCtl, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
HDC hdc;
|
||||
PAINTSTRUCT ps;
|
||||
RECT rc;
|
||||
int w, h;
|
||||
SIZE fontsize;
|
||||
int fontwidth, fontheight;
|
||||
HDC mem_hdc;
|
||||
HBITMAP mem_bmp;
|
||||
u32 addr = wnd->address;
|
||||
u8 memory[0x100];
|
||||
char text[80];
|
||||
int startx;
|
||||
int curx, cury;
|
||||
int line;
|
||||
|
||||
GetClientRect(hCtl, &rc);
|
||||
w = (rc.right - rc.left);
|
||||
|
@ -403,199 +343,167 @@ LRESULT MemView_ViewBoxPaint(HWND hCtl, MemView_DataStruct *data, WPARAM wParam,
|
|||
mem_bmp = CreateCompatibleBitmap(hdc, w, h);
|
||||
SelectObject(mem_hdc, mem_bmp);
|
||||
|
||||
SelectObject(mem_hdc, GetStockObject(SYSTEM_FIXED_FONT));
|
||||
SelectObject(mem_hdc, wnd->font);
|
||||
|
||||
SetBkMode(mem_hdc, OPAQUE);
|
||||
SetBkColor(mem_hdc, RGB(255, 255, 255));
|
||||
SetTextColor(mem_hdc, RGB(0, 0, 0));
|
||||
|
||||
GetTextExtentPoint32(mem_hdc, " ", 1, &fontsize);
|
||||
fontwidth = fontsize.cx;
|
||||
fontheight = fontsize.cy;
|
||||
|
||||
FillRect(mem_hdc, &rc, (HBRUSH)GetStockObject(WHITE_BRUSH));
|
||||
|
||||
if(data != NULL)
|
||||
GetTextExtentPoint32(mem_hdc, " ", 1, &fontsize);
|
||||
startx = ((fontsize.cx * 8) + 5);
|
||||
curx = 0;
|
||||
cury = (fontsize.cy + 3);
|
||||
|
||||
MoveToEx(mem_hdc, ((fontsize.cx * 8) + 2), 0, NULL);
|
||||
LineTo(mem_hdc, ((fontsize.cx * 8) + 2), h);
|
||||
|
||||
MoveToEx(mem_hdc, 0, (fontsize.cy + 1), NULL);
|
||||
LineTo(mem_hdc, w, (fontsize.cy + 1));
|
||||
|
||||
switch(wnd->viewMode)
|
||||
{
|
||||
u32 addr = data->address;
|
||||
u8 memory[0x100];
|
||||
char text[80];
|
||||
int startx;
|
||||
int curx, cury;
|
||||
int line;
|
||||
case 0: sprintf(text, " 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF"); break;
|
||||
case 1: sprintf(text, " 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF"); break;
|
||||
case 2: sprintf(text, " 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF"); break;
|
||||
}
|
||||
TextOut(mem_hdc, startx, 0, text, strlen(text));
|
||||
|
||||
MMU_DumpMemBlock(wnd->cpu, wnd->address, 0x100, memory);
|
||||
|
||||
startx = 0;
|
||||
curx = 0;
|
||||
cury = 0;
|
||||
for(line = 0; line < 16; line++, addr += 0x10)
|
||||
{
|
||||
int i;
|
||||
|
||||
startx = ((fontwidth * 8) + 5);
|
||||
cury = (fontheight + 3);
|
||||
sprintf(text, "%08X", addr);
|
||||
TextOut(mem_hdc, 0, cury, text, strlen(text));
|
||||
|
||||
MoveToEx(mem_hdc, ((fontwidth * 8) + 2), 0, NULL);
|
||||
LineTo(mem_hdc, ((fontwidth * 8) + 2), h);
|
||||
curx = startx;
|
||||
|
||||
MoveToEx(mem_hdc, 0, (fontheight + 1), NULL);
|
||||
LineTo(mem_hdc, w, (fontheight + 1));
|
||||
|
||||
switch(data->viewMode)
|
||||
switch(wnd->viewMode)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
sprintf(text, " 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF");
|
||||
TextOut(mem_hdc, startx, 0, text, strlen(text));
|
||||
curx += (fontsize.cx * 2);
|
||||
for(i = 0; i < 16; i++)
|
||||
{
|
||||
u8 val = T1ReadByte(memory, ((line << 4) + i));
|
||||
if(wnd->sel && (wnd->selAddress == (addr + i)))
|
||||
{
|
||||
SetBkColor(mem_hdc, GetSysColor(COLOR_HIGHLIGHT));
|
||||
SetTextColor(mem_hdc, GetSysColor(COLOR_HIGHLIGHTTEXT));
|
||||
|
||||
switch(wnd->selPart)
|
||||
{
|
||||
case 0: sprintf(text, "%02X", val); break;
|
||||
case 1: sprintf(text, "%01X.", wnd->selNewVal); break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetBkColor(mem_hdc, RGB(255, 255, 255));
|
||||
SetTextColor(mem_hdc, RGB(0, 0, 0));
|
||||
|
||||
sprintf(text, "%02X", val);
|
||||
}
|
||||
|
||||
TextOut(mem_hdc, curx, cury, text, strlen(text));
|
||||
curx += (fontsize.cx * (2+1));
|
||||
}
|
||||
curx += (fontsize.cx * 2);
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
{
|
||||
sprintf(text, " 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF");
|
||||
TextOut(mem_hdc, startx, 0, text, strlen(text));
|
||||
curx += (fontsize.cx * 6);
|
||||
for(i = 0; i < 16; i += 2)
|
||||
{
|
||||
u16 val = T1ReadWord(memory, ((line << 4) + i));
|
||||
if(wnd->sel && (wnd->selAddress == (addr + i)))
|
||||
{
|
||||
SetBkColor(mem_hdc, GetSysColor(COLOR_HIGHLIGHT));
|
||||
SetTextColor(mem_hdc, GetSysColor(COLOR_HIGHLIGHTTEXT));
|
||||
|
||||
switch(wnd->selPart)
|
||||
{
|
||||
case 0: sprintf(text, "%04X", val); break;
|
||||
case 1: sprintf(text, "%01X...", wnd->selNewVal); break;
|
||||
case 2: sprintf(text, "%02X..", wnd->selNewVal); break;
|
||||
case 3: sprintf(text, "%03X.", wnd->selNewVal); break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetBkColor(mem_hdc, RGB(255, 255, 255));
|
||||
SetTextColor(mem_hdc, RGB(0, 0, 0));
|
||||
|
||||
sprintf(text, "%04X", val);
|
||||
}
|
||||
|
||||
TextOut(mem_hdc, curx, cury, text, strlen(text));
|
||||
curx += (fontsize.cx * (4+1));
|
||||
}
|
||||
curx += (fontsize.cx * 6);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
{
|
||||
sprintf(text, " 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF");
|
||||
TextOut(mem_hdc, startx, 0, text, strlen(text));
|
||||
curx += (fontsize.cx * 8);
|
||||
for(i = 0; i < 16; i += 4)
|
||||
{
|
||||
u32 val = T1ReadLong(memory, ((line << 4) + i));
|
||||
if(wnd->sel && (wnd->selAddress == (addr + i)))
|
||||
{
|
||||
SetBkColor(mem_hdc, GetSysColor(COLOR_HIGHLIGHT));
|
||||
SetTextColor(mem_hdc, GetSysColor(COLOR_HIGHLIGHTTEXT));
|
||||
|
||||
switch(wnd->selPart)
|
||||
{
|
||||
case 0: sprintf(text, "%08X", val); break;
|
||||
case 1: sprintf(text, "%01X.......", wnd->selNewVal); break;
|
||||
case 2: sprintf(text, "%02X......", wnd->selNewVal); break;
|
||||
case 3: sprintf(text, "%03X.....", wnd->selNewVal); break;
|
||||
case 4: sprintf(text, "%04X....", wnd->selNewVal); break;
|
||||
case 5: sprintf(text, "%05X...", wnd->selNewVal); break;
|
||||
case 6: sprintf(text, "%06X..", wnd->selNewVal); break;
|
||||
case 7: sprintf(text, "%07X.", wnd->selNewVal); break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetBkColor(mem_hdc, RGB(255, 255, 255));
|
||||
SetTextColor(mem_hdc, RGB(0, 0, 0));
|
||||
|
||||
sprintf(text, "%08X", val);
|
||||
}
|
||||
|
||||
TextOut(mem_hdc, curx, cury, text, strlen(text));
|
||||
curx += (fontsize.cx * (8+1));
|
||||
}
|
||||
curx += (fontsize.cx * 8);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
MMU_DumpMemBlock(data->cpu, data->address, 0x100, memory);
|
||||
|
||||
for(line = 0; line < 16; line++, addr += 0x10)
|
||||
SetBkColor(mem_hdc, RGB(255, 255, 255));
|
||||
SetTextColor(mem_hdc, RGB(0, 0, 0));
|
||||
|
||||
for(i = 0; i < 16; i++)
|
||||
{
|
||||
int i;
|
||||
u8 val = T1ReadByte(memory, ((line << 4) + i));
|
||||
|
||||
sprintf(text, "%08X", addr);
|
||||
TextOut(mem_hdc, 0, cury, text, strlen(text));
|
||||
|
||||
curx = startx;
|
||||
|
||||
switch(data->viewMode)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
curx += (fontwidth * 2);
|
||||
for(i = 0; i < 16; i++)
|
||||
{
|
||||
u8 val = T1ReadByte(memory, ((line << 4) + i));
|
||||
if(data->sel && (data->selAddress == (addr + i)))
|
||||
{
|
||||
SetBkColor(mem_hdc, GetSysColor(COLOR_HIGHLIGHT));
|
||||
SetTextColor(mem_hdc, GetSysColor(COLOR_HIGHLIGHTTEXT));
|
||||
|
||||
switch(data->selPart)
|
||||
{
|
||||
case 0: sprintf(text, "%02X", val); break;
|
||||
case 1: sprintf(text, "%01X.", data->selNewVal); break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetBkColor(mem_hdc, RGB(255, 255, 255));
|
||||
SetTextColor(mem_hdc, RGB(0, 0, 0));
|
||||
|
||||
sprintf(text, "%02X", val);
|
||||
}
|
||||
|
||||
TextOut(mem_hdc, curx, cury, text, strlen(text));
|
||||
curx += (fontwidth * (2+1));
|
||||
}
|
||||
curx += (fontwidth * 2);
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
{
|
||||
curx += (fontwidth * 6);
|
||||
for(i = 0; i < 16; i += 2)
|
||||
{
|
||||
u16 val = T1ReadWord(memory, ((line << 4) + i));
|
||||
if(data->sel && (data->selAddress == (addr + i)))
|
||||
{
|
||||
SetBkColor(mem_hdc, GetSysColor(COLOR_HIGHLIGHT));
|
||||
SetTextColor(mem_hdc, GetSysColor(COLOR_HIGHLIGHTTEXT));
|
||||
|
||||
switch(data->selPart)
|
||||
{
|
||||
case 0: sprintf(text, "%04X", val); break;
|
||||
case 1: sprintf(text, "%01X...", data->selNewVal); break;
|
||||
case 2: sprintf(text, "%02X..", data->selNewVal); break;
|
||||
case 3: sprintf(text, "%03X.", data->selNewVal); break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetBkColor(mem_hdc, RGB(255, 255, 255));
|
||||
SetTextColor(mem_hdc, RGB(0, 0, 0));
|
||||
|
||||
sprintf(text, "%04X", val);
|
||||
}
|
||||
|
||||
TextOut(mem_hdc, curx, cury, text, strlen(text));
|
||||
curx += (fontwidth * (4+1));
|
||||
}
|
||||
curx += (fontwidth * 6);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
{
|
||||
curx += (fontwidth * 8);
|
||||
for(i = 0; i < 16; i += 4)
|
||||
{
|
||||
u32 val = T1ReadLong(memory, ((line << 4) + i));
|
||||
if(data->sel && (data->selAddress == (addr + i)))
|
||||
{
|
||||
SetBkColor(mem_hdc, GetSysColor(COLOR_HIGHLIGHT));
|
||||
SetTextColor(mem_hdc, GetSysColor(COLOR_HIGHLIGHTTEXT));
|
||||
|
||||
switch(data->selPart)
|
||||
{
|
||||
case 0: sprintf(text, "%08X", val); break;
|
||||
case 1: sprintf(text, "%01X.......", data->selNewVal); break;
|
||||
case 2: sprintf(text, "%02X......", data->selNewVal); break;
|
||||
case 3: sprintf(text, "%03X.....", data->selNewVal); break;
|
||||
case 4: sprintf(text, "%04X....", data->selNewVal); break;
|
||||
case 5: sprintf(text, "%05X...", data->selNewVal); break;
|
||||
case 6: sprintf(text, "%06X..", data->selNewVal); break;
|
||||
case 7: sprintf(text, "%07X.", data->selNewVal); break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetBkColor(mem_hdc, RGB(255, 255, 255));
|
||||
SetTextColor(mem_hdc, RGB(0, 0, 0));
|
||||
|
||||
sprintf(text, "%08X", val);
|
||||
}
|
||||
|
||||
TextOut(mem_hdc, curx, cury, text, strlen(text));
|
||||
curx += (fontwidth * (8+1));
|
||||
}
|
||||
curx += (fontwidth * 8);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
SetBkColor(mem_hdc, RGB(255, 255, 255));
|
||||
SetTextColor(mem_hdc, RGB(0, 0, 0));
|
||||
|
||||
for(i = 0; i < 16; i++)
|
||||
{
|
||||
u8 val = T1ReadByte(memory, ((line << 4) + i));
|
||||
|
||||
if((val >= 32) && (val <= 127))
|
||||
text[i] = (char)val;
|
||||
else
|
||||
text[i] = '.';
|
||||
}
|
||||
text[16] = '\0';
|
||||
TextOut(mem_hdc, curx, cury, text, strlen(text));
|
||||
|
||||
cury += fontheight;
|
||||
if((val >= 32) && (val <= 127))
|
||||
text[i] = (char)val;
|
||||
else
|
||||
text[i] = '.';
|
||||
}
|
||||
text[16] = '\0';
|
||||
TextOut(mem_hdc, curx, cury, text, strlen(text));
|
||||
|
||||
cury += fontsize.cy;
|
||||
}
|
||||
|
||||
BitBlt(hdc, 0, 0, w, h, mem_hdc, 0, 0, SRCCOPY);
|
||||
|
@ -610,7 +518,7 @@ LRESULT MemView_ViewBoxPaint(HWND hCtl, MemView_DataStruct *data, WPARAM wParam,
|
|||
|
||||
LRESULT CALLBACK MemView_ViewBoxProc(HWND hCtl, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
MemView_DataStruct *data = (MemView_DataStruct*)GetWindowLongPtr(hCtl, DWLP_USER);
|
||||
CMemView* wnd = (CMemView*)GetWindowLongPtr(hCtl, DWLP_USER);
|
||||
|
||||
switch(uMsg)
|
||||
{
|
||||
|
@ -626,7 +534,7 @@ LRESULT CALLBACK MemView_ViewBoxProc(HWND hCtl, UINT uMsg, WPARAM wParam, LPARAM
|
|||
return 1;
|
||||
|
||||
case WM_PAINT:
|
||||
MemView_ViewBoxPaint(hCtl, data, wParam, lParam);
|
||||
MemView_ViewBoxPaint(wnd, hCtl, wParam, lParam);
|
||||
return 1;
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
|
@ -636,13 +544,13 @@ LRESULT CALLBACK MemView_ViewBoxProc(HWND hCtl, UINT uMsg, WPARAM wParam, LPARAM
|
|||
SIZE fontsize;
|
||||
int x, y;
|
||||
|
||||
data->sel = FALSE;
|
||||
data->selAddress = 0x00000000;
|
||||
data->selPart = 0;
|
||||
data->selNewVal = 0x00000000;
|
||||
wnd->sel = FALSE;
|
||||
wnd->selAddress = 0x00000000;
|
||||
wnd->selPart = 0;
|
||||
wnd->selNewVal = 0x00000000;
|
||||
|
||||
hdc = GetDC(hCtl);
|
||||
font = (HFONT)SelectObject(hdc, GetStockObject(SYSTEM_FIXED_FONT));
|
||||
font = (HFONT)SelectObject(hdc, wnd->font);
|
||||
GetTextExtentPoint32(hdc, " ", 1, &fontsize);
|
||||
|
||||
x = LOWORD(lParam);
|
||||
|
@ -657,7 +565,7 @@ LRESULT CALLBACK MemView_ViewBoxProc(HWND hCtl, UINT uMsg, WPARAM wParam, LPARAM
|
|||
|
||||
line = (y / fontsize.cy);
|
||||
|
||||
switch(data->viewMode)
|
||||
switch(wnd->viewMode)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
|
@ -666,7 +574,7 @@ LRESULT CALLBACK MemView_ViewBoxProc(HWND hCtl, UINT uMsg, WPARAM wParam, LPARAM
|
|||
|
||||
col = ((x - (fontsize.cx * 2)) / (fontsize.cx * (2+1)));
|
||||
|
||||
data->sel = TRUE;
|
||||
wnd->sel = TRUE;
|
||||
|
||||
}
|
||||
break;
|
||||
|
@ -678,7 +586,7 @@ LRESULT CALLBACK MemView_ViewBoxProc(HWND hCtl, UINT uMsg, WPARAM wParam, LPARAM
|
|||
|
||||
col = ((x - (fontsize.cx * 6)) / (fontsize.cx * (4+1)) * 2);
|
||||
|
||||
data->sel = TRUE;
|
||||
wnd->sel = TRUE;
|
||||
|
||||
}
|
||||
break;
|
||||
|
@ -690,22 +598,22 @@ LRESULT CALLBACK MemView_ViewBoxProc(HWND hCtl, UINT uMsg, WPARAM wParam, LPARAM
|
|||
|
||||
col = ((x - (fontsize.cx * 8)) / (fontsize.cx * (8+1)) * 4);
|
||||
|
||||
data->sel = TRUE;
|
||||
wnd->sel = TRUE;
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
data->selAddress = (data->address + (line << 4) + col);
|
||||
data->selPart = 0;
|
||||
data->selNewVal = 0x00000000;
|
||||
wnd->selAddress = (wnd->address + (line << 4) + col);
|
||||
wnd->selPart = 0;
|
||||
wnd->selNewVal = 0x00000000;
|
||||
}
|
||||
|
||||
SelectObject(hdc, font);
|
||||
ReleaseDC(hCtl, hdc);
|
||||
|
||||
SetFocus(hCtl); /* Required to receive keyboard messages */
|
||||
InvalidateRect(hCtl, NULL, FALSE); UpdateWindow(hCtl);
|
||||
wnd->Refresh();
|
||||
}
|
||||
return 1;
|
||||
|
||||
|
@ -717,40 +625,40 @@ LRESULT CALLBACK MemView_ViewBoxProc(HWND hCtl, UINT uMsg, WPARAM wParam, LPARAM
|
|||
{
|
||||
u8 maxSelPart[3] = {2, 4, 8};
|
||||
|
||||
data->selNewVal <<= 4;
|
||||
data->selPart++;
|
||||
wnd->selNewVal <<= 4;
|
||||
wnd->selPart++;
|
||||
|
||||
if((ch >= '0') && (ch <= '9'))
|
||||
data->selNewVal |= (ch - '0');
|
||||
wnd->selNewVal |= (ch - '0');
|
||||
else if((ch >= 'A') && (ch <= 'F'))
|
||||
data->selNewVal |= (ch - 'A' + 0xA);
|
||||
wnd->selNewVal |= (ch - 'A' + 0xA);
|
||||
else if((ch >= 'a') && (ch <= 'f'))
|
||||
data->selNewVal |= (ch - 'a' + 0xA);
|
||||
wnd->selNewVal |= (ch - 'a' + 0xA);
|
||||
|
||||
if(data->selPart >= maxSelPart[data->viewMode])
|
||||
if(wnd->selPart >= maxSelPart[wnd->viewMode])
|
||||
{
|
||||
switch(data->viewMode)
|
||||
switch(wnd->viewMode)
|
||||
{
|
||||
case 0: MMU_write8(data->cpu, data->selAddress, (u8)data->selNewVal); data->selAddress++; break;
|
||||
case 1: MMU_write16(data->cpu, data->selAddress, (u16)data->selNewVal); data->selAddress += 2; break;
|
||||
case 2: MMU_write32(data->cpu, data->selAddress, data->selNewVal); data->selAddress += 4; break;
|
||||
case 0: MMU_write8(wnd->cpu, wnd->selAddress, (u8)wnd->selNewVal); wnd->selAddress++; break;
|
||||
case 1: MMU_write16(wnd->cpu, wnd->selAddress, (u16)wnd->selNewVal); wnd->selAddress += 2; break;
|
||||
case 2: MMU_write32(wnd->cpu, wnd->selAddress, wnd->selNewVal); wnd->selAddress += 4; break;
|
||||
}
|
||||
data->selPart = 0;
|
||||
data->selNewVal = 0x00000000;
|
||||
wnd->selPart = 0;
|
||||
wnd->selNewVal = 0x00000000;
|
||||
|
||||
if(data->selAddress == 0x00000000)
|
||||
if(wnd->selAddress == 0x00000000)
|
||||
{
|
||||
data->sel = FALSE;
|
||||
wnd->sel = FALSE;
|
||||
}
|
||||
else if(data->selAddress >= (data->address + 0x100))
|
||||
else if(wnd->selAddress >= (wnd->address + 0x100))
|
||||
{
|
||||
data->address = min((u32)0xFFFFFF00, (data->address + 0x10));
|
||||
SetScrollPos(hCtl, SB_VERT, ((data->address >> 4) & 0x000FFFFF), TRUE);
|
||||
wnd->address = min((u32)0xFFFFFF00, (wnd->address + 0x10));
|
||||
SetScrollPos(hCtl, SB_VERT, ((wnd->address >> 4) & 0x000FFFFF), TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
InvalidateRect(hCtl, NULL, FALSE); UpdateWindow(hCtl);
|
||||
wnd->Refresh();
|
||||
}
|
||||
return 1;
|
||||
|
||||
|
@ -761,19 +669,19 @@ LRESULT CALLBACK MemView_ViewBoxProc(HWND hCtl, UINT uMsg, WPARAM wParam, LPARAM
|
|||
switch(LOWORD(wParam))
|
||||
{
|
||||
case SB_LINEUP:
|
||||
data->address = (u32)max(0x00000000, ((int)data->address - 0x10));
|
||||
wnd->address = (u32)max(0x00000000, ((int)wnd->address - 0x10));
|
||||
break;
|
||||
|
||||
case SB_LINEDOWN:
|
||||
data->address = min((u32)0xFFFFFF00, (data->address + 0x10));
|
||||
wnd->address = min((u32)0xFFFFFF00, (wnd->address + 0x10));
|
||||
break;
|
||||
|
||||
case SB_PAGEUP:
|
||||
data->address = (u32)max(0x00000000, ((int)data->address - 0x100));
|
||||
wnd->address = (u32)max(0x00000000, ((int)wnd->address - 0x100));
|
||||
break;
|
||||
|
||||
case SB_PAGEDOWN:
|
||||
data->address = min((u32)0xFFFFFF00, (data->address + 0x100));
|
||||
wnd->address = min((u32)0xFFFFFF00, (wnd->address + 0x100));
|
||||
break;
|
||||
|
||||
case SB_THUMBTRACK:
|
||||
|
@ -787,21 +695,21 @@ LRESULT CALLBACK MemView_ViewBoxProc(HWND hCtl, UINT uMsg, WPARAM wParam, LPARAM
|
|||
|
||||
GetScrollInfo(hCtl, SB_VERT, &si);
|
||||
|
||||
data->address = min((u32)0xFFFFFF00, (data->address + ((si.nTrackPos - firstpos) * 16)));
|
||||
wnd->address = min((u32)0xFFFFFF00, (wnd->address + ((si.nTrackPos - firstpos) * 16)));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if((data->selAddress < data->address) || (data->selAddress >= (data->address + 0x100)))
|
||||
if((wnd->selAddress < wnd->address) || (wnd->selAddress >= (wnd->address + 0x100)))
|
||||
{
|
||||
data->sel = FALSE;
|
||||
data->selAddress = 0x00000000;
|
||||
data->selPart = 0;
|
||||
data->selNewVal = 0x00000000;
|
||||
wnd->sel = FALSE;
|
||||
wnd->selAddress = 0x00000000;
|
||||
wnd->selPart = 0;
|
||||
wnd->selNewVal = 0x00000000;
|
||||
}
|
||||
|
||||
SetScrollPos(hCtl, SB_VERT, ((data->address >> 4) & 0x000FFFFF), TRUE);
|
||||
InvalidateRect(hCtl, NULL, FALSE); UpdateWindow(hCtl);
|
||||
SetScrollPos(hCtl, SB_VERT, ((wnd->address >> 4) & 0x000FFFFF), TRUE);
|
||||
wnd->Refresh();
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -22,15 +22,25 @@
|
|||
#ifndef MEM_VIEW_H
|
||||
#define MEM_VIEW_H
|
||||
|
||||
BOOL MemView_Init();
|
||||
void MemView_DeInit();
|
||||
|
||||
BOOL MemView_DlgOpen(HWND hParentWnd, char *Title, u8 CPU);
|
||||
void MemView_DlgClose(u8 CPU);
|
||||
BOOL MemView_IsOpened(u8 CPU);
|
||||
void MemView_Refresh(u8 CPU);
|
||||
|
||||
INT_PTR CALLBACK MemView_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
LRESULT CALLBACK MemView_ViewBoxProc(HWND hCtl, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
#endif
|
||||
class CMemView : public CToolWindow
|
||||
{
|
||||
public:
|
||||
CMemView();
|
||||
~CMemView();
|
||||
|
||||
HFONT font;
|
||||
|
||||
u32 cpu;
|
||||
u32 address;
|
||||
u32 viewMode;
|
||||
|
||||
BOOL sel;
|
||||
u32 selPart;
|
||||
u32 selAddress;
|
||||
u32 selNewVal;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue