Added debugging tools
Breakpoints, memory breakpoints, made disassembler better in general
This commit is contained in:
parent
316103d2ec
commit
5bd5c630f1
|
@ -24,6 +24,7 @@
|
|||
#include "firmware.h"
|
||||
#include "mc.h"
|
||||
#include "mem.h"
|
||||
#include "NDSSystem.h"
|
||||
|
||||
#ifdef HAVE_LUA
|
||||
#include "lua-engine.h"
|
||||
|
@ -699,6 +700,16 @@ FORCEINLINE u8 _MMU_read08(const int PROCNUM, const MMU_ACCESS_TYPE AT, const u3
|
|||
CallRegisteredLuaMemHook(addr, 1, /*FIXME*/ 0, LUAMEMHOOK_READ);
|
||||
#endif
|
||||
|
||||
// break points, wheee
|
||||
for (int i = 0; i < memReadBreakPoints.size(); ++i)
|
||||
{
|
||||
if (addr == memReadBreakPoints[i])
|
||||
{
|
||||
execute = false;
|
||||
i = memReadBreakPoints.size();
|
||||
}
|
||||
}
|
||||
|
||||
if(PROCNUM==ARMCPU_ARM9)
|
||||
if((addr&(~0x3FFF)) == MMU.DTCMRegion)
|
||||
{
|
||||
|
@ -734,6 +745,16 @@ FORCEINLINE u16 _MMU_read16(const int PROCNUM, const MMU_ACCESS_TYPE AT, const u
|
|||
CallRegisteredLuaMemHook(addr, 2, /*FIXME*/ 0, LUAMEMHOOK_READ);
|
||||
#endif
|
||||
|
||||
// break points, wheee
|
||||
for (int i = 0; i < memReadBreakPoints.size(); ++i)
|
||||
{
|
||||
if (addr == memReadBreakPoints[i])
|
||||
{
|
||||
execute = false;
|
||||
i = memReadBreakPoints.size();
|
||||
}
|
||||
}
|
||||
|
||||
//special handling for execution from arm9, since we spend so much time in there
|
||||
if(PROCNUM==ARMCPU_ARM9 && AT == MMU_AT_CODE)
|
||||
{
|
||||
|
@ -781,6 +802,15 @@ FORCEINLINE u32 _MMU_read32(const int PROCNUM, const MMU_ACCESS_TYPE AT, const u
|
|||
#ifdef HAVE_LUA
|
||||
CallRegisteredLuaMemHook(addr, 4, /*FIXME*/ 0, LUAMEMHOOK_READ);
|
||||
#endif
|
||||
// break points, wheee
|
||||
for (int i = 0; i < memReadBreakPoints.size(); ++i)
|
||||
{
|
||||
if (addr == memReadBreakPoints[i])
|
||||
{
|
||||
execute = false;
|
||||
i = memReadBreakPoints.size();
|
||||
}
|
||||
}
|
||||
|
||||
//special handling for execution from arm9, since we spend so much time in there
|
||||
if(PROCNUM==ARMCPU_ARM9 && AT == MMU_AT_CODE)
|
||||
|
@ -837,6 +867,16 @@ FORCEINLINE void _MMU_write08(const int PROCNUM, const MMU_ACCESS_TYPE AT, const
|
|||
if((addr&(~0x3FFF)) == MMU.DTCMRegion) return; //dtcm
|
||||
}
|
||||
|
||||
// break points, wheee
|
||||
for (int i = 0; i < memWriteBreakPoints.size(); ++i)
|
||||
{
|
||||
if (addr == memWriteBreakPoints[i])
|
||||
{
|
||||
execute = false;
|
||||
i = memWriteBreakPoints.size();
|
||||
}
|
||||
}
|
||||
|
||||
if(PROCNUM==ARMCPU_ARM9)
|
||||
if((addr&(~0x3FFF)) == MMU.DTCMRegion)
|
||||
{
|
||||
|
@ -876,6 +916,16 @@ FORCEINLINE void _MMU_write16(const int PROCNUM, const MMU_ACCESS_TYPE AT, const
|
|||
if((addr&(~0x3FFF)) == MMU.DTCMRegion) return; //dtcm
|
||||
}
|
||||
|
||||
// break points, wheee
|
||||
for (int i = 0; i < memWriteBreakPoints.size(); ++i)
|
||||
{
|
||||
if (addr == memWriteBreakPoints[i])
|
||||
{
|
||||
execute = false;
|
||||
i = memWriteBreakPoints.size();
|
||||
}
|
||||
}
|
||||
|
||||
if(PROCNUM==ARMCPU_ARM9)
|
||||
if((addr&(~0x3FFF)) == MMU.DTCMRegion)
|
||||
{
|
||||
|
@ -915,6 +965,16 @@ FORCEINLINE void _MMU_write32(const int PROCNUM, const MMU_ACCESS_TYPE AT, const
|
|||
if((addr&(~0x3FFF)) == MMU.DTCMRegion) return; //dtcm
|
||||
}
|
||||
|
||||
// break points, wheee
|
||||
for (int i = 0; i < memWriteBreakPoints.size(); ++i)
|
||||
{
|
||||
if (addr == memWriteBreakPoints[i])
|
||||
{
|
||||
execute = false;
|
||||
i = memWriteBreakPoints.size();
|
||||
}
|
||||
}
|
||||
|
||||
if(PROCNUM==ARMCPU_ARM9)
|
||||
if((addr&(~0x3FFF)) == MMU.DTCMRegion)
|
||||
{
|
||||
|
|
|
@ -59,6 +59,8 @@
|
|||
#include "wifi.h"
|
||||
#include "Database.h"
|
||||
#include "frontend/modules/Disassembler.h"
|
||||
#include "frontend/windows/disView.h"
|
||||
#include "display.h"
|
||||
|
||||
#ifdef GDB_STUB
|
||||
#include "gdbstub.h"
|
||||
|
@ -91,6 +93,9 @@ GameInfo gameInfo;
|
|||
NDSSystem nds;
|
||||
CFIRMWARE *extFirmwareObj = NULL;
|
||||
|
||||
std::vector<int> memReadBreakPoints;
|
||||
std::vector<int> memWriteBreakPoints;
|
||||
|
||||
using std::min;
|
||||
using std::max;
|
||||
|
||||
|
@ -1911,6 +1916,29 @@ static /*donotinline*/ std::pair<s32,s32> armInnerLoop(
|
|||
s32 timer = minarmtime<doarm9,doarm7>(arm9,arm7);
|
||||
while(timer < s32next && !sequencer.reschedule && execute)
|
||||
{
|
||||
// breakpoint handling
|
||||
for (int i = 0; i < NDS_ARM9.breakPoints.size(); ++i) {
|
||||
if (NDS_ARM9.instruct_adr == NDS_ARM9.breakPoints[i] && !NDS_ARM9.debugStep) {
|
||||
emu_paused = true;
|
||||
paused = true;
|
||||
execute = false;
|
||||
// update debug display
|
||||
PostMessageA(DisViewWnd[0], WM_COMMAND, IDC_DISASMSEEK, NDS_ARM9.instruct_adr);
|
||||
InvalidateRect(DisViewWnd[0], NULL, FALSE);
|
||||
return std::make_pair(arm9, arm7);
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < NDS_ARM7.breakPoints.size(); ++i) {
|
||||
if (NDS_ARM7.instruct_adr == NDS_ARM7.breakPoints[i] && !NDS_ARM7.debugStep) {
|
||||
emu_paused = true;
|
||||
paused = true;
|
||||
execute = false;
|
||||
// update debug display
|
||||
PostMessageA(DisViewWnd[1], WM_COMMAND, IDC_DISASMSEEK, NDS_ARM7.instruct_adr);
|
||||
InvalidateRect(DisViewWnd[1], NULL, FALSE);
|
||||
return std::make_pair(arm9, arm7);
|
||||
}
|
||||
}
|
||||
if(doarm9 && (!doarm7 || arm9 <= timer))
|
||||
{
|
||||
if(!(NDS_ARM9.freeze & CPU_FREEZE_WAIT_IRQ) && !nds.freezeBus)
|
||||
|
@ -1933,6 +1961,24 @@ static /*donotinline*/ std::pair<s32,s32> armInnerLoop(
|
|||
nds.idleCycles[0] += arm9-temp;
|
||||
if (gxFIFO.size < 255) nds.freezeBus &= ~1;
|
||||
}
|
||||
// for proper stepping...
|
||||
if (NDS_ARM9.debugStep) {
|
||||
NDS_ARM9.debugStep = false;
|
||||
execute = false;
|
||||
PostMessageA(DisViewWnd[0], WM_COMMAND, IDC_DISASMSEEK, NDS_ARM9.instruct_adr);
|
||||
InvalidateRect(DisViewWnd[0], NULL, FALSE);
|
||||
}
|
||||
if (NDS_ARM9.stepOverBreak == NDS_ARM9.instruct_adr && NDS_ARM9.stepOverBreak != 0) {
|
||||
NDS_ARM9.stepOverBreak = 0;
|
||||
execute = false;
|
||||
PostMessageA(DisViewWnd[0], WM_COMMAND, IDC_DISASMSEEK, NDS_ARM9.instruct_adr);
|
||||
InvalidateRect(DisViewWnd[0], NULL, FALSE);
|
||||
}
|
||||
// aaand handle step to return
|
||||
if (NDS_ARM9.runToRetTmp != 0 && NDS_ARM9.runToRetTmp == NDS_ARM9.instruct_adr) {
|
||||
NDS_ARM9.runToRetTmp = 0;
|
||||
NDS_ARM9.runToRet = true;
|
||||
}
|
||||
}
|
||||
if(doarm7 && (!doarm9 || arm7 <= timer))
|
||||
{
|
||||
|
@ -1964,6 +2010,23 @@ static /*donotinline*/ std::pair<s32,s32> armInnerLoop(
|
|||
#endif
|
||||
}
|
||||
}
|
||||
if (NDS_ARM7.debugStep) {
|
||||
NDS_ARM7.debugStep = false;
|
||||
execute = false;
|
||||
PostMessageA(DisViewWnd[1], WM_COMMAND, IDC_DISASMSEEK, NDS_ARM7.instruct_adr);
|
||||
InvalidateRect(DisViewWnd[1], NULL, FALSE);
|
||||
}
|
||||
if (NDS_ARM7.stepOverBreak == NDS_ARM7.instruct_adr && NDS_ARM7.stepOverBreak != 0) {
|
||||
NDS_ARM7.stepOverBreak = 0;
|
||||
execute = false;
|
||||
PostMessageA(DisViewWnd[1], WM_COMMAND, IDC_DISASMSEEK, NDS_ARM7.instruct_adr);
|
||||
InvalidateRect(DisViewWnd[1], NULL, FALSE);
|
||||
}
|
||||
// aaand handle step to return
|
||||
if (NDS_ARM7.runToRetTmp != 0 && NDS_ARM7.runToRetTmp == NDS_ARM7.instruct_adr) {
|
||||
NDS_ARM7.runToRetTmp = 0;
|
||||
NDS_ARM7.runToRet = true;
|
||||
}
|
||||
}
|
||||
|
||||
timer = minarmtime<doarm9,doarm7>(arm9,arm7);
|
||||
|
@ -1984,6 +2047,7 @@ void NDS_debug_break()
|
|||
void NDS_debug_continue()
|
||||
{
|
||||
NDS_ARM9.stalled = NDS_ARM7.stalled = 0;
|
||||
execute = true;
|
||||
}
|
||||
|
||||
void NDS_debug_step()
|
||||
|
|
|
@ -405,6 +405,9 @@ typedef struct TSCalInfo
|
|||
|
||||
extern GameInfo gameInfo;
|
||||
|
||||
extern std::vector<int> memReadBreakPoints;
|
||||
extern std::vector<int> memWriteBreakPoints;
|
||||
|
||||
|
||||
struct UserButtons : buttonstruct<bool>
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
Copyright (C) 2006 yopyop
|
||||
Copyright (C) 2006-2007 shash
|
||||
Copyright (C) 2008-2016 DeSmuME team
|
||||
|
@ -3104,6 +3104,10 @@ TEMPLATE static u32 FASTCALL OP_BLX_REG(const u32 i)
|
|||
cpu->CPSR.bits.T = BIT0(tmp);
|
||||
cpu->R[15] = tmp & (0xFFFFFFFC|(cpu->CPSR.bits.T<<1));
|
||||
cpu->next_instruction = cpu->R[15];
|
||||
if (cpu->runToRet) {
|
||||
cpu->runToRet = false;
|
||||
cpu->runToRetTmp = cpu->next_instruction + 4;
|
||||
}
|
||||
return 3;
|
||||
}
|
||||
|
||||
|
@ -3145,6 +3149,10 @@ TEMPLATE static u32 FASTCALL OP_BL(const u32 i)
|
|||
cpu->R[15] += (off<<2);
|
||||
cpu->R[15] &= (0xFFFFFFFC|(cpu->CPSR.bits.T<<1));
|
||||
cpu->next_instruction = cpu->R[15];
|
||||
if (cpu->runToRet) {
|
||||
cpu->runToRet = false;
|
||||
cpu->runToRetTmp = cpu->next_instruction + 4;
|
||||
}
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
@ -3403,12 +3411,12 @@ TEMPLATE static u32 FASTCALL OP_SMLA_T_T(const u32 i)
|
|||
|
||||
TEMPLATE static u32 FASTCALL OP_SMLAL_B_B(const u32 i)
|
||||
{
|
||||
s32 a = LWORD(cpu->R[REG_POS(i,0)]);
|
||||
s32 b = LWORD(cpu->R[REG_POS(i,8)]);
|
||||
s64 product = (s64)(a*b);
|
||||
s64 dst64 = (s64)(cpu->R[REG_POS(i,12)] + (((s64)cpu->R[REG_POS(i,16)])<<32));
|
||||
s64 sum = dst64 + product;
|
||||
cpu->R[REG_POS(i,12)] = (u32)(sum & 0xFFFFFFFF);
|
||||
s32 a = LWORD(cpu->R[REG_POS(i,0)]);
|
||||
s32 b = LWORD(cpu->R[REG_POS(i,8)]);
|
||||
s64 product = (s64)(a*b);
|
||||
s64 dst64 = (s64)(cpu->R[REG_POS(i,12)] + (((s64)cpu->R[REG_POS(i,16)])<<32));
|
||||
s64 sum = dst64 + product;
|
||||
cpu->R[REG_POS(i,12)] = (u32)(sum & 0xFFFFFFFF);
|
||||
cpu->R[REG_POS(i,16)] = (u32)((sum>>32) & 0xFFFFFFFF);
|
||||
|
||||
return 2;
|
||||
|
@ -3416,12 +3424,12 @@ TEMPLATE static u32 FASTCALL OP_SMLAL_B_B(const u32 i)
|
|||
|
||||
TEMPLATE static u32 FASTCALL OP_SMLAL_B_T(const u32 i)
|
||||
{
|
||||
s32 a = LWORD(cpu->R[REG_POS(i,0)]);
|
||||
s32 b = HWORD(cpu->R[REG_POS(i,8)]);
|
||||
s64 product = (s64)(a*b);
|
||||
s64 dst64 = (s64)(cpu->R[REG_POS(i,12)] + (((s64)cpu->R[REG_POS(i,16)])<<32));
|
||||
s64 sum = dst64 + product;
|
||||
cpu->R[REG_POS(i,12)] = (u32)(sum & 0xFFFFFFFF);
|
||||
s32 a = LWORD(cpu->R[REG_POS(i,0)]);
|
||||
s32 b = HWORD(cpu->R[REG_POS(i,8)]);
|
||||
s64 product = (s64)(a*b);
|
||||
s64 dst64 = (s64)(cpu->R[REG_POS(i,12)] + (((s64)cpu->R[REG_POS(i,16)])<<32));
|
||||
s64 sum = dst64 + product;
|
||||
cpu->R[REG_POS(i,12)] = (u32)(sum & 0xFFFFFFFF);
|
||||
cpu->R[REG_POS(i,16)] = (u32)((sum>>32) & 0xFFFFFFFF);
|
||||
|
||||
return 2;
|
||||
|
@ -3429,12 +3437,12 @@ TEMPLATE static u32 FASTCALL OP_SMLAL_B_T(const u32 i)
|
|||
|
||||
TEMPLATE static u32 FASTCALL OP_SMLAL_T_B(const u32 i)
|
||||
{
|
||||
s32 a = HWORD(cpu->R[REG_POS(i,0)]);
|
||||
s32 b = LWORD(cpu->R[REG_POS(i,8)]);
|
||||
s64 product = (s64)(a*b);
|
||||
s64 dst64 = (s64)(cpu->R[REG_POS(i,12)] + (((s64)cpu->R[REG_POS(i,16)])<<32));
|
||||
s64 sum = dst64 + product;
|
||||
cpu->R[REG_POS(i,12)] = (u32)(sum & 0xFFFFFFFF);
|
||||
s32 a = HWORD(cpu->R[REG_POS(i,0)]);
|
||||
s32 b = LWORD(cpu->R[REG_POS(i,8)]);
|
||||
s64 product = (s64)(a*b);
|
||||
s64 dst64 = (s64)(cpu->R[REG_POS(i,12)] + (((s64)cpu->R[REG_POS(i,16)])<<32));
|
||||
s64 sum = dst64 + product;
|
||||
cpu->R[REG_POS(i,12)] = (u32)(sum & 0xFFFFFFFF);
|
||||
cpu->R[REG_POS(i,16)] = (u32)((sum>>32) & 0xFFFFFFFF);
|
||||
|
||||
return 2;
|
||||
|
@ -3442,12 +3450,12 @@ TEMPLATE static u32 FASTCALL OP_SMLAL_T_B(const u32 i)
|
|||
|
||||
TEMPLATE static u32 FASTCALL OP_SMLAL_T_T(const u32 i)
|
||||
{
|
||||
s32 a = HWORD(cpu->R[REG_POS(i,0)]);
|
||||
s32 b = HWORD(cpu->R[REG_POS(i,8)]);
|
||||
s64 product = (s64)(a*b);
|
||||
s64 dst64 = (s64)(cpu->R[REG_POS(i,12)] + (((s64)cpu->R[REG_POS(i,16)])<<32));
|
||||
s64 sum = dst64 + product;
|
||||
cpu->R[REG_POS(i,12)] = (u32)(sum & 0xFFFFFFFF);
|
||||
s32 a = HWORD(cpu->R[REG_POS(i,0)]);
|
||||
s32 b = HWORD(cpu->R[REG_POS(i,8)]);
|
||||
s64 product = (s64)(a*b);
|
||||
s64 dst64 = (s64)(cpu->R[REG_POS(i,12)] + (((s64)cpu->R[REG_POS(i,16)])<<32));
|
||||
s64 sum = dst64 + product;
|
||||
cpu->R[REG_POS(i,12)] = (u32)(sum & 0xFFFFFFFF);
|
||||
cpu->R[REG_POS(i,16)] = (u32)((sum>>32) & 0xFFFFFFFF);
|
||||
|
||||
return 2;
|
||||
|
@ -4750,6 +4758,12 @@ TEMPLATE static u32 FASTCALL OP_LDMIA(const u32 i)
|
|||
//start += 4;
|
||||
cpu->next_instruction = registres[15];
|
||||
c += MMU_memAccessCycles<PROCNUM,32,MMU_AD_READ>(start);
|
||||
|
||||
// debugging
|
||||
if (cpu->runToRet) {
|
||||
execute = false;
|
||||
cpu->runToRet = false;
|
||||
}
|
||||
}
|
||||
|
||||
return MMU_aluMemCycles<PROCNUM>(2, c);
|
||||
|
@ -4791,6 +4805,12 @@ TEMPLATE static u32 FASTCALL OP_LDMIB(const u32 i)
|
|||
else
|
||||
registres[15] = tmp & 0xFFFFFFFC;
|
||||
cpu->next_instruction = registres[15];
|
||||
|
||||
// debugging
|
||||
if (cpu->runToRet) {
|
||||
execute = false;
|
||||
cpu->runToRet = false;
|
||||
}
|
||||
return MMU_aluMemCycles<PROCNUM>(4, c);
|
||||
}
|
||||
|
||||
|
@ -4817,6 +4837,12 @@ TEMPLATE static u32 FASTCALL OP_LDMDA(const u32 i)
|
|||
c += MMU_memAccessCycles<PROCNUM,32,MMU_AD_READ>(start);
|
||||
start -= 4;
|
||||
cpu->next_instruction = registres[15];
|
||||
|
||||
// debugging
|
||||
if (cpu->runToRet) {
|
||||
execute = false;
|
||||
cpu->runToRet = false;
|
||||
}
|
||||
}
|
||||
|
||||
OP_L_DA(14, start);
|
||||
|
@ -4858,6 +4884,12 @@ TEMPLATE static u32 FASTCALL OP_LDMDB(const u32 i)
|
|||
registres[15] = tmp & 0xFFFFFFFC;
|
||||
cpu->next_instruction = registres[15];
|
||||
c += MMU_memAccessCycles<PROCNUM,32,MMU_AD_READ>(start);
|
||||
|
||||
// debugging
|
||||
if (cpu->runToRet) {
|
||||
execute = false;
|
||||
cpu->runToRet = false;
|
||||
}
|
||||
}
|
||||
|
||||
OP_L_DB(14, start);
|
||||
|
@ -4915,6 +4947,12 @@ TEMPLATE static u32 FASTCALL OP_LDMIA_W(const u32 i)
|
|||
c += MMU_memAccessCycles<PROCNUM,32,MMU_AD_READ>(start);
|
||||
start += 4;
|
||||
cpu->next_instruction = registres[15];
|
||||
|
||||
// debugging
|
||||
if (cpu->runToRet) {
|
||||
execute = false;
|
||||
cpu->runToRet = false;
|
||||
}
|
||||
}
|
||||
|
||||
if(i & (1 << REG_POS(i,16))) {
|
||||
|
@ -4965,6 +5003,12 @@ TEMPLATE static u32 FASTCALL OP_LDMIB_W(const u32 i)
|
|||
else
|
||||
registres[15] = tmp & 0xFFFFFFFC;
|
||||
cpu->next_instruction = registres[15];
|
||||
|
||||
// debugging
|
||||
if (cpu->runToRet) {
|
||||
execute = false;
|
||||
cpu->runToRet = false;
|
||||
}
|
||||
}
|
||||
|
||||
if(i & (1 << REG_POS(i,16))) {
|
||||
|
@ -4998,6 +5042,12 @@ TEMPLATE static u32 FASTCALL OP_LDMDA_W(const u32 i)
|
|||
c += MMU_memAccessCycles<PROCNUM,32,MMU_AD_READ>(start);
|
||||
start -= 4;
|
||||
cpu->next_instruction = registres[15];
|
||||
|
||||
// debugging
|
||||
if (cpu->runToRet) {
|
||||
execute = false;
|
||||
cpu->runToRet = false;
|
||||
}
|
||||
}
|
||||
|
||||
OP_L_DA(14, start);
|
||||
|
@ -5047,6 +5097,12 @@ TEMPLATE static u32 FASTCALL OP_LDMDB_W(const u32 i)
|
|||
registres[15] = tmp & 0xFFFFFFFC;
|
||||
cpu->next_instruction = registres[15];
|
||||
c += MMU_memAccessCycles<PROCNUM,32,MMU_AD_READ>(start);
|
||||
|
||||
// debugging
|
||||
if (cpu->runToRet) {
|
||||
execute = false;
|
||||
cpu->runToRet = false;
|
||||
}
|
||||
}
|
||||
|
||||
OP_L_DB(14, start);
|
||||
|
@ -5125,6 +5181,12 @@ TEMPLATE static u32 FASTCALL OP_LDMIA2(const u32 i)
|
|||
//start += 4;
|
||||
cpu->next_instruction = cpu->R[15];
|
||||
c += MMU_memAccessCycles<PROCNUM,32,MMU_AD_READ>(start);
|
||||
|
||||
// debugging
|
||||
if (cpu->runToRet) {
|
||||
execute = false;
|
||||
cpu->runToRet = false;
|
||||
}
|
||||
}
|
||||
return MMU_aluMemCycles<PROCNUM>(2, c);
|
||||
}
|
||||
|
@ -5180,6 +5242,12 @@ TEMPLATE static u32 FASTCALL OP_LDMIB2(const u32 i)
|
|||
cpu->changeCPSR();
|
||||
cpu->next_instruction = registres[15];
|
||||
c += MMU_memAccessCycles<PROCNUM,32,MMU_AD_READ>(start);
|
||||
|
||||
// debugging
|
||||
if (cpu->runToRet) {
|
||||
execute = false;
|
||||
cpu->runToRet = false;
|
||||
}
|
||||
}
|
||||
return MMU_aluMemCycles<PROCNUM>(2, c);
|
||||
}
|
||||
|
@ -5212,6 +5280,12 @@ TEMPLATE static u32 FASTCALL OP_LDMDA2(const u32 i)
|
|||
c += MMU_memAccessCycles<PROCNUM,32,MMU_AD_READ>(start);
|
||||
start -= 4;
|
||||
cpu->next_instruction = registres[15];
|
||||
|
||||
// debugging
|
||||
if (cpu->runToRet) {
|
||||
execute = false;
|
||||
cpu->runToRet = false;
|
||||
}
|
||||
}
|
||||
|
||||
OP_L_DA(14, start);
|
||||
|
@ -5270,6 +5344,12 @@ TEMPLATE static u32 FASTCALL OP_LDMDB2(const u32 i)
|
|||
cpu->changeCPSR();
|
||||
cpu->next_instruction = registres[15];
|
||||
c += MMU_memAccessCycles<PROCNUM,32,MMU_AD_READ>(start);
|
||||
|
||||
// debugging
|
||||
if (cpu->runToRet) {
|
||||
execute = false;
|
||||
cpu->runToRet = false;
|
||||
}
|
||||
}
|
||||
|
||||
OP_L_DB(14, start);
|
||||
|
|
|
@ -327,6 +327,13 @@ struct armcpu_t
|
|||
|
||||
/** the ctrl interface */
|
||||
armcpu_ctrl_iface ctrl_iface;
|
||||
|
||||
// debugging stuff
|
||||
int runToRetTmp;
|
||||
bool runToRet;
|
||||
int stepOverBreak;
|
||||
std::vector<int> breakPoints;
|
||||
bool debugStep;
|
||||
};
|
||||
|
||||
int armcpu_new( armcpu_t *armcpu, u32 id);
|
||||
|
|
|
@ -37,8 +37,9 @@ typedef struct
|
|||
BOOL autoup;
|
||||
u32 autoup_secs;
|
||||
u32 curr_ligne;
|
||||
armcpu_t *cpu;
|
||||
armcpu_t* cpu;
|
||||
u16 mode;
|
||||
s32 break_pos;
|
||||
} disview_struct;
|
||||
|
||||
disview_struct *DisView7 = NULL;
|
||||
|
@ -47,7 +48,7 @@ disview_struct *DisView9 = NULL;
|
|||
extern TOOLSCLASS *ViewDisasm_ARM7;
|
||||
extern TOOLSCLASS *ViewDisasm_ARM9;
|
||||
|
||||
static HWND DisViewWnd[2] = {NULL, NULL};
|
||||
HWND DisViewWnd[2] = {NULL, NULL};
|
||||
|
||||
#define INDEX(i) ((((i)>>16)&0xFF0)|(((i)>>4)&0xF))
|
||||
|
||||
|
@ -90,12 +91,23 @@ LRESULT DisViewBox_OnPaint(HWND hwnd, disview_struct *win, WPARAM wParam, LPARAM
|
|||
u32 i;
|
||||
u32 adr;
|
||||
|
||||
if (win->autoup||win->autogo)
|
||||
win->curr_ligne = (win->cpu->instruct_adr >> 2);
|
||||
//if (win->autoup||win->autogo)
|
||||
// win->curr_ligne = (win->cpu->instruct_adr >> 2);
|
||||
adr = win->curr_ligne*4;
|
||||
|
||||
SetTextColor(mem_dc, RGB(0, 0, 0));
|
||||
|
||||
for(i = 0; i < nbligne; ++i)
|
||||
{
|
||||
SetBkColor(mem_dc, RGB(255, 255, 255));
|
||||
for (int j = 0; j < win->cpu->breakPoints.size(); ++j) {
|
||||
if (adr == win->cpu->breakPoints[j]) {
|
||||
SetBkColor(mem_dc, RGB(255, 0, 0));
|
||||
}
|
||||
}
|
||||
if (adr == win->cpu->instruct_adr) {
|
||||
SetBkColor(mem_dc, RGB(0, 255, 0));
|
||||
}
|
||||
u32 ins = _MMU_read32(win->cpu->proc_ID, MMU_AT_DEBUG, adr);
|
||||
des_arm_instructions_set[INDEX(ins)](adr, ins, txt);
|
||||
sprintf(text, "%04X:%04X %08X %s", (int)(adr>>16), (int)(adr&0xFFFF), (int)ins, txt);
|
||||
|
@ -130,6 +142,15 @@ LRESULT DisViewBox_OnPaint(HWND hwnd, disview_struct *win, WPARAM wParam, LPARAM
|
|||
|
||||
for(i = 0; i < nbligne; ++i)
|
||||
{
|
||||
SetBkColor(mem_dc, RGB(255, 255, 255));
|
||||
for (int j = 0; j < win->cpu->breakPoints.size(); ++j) {
|
||||
if (adr == win->cpu->breakPoints[j]) {
|
||||
SetBkColor(mem_dc, RGB(255, 0, 0));
|
||||
}
|
||||
}
|
||||
if (adr == win->cpu->instruct_adr) {
|
||||
SetBkColor(mem_dc, RGB(0, 255, 0));
|
||||
}
|
||||
u32 ins = _MMU_read16(win->cpu->proc_ID, MMU_AT_DEBUG, adr);
|
||||
des_thumb_instructions_set[ins>>6](adr, ins, txt);
|
||||
sprintf(text, "%04X:%04X %04X %s", (int)(adr>>16), (int)(adr&0xFFFF), (int)ins, txt);
|
||||
|
@ -174,53 +195,71 @@ LRESULT DisViewDialog_OnPaint(HWND hwnd, disview_struct *win, WPARAM wParam, LPA
|
|||
for(i = 0; i < 16; ++i)
|
||||
{
|
||||
sprintf(text, "%08X", (int)win->cpu->R[i]);
|
||||
SetWindowText(GetDlgItem(hwnd, IDC_R0+i), text);
|
||||
//SetWindowText(GetDlgItem(hwnd, IDC_R0+i), text);
|
||||
SetDlgItemText(hwnd, IDC_R0 + i, text);
|
||||
}
|
||||
|
||||
#define OFF 16
|
||||
|
||||
#define CPSROFF 288
|
||||
|
||||
SetBkMode(hdc, TRANSPARENT);
|
||||
if(win->cpu->CPSR.bits.N)
|
||||
SetTextColor(hdc, RGB(255,0,0));
|
||||
else
|
||||
SetTextColor(hdc, RGB(70, 70, 70));
|
||||
TextOut(hdc, 452+OFF, 238, "N", 1);
|
||||
TextOut(hdc, 452+OFF, CPSROFF, "N", 1);
|
||||
|
||||
if(win->cpu->CPSR.bits.Z)
|
||||
SetTextColor(hdc, RGB(255,0,0));
|
||||
else
|
||||
SetTextColor(hdc, RGB(70, 70, 70));
|
||||
TextOut(hdc, 464+OFF, 238, "Z", 1);
|
||||
TextOut(hdc, 464+OFF, CPSROFF, "Z", 1);
|
||||
|
||||
if(win->cpu->CPSR.bits.C)
|
||||
SetTextColor(hdc, RGB(255,0,0));
|
||||
else
|
||||
SetTextColor(hdc, RGB(70, 70, 70));
|
||||
TextOut(hdc, 475+OFF, 238, "C", 1);
|
||||
TextOut(hdc, 475+OFF, CPSROFF, "C", 1);
|
||||
|
||||
if(win->cpu->CPSR.bits.V)
|
||||
SetTextColor(hdc, RGB(255,0,0));
|
||||
else
|
||||
SetTextColor(hdc, RGB(70, 70, 70));
|
||||
TextOut(hdc, 486+OFF, 238, "V", 1);
|
||||
TextOut(hdc, 486+OFF, CPSROFF, "V", 1);
|
||||
|
||||
if(win->cpu->CPSR.bits.Q)
|
||||
SetTextColor(hdc, RGB(255,0,0));
|
||||
else
|
||||
SetTextColor(hdc, RGB(70, 70, 70));
|
||||
TextOut(hdc, 497+OFF, 238, "Q", 1);
|
||||
TextOut(hdc, 497+OFF, CPSROFF, "Q", 1);
|
||||
|
||||
if(!win->cpu->CPSR.bits.I)
|
||||
SetTextColor(hdc, RGB(255,0,0));
|
||||
else
|
||||
SetTextColor(hdc, RGB(70, 70, 70));
|
||||
TextOut(hdc, 508+OFF, 238, "I", 1);
|
||||
TextOut(hdc, 508+OFF, CPSROFF, "I", 1);
|
||||
|
||||
sprintf(text, "%02X", (int)win->cpu->CPSR.bits.mode);
|
||||
SetWindowText(GetDlgItem(hwnd, IDC_MODE), text);
|
||||
|
||||
sprintf(text, "%08X", MMU.timer[0][0]);//win->cpu->SPSR);
|
||||
SetWindowText(GetDlgItem(hwnd, IDC_TMP), text);
|
||||
|
||||
// weehee break points drawing
|
||||
for (int i = 0; i < 8; ++i) {
|
||||
int j = i + win->break_pos;
|
||||
if (j < win->cpu->breakPoints.size()) {
|
||||
sprintf(text, "%08X", win->cpu->breakPoints[j]);
|
||||
}
|
||||
else {
|
||||
sprintf(text, "%08X", 0);
|
||||
}
|
||||
SetWindowText(GetDlgItem(hwnd, IDC_BP0 + i), text);
|
||||
}
|
||||
|
||||
sprintf(text, "%02i", win->break_pos);
|
||||
SetWindowText(GetDlgItem(hwnd, IDC_BPCOUNT), text);
|
||||
|
||||
EndPaint(hwnd, &ps);
|
||||
return 1;
|
||||
|
@ -308,7 +347,7 @@ BOOL CALLBACK ViewDisasm_ARM7Proc (HWND hwnd, UINT message, WPARAM wParam, LPARA
|
|||
UDM_SETRANGE, 0, MAKELONG(99, 1));
|
||||
SendMessage(GetDlgItem(hwnd, IDC_AUTO_UPDATE_SPIN),
|
||||
UDM_SETPOS32, 0, DisView7->autoup_secs);
|
||||
DisViewWnd[1] = NULL;
|
||||
DisViewWnd[1] = hwnd;
|
||||
return 1;
|
||||
}
|
||||
case WM_CLOSE :
|
||||
|
@ -332,6 +371,13 @@ BOOL CALLBACK ViewDisasm_ARM7Proc (HWND hwnd, UINT message, WPARAM wParam, LPARA
|
|||
case WM_TIMER:
|
||||
SendMessage(hwnd, WM_COMMAND, IDC_REFRESH, 0);
|
||||
return 1;
|
||||
case WM_MOUSEWHEEL: {
|
||||
int tmp = (*((int*)&wParam));
|
||||
short tmp2 = (*(((short*)&tmp) + 1));
|
||||
DisView7->curr_ligne += -tmp2 / WHEEL_DELTA;
|
||||
InvalidateRect(hwnd, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case WM_COMMAND :
|
||||
switch (LOWORD (wParam))
|
||||
{
|
||||
|
@ -385,6 +431,7 @@ BOOL CALLBACK ViewDisasm_ARM7Proc (HWND hwnd, UINT message, WPARAM wParam, LPARA
|
|||
case IDC_STEP:
|
||||
{
|
||||
NDS_debug_step();
|
||||
NDS_ARM7.debugStep = true;
|
||||
}
|
||||
return 1;
|
||||
|
||||
|
@ -464,6 +511,85 @@ BOOL CALLBACK ViewDisasm_ARM7Proc (HWND hwnd, UINT message, WPARAM wParam, LPARA
|
|||
EnableWindow(GetDlgItem(hwnd, IDC_AUTO_UPDATE), TRUE);
|
||||
}
|
||||
return 1;
|
||||
case IDC_DISASMSEEK:
|
||||
{
|
||||
DisView7->curr_ligne = lParam / 4;
|
||||
return 1;
|
||||
}
|
||||
case IDC_BPUP:
|
||||
{
|
||||
DisView7->break_pos = max<s32>(0, DisView7->break_pos - 1);
|
||||
InvalidateRect(hwnd, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case IDC_BPDOWN:
|
||||
{
|
||||
DisView7->break_pos += 1;
|
||||
InvalidateRect(hwnd, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case IDC_BREAKPOINT: {
|
||||
char tmp[16];
|
||||
int lg = GetDlgItemText(hwnd, IDC_BPDEST, tmp, 16);
|
||||
u32 adr = 0;
|
||||
for (int 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;
|
||||
}
|
||||
}
|
||||
NDS_ARM7.breakPoints.push_back(adr);
|
||||
InvalidateRect(hwnd, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case IDC_DELBP: {
|
||||
if (DisView7->break_pos < NDS_ARM7.breakPoints.size()) {
|
||||
NDS_ARM7.breakPoints.erase(NDS_ARM7.breakPoints.begin() + DisView7->break_pos);
|
||||
}
|
||||
InvalidateRect(hwnd, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case IDC_REGUPDATE: {
|
||||
for (int i = 0; i < 15; ++i) {
|
||||
char tmp[16];
|
||||
int lg = GetDlgItemText(hwnd, IDC_R0 + i, tmp, 16);
|
||||
u32 adr = 0;
|
||||
for (int 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;
|
||||
}
|
||||
}
|
||||
|
||||
NDS_ARM7.R[i] = adr;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
case IDC_RUNRET: {
|
||||
NDS_ARM7.runToRet = true;
|
||||
execute = true;
|
||||
return 1;
|
||||
}
|
||||
case IDC_STEPOVER: {
|
||||
NDS_ARM7.stepOverBreak = NDS_ARM7.instruct_adr + 4;
|
||||
execute = true;
|
||||
paused = false;
|
||||
}
|
||||
return 1;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
@ -554,7 +680,7 @@ BOOL CALLBACK ViewDisasm_ARM9Proc (HWND hwnd, UINT message, WPARAM wParam, LPARA
|
|||
UDM_SETRANGE, 0, MAKELONG(99, 1));
|
||||
SendMessage(GetDlgItem(hwnd, IDC_AUTO_UPDATE_SPIN),
|
||||
UDM_SETPOS32, 0, DisView9->autoup_secs);
|
||||
DisViewWnd[0] = NULL;
|
||||
DisViewWnd[0] = hwnd;
|
||||
return 1;
|
||||
}
|
||||
case WM_CLOSE :
|
||||
|
@ -578,6 +704,13 @@ BOOL CALLBACK ViewDisasm_ARM9Proc (HWND hwnd, UINT message, WPARAM wParam, LPARA
|
|||
case WM_TIMER:
|
||||
SendMessage(hwnd, WM_COMMAND, IDC_REFRESH, 0);
|
||||
return 1;
|
||||
case WM_MOUSEWHEEL: {
|
||||
int tmp = (*((int*)&wParam));
|
||||
short tmp2 = (*(((short*)&tmp) + 1));
|
||||
DisView9->curr_ligne += -tmp2 / WHEEL_DELTA;
|
||||
InvalidateRect(hwnd, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case WM_COMMAND :
|
||||
switch (LOWORD (wParam))
|
||||
{
|
||||
|
@ -631,6 +764,8 @@ BOOL CALLBACK ViewDisasm_ARM9Proc (HWND hwnd, UINT message, WPARAM wParam, LPARA
|
|||
case IDC_STEP:
|
||||
{
|
||||
NDS_debug_step();
|
||||
DisView9->curr_ligne += 1;
|
||||
NDS_ARM9.debugStep = true;
|
||||
}
|
||||
return 1;
|
||||
case IDC_CONTINUE:
|
||||
|
@ -709,6 +844,84 @@ BOOL CALLBACK ViewDisasm_ARM9Proc (HWND hwnd, UINT message, WPARAM wParam, LPARA
|
|||
EnableWindow(GetDlgItem(hwnd, IDC_AUTO_UPDATE), TRUE);
|
||||
}
|
||||
return 1;
|
||||
case IDC_DISASMSEEK:
|
||||
{
|
||||
DisView9->curr_ligne = lParam / 4;
|
||||
return 1;
|
||||
}
|
||||
case IDC_BPUP:
|
||||
{
|
||||
DisView9->break_pos = max<s32>(0, DisView9->break_pos - 1);
|
||||
InvalidateRect(hwnd, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case IDC_BPDOWN:
|
||||
{
|
||||
DisView9->break_pos += 1;
|
||||
InvalidateRect(hwnd, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case IDC_BREAKPOINT: {
|
||||
char tmp[16];
|
||||
int lg = GetDlgItemText(hwnd, IDC_BPDEST, tmp, 16);
|
||||
u32 adr = 0;
|
||||
for (int 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;
|
||||
}
|
||||
}
|
||||
NDS_ARM9.breakPoints.push_back(adr);
|
||||
InvalidateRect(hwnd, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case IDC_DELBP: {
|
||||
if (DisView9->break_pos < NDS_ARM9.breakPoints.size()) {
|
||||
NDS_ARM9.breakPoints.erase(NDS_ARM9.breakPoints.begin() + DisView9->break_pos);
|
||||
}
|
||||
InvalidateRect(hwnd, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case IDC_REGUPDATE: {
|
||||
for (int i = 0; i < 15; ++i) {
|
||||
char tmp[16];
|
||||
int lg = GetDlgItemText(hwnd, IDC_R0 + i, tmp, 16);
|
||||
u32 adr = 0;
|
||||
for (int 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;
|
||||
}
|
||||
}
|
||||
|
||||
NDS_ARM9.R[i] = adr;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
case IDC_RUNRET: {
|
||||
NDS_ARM9.runToRet = true;
|
||||
execute = true;
|
||||
return 1;
|
||||
}
|
||||
case IDC_STEPOVER: {
|
||||
NDS_ARM9.stepOverBreak = NDS_ARM9.instruct_adr + 4;
|
||||
execute = true;
|
||||
paused = false;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
#define DISVIEW_H
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <types.h>
|
||||
|
||||
extern BOOL CALLBACK ViewDisasm_ARM7Proc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
extern LRESULT CALLBACK ViewDisasm_ARM7BoxProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||
|
@ -28,6 +30,8 @@ extern LRESULT CALLBACK ViewDisasm_ARM7BoxProc(HWND hwnd, UINT msg, WPARAM wPara
|
|||
extern BOOL CALLBACK ViewDisasm_ARM9Proc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
extern LRESULT CALLBACK ViewDisasm_ARM9BoxProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
extern HWND DisViewWnd[2];
|
||||
|
||||
template<int proc> void FORCEINLINE DisassemblerTools_Refresh();
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1214,17 +1214,27 @@ void CheckMessages()
|
|||
|
||||
while( PeekMessage( &msg, 0, 0, 0, PM_NOREMOVE ) )
|
||||
{
|
||||
if( GetMessage( &msg, 0, 0, 0)>0 )
|
||||
if (GetMessage(&msg, 0, 0, 0) > 0)
|
||||
{
|
||||
if (RamWatchHWnd && IsDialogMessage(RamWatchHWnd, &msg))
|
||||
{
|
||||
if(msg.message == WM_KEYDOWN) // send keydown messages to the dialog (for accelerators, and also needed for the Alt key to work)
|
||||
if (msg.message == WM_KEYDOWN) // send keydown messages to the dialog (for accelerators, and also needed for the Alt key to work)
|
||||
SendMessage(RamWatchHWnd, msg.message, msg.wParam, msg.lParam);
|
||||
continue;
|
||||
}
|
||||
if (SoundView_GetHWnd() && IsDialogMessage(SoundView_GetHWnd(), &msg))
|
||||
continue;
|
||||
|
||||
if (DisViewWnd[0] && msg.message == WM_MOUSEWHEEL && IsDialogMessage(DisViewWnd[0], &msg))
|
||||
{
|
||||
SendMessage(DisViewWnd[0], msg.message, msg.wParam, msg.lParam);
|
||||
}
|
||||
|
||||
if (DisViewWnd[1] && msg.message == WM_MOUSEWHEEL && IsDialogMessage(DisViewWnd[1], &msg))
|
||||
{
|
||||
SendMessage(DisViewWnd[1], msg.message, msg.wParam, msg.lParam);
|
||||
}
|
||||
|
||||
if(!TranslateAccelerator(hwnd,hAccel,&msg))
|
||||
{
|
||||
TranslateMessage(&msg);
|
||||
|
|
|
@ -37,6 +37,9 @@ using namespace std;
|
|||
|
||||
typedef u32 HWAddressType;
|
||||
|
||||
int RBPOffs;
|
||||
int WBPOffs;
|
||||
|
||||
struct MemViewRegion
|
||||
{
|
||||
char name[16]; // name of this region (ex. ARM9, region dropdown)
|
||||
|
@ -249,6 +252,44 @@ INT_PTR CALLBACK EditAddrProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
return CallWindowProc((WNDPROC)oldEditAddrProc, hWnd, msg, wParam, lParam);
|
||||
}
|
||||
|
||||
void MemView_Paint(CMemView* wnd, HWND hCtl, WPARAM wParam, LPARAM lParam) {
|
||||
|
||||
PAINTSTRUCT ps;
|
||||
|
||||
BeginPaint(hCtl, &ps);
|
||||
// update text...
|
||||
char str[16];
|
||||
for (int i = 0; i < 8; ++i) {
|
||||
int j = i + RBPOffs;
|
||||
if (j < memReadBreakPoints.size()) {
|
||||
sprintf(str, "%08X", memReadBreakPoints[j]);
|
||||
}
|
||||
else {
|
||||
sprintf(str, "%08X", 0);
|
||||
}
|
||||
SetWindowText(GetDlgItem(hCtl, IDC_MRBP0 + i), str);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 8; ++i) {
|
||||
int j = i + WBPOffs;
|
||||
if (j < memWriteBreakPoints.size()) {
|
||||
sprintf(str, "%08X", memWriteBreakPoints[j]);
|
||||
}
|
||||
else {
|
||||
sprintf(str, "%08X", 0);
|
||||
}
|
||||
SetWindowText(GetDlgItem(hCtl, IDC_MWBP0 + i), str);
|
||||
}
|
||||
|
||||
sprintf(str, "%02i", RBPOffs);
|
||||
SetWindowText(GetDlgItem(hCtl, IDC_MEMRBPOFFS), str);
|
||||
|
||||
sprintf(str, "%02i", WBPOffs);
|
||||
SetWindowText(GetDlgItem(hCtl, IDC_MEMWBPOFFS), str);
|
||||
|
||||
EndPaint(hCtl, &ps);
|
||||
}
|
||||
|
||||
INT_PTR CALLBACK MemView_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
CMemView* wnd = (CMemView*)GetWindowLongPtr(hDlg, DWLP_USER);
|
||||
|
@ -325,6 +366,10 @@ INT_PTR CALLBACK MemView_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
|||
}
|
||||
return 1;
|
||||
|
||||
case WM_PAINT:
|
||||
MemView_Paint(wnd, hDlg, wParam, lParam);
|
||||
return 1;
|
||||
|
||||
case WM_DESTROY:
|
||||
{
|
||||
u16 num = ComboBox_GetCount(gAddress);
|
||||
|
@ -630,6 +675,73 @@ INT_PTR CALLBACK MemView_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
|||
wnd->Refresh();
|
||||
wnd->SetFocus();
|
||||
return 1;
|
||||
|
||||
case IDC_READBP:
|
||||
{
|
||||
char str[16];
|
||||
GetDlgItemText(hDlg, IDC_MEMBPTARG, str, 16);
|
||||
memReadBreakPoints.push_back(strtol(str, NULL, 16));
|
||||
wnd->Refresh();
|
||||
wnd->SetFocus();
|
||||
InvalidateRect(hDlg, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case IDC_WRITEBP:
|
||||
{
|
||||
char str[16];
|
||||
GetDlgItemText(hDlg, IDC_MEMBPTARG, str, 16);
|
||||
memWriteBreakPoints.push_back(strtol(str, NULL, 16));
|
||||
wnd->Refresh();
|
||||
wnd->SetFocus();
|
||||
InvalidateRect(hDlg, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case IDC_DELREADBP: {
|
||||
if (RBPOffs < memReadBreakPoints.size()) {
|
||||
memReadBreakPoints.erase(memReadBreakPoints.begin() + RBPOffs);
|
||||
}
|
||||
wnd->Refresh();
|
||||
wnd->SetFocus();
|
||||
InvalidateRect(hDlg, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case IDC_DELWRITEBP: {
|
||||
if (WBPOffs < memWriteBreakPoints.size()) {
|
||||
memWriteBreakPoints.erase(memWriteBreakPoints.begin() + WBPOffs);
|
||||
}
|
||||
wnd->Refresh();
|
||||
wnd->SetFocus();
|
||||
InvalidateRect(hDlg, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case IDC_MEMRBPUP: {
|
||||
RBPOffs = max(0, RBPOffs - 1);
|
||||
wnd->Refresh();
|
||||
wnd->SetFocus();
|
||||
InvalidateRect(hDlg, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case IDC_MEMRBPDOWN: {
|
||||
RBPOffs += 1;
|
||||
wnd->Refresh();
|
||||
wnd->SetFocus();
|
||||
InvalidateRect(hDlg, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case IDC_MEMWBPUP: {
|
||||
WBPOffs = max(0, WBPOffs - 1);
|
||||
wnd->Refresh();
|
||||
wnd->SetFocus();
|
||||
InvalidateRect(hDlg, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
case IDC_MEMWBPDOWN: {
|
||||
WBPOffs += 1;
|
||||
wnd->Refresh();
|
||||
wnd->SetFocus();
|
||||
InvalidateRect(hDlg, NULL, FALSE);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -727,6 +839,16 @@ LRESULT MemView_ViewBoxPaint(CMemView* wnd, HWND hCtl, WPARAM wParam, LPARAM lPa
|
|||
else
|
||||
{
|
||||
SetBkColor(mem_hdc, RGB(255, 255, 255));
|
||||
for (int j = 0; j < memReadBreakPoints.size(); ++j) {
|
||||
if ((line << 4) + i + wnd->address == memReadBreakPoints[j]) {
|
||||
SetBkColor(mem_hdc, RGB(255, 0, 0));
|
||||
}
|
||||
}
|
||||
for (int j = 0; j < memWriteBreakPoints.size(); ++j) {
|
||||
if ((line << 4) + i + wnd->address == memWriteBreakPoints[j]) {
|
||||
SetBkColor(mem_hdc, RGB(255, 0, 0));
|
||||
}
|
||||
}
|
||||
SetTextColor(mem_hdc, RGB(0, 0, 0));
|
||||
|
||||
sprintf(text, "%02X", val);
|
||||
|
@ -770,6 +892,16 @@ LRESULT MemView_ViewBoxPaint(CMemView* wnd, HWND hCtl, WPARAM wParam, LPARAM lPa
|
|||
else
|
||||
{
|
||||
SetBkColor(mem_hdc, RGB(255, 255, 255));
|
||||
for (int j = 0; j < memReadBreakPoints.size(); ++j) {
|
||||
if ((line << 4) + i + wnd->address == memReadBreakPoints[j]) {
|
||||
SetBkColor(mem_hdc, RGB(255, 0, 0));
|
||||
}
|
||||
}
|
||||
for (int j = 0; j < memWriteBreakPoints.size(); ++j) {
|
||||
if ((line << 4) + i + wnd->address == memWriteBreakPoints[j]) {
|
||||
SetBkColor(mem_hdc, RGB(255, 0, 0));
|
||||
}
|
||||
}
|
||||
SetTextColor(mem_hdc, RGB(0, 0, 0));
|
||||
|
||||
sprintf(text, "%04X", val);
|
||||
|
@ -823,6 +955,16 @@ LRESULT MemView_ViewBoxPaint(CMemView* wnd, HWND hCtl, WPARAM wParam, LPARAM lPa
|
|||
else
|
||||
{
|
||||
SetBkColor(mem_hdc, RGB(255, 255, 255));
|
||||
for (int j = 0; j < memReadBreakPoints.size(); ++j) {
|
||||
if ((line << 4) + i + wnd->address == memReadBreakPoints[j]) {
|
||||
SetBkColor(mem_hdc, RGB(255, 0, 0));
|
||||
}
|
||||
}
|
||||
for (int j = 0; j < memWriteBreakPoints.size(); ++j) {
|
||||
if ((line << 4) + i + wnd->address == memWriteBreakPoints[j]) {
|
||||
SetBkColor(mem_hdc, RGB(255, 0, 0));
|
||||
}
|
||||
}
|
||||
SetTextColor(mem_hdc, RGB(0, 0, 0));
|
||||
|
||||
sprintf(text, "%08X", val);
|
||||
|
|
|
@ -91,6 +91,22 @@
|
|||
#define IDC_COMBO2 161
|
||||
#define IDC_COMBO3 162
|
||||
#define IDC_COMBO4 163
|
||||
#define IDC_DISASMSEEK 164
|
||||
#define IDC_BREAKPOINT 165
|
||||
#define IDC_BPDEST 166
|
||||
#define IDC_BP0 167
|
||||
#define IDC_BP1 168
|
||||
#define IDC_BP2 169
|
||||
#define IDC_BP3 170
|
||||
#define IDC_BP4 171
|
||||
#define IDC_BP5 172
|
||||
#define IDC_BP6 173
|
||||
#define IDC_BP7 174
|
||||
#define IDC_BPUP 175
|
||||
#define IDC_BPDOWN 176
|
||||
#define IDC_DELBP 177
|
||||
#define IDC_BPCOUNT 178
|
||||
#define IDC_REGUPDATE 179
|
||||
#define IDM_CONFIG 180
|
||||
#define IDC_FRAMESKIP0 191
|
||||
#define IDC_FRAMESKIP1 192
|
||||
|
@ -109,6 +125,35 @@
|
|||
#define IDM_MGPU 219
|
||||
#define IDM_SGPU 220
|
||||
#define IDC_FRAMESKIPAUTO 221
|
||||
#define IDC_RUNRET 230
|
||||
#define IDC_STEPOVER 231
|
||||
#define IDC_MEMBPTARG 232
|
||||
#define IDC_READBP 233
|
||||
#define IDC_WRITEBP 234
|
||||
#define IDC_DELREADBP 235
|
||||
#define IDC_DELWRITEBP 236
|
||||
#define IDC_MRBP0 237
|
||||
#define IDC_MRBP1 238
|
||||
#define IDC_MRBP2 239
|
||||
#define IDC_MRBP3 240
|
||||
#define IDC_MRBP4 241
|
||||
#define IDC_MRBP5 242
|
||||
#define IDC_MRBP6 243
|
||||
#define IDC_MRBP7 244
|
||||
#define IDC_MWBP0 245
|
||||
#define IDC_MWBP1 246
|
||||
#define IDC_MWBP2 247
|
||||
#define IDC_MWBP3 248
|
||||
#define IDC_MWBP4 249
|
||||
#define IDC_MWBP5 250
|
||||
#define IDC_MWBP6 251
|
||||
#define IDC_MWBP7 252
|
||||
#define IDC_MEMRBPUP 253
|
||||
#define IDC_MEMRBPDOWN 254
|
||||
#define IDC_MEMRBPOFFS 255
|
||||
#define IDC_MEMWBPUP 256
|
||||
#define IDC_MEMWBPDOWN 257
|
||||
#define IDC_MEMWBPOFFS 258
|
||||
#define IDC_8_BIT 302
|
||||
#define IDC_16_BIT 303
|
||||
#define IDC_32_BIT 304
|
||||
|
|
|
@ -311,7 +311,7 @@ BEGIN
|
|||
DEFPUSHBUTTON "Add",IDC_BADD,120,190,50,14
|
||||
END
|
||||
|
||||
IDD_DESASSEMBLEUR_VIEWER7 DIALOGEX 0, 0, 380, 186
|
||||
IDD_DESASSEMBLEUR_VIEWER7 DIALOGEX 0, 0, 470, 206
|
||||
STYLE DS_SETFONT | DS_CENTER | WS_CAPTION
|
||||
CAPTION "Disassembler"
|
||||
FONT 8, "MS Sans Serif", 0, 0, 0x1
|
||||
|
@ -325,43 +325,43 @@ BEGIN
|
|||
CONTROL "&Auto-update",IDC_AUTO_UPDATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,285,1,54,14
|
||||
CONTROL "Edit",IDC_DES_BOX,"DesViewBox7",WS_VSCROLL | WS_TABSTOP,4,16,296,150
|
||||
PUSHBUTTON "&Close",IDC_FERMER,248,170,50,14
|
||||
LTEXT "R0 :",IDC_STATIC,304,16,17,8
|
||||
LTEXT "R1 :",IDC_STATIC,304,24,17,8
|
||||
LTEXT "R2 :",IDC_STATIC,304,32,17,8
|
||||
LTEXT "R3 :",IDC_STATIC,304,40,17,8
|
||||
LTEXT "R4 :",IDC_STATIC,304,48,17,8
|
||||
LTEXT "R5 :",IDC_STATIC,304,56,17,8
|
||||
LTEXT "R6 :",IDC_STATIC,304,64,17,8
|
||||
LTEXT "R7 :",IDC_STATIC,304,72,17,8
|
||||
LTEXT "R8 :",IDC_STATIC,304,80,17,8
|
||||
LTEXT "R9 :",IDC_STATIC,304,88,17,8
|
||||
LTEXT "R10 :",IDC_STATIC,304,96,17,8
|
||||
LTEXT "R11 :",IDC_STATIC,304,104,17,8
|
||||
LTEXT "R12 :",IDC_STATIC,304,112,17,8
|
||||
LTEXT "SP :",IDC_STATIC,304,120,17,8
|
||||
LTEXT "LR :",IDC_STATIC,304,128,17,8
|
||||
LTEXT "PC :",IDC_STATIC,304,136,17,8
|
||||
LTEXT "Mode :",IDC_STATIC,304,158,22,8
|
||||
LTEXT "SPSR :",IDC_STATIC,304,168,22,8
|
||||
LTEXT "00000000",IDC_R0,325,16,40,8
|
||||
LTEXT "00000000",IDC_R1,325,24,40,8
|
||||
LTEXT "00000000",IDC_R2,325,32,40,8
|
||||
LTEXT "00000000",IDC_R3,325,40,40,8
|
||||
LTEXT "00000000",IDC_R4,325,48,40,8
|
||||
LTEXT "00000000",IDC_R5,325,56,40,8
|
||||
LTEXT "00000000",IDC_R6,325,64,40,8
|
||||
LTEXT "00000000",IDC_R7,325,72,40,8
|
||||
LTEXT "00000000",IDC_R8,325,80,40,8
|
||||
LTEXT "00000000",IDC_R9,325,88,40,8
|
||||
LTEXT "00000000",IDC_R10,325,96,40,8
|
||||
LTEXT "00000000",IDC_R11,325,104,40,8
|
||||
LTEXT "00000000",IDC_R12,325,112,40,8
|
||||
LTEXT "00000000",IDC_R13,325,120,40,8
|
||||
LTEXT "00000000",IDC_R14,325,128,40,8
|
||||
LTEXT "00000000",IDC_R15,325,136,40,8
|
||||
LTEXT "",IDC_MODE,327,158,28,8
|
||||
LTEXT "",IDC_TMP,327,168,40,8
|
||||
EDITTEXT IDC_AUTO_UPDATE_SECS,340,3,12,14,ES_AUTOHSCROLL | ES_READONLY | WS_DISABLED
|
||||
LTEXT "R0 :", IDC_STATIC, 304, 16, 17, 8
|
||||
LTEXT "R1 :", IDC_STATIC, 304, 26, 17, 8
|
||||
LTEXT "R2 :", IDC_STATIC, 304, 36, 17, 8
|
||||
LTEXT "R3 :", IDC_STATIC, 304, 46, 17, 8
|
||||
LTEXT "R4 :", IDC_STATIC, 304, 56, 17, 8
|
||||
LTEXT "R5 :", IDC_STATIC, 304, 66, 17, 8
|
||||
LTEXT "R6 :", IDC_STATIC, 304, 76, 17, 8
|
||||
LTEXT "R7 :", IDC_STATIC, 304, 86, 17, 8
|
||||
LTEXT "R8 :", IDC_STATIC, 304, 96, 17, 8
|
||||
LTEXT "R9 :", IDC_STATIC, 304, 106, 17, 8
|
||||
LTEXT "R10 :", IDC_STATIC, 304, 116, 17, 8
|
||||
LTEXT "R11 :", IDC_STATIC, 304, 126, 17, 8
|
||||
LTEXT "R12 :", IDC_STATIC, 304, 136, 17, 8
|
||||
LTEXT "SP :", IDC_STATIC, 304, 146, 17, 8
|
||||
LTEXT "LR :", IDC_STATIC, 304, 156, 17, 8
|
||||
LTEXT "PC :", IDC_STATIC, 304, 166, 17, 8
|
||||
LTEXT "Mode :", IDC_STATIC, 304, 188, 22, 8
|
||||
LTEXT "SPSR :", IDC_STATIC, 304, 198, 22, 8
|
||||
EDITTEXT IDC_R0, 325, 16, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R1, 325, 26, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R2, 325, 36, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R3, 325, 46, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R4, 325, 56, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R5, 325, 66, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R6, 325, 76, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R7, 325, 86, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R8, 325, 96, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R9, 325, 106, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R10, 325, 116, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R11, 325, 126, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R12, 325, 136, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R13, 325, 146, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R14, 325, 156, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R15, 325, 166, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
LTEXT "", IDC_MODE, 327, 188, 28, 8
|
||||
LTEXT "", IDC_TMP, 327, 198, 40, 8
|
||||
EDITTEXT IDC_AUTO_UPDATE_SECS,340,3,12,12,ES_AUTOHSCROLL | ES_READONLY | WS_DISABLED
|
||||
CONTROL "",IDC_AUTO_UPDATE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_DISABLED,352,2,11,14
|
||||
LTEXT "frames",IDC_STATIC,364,5,16,8
|
||||
PUSHBUTTON "&Refresh",IDC_REFRESH,162,170,50,14,BS_ICON
|
||||
|
@ -369,9 +369,26 @@ BEGIN
|
|||
PUSHBUTTON "&Step",IDC_STEP,41,170,24,14
|
||||
CONTROL "Autoupd asm",IDC_AUTOUPDATE_ASM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,172,57,10
|
||||
PUSHBUTTON "&Cont",IDC_CONTINUE,67,170,24,14
|
||||
LTEXT "00000000", IDC_BP0, 390, 32, 50, 14
|
||||
LTEXT "00000000", IDC_BP1, 390, 42, 50, 14
|
||||
LTEXT "00000000", IDC_BP2, 390, 52, 50, 14
|
||||
LTEXT "00000000", IDC_BP3, 390, 62, 50, 14
|
||||
LTEXT "00000000", IDC_BP4, 390, 72, 50, 14
|
||||
LTEXT "00000000", IDC_BP5, 390, 82, 50, 14
|
||||
LTEXT "00000000", IDC_BP6, 390, 92, 50, 14
|
||||
LTEXT "00000000", IDC_BP7, 390, 102, 50, 14
|
||||
PUSHBUTTON "&^", IDC_BPUP, 430, 32, 16, 14
|
||||
PUSHBUTTON "&v", IDC_BPDOWN, 430, 48, 16, 14
|
||||
LTEXT "00", IDC_BPCOUNT, 430, 64, 32, 14
|
||||
PUSHBUTTON "&Delete Breakpoint", IDC_DELBP, 390, 112, 76, 14
|
||||
PUSHBUTTON "&Update Registers", IDC_REGUPDATE, 390, 128, 76, 14
|
||||
PUSHBUTTON "&Run To Return", IDC_RUNRET, 390, 144, 76, 14
|
||||
PUSHBUTTON "&Step Over", IDC_STEPOVER, 390, 160, 76, 14
|
||||
PUSHBUTTON "&Add Breakpoint", IDC_BREAKPOINT, 390, 0, 76, 14
|
||||
EDITTEXT IDC_BPDEST, 390, 16, 76, 14, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
END
|
||||
|
||||
IDD_DESASSEMBLEUR_VIEWER9 DIALOGEX 0, 0, 380, 186
|
||||
IDD_DESASSEMBLEUR_VIEWER9 DIALOGEX 0, 0, 470, 206
|
||||
STYLE DS_SETFONT | DS_CENTER | WS_CAPTION
|
||||
CAPTION "Disassembler"
|
||||
FONT 8, "MS Sans Serif", 0, 0, 0x1
|
||||
|
@ -385,45 +402,62 @@ BEGIN
|
|||
CONTROL "&Auto-update",IDC_AUTO_UPDATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,285,1,54,14
|
||||
CONTROL "Edit",IDC_DES_BOX,"DesViewBox9",WS_VSCROLL | WS_TABSTOP,4,16,296,150
|
||||
PUSHBUTTON "&Close",IDC_FERMER,248,170,50,14
|
||||
PUSHBUTTON "&Add Breakpoint",IDC_BREAKPOINT,390,0,76,14
|
||||
EDITTEXT IDC_BPDEST,390,16,76,14,ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_SETPNUM,5,170,34,14,ES_UPPERCASE | ES_AUTOHSCROLL | ES_NUMBER | WS_GROUP
|
||||
LTEXT "00000000",IDC_BP0,390,32,50,14
|
||||
LTEXT "00000000",IDC_BP1,390,42,50,14
|
||||
LTEXT "00000000",IDC_BP2,390,52,50,14
|
||||
LTEXT "00000000",IDC_BP3,390,62,50,14
|
||||
LTEXT "00000000",IDC_BP4,390,72,50,14
|
||||
LTEXT "00000000",IDC_BP5,390,82,50,14
|
||||
LTEXT "00000000",IDC_BP6,390,92,50,14
|
||||
LTEXT "00000000",IDC_BP7,390,102,50,14
|
||||
PUSHBUTTON "&^",IDC_BPUP,430,32,16,14
|
||||
PUSHBUTTON "&v",IDC_BPDOWN,430,48,16,14
|
||||
LTEXT "00",IDC_BPCOUNT,430,64,32,14
|
||||
PUSHBUTTON "&Delete Breakpoint",IDC_DELBP,390,112,76,14
|
||||
PUSHBUTTON "&Update Registers",IDC_REGUPDATE,390,128,76,14
|
||||
PUSHBUTTON "&Run To Return",IDC_RUNRET,390,144,76,14
|
||||
PUSHBUTTON "&Step Over",IDC_STEPOVER,390,160,76,14
|
||||
PUSHBUTTON "&Step",IDC_STEP,41,170,24,14
|
||||
LTEXT "R0 :",IDC_STATIC,304,16,17,8
|
||||
LTEXT "R1 :",IDC_STATIC,304,24,17,8
|
||||
LTEXT "R2 :",IDC_STATIC,304,32,17,8
|
||||
LTEXT "R3 :",IDC_STATIC,304,40,17,8
|
||||
LTEXT "R4 :",IDC_STATIC,304,48,17,8
|
||||
LTEXT "R5 :",IDC_STATIC,304,56,17,8
|
||||
LTEXT "R6 :",IDC_STATIC,304,64,17,8
|
||||
LTEXT "R7 :",IDC_STATIC,304,72,17,8
|
||||
LTEXT "R8 :",IDC_STATIC,304,80,17,8
|
||||
LTEXT "R9 :",IDC_STATIC,304,88,17,8
|
||||
LTEXT "R10 :",IDC_STATIC,304,96,17,8
|
||||
LTEXT "R11 :",IDC_STATIC,304,104,17,8
|
||||
LTEXT "R12 :",IDC_STATIC,304,112,17,8
|
||||
LTEXT "SP :",IDC_STATIC,304,120,17,8
|
||||
LTEXT "LR :",IDC_STATIC,304,128,17,8
|
||||
LTEXT "PC :",IDC_STATIC,304,136,17,8
|
||||
LTEXT "Mode :",IDC_STATIC,304,158,22,8
|
||||
LTEXT "SPSR :",IDC_STATIC,304,168,22,8
|
||||
LTEXT "00000000",IDC_R0,325,16,40,8
|
||||
LTEXT "00000000",IDC_R1,325,24,40,8
|
||||
LTEXT "00000000",IDC_R2,325,32,40,8
|
||||
LTEXT "00000000",IDC_R3,325,40,40,8
|
||||
LTEXT "00000000",IDC_R4,325,48,40,8
|
||||
LTEXT "00000000",IDC_R5,325,56,40,8
|
||||
LTEXT "00000000",IDC_R6,325,64,40,8
|
||||
LTEXT "00000000",IDC_R7,325,72,40,8
|
||||
LTEXT "00000000",IDC_R8,325,80,40,8
|
||||
LTEXT "00000000",IDC_R9,325,88,40,8
|
||||
LTEXT "00000000",IDC_R10,325,96,40,8
|
||||
LTEXT "00000000",IDC_R11,325,104,40,8
|
||||
LTEXT "00000000",IDC_R12,325,112,40,8
|
||||
LTEXT "00000000",IDC_R13,325,120,40,8
|
||||
LTEXT "00000000",IDC_R14,325,128,40,8
|
||||
LTEXT "00000000",IDC_R15,325,136,40,8
|
||||
LTEXT "",IDC_MODE,327,158,28,8
|
||||
LTEXT "",IDC_TMP,327,168,40,8
|
||||
EDITTEXT IDC_AUTO_UPDATE_SECS,340,3,12,14,ES_AUTOHSCROLL | ES_READONLY | WS_DISABLED
|
||||
LTEXT "R1 :",IDC_STATIC,304,26,17,8
|
||||
LTEXT "R2 :",IDC_STATIC,304,36,17,8
|
||||
LTEXT "R3 :",IDC_STATIC,304,46,17,8
|
||||
LTEXT "R4 :",IDC_STATIC,304,56,17,8
|
||||
LTEXT "R5 :",IDC_STATIC,304,66,17,8
|
||||
LTEXT "R6 :",IDC_STATIC,304,76,17,8
|
||||
LTEXT "R7 :",IDC_STATIC,304,86,17,8
|
||||
LTEXT "R8 :",IDC_STATIC,304,96,17,8
|
||||
LTEXT "R9 :",IDC_STATIC,304,106,17,8
|
||||
LTEXT "R10 :",IDC_STATIC,304,116,17,8
|
||||
LTEXT "R11 :",IDC_STATIC,304,126,17,8
|
||||
LTEXT "R12 :",IDC_STATIC,304,136,17,8
|
||||
LTEXT "SP :",IDC_STATIC,304,146,17,8
|
||||
LTEXT "LR :",IDC_STATIC,304,156,17,8
|
||||
LTEXT "PC :",IDC_STATIC,304,166,17,8
|
||||
LTEXT "Mode :",IDC_STATIC,304,188,22,8
|
||||
LTEXT "SPSR :",IDC_STATIC,304,198,22,8
|
||||
EDITTEXT IDC_R0, 325, 16, 40, 10,ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R1, 325, 26, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R2, 325, 36, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R3, 325, 46, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R4, 325, 56, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R5, 325, 66, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R6, 325, 76, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R7, 325, 86, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R8, 325, 96, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R9, 325, 106, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R10, 325, 116, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R11, 325, 126, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R12, 325, 136, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R13, 325, 146, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R14, 325, 156, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
EDITTEXT IDC_R15, 325, 166, 40, 10, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
LTEXT "",IDC_MODE,327,188,28,8
|
||||
LTEXT "",IDC_TMP,327,198,40,8
|
||||
EDITTEXT IDC_AUTO_UPDATE_SECS,340,3,12,12,ES_AUTOHSCROLL | ES_READONLY | WS_DISABLED
|
||||
CONTROL "",IDC_AUTO_UPDATE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_DISABLED,352,2,11,14
|
||||
LTEXT "frames",IDC_STATIC,364,5,16,8
|
||||
PUSHBUTTON "&Refresh",IDC_REFRESH,162,170,50,14,BS_ICON
|
||||
|
@ -808,7 +842,7 @@ BEGIN
|
|||
LTEXT "frames",IDC_STATIC,92,158,16,8
|
||||
END
|
||||
|
||||
IDD_MEM_VIEW DIALOGEX 0, 0, 444, 239
|
||||
IDD_MEM_VIEW DIALOGEX 0, 0, 614, 239
|
||||
STYLE DS_SETFONT | DS_CENTER | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Memory Viewer"
|
||||
FONT 8, "MS Sans Serif", 0, 0, 0x0
|
||||
|
@ -832,6 +866,33 @@ BEGIN
|
|||
LTEXT "",IDC_2012,163,223,73,8
|
||||
EDITTEXT IDC_CURRENT_ADDR,41,223,43,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
|
||||
LTEXT "Address:",IDC_STATIC,8,222,28,13
|
||||
EDITTEXT IDC_MEMBPTARG, 446, 6, 160, 14, ES_UPPERCASE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_GROUP
|
||||
PUSHBUTTON "Add Read Breakpoint", IDC_READBP, 446, 22, 80, 14
|
||||
PUSHBUTTON "Add Write Breakpoint", IDC_WRITEBP, 528, 22, 80, 14
|
||||
PUSHBUTTON "Del Read Breakpoint", IDC_DELREADBP, 446, 166, 80, 14
|
||||
PUSHBUTTON "Del Write Breakpoint", IDC_DELWRITEBP, 528, 166, 80, 14
|
||||
LTEXT "00000000", IDC_MRBP0, 446, 38, 60, 14
|
||||
LTEXT "00000000", IDC_MRBP1, 446, 54, 60, 14
|
||||
LTEXT "00000000", IDC_MRBP2, 446, 70, 60, 14
|
||||
LTEXT "00000000", IDC_MRBP3, 446, 86, 60, 14
|
||||
LTEXT "00000000", IDC_MRBP4, 446, 102, 60, 14
|
||||
LTEXT "00000000", IDC_MRBP5, 446, 118, 60, 14
|
||||
LTEXT "00000000", IDC_MRBP6, 446, 134, 60, 14
|
||||
LTEXT "00000000", IDC_MRBP7, 446, 150, 60, 14
|
||||
LTEXT "00000000", IDC_MWBP0, 528, 38, 60, 14
|
||||
LTEXT "00000000", IDC_MWBP1, 528, 54, 60, 14
|
||||
LTEXT "00000000", IDC_MWBP2, 528, 70, 60, 14
|
||||
LTEXT "00000000", IDC_MWBP3, 528, 86, 60, 14
|
||||
LTEXT "00000000", IDC_MWBP4, 528, 102, 60, 14
|
||||
LTEXT "00000000", IDC_MWBP5, 528, 118, 60, 14
|
||||
LTEXT "00000000", IDC_MWBP6, 528, 134, 60, 14
|
||||
LTEXT "00000000", IDC_MWBP7, 528, 150, 60, 14
|
||||
PUSHBUTTON "^", IDC_MEMRBPUP, 480, 38, 14, 14
|
||||
PUSHBUTTON "v", IDC_MEMRBPDOWN, 480, 54, 14, 14
|
||||
LTEXT "00", IDC_MEMRBPOFFS, 480, 70, 14, 28
|
||||
PUSHBUTTON "^", IDC_MEMWBPUP, 562, 38, 14, 14
|
||||
PUSHBUTTON "v", IDC_MEMWBPDOWN, 562, 54, 14, 14
|
||||
LTEXT "00", IDC_MEMWBPOFFS, 562, 70, 14, 28
|
||||
END
|
||||
|
||||
IDD_MICROPHONE DIALOGEX 0, 0, 241, 142
|
||||
|
|
Loading…
Reference in New Issue