Big tool remake started. New memory viewer.
Here are the main differences with the old one: - threading/timer system dropped; the viewers refresh every 10 frames - same dialog template and procedure shared for both viewers, like before - no trouble jumping over 0x0FFFFFFF; all addresses supported - correct interpretation of the address entered - scrollbar working correctly - two view dump functions: Text dump will dump the current view into a text file, in an human-readable form; Raw dump will copy the current view to a binary file that can be opened with an hex editor - the viewers use MMU_DumpMemBlock to read memory; this is better than the MMU_readX functions as it doesn't risk affecting the emulation; but that func isn't suitable for the I/O register region, as some registers aren't written to MMU.MMU_MEM.
This commit is contained in:
parent
c95bc1c458
commit
167386847d
|
@ -4363,6 +4363,17 @@ void FASTCALL MMU_write8(u32 proc, u32 adr, u8 val)
|
||||||
_MMU_ARM7_write08(adr,val);
|
_MMU_ARM7_write08(adr,val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FASTCALL MMU_DumpMemBlock(u8 proc, u32 address, u32 size, u8 *buffer)
|
||||||
|
{
|
||||||
|
u32 i;
|
||||||
|
u32 curaddr;
|
||||||
|
|
||||||
|
for(i = 0, curaddr = address; i < size; i++, curaddr++)
|
||||||
|
{
|
||||||
|
buffer[i] = T1ReadByte(MMU.MMU_MEM[ARMCPU_ARM7][(curaddr >> 20) & 0xFF], (curaddr & MMU.MMU_MASK[ARMCPU_ARM7][(curaddr >> 20) & 0xFF]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void mmu_select_savetype(int type, int *bmemtype, u32 *bmemsize) {
|
void mmu_select_savetype(int type, int *bmemtype, u32 *bmemsize) {
|
||||||
if (type<0 || type > 6) return;
|
if (type<0 || type > 6) return;
|
||||||
*bmemtype=save_types[type][0];
|
*bmemtype=save_types[type][0];
|
||||||
|
|
|
@ -359,4 +359,6 @@ void _MMU_write16(u32 addr, u16 val) { _MMU_write16(PROCNUM, addr, val); }
|
||||||
template<int PROCNUM>
|
template<int PROCNUM>
|
||||||
void _MMU_write32(u32 addr, u32 val) { _MMU_write32(PROCNUM, addr, val); }
|
void _MMU_write32(u32 addr, u32 val) { _MMU_write32(PROCNUM, addr, val); }
|
||||||
|
|
||||||
|
void FASTCALL MMU_DumpMemBlock(u8 proc, u32 address, u32 size, u8 *buffer);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -161,8 +161,8 @@ static int FrameLimit = 1;
|
||||||
//=========================== view tools
|
//=========================== view tools
|
||||||
TOOLSCLASS *ViewDisasm_ARM7 = NULL;
|
TOOLSCLASS *ViewDisasm_ARM7 = NULL;
|
||||||
TOOLSCLASS *ViewDisasm_ARM9 = NULL;
|
TOOLSCLASS *ViewDisasm_ARM9 = NULL;
|
||||||
TOOLSCLASS *ViewMem_ARM7 = NULL;
|
//TOOLSCLASS *ViewMem_ARM7 = NULL;
|
||||||
TOOLSCLASS *ViewMem_ARM9 = NULL;
|
//TOOLSCLASS *ViewMem_ARM9 = NULL;
|
||||||
TOOLSCLASS *ViewRegisters = NULL;
|
TOOLSCLASS *ViewRegisters = NULL;
|
||||||
TOOLSCLASS *ViewPalette = NULL;
|
TOOLSCLASS *ViewPalette = NULL;
|
||||||
TOOLSCLASS *ViewTiles = NULL;
|
TOOLSCLASS *ViewTiles = NULL;
|
||||||
|
@ -960,6 +960,7 @@ DWORD WINAPI run()
|
||||||
int fps=0;
|
int fps=0;
|
||||||
int fpsframecount=0;
|
int fpsframecount=0;
|
||||||
u64 fpsticks=0;
|
u64 fpsticks=0;
|
||||||
|
int tools_frames = 0;
|
||||||
int res;
|
int res;
|
||||||
HWND hwnd = MainWindow->getHWnd();
|
HWND hwnd = MainWindow->getHWnd();
|
||||||
|
|
||||||
|
@ -1034,6 +1035,16 @@ DWORD WINAPI run()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
tools_frames++;
|
||||||
|
if(tools_frames == 10)
|
||||||
|
{
|
||||||
|
if(MemView_IsOpened(ARMCPU_ARM9)) MemView_Refresh(ARMCPU_ARM9);
|
||||||
|
if(MemView_IsOpened(ARMCPU_ARM7)) MemView_Refresh(ARMCPU_ARM7);
|
||||||
|
|
||||||
|
tools_frames = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fpsframecount++;
|
fpsframecount++;
|
||||||
QueryPerformanceCounter((LARGE_INTEGER *)&curticks);
|
QueryPerformanceCounter((LARGE_INTEGER *)&curticks);
|
||||||
|
@ -1540,10 +1551,12 @@ int WINAPI WinMain (HINSTANCE hThisInstance,
|
||||||
|
|
||||||
GInfo_Init();
|
GInfo_Init();
|
||||||
|
|
||||||
|
MemView_Init();
|
||||||
|
|
||||||
ViewDisasm_ARM7 = new TOOLSCLASS(hThisInstance, IDD_DESASSEMBLEUR_VIEWER7, (DLGPROC) ViewDisasm_ARM7Proc);
|
ViewDisasm_ARM7 = new TOOLSCLASS(hThisInstance, IDD_DESASSEMBLEUR_VIEWER7, (DLGPROC) ViewDisasm_ARM7Proc);
|
||||||
ViewDisasm_ARM9 = new TOOLSCLASS(hThisInstance, IDD_DESASSEMBLEUR_VIEWER9, (DLGPROC) ViewDisasm_ARM9Proc);
|
ViewDisasm_ARM9 = new TOOLSCLASS(hThisInstance, IDD_DESASSEMBLEUR_VIEWER9, (DLGPROC) ViewDisasm_ARM9Proc);
|
||||||
ViewMem_ARM7 = new TOOLSCLASS(hThisInstance, IDD_MEM_VIEWER7, (DLGPROC) ViewMem_ARM7Proc);
|
//ViewMem_ARM7 = new TOOLSCLASS(hThisInstance, IDD_MEM_VIEWER7, (DLGPROC) ViewMem_ARM7Proc);
|
||||||
ViewMem_ARM9 = new TOOLSCLASS(hThisInstance, IDD_MEM_VIEWER9, (DLGPROC) ViewMem_ARM9Proc);
|
//ViewMem_ARM9 = new TOOLSCLASS(hThisInstance, IDD_MEM_VIEWER9, (DLGPROC) ViewMem_ARM9Proc);
|
||||||
ViewRegisters = new TOOLSCLASS(hThisInstance, IDD_IO_REG, (DLGPROC) IoregView_Proc);
|
ViewRegisters = new TOOLSCLASS(hThisInstance, IDD_IO_REG, (DLGPROC) IoregView_Proc);
|
||||||
ViewPalette = new TOOLSCLASS(hThisInstance, IDD_PAL, (DLGPROC) ViewPalProc);
|
ViewPalette = new TOOLSCLASS(hThisInstance, IDD_PAL, (DLGPROC) ViewPalProc);
|
||||||
ViewTiles = new TOOLSCLASS(hThisInstance, IDD_TILE, (DLGPROC) ViewTilesProc);
|
ViewTiles = new TOOLSCLASS(hThisInstance, IDD_TILE, (DLGPROC) ViewTilesProc);
|
||||||
|
@ -1725,6 +1738,11 @@ int WINAPI WinMain (HINSTANCE hThisInstance,
|
||||||
|
|
||||||
GInfo_DeInit();
|
GInfo_DeInit();
|
||||||
|
|
||||||
|
MemView_DlgClose(ARMCPU_ARM9);
|
||||||
|
MemView_DlgClose(ARMCPU_ARM7);
|
||||||
|
|
||||||
|
MemView_DeInit();
|
||||||
|
|
||||||
//if (input!=NULL) delete input;
|
//if (input!=NULL) delete input;
|
||||||
if (ViewLights!=NULL) delete ViewLights;
|
if (ViewLights!=NULL) delete ViewLights;
|
||||||
if (ViewMatrices!=NULL) delete ViewMatrices;
|
if (ViewMatrices!=NULL) delete ViewMatrices;
|
||||||
|
@ -1733,8 +1751,8 @@ int WINAPI WinMain (HINSTANCE hThisInstance,
|
||||||
if (ViewTiles!=NULL) delete ViewTiles;
|
if (ViewTiles!=NULL) delete ViewTiles;
|
||||||
if (ViewPalette!=NULL) delete ViewPalette;
|
if (ViewPalette!=NULL) delete ViewPalette;
|
||||||
if (ViewRegisters!=NULL) delete ViewRegisters;
|
if (ViewRegisters!=NULL) delete ViewRegisters;
|
||||||
if (ViewMem_ARM9!=NULL) delete ViewMem_ARM9;
|
// if (ViewMem_ARM9!=NULL) delete ViewMem_ARM9;
|
||||||
if (ViewMem_ARM7!=NULL) delete ViewMem_ARM7;
|
// if (ViewMem_ARM7!=NULL) delete ViewMem_ARM7;
|
||||||
if (ViewDisasm_ARM9!=NULL) delete ViewDisasm_ARM9;
|
if (ViewDisasm_ARM9!=NULL) delete ViewDisasm_ARM9;
|
||||||
if (ViewDisasm_ARM7!=NULL) delete ViewDisasm_ARM7;
|
if (ViewDisasm_ARM7!=NULL) delete ViewDisasm_ARM7;
|
||||||
|
|
||||||
|
@ -2743,12 +2761,14 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
|
||||||
ViewRegisters->open();
|
ViewRegisters->open();
|
||||||
return 0;
|
return 0;
|
||||||
case IDM_MEMORY:
|
case IDM_MEMORY:
|
||||||
ViewMem_ARM7->regClass("MemViewBox7", ViewMem_ARM7BoxProc);
|
/* ViewMem_ARM7->regClass("MemViewBox7", ViewMem_ARM7BoxProc);
|
||||||
if (!ViewMem_ARM7->open())
|
if (!ViewMem_ARM7->open())
|
||||||
ViewMem_ARM7->unregClass();
|
ViewMem_ARM7->unregClass();
|
||||||
ViewMem_ARM9->regClass("MemViewBox9", ViewMem_ARM9BoxProc);
|
ViewMem_ARM9->regClass("MemViewBox9", ViewMem_ARM9BoxProc);
|
||||||
if (!ViewMem_ARM9->open())
|
if (!ViewMem_ARM9->open())
|
||||||
ViewMem_ARM9->unregClass();
|
ViewMem_ARM9->unregClass();*/
|
||||||
|
if(!MemView_IsOpened(ARMCPU_ARM9)) MemView_DlgOpen(hwnd, ARMCPU_ARM9);
|
||||||
|
if(!MemView_IsOpened(ARMCPU_ARM7)) MemView_DlgOpen(hwnd, ARMCPU_ARM7);
|
||||||
return 0;
|
return 0;
|
||||||
case IDM_DISASSEMBLER:
|
case IDM_DISASSEMBLER:
|
||||||
ViewDisasm_ARM7->regClass("DesViewBox7",ViewDisasm_ARM7BoxProc);
|
ViewDisasm_ARM7->regClass("DesViewBox7",ViewDisasm_ARM7BoxProc);
|
||||||
|
|
|
@ -19,501 +19,565 @@
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include "memView.h"
|
|
||||||
#include <commctrl.h>
|
|
||||||
#include "../MMU.h"
|
#include "../MMU.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
#include "common.h"
|
||||||
|
#include <algorithm>
|
||||||
|
#include <windows.h>
|
||||||
|
#include <windowsx.h>
|
||||||
|
#include <commctrl.h>
|
||||||
|
#include "memView.h"
|
||||||
|
|
||||||
typedef struct
|
using namespace std;
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
typedef struct MemView_DataStruct
|
||||||
{
|
{
|
||||||
u32 autoup_secs;
|
MemView_DataStruct(u8 CPU) : cpu(CPU), address(0x02000000), viewMode(0)
|
||||||
bool autoup;
|
{
|
||||||
|
}
|
||||||
|
|
||||||
s8 cpu;
|
HWND hDlg;
|
||||||
u32 curr_ligne;
|
u8 cpu;
|
||||||
u8 representation;
|
u32 address;
|
||||||
} memview_struct;
|
u8 viewMode;
|
||||||
|
} MemView_DataStruct;
|
||||||
|
|
||||||
|
MemView_DataStruct * MemView_Data[2] = {NULL, NULL};
|
||||||
|
|
||||||
memview_struct *MemView7 = NULL;
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
memview_struct *MemView9 = NULL;
|
|
||||||
|
|
||||||
LRESULT MemViewBox_OnPaint(HWND hwnd, memview_struct * win, WPARAM wParam, LPARAM lParam)
|
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()
|
||||||
|
{
|
||||||
|
UnregisterClass("MemView_ViewBox", hAppInst);
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
BOOL MemView_DlgOpen(HWND hParentWnd, u8 CPU)
|
||||||
|
{
|
||||||
|
HWND hDlg;
|
||||||
|
char title[32];
|
||||||
|
|
||||||
|
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)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
MemView_Data[CPU]->hDlg = hDlg;
|
||||||
|
|
||||||
|
sprintf(title, "ARM%s memory", ((CPU == ARMCPU_ARM7) ? "7" : "9"));
|
||||||
|
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;
|
HDC hdc;
|
||||||
PAINTSTRUCT ps;
|
PAINTSTRUCT ps;
|
||||||
SIZE fontsize;
|
|
||||||
TCHAR text[80];
|
hdc = BeginPaint(hDlg, &ps);
|
||||||
|
|
||||||
|
EndPaint(hDlg, &ps);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL CALLBACK MemView_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
MemView_DataStruct *data = (MemView_DataStruct*)GetWindowLong(hDlg, DWL_USER);
|
||||||
|
if((data == NULL) && (uMsg != WM_INITDIALOG))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
switch(uMsg)
|
||||||
|
{
|
||||||
|
case WM_INITDIALOG:
|
||||||
|
{
|
||||||
|
if(data == NULL)
|
||||||
|
{
|
||||||
|
data = (MemView_DataStruct*)lParam;
|
||||||
|
SetWindowLong(hDlg, DWL_USER, (LONG)data);
|
||||||
|
}
|
||||||
|
|
||||||
|
CheckRadioButton(hDlg, IDC_8_BIT, IDC_32_BIT, IDC_8_BIT);
|
||||||
|
|
||||||
|
SendMessage(GetDlgItem(hDlg, IDC_ADDRESS), EM_SETLIMITTEXT, 8, 0);
|
||||||
|
SetWindowText(GetDlgItem(hDlg, IDC_ADDRESS), "02000000");
|
||||||
|
|
||||||
|
SetWindowLong(GetDlgItem(hDlg, IDC_MEMVIEWBOX), DWL_USER, (LONG)data);
|
||||||
|
|
||||||
|
InvalidateRect(hDlg, NULL, FALSE); UpdateWindow(hDlg);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
case WM_CLOSE:
|
||||||
|
case WM_DESTROY:
|
||||||
|
MemView_DlgClose(data->cpu);
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
case WM_PAINT:
|
||||||
|
MemView_DlgPaint(hDlg, data, wParam, lParam);
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
case WM_COMMAND:
|
||||||
|
switch(LOWORD(wParam))
|
||||||
|
{
|
||||||
|
case IDCANCEL:
|
||||||
|
MemView_DlgClose(data->cpu);
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
case IDC_8_BIT:
|
||||||
|
case IDC_16_BIT:
|
||||||
|
case IDC_32_BIT:
|
||||||
|
CheckRadioButton(hDlg, IDC_8_BIT, IDC_32_BIT, LOWORD(wParam));
|
||||||
|
data->viewMode = (LOWORD(wParam) - IDC_8_BIT);
|
||||||
|
InvalidateRect(hDlg, NULL, FALSE); UpdateWindow(hDlg);
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
case IDC_GO:
|
||||||
|
{
|
||||||
|
char addrstr[9];
|
||||||
|
int len;
|
||||||
int i;
|
int i;
|
||||||
RECT rect;
|
int shift;
|
||||||
int lg;
|
BOOL error = FALSE;
|
||||||
int ht;
|
u32 address = 0x00000000;
|
||||||
HDC mem_dc;
|
|
||||||
|
len = GetWindowText(GetDlgItem(hDlg, IDC_ADDRESS), addrstr, 9);
|
||||||
|
|
||||||
|
for(i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
char ch = addrstr[i];
|
||||||
|
|
||||||
|
if((ch >= '0') && (ch <= '9'))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if((ch >= 'A') && (ch <= 'F'))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if((ch >= 'a') && (ch <= 'f'))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(ch == '\0')
|
||||||
|
break;
|
||||||
|
|
||||||
|
error = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(error)
|
||||||
|
{
|
||||||
|
MessageBox(hDlg, "Error:\nInvalid address specified.\nThe address must be an hexadecimal value.", "DeSmuME", (MB_OK | MB_ICONERROR));
|
||||||
|
SetWindowText(GetDlgItem(hDlg, IDC_ADDRESS), "");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = (len-1), shift = 0; i >= 0; i--, shift += 4)
|
||||||
|
{
|
||||||
|
char ch = addrstr[i];
|
||||||
|
|
||||||
|
if((ch >= '0') && (ch <= '9'))
|
||||||
|
address |= ((ch - '0') << shift);
|
||||||
|
else if((ch >= 'A') && (ch <= 'F'))
|
||||||
|
address |= ((ch - 'A' + 0xA) << shift);
|
||||||
|
else if((ch >= 'a') && (ch <= 'f'))
|
||||||
|
address |= ((ch - 'a' + 0xA) << shift);
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
case IDC_TEXTDUMP:
|
||||||
|
{
|
||||||
|
char fileName[256] = "";
|
||||||
|
OPENFILENAME ofn;
|
||||||
|
|
||||||
|
ZeroMemory(&ofn, sizeof(ofn));
|
||||||
|
ofn.lStructSize = sizeof(ofn);
|
||||||
|
ofn.hwndOwner = hDlg;
|
||||||
|
ofn.lpstrFilter = "Text file (*.txt)\0*.txt\0Any file (*.*)\0*.*\0\0";
|
||||||
|
ofn.nFilterIndex = 1;
|
||||||
|
ofn.lpstrFile = fileName;
|
||||||
|
ofn.nMaxFile = 256;
|
||||||
|
ofn.lpstrDefExt = "txt";
|
||||||
|
ofn.Flags = OFN_NOCHANGEDIR;
|
||||||
|
|
||||||
|
if(GetSaveFileName(&ofn))
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
u8 memory[0x100];
|
||||||
|
int line;
|
||||||
|
|
||||||
|
MMU_DumpMemBlock(data->cpu, data->address, 0x100, memory);
|
||||||
|
|
||||||
|
f = fopen(fileName, "a");
|
||||||
|
|
||||||
|
for(line = 0; line < 16; line++)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
fprintf(f, "%08X\t\t", (data->address + (line << 4)));
|
||||||
|
|
||||||
|
switch(data->viewMode)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
for(i = 0; i < 16; i++)
|
||||||
|
{
|
||||||
|
fprintf(f, "%02X ", T1ReadByte(memory, ((line << 4) + i)));
|
||||||
|
}
|
||||||
|
fprintf(f, "\t");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
for(i = 0; i < 16; i += 2)
|
||||||
|
{
|
||||||
|
fprintf(f, "%04X ", T1ReadWord(memory, ((line << 4) + i)));
|
||||||
|
}
|
||||||
|
fprintf(f, "\t\t");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
for(i = 0; i < 16; i += 4)
|
||||||
|
{
|
||||||
|
fprintf(f, "%08X ", T1ReadLong(memory, ((line << 4) + i)));
|
||||||
|
}
|
||||||
|
fprintf(f, "\t\t\t");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < 16; i++)
|
||||||
|
{
|
||||||
|
u8 val = T1ReadByte(memory, ((line << 4) + i));
|
||||||
|
|
||||||
|
if((val >= 32) && (val <= 127))
|
||||||
|
fprintf(f, "%c", (char)val);
|
||||||
|
else
|
||||||
|
fprintf(f, ".");
|
||||||
|
}
|
||||||
|
fprintf(f, "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
case IDC_RAWDUMP:
|
||||||
|
{
|
||||||
|
char fileName[256] = "";
|
||||||
|
OPENFILENAME ofn;
|
||||||
|
|
||||||
|
ZeroMemory(&ofn, sizeof(ofn));
|
||||||
|
ofn.lStructSize = sizeof(ofn);
|
||||||
|
ofn.hwndOwner = hDlg;
|
||||||
|
ofn.lpstrFilter = "Binary file (*.bin)\0*.bin\0Any file (*.*)\0*.*\0\0";
|
||||||
|
ofn.nFilterIndex = 1;
|
||||||
|
ofn.lpstrFile = fileName;
|
||||||
|
ofn.nMaxFile = 256;
|
||||||
|
ofn.lpstrDefExt = "bin";
|
||||||
|
ofn.Flags = OFN_NOCHANGEDIR;
|
||||||
|
|
||||||
|
if(GetSaveFileName(&ofn))
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
u8 memory[0x100];
|
||||||
|
int line;
|
||||||
|
|
||||||
|
MMU_DumpMemBlock(data->cpu, data->address, 0x100, memory);
|
||||||
|
|
||||||
|
f = fopen(fileName, "ab");
|
||||||
|
|
||||||
|
fwrite(memory, 0x100, 1, f);
|
||||||
|
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
LRESULT MemView_ViewBoxPaint(HWND hCtl, MemView_DataStruct *data, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
HDC hdc;
|
||||||
|
PAINTSTRUCT ps;
|
||||||
|
RECT rc;
|
||||||
|
int w, h;
|
||||||
|
SIZE fontsize;
|
||||||
|
int fontwidth, fontheight;
|
||||||
|
HDC mem_hdc;
|
||||||
HBITMAP mem_bmp;
|
HBITMAP mem_bmp;
|
||||||
int nbligne;
|
|
||||||
RECT r;
|
|
||||||
u32 adr;
|
|
||||||
|
|
||||||
GetClientRect(hwnd, &rect);
|
GetClientRect(hCtl, &rc);
|
||||||
lg = rect.right - rect.left;
|
w = (rc.right - rc.left);
|
||||||
ht = rect.bottom - rect.top;
|
h = (rc.bottom - rc.top);
|
||||||
|
|
||||||
hdc = BeginPaint(hwnd, &ps);
|
hdc = BeginPaint(hCtl, &ps);
|
||||||
|
|
||||||
mem_dc = CreateCompatibleDC(hdc);
|
mem_hdc = CreateCompatibleDC(hdc);
|
||||||
mem_bmp = CreateCompatibleBitmap(hdc, lg, ht);
|
mem_bmp = CreateCompatibleBitmap(hdc, w, h);
|
||||||
SelectObject(mem_dc, mem_bmp);
|
SelectObject(mem_hdc, mem_bmp);
|
||||||
|
|
||||||
FillRect(mem_dc, &rect, (HBRUSH)GetStockObject(WHITE_BRUSH));
|
SelectObject(mem_hdc, GetStockObject(SYSTEM_FIXED_FONT));
|
||||||
|
|
||||||
SelectObject(mem_dc, GetStockObject(SYSTEM_FIXED_FONT));
|
GetTextExtentPoint32(mem_hdc, " ", 1, &fontsize);
|
||||||
|
fontwidth = fontsize.cx;
|
||||||
|
fontheight = fontsize.cy;
|
||||||
|
|
||||||
GetTextExtentPoint32(mem_dc, "0", 1, &fontsize);
|
FillRect(mem_hdc, &rc, (HBRUSH)GetStockObject(WHITE_BRUSH));
|
||||||
|
|
||||||
nbligne = ht/fontsize.cy;
|
if(data != NULL)
|
||||||
|
|
||||||
SetTextColor(mem_dc, RGB(0,0,0));
|
|
||||||
|
|
||||||
r.top = 3;
|
|
||||||
r.left = 3;
|
|
||||||
r.bottom = r.top+fontsize.cy;
|
|
||||||
r.right = rect.right-3;
|
|
||||||
|
|
||||||
adr = win->curr_ligne*0x10;
|
|
||||||
|
|
||||||
for(i=0; i<nbligne; ++i)
|
|
||||||
{
|
{
|
||||||
int j;
|
u32 addr = data->address;
|
||||||
sprintf(text, "%04X:%04X", (int)(adr>>16), (int)(adr&0xFFFF));
|
u8 memory[0x100];
|
||||||
DrawText(mem_dc, text, -1, &r, DT_TOP | DT_LEFT | DT_NOPREFIX);
|
char text[80];
|
||||||
r.left += 11*fontsize.cx;
|
int startx, cury;
|
||||||
|
int line;
|
||||||
|
|
||||||
if(win->representation == 0)
|
startx = 0;
|
||||||
for(j=0; j<16; ++j)
|
cury = 0;
|
||||||
|
|
||||||
|
sprintf(text, " ");
|
||||||
|
GetTextExtentPoint32(mem_hdc, text, strlen(text), &fontsize);
|
||||||
|
startx = (fontsize.cx + 5);
|
||||||
|
cury = (fontsize.cy + 3);
|
||||||
|
|
||||||
|
MoveToEx(mem_hdc, (fontsize.cx + 2), 0, NULL);
|
||||||
|
LineTo(mem_hdc, (fontsize.cx + 2), h);
|
||||||
|
|
||||||
|
MoveToEx(mem_hdc, 0, (fontsize.cy + 1), NULL);
|
||||||
|
LineTo(mem_hdc, w, (fontsize.cy + 1));
|
||||||
|
|
||||||
|
switch(data->viewMode)
|
||||||
{
|
{
|
||||||
sprintf(text, "%02X", MMU_read8(win->cpu, adr+j));
|
case 0:
|
||||||
DrawText(mem_dc, text, -1, &r, DT_TOP | DT_LEFT | DT_NOPREFIX);
|
{
|
||||||
r.left+=3*fontsize.cx;
|
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));
|
||||||
}
|
}
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
MMU_DumpMemBlock(data->cpu, data->address, 0x100, memory);
|
||||||
|
|
||||||
|
for(line = 0; line < 16; line++, addr += 0x10)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
sprintf(text, "%08X", addr);
|
||||||
|
TextOut(mem_hdc, 0, cury, text, strlen(text));
|
||||||
|
|
||||||
|
switch(data->viewMode)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
sprintf(text, " ");
|
||||||
|
for(i = 0; i < 16; i++)
|
||||||
|
{
|
||||||
|
sprintf(text, "%s%02X ", text, T1ReadByte(memory, ((line << 4) + i)));
|
||||||
|
}
|
||||||
|
sprintf(text, "%s ", text);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
sprintf(text, " ");
|
||||||
|
for(i = 0; i < 16; i += 2)
|
||||||
|
{
|
||||||
|
sprintf(text, "%s%04X ", text, T1ReadWord(memory, ((line << 4) + i)));
|
||||||
|
}
|
||||||
|
sprintf(text, "%s ", text);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
sprintf(text, " ");
|
||||||
|
for(i = 0; i < 16; i += 4)
|
||||||
|
{
|
||||||
|
sprintf(text, "%s%08X ", text, T1ReadLong(memory, ((line << 4) + i)));
|
||||||
|
}
|
||||||
|
sprintf(text, "%s ", text);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < 16; i++)
|
||||||
|
{
|
||||||
|
u8 val = T1ReadByte(memory, ((line << 4) + i));
|
||||||
|
|
||||||
|
if((val >= 32) && (val <= 127))
|
||||||
|
sprintf(text, "%s%c", text, (char)val);
|
||||||
else
|
else
|
||||||
if(win->representation == 1)
|
sprintf(text, "%s.", text);
|
||||||
for(j=0; j<16; j+=2)
|
|
||||||
{
|
|
||||||
sprintf(text, "%04X", MMU_read16(win->cpu, adr+j));
|
|
||||||
DrawText(mem_dc, text, -1, &r, DT_TOP | DT_LEFT | DT_NOPREFIX);
|
|
||||||
r.left+=5*fontsize.cx;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
for(j=0; j<16; j+=4)
|
|
||||||
{
|
|
||||||
sprintf(text, "%08X", (int)MMU_read32(win->cpu, adr+j));
|
|
||||||
DrawText(mem_dc, text, -1, &r, DT_TOP | DT_LEFT | DT_NOPREFIX);
|
|
||||||
r.left+=9*fontsize.cx;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
r.left+=fontsize.cx;
|
TextOut(mem_hdc, startx, cury, text, strlen(text));
|
||||||
|
|
||||||
for(j=0; j<16; ++j)
|
cury += fontheight;
|
||||||
{
|
|
||||||
u8 c = MMU_read8(win->cpu, adr+j);
|
|
||||||
if(c >= 32 && c <= 127) {
|
|
||||||
text[j] = (char)c;
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
text[j] = '.';
|
|
||||||
}
|
|
||||||
text[j] = '\0';
|
|
||||||
DrawText(mem_dc, text, -1, &r, DT_TOP | DT_LEFT | DT_NOPREFIX);
|
|
||||||
|
|
||||||
adr+=0x10;
|
|
||||||
r.top += fontsize.cy;
|
|
||||||
r.bottom += fontsize.cy;
|
|
||||||
r.left = 3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BitBlt(hdc, 0, 0, lg, ht, mem_dc, 0, 0, SRCCOPY);
|
BitBlt(hdc, 0, 0, w, h, mem_hdc, 0, 0, SRCCOPY);
|
||||||
|
|
||||||
DeleteDC(mem_dc);
|
DeleteDC(mem_hdc);
|
||||||
DeleteObject(mem_bmp);
|
DeleteObject(mem_bmp);
|
||||||
|
|
||||||
EndPaint(hwnd, &ps);
|
EndPaint(hCtl, &ps);
|
||||||
return 1;
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================== ARM7
|
LRESULT CALLBACK MemView_ViewBoxProc(HWND hCtl, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
LRESULT CALLBACK ViewMem_ARM7BoxProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|
||||||
{
|
{
|
||||||
switch(msg)
|
MemView_DataStruct *data = (MemView_DataStruct*)GetWindowLong(hCtl, DWL_USER);
|
||||||
|
|
||||||
|
switch(uMsg)
|
||||||
{
|
{
|
||||||
case WM_NCCREATE:
|
case WM_NCCREATE:
|
||||||
SetScrollRange(hwnd, SB_VERT, 0, 0x0FFFFFFF, TRUE);
|
SetScrollRange(hCtl, SB_VERT, 0x00000000, 0x000FFFF0, TRUE);
|
||||||
SetScrollPos(hwnd, SB_VERT, 10, TRUE);
|
SetScrollPos(hCtl, SB_VERT, 0x00000000, TRUE);
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
case WM_NCDESTROY:
|
case WM_NCDESTROY:
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
case WM_PAINT:
|
|
||||||
MemViewBox_OnPaint(hwnd, MemView7, wParam, lParam);
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
case WM_ERASEBKGND:
|
case WM_ERASEBKGND:
|
||||||
return 1;
|
return 1;
|
||||||
case WM_VSCROLL :
|
|
||||||
{
|
|
||||||
RECT rect;
|
|
||||||
SIZE fontsize;
|
|
||||||
HDC dc;
|
|
||||||
HFONT old;
|
|
||||||
int nbligne;
|
|
||||||
|
|
||||||
GetClientRect(hwnd, &rect);
|
|
||||||
dc = GetDC(hwnd);
|
|
||||||
old = (HFONT)SelectObject(dc, GetStockObject(SYSTEM_FIXED_FONT));
|
|
||||||
GetTextExtentPoint32(dc, "0", 1, &fontsize);
|
|
||||||
|
|
||||||
nbligne = (rect.bottom - rect.top)/fontsize.cy;
|
|
||||||
|
|
||||||
switch LOWORD(wParam)
|
|
||||||
{
|
|
||||||
case SB_LINEDOWN :
|
|
||||||
MemView7->curr_ligne = std::min((u32)0x0FFFFFFFF, (u32)MemView7->curr_ligne+1);
|
|
||||||
break;
|
|
||||||
case SB_LINEUP :
|
|
||||||
MemView7->curr_ligne = (u32)std::max((u32)0l, (u32)MemView7->curr_ligne-1);
|
|
||||||
break;
|
|
||||||
case SB_PAGEDOWN :
|
|
||||||
MemView7->curr_ligne = std::min((u32)0x0FFFFFFFF, (u32)MemView7->curr_ligne+nbligne);
|
|
||||||
break;
|
|
||||||
case SB_PAGEUP :
|
|
||||||
MemView7->curr_ligne = (u32)std::max((u32)0l, (u32)MemView7->curr_ligne-nbligne);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
SelectObject(dc, old);
|
|
||||||
SetScrollPos(hwnd, SB_VERT, MemView7->curr_ligne, TRUE);
|
|
||||||
InvalidateRect(hwnd, NULL, FALSE);
|
|
||||||
UpdateWindow(hwnd);
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL CALLBACK ViewMem_ARM7Proc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|
||||||
{
|
|
||||||
//bail out early if the dialog isnt initialized
|
|
||||||
if(!MemView7 && message != WM_INITDIALOG)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
switch (message)
|
|
||||||
{
|
|
||||||
case WM_INITDIALOG :
|
|
||||||
{
|
|
||||||
SetWindowText(hwnd, "ARM7 memory viewer");
|
|
||||||
SendMessage(GetDlgItem(hwnd, IDC_8_BIT), BM_SETCHECK, TRUE, 0);
|
|
||||||
MemView7 = new memview_struct;
|
|
||||||
memset(MemView7, 0, sizeof(memview_struct));
|
|
||||||
MemView7->cpu = 1;
|
|
||||||
MemView7->autoup_secs = 1;
|
|
||||||
SendMessage(GetDlgItem(hwnd, IDC_AUTO_UPDATE_SPIN),
|
|
||||||
UDM_SETRANGE, 0, MAKELONG(99, 1));
|
|
||||||
SendMessage(GetDlgItem(hwnd, IDC_AUTO_UPDATE_SPIN),
|
|
||||||
UDM_SETPOS32, 0, MemView7->autoup_secs);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case WM_CLOSE:
|
|
||||||
{
|
|
||||||
if(MemView7->autoup)
|
|
||||||
{
|
|
||||||
KillTimer(hwnd, IDT_VIEW_MEM7);
|
|
||||||
MemView7->autoup = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (MemView7!=NULL)
|
|
||||||
{
|
|
||||||
delete MemView7;
|
|
||||||
MemView7 = NULL;
|
|
||||||
}
|
|
||||||
//INFO("Close ARM7 memory dialog\n");
|
|
||||||
PostQuitMessage(0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case WM_TIMER:
|
|
||||||
SendMessage(hwnd, WM_COMMAND, IDC_REFRESH, 0);
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
case WM_COMMAND :
|
|
||||||
switch (LOWORD (wParam))
|
|
||||||
{
|
|
||||||
case IDC_8_BIT :
|
|
||||||
MemView7->representation = 0;
|
|
||||||
InvalidateRect(GetDlgItem(hwnd, IDC_MEM_BOX), NULL, FALSE);
|
|
||||||
UpdateWindow(GetDlgItem(hwnd, IDC_MEM_BOX));
|
|
||||||
return 1;
|
|
||||||
case IDC_16_BIT :
|
|
||||||
MemView7->representation = 1;
|
|
||||||
InvalidateRect(GetDlgItem(hwnd, IDC_MEM_BOX), NULL, FALSE);
|
|
||||||
UpdateWindow(GetDlgItem(hwnd, IDC_MEM_BOX));
|
|
||||||
return 1;
|
|
||||||
case IDC_32_BIT :
|
|
||||||
MemView7->representation = 2;
|
|
||||||
InvalidateRect(GetDlgItem(hwnd, IDC_MEM_BOX), NULL, FALSE);
|
|
||||||
UpdateWindow(GetDlgItem(hwnd, IDC_MEM_BOX));
|
|
||||||
return 1;
|
|
||||||
case IDC_AUTO_UPDATE :
|
|
||||||
if(MemView7->autoup)
|
|
||||||
{
|
|
||||||
EnableWindow(GetDlgItem(hwnd, IDC_AUTO_UPDATE_SECS), false);
|
|
||||||
EnableWindow(GetDlgItem(hwnd, IDC_AUTO_UPDATE_SPIN), false);
|
|
||||||
KillTimer(hwnd, IDT_VIEW_MEM7);
|
|
||||||
MemView7->autoup = FALSE;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
EnableWindow(GetDlgItem(hwnd, IDC_AUTO_UPDATE_SECS), true);
|
|
||||||
EnableWindow(GetDlgItem(hwnd, IDC_AUTO_UPDATE_SPIN), true);
|
|
||||||
MemView7->autoup = TRUE;
|
|
||||||
SetTimer(hwnd, IDT_VIEW_MEM7, MemView7->autoup_secs*20, (TIMERPROC) NULL);
|
|
||||||
return 1;
|
|
||||||
case IDC_AUTO_UPDATE_SECS:
|
|
||||||
{
|
|
||||||
int t = GetDlgItemInt(hwnd, IDC_AUTO_UPDATE_SECS, FALSE, TRUE);
|
|
||||||
if (!MemView7)
|
|
||||||
{
|
|
||||||
SendMessage(hwnd, WM_INITDIALOG, 0, 0);
|
|
||||||
}
|
|
||||||
if (t != MemView7->autoup_secs)
|
|
||||||
{
|
|
||||||
MemView7->autoup_secs = t;
|
|
||||||
if (MemView7->autoup)
|
|
||||||
SetTimer(hwnd, IDT_VIEW_MEM7,
|
|
||||||
MemView7->autoup_secs*20, (TIMERPROC) NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
case IDC_REFRESH:
|
|
||||||
InvalidateRect(hwnd, NULL, FALSE);
|
|
||||||
return 1;
|
|
||||||
case IDC_GO :
|
|
||||||
{
|
|
||||||
char tmp[8];
|
|
||||||
int lg = GetDlgItemText(hwnd, IDC_GOTOMEM, tmp, 8);
|
|
||||||
u32 adr = 0;
|
|
||||||
u16 i;
|
|
||||||
|
|
||||||
for(i = 0; i<lg; ++i)
|
|
||||||
{
|
|
||||||
if((tmp[i]>='A')&&(tmp[i]<='F'))
|
|
||||||
{
|
|
||||||
adr = adr*16 + (tmp[i]-'A'+10);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if((tmp[i]>='0')&&(tmp[i]<='9'))
|
|
||||||
{
|
|
||||||
adr = adr*16 + (tmp[i]-'0');
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MemView7->curr_ligne = (adr>>4);
|
|
||||||
InvalidateRect(hwnd, NULL, FALSE);
|
|
||||||
UpdateWindow(hwnd);
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
case IDC_FERMER :
|
|
||||||
SendMessage(hwnd, WM_CLOSE, 0, 0);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
//=================================================== ARM9
|
|
||||||
LRESULT CALLBACK ViewMem_ARM9BoxProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|
||||||
{
|
|
||||||
switch(msg)
|
|
||||||
{
|
|
||||||
case WM_NCCREATE:
|
|
||||||
SetScrollRange(hwnd, SB_VERT, 0, 0x0FFFFFFF, TRUE);
|
|
||||||
SetScrollPos(hwnd, SB_VERT, 10, TRUE);
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
case WM_NCDESTROY:
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
case WM_PAINT:
|
case WM_PAINT:
|
||||||
MemViewBox_OnPaint(hwnd, MemView9, wParam, lParam);
|
MemView_ViewBoxPaint(hCtl, data, wParam, lParam);
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
case WM_ERASEBKGND:
|
case WM_VSCROLL:
|
||||||
return 1;
|
|
||||||
case WM_VSCROLL :
|
|
||||||
{
|
{
|
||||||
RECT rect;
|
int firstpos = GetScrollPos(hCtl, SB_VERT);
|
||||||
SIZE fontsize;
|
|
||||||
HDC dc;
|
|
||||||
HFONT old;
|
|
||||||
int nbligne;
|
|
||||||
|
|
||||||
GetClientRect(hwnd, &rect);
|
switch(LOWORD(wParam))
|
||||||
dc = GetDC(hwnd);
|
|
||||||
old = (HFONT)SelectObject(dc, GetStockObject(SYSTEM_FIXED_FONT));
|
|
||||||
GetTextExtentPoint32(dc, "0", 1, &fontsize);
|
|
||||||
|
|
||||||
nbligne = (rect.bottom - rect.top)/fontsize.cy;
|
|
||||||
|
|
||||||
switch LOWORD(wParam)
|
|
||||||
{
|
{
|
||||||
case SB_LINEDOWN :
|
case SB_LINEUP:
|
||||||
MemView9->curr_ligne = std::min((u32)0x0FFFFFFFF, (u32)MemView9->curr_ligne+1);
|
data->address = (u32)max(0x00000000, ((int)data->address - 0x10));
|
||||||
break;
|
break;
|
||||||
case SB_LINEUP :
|
|
||||||
MemView9->curr_ligne = (u32)std::max((u32)0l, (u32)MemView9->curr_ligne-1);
|
case SB_LINEDOWN:
|
||||||
|
data->address = min((u32)0xFFFFFF00, (data->address + 0x10));
|
||||||
break;
|
break;
|
||||||
case SB_PAGEDOWN :
|
|
||||||
MemView9->curr_ligne = std::min((u32)0x0FFFFFFFF, (u32)MemView9->curr_ligne+nbligne);
|
case SB_PAGEUP:
|
||||||
|
data->address = (u32)max(0x00000000, ((int)data->address - 0x100));
|
||||||
break;
|
break;
|
||||||
case SB_PAGEUP :
|
|
||||||
MemView9->curr_ligne = (u32)std::max((u32)0l, (u32)MemView9->curr_ligne-nbligne);
|
case SB_PAGEDOWN:
|
||||||
|
data->address = min((u32)0xFFFFFF00, (data->address + 0x100));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SB_THUMBTRACK:
|
||||||
|
case SB_THUMBPOSITION:
|
||||||
|
{
|
||||||
|
SCROLLINFO si;
|
||||||
|
|
||||||
|
ZeroMemory(&si, sizeof(si));
|
||||||
|
si.cbSize = sizeof(si);
|
||||||
|
si.fMask = SIF_TRACKPOS;
|
||||||
|
|
||||||
|
GetScrollInfo(hCtl, SB_VERT, &si);
|
||||||
|
|
||||||
|
data->address = min((u32)0xFFFFFF00, (data->address + ((si.nTrackPos - firstpos) * 16)));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
SelectObject(dc, old);
|
SetScrollPos(hCtl, SB_VERT, ((data->address >> 4) & 0x000FFFFF), TRUE);
|
||||||
SetScrollPos(hwnd, SB_VERT, MemView9->curr_ligne, TRUE);
|
InvalidateRect(hCtl, NULL, FALSE); UpdateWindow(hCtl);
|
||||||
InvalidateRect(hwnd, NULL, FALSE);
|
|
||||||
UpdateWindow(hwnd);
|
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return DefWindowProc(hCtl, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL CALLBACK ViewMem_ARM9Proc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
{
|
|
||||||
//bail out early if the dialog isnt initialized
|
|
||||||
if(!MemView9 && message != WM_INITDIALOG)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
switch (message)
|
|
||||||
{
|
|
||||||
case WM_INITDIALOG :
|
|
||||||
{
|
|
||||||
SetWindowText(hwnd, "ARM9 memory viewer");
|
|
||||||
SendMessage(GetDlgItem(hwnd, IDC_8_BIT), BM_SETCHECK, TRUE, 0);
|
|
||||||
MemView9 = new memview_struct;
|
|
||||||
memset(MemView9, 0, sizeof(memview_struct));
|
|
||||||
MemView9->cpu = 0;
|
|
||||||
MemView9->autoup_secs = 1;
|
|
||||||
SendMessage(GetDlgItem(hwnd, IDC_AUTO_UPDATE_SPIN),
|
|
||||||
UDM_SETRANGE, 0, MAKELONG(99, 1));
|
|
||||||
SendMessage(GetDlgItem(hwnd, IDC_AUTO_UPDATE_SPIN),
|
|
||||||
UDM_SETPOS32, 0, MemView9->autoup_secs);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
case WM_CLOSE:
|
|
||||||
{
|
|
||||||
if(MemView9->autoup)
|
|
||||||
{
|
|
||||||
KillTimer(hwnd, IDT_VIEW_MEM9);
|
|
||||||
MemView9->autoup = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (MemView9!=NULL)
|
|
||||||
{
|
|
||||||
delete MemView9;
|
|
||||||
MemView9 = NULL;
|
|
||||||
}
|
|
||||||
//INFO("Close ARM9 memory dialog\n");
|
|
||||||
PostQuitMessage(0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case WM_TIMER:
|
|
||||||
SendMessage(hwnd, WM_COMMAND, IDC_REFRESH, 0);
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
case WM_COMMAND :
|
|
||||||
switch (LOWORD (wParam))
|
|
||||||
{
|
|
||||||
case IDC_8_BIT :
|
|
||||||
MemView9->representation = 0;
|
|
||||||
InvalidateRect(GetDlgItem(hwnd, IDC_MEM_BOX), NULL, FALSE);
|
|
||||||
UpdateWindow(GetDlgItem(hwnd, IDC_MEM_BOX));
|
|
||||||
return 1;
|
|
||||||
case IDC_16_BIT :
|
|
||||||
MemView9->representation = 1;
|
|
||||||
InvalidateRect(GetDlgItem(hwnd, IDC_MEM_BOX), NULL, FALSE);
|
|
||||||
UpdateWindow(GetDlgItem(hwnd, IDC_MEM_BOX));
|
|
||||||
return 1;
|
|
||||||
case IDC_32_BIT :
|
|
||||||
MemView9->representation = 2;
|
|
||||||
InvalidateRect(GetDlgItem(hwnd, IDC_MEM_BOX), NULL, FALSE);
|
|
||||||
UpdateWindow(GetDlgItem(hwnd, IDC_MEM_BOX));
|
|
||||||
return 1;
|
|
||||||
case IDC_AUTO_UPDATE :
|
|
||||||
if(MemView9->autoup)
|
|
||||||
{
|
|
||||||
EnableWindow(GetDlgItem(hwnd, IDC_AUTO_UPDATE_SECS), false);
|
|
||||||
EnableWindow(GetDlgItem(hwnd, IDC_AUTO_UPDATE_SPIN), false);
|
|
||||||
KillTimer(hwnd, IDT_VIEW_MEM9);
|
|
||||||
MemView9->autoup = FALSE;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
EnableWindow(GetDlgItem(hwnd, IDC_AUTO_UPDATE_SECS), true);
|
|
||||||
EnableWindow(GetDlgItem(hwnd, IDC_AUTO_UPDATE_SPIN), true);
|
|
||||||
MemView9->autoup = TRUE;
|
|
||||||
SetTimer(hwnd, IDT_VIEW_MEM9, MemView9->autoup_secs*20, (TIMERPROC) NULL);
|
|
||||||
return 1;
|
|
||||||
case IDC_AUTO_UPDATE_SECS:
|
|
||||||
{
|
|
||||||
int t = GetDlgItemInt(hwnd, IDC_AUTO_UPDATE_SECS, FALSE, TRUE);
|
|
||||||
if (!MemView9)
|
|
||||||
{
|
|
||||||
SendMessage(hwnd, WM_INITDIALOG, 0, 0);
|
|
||||||
}
|
|
||||||
if (t != MemView9->autoup_secs)
|
|
||||||
{
|
|
||||||
MemView9->autoup_secs = t;
|
|
||||||
if (MemView9->autoup)
|
|
||||||
SetTimer(hwnd, IDT_VIEW_MEM9,
|
|
||||||
MemView9->autoup_secs*20, (TIMERPROC) NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
case IDC_REFRESH:
|
|
||||||
InvalidateRect(hwnd, NULL, FALSE);
|
|
||||||
return 1;
|
|
||||||
case IDC_GO :
|
|
||||||
{
|
|
||||||
char tmp[8];
|
|
||||||
int lg = GetDlgItemText(hwnd, IDC_GOTOMEM, tmp, 8);
|
|
||||||
u32 adr = 0;
|
|
||||||
u16 i;
|
|
||||||
|
|
||||||
for(i = 0; i<lg; ++i)
|
|
||||||
{
|
|
||||||
if((tmp[i]>='A')&&(tmp[i]<='F'))
|
|
||||||
{
|
|
||||||
adr = adr*16 + (tmp[i]-'A'+10);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if((tmp[i]>='0')&&(tmp[i]<='9'))
|
|
||||||
{
|
|
||||||
adr = adr*16 + (tmp[i]-'0');
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MemView9->curr_ligne = (adr>>4);
|
|
||||||
InvalidateRect(hwnd, NULL, FALSE);
|
|
||||||
UpdateWindow(hwnd);
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
case IDC_FERMER :
|
|
||||||
SendMessage(hwnd, WM_CLOSE, 0, 0);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
|
@ -22,12 +22,15 @@
|
||||||
#ifndef MEM_VIEW_H
|
#ifndef MEM_VIEW_H
|
||||||
#define MEM_VIEW_H
|
#define MEM_VIEW_H
|
||||||
|
|
||||||
#include "../common.h"
|
BOOL MemView_Init();
|
||||||
|
void MemView_DeInit();
|
||||||
|
|
||||||
extern BOOL CALLBACK ViewMem_ARM7Proc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
|
BOOL MemView_DlgOpen(HWND hParentWnd, u8 CPU);
|
||||||
extern LRESULT CALLBACK ViewMem_ARM7BoxProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
void MemView_DlgClose(u8 CPU);
|
||||||
|
BOOL MemView_IsOpened(u8 CPU);
|
||||||
|
void MemView_Refresh(u8 CPU);
|
||||||
|
|
||||||
extern BOOL CALLBACK ViewMem_ARM9Proc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
|
BOOL CALLBACK MemView_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||||
extern LRESULT CALLBACK ViewMem_ARM9BoxProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
LRESULT CALLBACK MemView_ViewBoxProc(HWND hCtl, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -7,7 +7,6 @@
|
||||||
#define IDC_FERMER 103
|
#define IDC_FERMER 103
|
||||||
#define IDD_DESASSEMBLEUR_VIEWER7 103
|
#define IDD_DESASSEMBLEUR_VIEWER7 103
|
||||||
#define IDC_STEP 104
|
#define IDC_STEP 104
|
||||||
#define IDD_MEM_VIEWER7 104
|
|
||||||
#define IDC_SETPNUM 105
|
#define IDC_SETPNUM 105
|
||||||
#define IDC_SCROLLER 106
|
#define IDC_SCROLLER 106
|
||||||
#define IDD_SOUNDSETTINGS 106
|
#define IDD_SOUNDSETTINGS 106
|
||||||
|
@ -97,8 +96,6 @@
|
||||||
#define IDC_8_BIT 302
|
#define IDC_8_BIT 302
|
||||||
#define IDC_16_BIT 303
|
#define IDC_16_BIT 303
|
||||||
#define IDC_32_BIT 304
|
#define IDC_32_BIT 304
|
||||||
#define IDC_MEM_BOX 305
|
|
||||||
#define IDC_GOTOMEM 306
|
|
||||||
#define IDC_DES_BOX 402
|
#define IDC_DES_BOX 402
|
||||||
#define IDC_R0 403
|
#define IDC_R0 403
|
||||||
#define IDC_R1 404
|
#define IDC_R1 404
|
||||||
|
@ -157,6 +154,7 @@
|
||||||
#define IDB_BGTILES 913
|
#define IDB_BGTILES 913
|
||||||
#define IDD_EMULATIONSETTINGS 916
|
#define IDD_EMULATIONSETTINGS 916
|
||||||
#define IDD_WIFISETTINGS 918
|
#define IDD_WIFISETTINGS 918
|
||||||
|
#define IDD_MEM_VIEW 920
|
||||||
#define IDC_BGMAP_SEL 1000
|
#define IDC_BGMAP_SEL 1000
|
||||||
#define IDC_BRIDGEADAPTER 1000
|
#define IDC_BRIDGEADAPTER 1000
|
||||||
#define IDC_EDIT03 1000
|
#define IDC_EDIT03 1000
|
||||||
|
@ -185,16 +183,20 @@
|
||||||
#define IDC_ARM7BIOSBROWSE 1007
|
#define IDC_ARM7BIOSBROWSE 1007
|
||||||
#define IDC_EDIT06 1007
|
#define IDC_EDIT06 1007
|
||||||
#define IDC_EDIT09 1008
|
#define IDC_EDIT09 1008
|
||||||
|
#define IDC_MEMVIEWBOX 1008
|
||||||
|
#define IDC_ADDRESS 1009
|
||||||
#define IDC_BIOSSWIS 1009
|
#define IDC_BIOSSWIS 1009
|
||||||
#define IDC_EDIT10 1009
|
#define IDC_EDIT10 1009
|
||||||
#define IDC_FORCERATIO 1009
|
#define IDC_FORCERATIO 1009
|
||||||
#define IDC_AUTO_UPDATE_SPIN 1010
|
#define IDC_AUTO_UPDATE_SPIN 1010
|
||||||
#define IDC_EDIT15 1010
|
#define IDC_EDIT15 1010
|
||||||
|
#define IDC_TEXTDUMP 1010
|
||||||
#define IDC_WINDOW1X 1010
|
#define IDC_WINDOW1X 1010
|
||||||
#define IDC_AUTO_UPDATE_SECS 1011
|
#define IDC_AUTO_UPDATE_SECS 1011
|
||||||
#define IDC_USEEXTFIRMWARE 1011
|
#define IDC_USEEXTFIRMWARE 1011
|
||||||
#define IDC_WINDOW2X 1011
|
#define IDC_WINDOW2X 1011
|
||||||
#define IDC_FIRMWARE 1012
|
#define IDC_FIRMWARE 1012
|
||||||
|
#define IDC_RAWDUMP 1012
|
||||||
#define IDC_REFRESH 1012
|
#define IDC_REFRESH 1012
|
||||||
#define IDC_WINDOW3X 1012
|
#define IDC_WINDOW3X 1012
|
||||||
#define IDC_EDIT02 1013
|
#define IDC_EDIT02 1013
|
||||||
|
@ -356,7 +358,6 @@
|
||||||
#define IDC_LIGHT_VIEWER_LIGHT0COLOR_COLORCTRL 1302
|
#define IDC_LIGHT_VIEWER_LIGHT0COLOR_COLORCTRL 1302
|
||||||
#define IDD_DESASSEMBLEUR_VIEWER9 1302
|
#define IDD_DESASSEMBLEUR_VIEWER9 1302
|
||||||
#define IDC_LIGHT_VIEWER_LIGHT0COLOR_EDIT 1303
|
#define IDC_LIGHT_VIEWER_LIGHT0COLOR_EDIT 1303
|
||||||
#define IDD_MEM_VIEWER9 1303
|
|
||||||
#define IDC_LIGHT_VIEWER_LIGHT0VECTOR_EDIT 1304
|
#define IDC_LIGHT_VIEWER_LIGHT0VECTOR_EDIT 1304
|
||||||
#define IDD_GBASLOT_NONE 1304
|
#define IDD_GBASLOT_NONE 1304
|
||||||
#define IDD_GBASLOT_RUMBLEPAK 1305
|
#define IDD_GBASLOT_RUMBLEPAK 1305
|
||||||
|
|
|
@ -1235,6 +1235,28 @@ FONT 8, "MS Sans Serif", 0, 0, 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
IDD_MEM_VIEW DIALOG 0, 0, 436, 231
|
||||||
|
STYLE DS_CENTER | DS_FIXEDSYS | WS_VISIBLE | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_SYSMENU
|
||||||
|
CAPTION ""
|
||||||
|
FONT 8, "MS Sans Serif"
|
||||||
|
BEGIN
|
||||||
|
PUSHBUTTON "Close", IDCANCEL, 188, 210, 60, 15, BS_PUSHBUTTON
|
||||||
|
GROUPBOX "View mode", IDC_STATIC, 5, 5, 145, 35
|
||||||
|
RADIOBUTTON "8-bit", IDC_8_BIT, 15, 20, 40, 10, WS_GROUP | WS_TABSTOP | BS_RADIOBUTTON
|
||||||
|
RADIOBUTTON "16-bit", IDC_16_BIT, 60, 20, 39, 10, WS_GROUP | WS_TABSTOP | BS_RADIOBUTTON
|
||||||
|
RADIOBUTTON "32-bit", IDC_32_BIT, 105, 20, 39, 10, WS_GROUP | WS_TABSTOP | BS_RADIOBUTTON
|
||||||
|
GROUPBOX "View address", IDC_STATIC, 160, 5, 115, 35
|
||||||
|
PUSHBUTTON "Go", IDC_GO, 240, 20, 25, 14, BS_PUSHBUTTON
|
||||||
|
PUSHBUTTON "Text dump", IDC_TEXTDUMP, 295, 20, 60, 14, BS_PUSHBUTTON
|
||||||
|
CONTROL "1", IDC_MEMVIEWBOX, "MemView_ViewBox", 0x50210000, 5, 45, 425, 160
|
||||||
|
EDITTEXT IDC_ADDRESS, 170, 20, 70, 14, ES_AUTOHSCROLL, WS_EX_TRANSPARENT
|
||||||
|
PUSHBUTTON "Raw dump", IDC_RAWDUMP, 360, 20, 60, 14, BS_PUSHBUTTON
|
||||||
|
GROUPBOX "View dump", IDC_STATIC, 285, 5, 145, 35
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
IDD_EMULATIONSETTINGS DIALOG 0, 0, 241, 270
|
IDD_EMULATIONSETTINGS DIALOG 0, 0, 241, 270
|
||||||
STYLE DS_CENTER | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_SYSMENU
|
STYLE DS_CENTER | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_SYSMENU
|
||||||
|
@ -2104,138 +2126,6 @@ FONT 8, "MS Shell Dlg", 400, 0, 1
|
||||||
LTEXT "frames", IDC_STATIC, 92, 158, 16, 8, SS_LEFT
|
LTEXT "frames", IDC_STATIC, 92, 158, 16, 8, SS_LEFT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LANGUAGE LANG_DANISH, SUBLANG_DANISH_DENMARK
|
|
||||||
IDD_MEM_VIEWER7 DIALOGEX 0, 0, 428, 178
|
|
||||||
STYLE DS_CENTER | DS_SETFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME
|
|
||||||
CAPTION "Vis Hukommelse"
|
|
||||||
FONT 8, "MS Sans Serif", 0, 0, 1
|
|
||||||
{
|
|
||||||
AUTORADIOBUTTON "8 bit", IDC_8_BIT, 10, 4, 29, 10, WS_GROUP | WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
AUTORADIOBUTTON "16 bit", IDC_16_BIT, 44, 4, 33, 10, WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
AUTORADIOBUTTON "32 bit", IDC_32_BIT, 82, 4, 33, 10, WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
LTEXT "Gå Til:", IDC_STATIC, 130, 4, 33, 10, SS_LEFT
|
|
||||||
EDITTEXT IDC_GOTOMEM, 155, 1, 82, 14, WS_GROUP | ES_AUTOHSCROLL | ES_UPPERCASE | ES_WANTRETURN
|
|
||||||
PUSHBUTTON "&Start", IDC_GO, 240, 1, 20, 14, BS_PUSHBUTTON
|
|
||||||
CONTROL "Rediger", IDC_MEM_BOX, "MemViewBox7", 0x50210000, 4, 16, 424, 142, 0x00000200
|
|
||||||
PUSHBUTTON "&Luk", IDC_FERMER, 185, 162, 50, 14, BS_PUSHBUTTON
|
|
||||||
AUTOCHECKBOX "&Auto-update", IDC_AUTO_UPDATE, 327, 1, 54, 14, BS_AUTOCHECKBOX
|
|
||||||
EDITTEXT IDC_AUTO_UPDATE_SECS, 382, 2, 12, 14, WS_DISABLED | ES_AUTOHSCROLL | ES_READONLY
|
|
||||||
CONTROL "", IDC_AUTO_UPDATE_SPIN, UPDOWN_CLASS, WS_DISABLED | UDS_ARROWKEYS | UDS_AUTOBUDDY | UDS_SETBUDDYINT, 394, 2, 11, 14
|
|
||||||
LTEXT "frames", IDC_STATIC, 406, 5, 16, 8, SS_LEFT
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
|
||||||
IDD_MEM_VIEWER7 DIALOGEX 0, 0, 428, 178
|
|
||||||
STYLE DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_VISIBLE | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP
|
|
||||||
CAPTION "View Memory"
|
|
||||||
FONT 8, "MS Sans Serif", 400, 0, 0
|
|
||||||
{
|
|
||||||
AUTORADIOBUTTON "8 bit", IDC_8_BIT, 10, 4, 29, 10, WS_GROUP | WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
AUTORADIOBUTTON "16 bit", IDC_16_BIT, 44, 4, 33, 10, WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
AUTORADIOBUTTON "32 bit", IDC_32_BIT, 82, 4, 33, 10, WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
LTEXT "Go to:", IDC_STATIC, 130, 4, 33, 10, SS_LEFT
|
|
||||||
EDITTEXT IDC_GOTOMEM, 155, 1, 82, 14, WS_GROUP | ES_AUTOHSCROLL | ES_UPPERCASE | ES_WANTRETURN
|
|
||||||
PUSHBUTTON "&GO", IDC_GO, 240, 1, 20, 14, BS_PUSHBUTTON
|
|
||||||
PUSHBUTTON "&Close", IDC_FERMER, 185, 162, 50, 14, BS_PUSHBUTTON
|
|
||||||
CONTROL "Rediger", IDC_MEM_BOX, "MemViewBox7", 0x50210000, 4, 16, 424, 142, 0x00000200
|
|
||||||
AUTOCHECKBOX "&Auto-update", IDC_AUTO_UPDATE, 327, 1, 54, 14, BS_AUTOCHECKBOX
|
|
||||||
EDITTEXT IDC_AUTO_UPDATE_SECS, 382, 2, 12, 14, WS_DISABLED | ES_AUTOHSCROLL | ES_READONLY
|
|
||||||
CONTROL "", IDC_AUTO_UPDATE_SPIN, UPDOWN_CLASS, WS_DISABLED | UDS_ARROWKEYS | UDS_AUTOBUDDY | UDS_SETBUDDYINT, 394, 2, 11, 14
|
|
||||||
LTEXT "frames", IDC_STATIC, 406, 5, 16, 8, SS_LEFT
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
|
|
||||||
IDD_MEM_VIEWER7 DIALOGEX 0, 0, 428, 178
|
|
||||||
STYLE DS_CENTER | DS_SETFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME
|
|
||||||
CAPTION "Visualisation de la memoire"
|
|
||||||
FONT 8, "MS Sans Serif", 0, 0, 1
|
|
||||||
{
|
|
||||||
AUTORADIOBUTTON "8 bit", IDC_8_BIT, 10, 4, 29, 10, WS_GROUP | WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
AUTORADIOBUTTON "16 bit", IDC_16_BIT, 44, 4, 33, 10, WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
AUTORADIOBUTTON "32 bit", IDC_32_BIT, 82, 4, 33, 10, WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
LTEXT "Aller <20>E:", IDC_STATIC, 130, 4, 33, 10, SS_LEFT
|
|
||||||
EDITTEXT IDC_GOTOMEM, 155, 1, 82, 14, WS_GROUP | ES_AUTOHSCROLL | ES_UPPERCASE | ES_WANTRETURN
|
|
||||||
PUSHBUTTON "&GO", IDC_GO, 240, 1, 20, 14, BS_PUSHBUTTON
|
|
||||||
CONTROL "Edit", IDC_MEM_BOX, "MemViewBox7", 0x50210000, 4, 16, 424, 142, 0x00000200
|
|
||||||
PUSHBUTTON "&Fermer", IDC_FERMER, 185, 162, 50, 14, BS_PUSHBUTTON
|
|
||||||
AUTOCHECKBOX "&Auto-update", IDC_AUTO_UPDATE, 327, 1, 54, 14, BS_AUTOCHECKBOX
|
|
||||||
EDITTEXT IDC_AUTO_UPDATE_SECS, 382, 2, 12, 14, WS_DISABLED | ES_AUTOHSCROLL | ES_READONLY
|
|
||||||
CONTROL "", IDC_AUTO_UPDATE_SPIN, UPDOWN_CLASS, WS_DISABLED | UDS_ARROWKEYS | UDS_AUTOBUDDY | UDS_SETBUDDYINT, 394, 2, 11, 14
|
|
||||||
LTEXT "frames", IDC_STATIC, 406, 5, 16, 8, SS_LEFT
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LANGUAGE LANG_DANISH, SUBLANG_DANISH_DENMARK
|
|
||||||
IDD_MEM_VIEWER9 DIALOGEX 0, 0, 428, 178
|
|
||||||
STYLE DS_CENTER | DS_SETFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME
|
|
||||||
CAPTION "Vis Hukommelse"
|
|
||||||
FONT 8, "MS Sans Serif", 0, 0, 1
|
|
||||||
{
|
|
||||||
AUTORADIOBUTTON "8 bit", IDC_8_BIT, 10, 4, 29, 10, WS_GROUP | WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
AUTORADIOBUTTON "16 bit", IDC_16_BIT, 44, 4, 33, 10, WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
AUTORADIOBUTTON "32 bit", IDC_32_BIT, 82, 4, 33, 10, WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
LTEXT "Gå Til:", IDC_STATIC, 130, 4, 33, 10, SS_LEFT
|
|
||||||
EDITTEXT IDC_GOTOMEM, 155, 1, 82, 14, WS_GROUP | ES_AUTOHSCROLL | ES_UPPERCASE | ES_WANTRETURN
|
|
||||||
PUSHBUTTON "&Start", IDC_GO, 240, 1, 20, 14, BS_PUSHBUTTON
|
|
||||||
CONTROL "Rediger", IDC_MEM_BOX, "MemViewBox9", 0x50210000, 4, 16, 424, 142, 0x00000200
|
|
||||||
PUSHBUTTON "&Luk", IDC_FERMER, 185, 162, 50, 14, BS_PUSHBUTTON
|
|
||||||
AUTOCHECKBOX "&Auto-update", IDC_AUTO_UPDATE, 327, 1, 54, 14, BS_AUTOCHECKBOX
|
|
||||||
EDITTEXT IDC_AUTO_UPDATE_SECS, 382, 2, 12, 14, WS_DISABLED | ES_AUTOHSCROLL | ES_READONLY
|
|
||||||
CONTROL "", IDC_AUTO_UPDATE_SPIN, UPDOWN_CLASS, WS_DISABLED | UDS_ARROWKEYS | UDS_AUTOBUDDY | UDS_SETBUDDYINT, 394, 2, 11, 14
|
|
||||||
LTEXT "frames", IDC_STATIC, 406, 5, 16, 8, SS_LEFT
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
|
||||||
IDD_MEM_VIEWER9 DIALOGEX 0, 0, 428, 178
|
|
||||||
STYLE DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_VISIBLE | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP
|
|
||||||
CAPTION "View Memory"
|
|
||||||
FONT 8, "MS Shell Dlg", 0, 0, 1
|
|
||||||
{
|
|
||||||
AUTORADIOBUTTON "8 bit", IDC_8_BIT, 10, 4, 29, 10, WS_GROUP | WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
AUTORADIOBUTTON "16 bit", IDC_16_BIT, 44, 4, 33, 10, WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
AUTORADIOBUTTON "32 bit", IDC_32_BIT, 82, 4, 33, 10, WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
LTEXT "Go to:", IDC_STATIC, 130, 4, 33, 10, SS_LEFT
|
|
||||||
EDITTEXT IDC_GOTOMEM, 155, 1, 82, 14, WS_GROUP | ES_AUTOHSCROLL | ES_UPPERCASE | ES_WANTRETURN
|
|
||||||
PUSHBUTTON "&GO", IDC_GO, 240, 1, 20, 14, BS_PUSHBUTTON
|
|
||||||
PUSHBUTTON "&Close", IDC_FERMER, 185, 162, 50, 14, BS_PUSHBUTTON
|
|
||||||
CONTROL "Rediger", IDC_MEM_BOX, "MemViewBox9", 0x50210000, 4, 16, 424, 142, 0x00000200
|
|
||||||
AUTOCHECKBOX "&Auto-update", IDC_AUTO_UPDATE, 327, 1, 54, 14, BS_AUTOCHECKBOX
|
|
||||||
EDITTEXT IDC_AUTO_UPDATE_SECS, 382, 2, 12, 14, WS_DISABLED | ES_AUTOHSCROLL | ES_READONLY
|
|
||||||
CONTROL "", IDC_AUTO_UPDATE_SPIN, UPDOWN_CLASS, WS_DISABLED | UDS_ARROWKEYS | UDS_AUTOBUDDY | UDS_SETBUDDYINT, 394, 2, 11, 14
|
|
||||||
LTEXT "frames", IDC_STATIC, 406, 5, 16, 8, SS_LEFT
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
|
|
||||||
IDD_MEM_VIEWER9 DIALOGEX 0, 0, 428, 178
|
|
||||||
STYLE DS_CENTER | DS_SETFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME
|
|
||||||
CAPTION "Visualisation de la memoire"
|
|
||||||
FONT 8, "MS Sans Serif", 0, 0, 1
|
|
||||||
{
|
|
||||||
AUTORADIOBUTTON "8 bit", IDC_8_BIT, 10, 4, 29, 10, WS_GROUP | WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
AUTORADIOBUTTON "16 bit", IDC_16_BIT, 44, 4, 33, 10, WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
AUTORADIOBUTTON "32 bit", IDC_32_BIT, 82, 4, 33, 10, WS_TABSTOP | BS_AUTORADIOBUTTON
|
|
||||||
LTEXT "Aller <20>E:", IDC_STATIC, 130, 4, 33, 10, SS_LEFT
|
|
||||||
EDITTEXT IDC_GOTOMEM, 155, 1, 82, 14, WS_GROUP | ES_AUTOHSCROLL | ES_UPPERCASE | ES_WANTRETURN
|
|
||||||
PUSHBUTTON "&GO", IDC_GO, 240, 1, 20, 14, BS_PUSHBUTTON
|
|
||||||
CONTROL "Edit", IDC_MEM_BOX, "MemViewBox9", 0x50210000, 4, 16, 424, 142, 0x00000200
|
|
||||||
PUSHBUTTON "&Fermer", IDC_FERMER, 185, 162, 50, 14, BS_PUSHBUTTON
|
|
||||||
AUTOCHECKBOX "&Auto-update", IDC_AUTO_UPDATE, 327, 1, 54, 14, BS_AUTOCHECKBOX
|
|
||||||
EDITTEXT IDC_AUTO_UPDATE_SECS, 382, 2, 12, 14, WS_DISABLED | ES_AUTOHSCROLL | ES_READONLY
|
|
||||||
CONTROL "", IDC_AUTO_UPDATE_SPIN, UPDOWN_CLASS, WS_DISABLED | UDS_ARROWKEYS | UDS_AUTOBUDDY | UDS_SETBUDDYINT, 394, 2, 11, 14
|
|
||||||
LTEXT "frames", IDC_STATIC, 406, 5, 16, 8, SS_LEFT
|
|
||||||
}
|
|
||||||
|
|
||||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
IDD_MICROPHONE DIALOG 0, 0, 241, 111
|
IDD_MICROPHONE DIALOG 0, 0, 241, 111
|
||||||
STYLE DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_SYSMENU
|
STYLE DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_SYSMENU
|
||||||
|
|
Loading…
Reference in New Issue