win32: add feature: dump all memory (new button in memory viewer; inspect debug.cpp for a map of the file)
This commit is contained in:
parent
2f01b6c2a0
commit
264dc80808
|
@ -208,6 +208,26 @@ void DEBUG_reset()
|
||||||
printf("DEBUG_reset: %08X\n",&DebugStatistics::print); //force a reference to this function
|
printf("DEBUG_reset: %08X\n",&DebugStatistics::print); //force a reference to this function
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void DEBUG_dumpMemory_fill(EMUFILE *fp, u32 size)
|
||||||
|
{
|
||||||
|
static std::vector<u8> buf;
|
||||||
|
buf.resize(size);
|
||||||
|
memset(&buf[0],0,size);
|
||||||
|
fp->fwrite(&buf[0],size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DEBUG_dumpMemory(EMUFILE* fp)
|
||||||
|
{
|
||||||
|
fp->fseek(0x000000,SEEK_SET); fp->fwrite(MMU.MAIN_MEM,0x800000); //arm9 main mem (8192K)
|
||||||
|
fp->fseek(0x900000,SEEK_SET); fp->fwrite(MMU.ARM9_DTCM,0x4000); //arm9 DTCM (16K)
|
||||||
|
fp->fseek(0xA00000,SEEK_SET); fp->fwrite(MMU.ARM9_ITCM,0x8000); //arm9 ITCM (32K)
|
||||||
|
fp->fseek(0xB00000,SEEK_SET); fp->fwrite(MMU.ARM9_LCD,0xA4000); //LCD mem 656K
|
||||||
|
fp->fseek(0xC00000,SEEK_SET); fp->fwrite(MMU.ARM9_VMEM,0x800); //OAM
|
||||||
|
fp->fseek(0xD00000,SEEK_SET); fp->fwrite(MMU.ARM7_ERAM,0x10000); //arm7 WRAM (64K)
|
||||||
|
fp->fseek(0xE00000,SEEK_SET); fp->fwrite(MMU.ARM7_WIRAM,0x10000); //arm7 wifi RAM ?
|
||||||
|
fp->fseek(0xF00000,SEEK_SET); fp->fwrite(MMU.SWIRAM,0x8000); //arm9/arm7 shared WRAM (32KB)
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------
|
//----------------------------------------------------
|
||||||
|
|
||||||
std::vector<Logger *> Logger::channels;
|
std::vector<Logger *> Logger::channels;
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "mem.h"
|
#include "mem.h"
|
||||||
|
#include "emufile.h"
|
||||||
|
|
||||||
struct DebugStatistics
|
struct DebugStatistics
|
||||||
{
|
{
|
||||||
|
@ -47,6 +48,7 @@ struct DebugStatistics
|
||||||
extern DebugStatistics DEBUG_statistics;
|
extern DebugStatistics DEBUG_statistics;
|
||||||
|
|
||||||
void DEBUG_reset();
|
void DEBUG_reset();
|
||||||
|
void DEBUG_dumpMemory(EMUFILE* fp);
|
||||||
|
|
||||||
struct armcpu_t;
|
struct armcpu_t;
|
||||||
|
|
||||||
|
|
|
@ -279,6 +279,7 @@ INT_PTR CALLBACK MemView_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
case IDC_DUMPALL:
|
||||||
case IDC_RAWDUMP:
|
case IDC_RAWDUMP:
|
||||||
{
|
{
|
||||||
char fileName[256] = "";
|
char fileName[256] = "";
|
||||||
|
@ -296,16 +297,19 @@ INT_PTR CALLBACK MemView_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
||||||
|
|
||||||
if(GetSaveFileName(&ofn))
|
if(GetSaveFileName(&ofn))
|
||||||
{
|
{
|
||||||
FILE *f;
|
|
||||||
u8 memory[0x100];
|
|
||||||
|
|
||||||
MMU_DumpMemBlock(wnd->cpu, wnd->address, 0x100, memory);
|
if(LOWORD(wParam) == IDC_RAWDUMP)
|
||||||
|
{
|
||||||
f = fopen(fileName, "ab");
|
EMUFILE_FILE f(fileName,"ab");
|
||||||
|
u8 memory[0x100];
|
||||||
fwrite(memory, 0x100, 1, f);
|
MMU_DumpMemBlock(wnd->cpu, wnd->address, 0x100, memory);
|
||||||
|
f.fwrite(memory, 0x100);
|
||||||
fclose(f);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EMUFILE_FILE f(fileName,"wb");
|
||||||
|
DEBUG_dumpMemory(&f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -336,6 +336,7 @@
|
||||||
#define IDC_SYNCHMODE_SYNCH 1013
|
#define IDC_SYNCHMODE_SYNCH 1013
|
||||||
#define IDC_FIRMWAREBROWSE 1014
|
#define IDC_FIRMWAREBROWSE 1014
|
||||||
#define IDC_VOLUME 1014
|
#define IDC_VOLUME 1014
|
||||||
|
#define IDC_DUMPALL 1014
|
||||||
#define IDC_SYNCHMETHOD_N 1015
|
#define IDC_SYNCHMETHOD_N 1015
|
||||||
#define IDC_FIRMWAREBOOT 1016
|
#define IDC_FIRMWAREBOOT 1016
|
||||||
#define IDC_SYNCHMETHOD_Z 1016
|
#define IDC_SYNCHMETHOD_Z 1016
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue