Debugger: Improve CPU memory mapping display (vs work ram and save ram regions)
This commit is contained in:
parent
b1283ae48d
commit
0c9cbe4da0
4 changed files with 66 additions and 4 deletions
|
@ -1068,6 +1068,30 @@ CartridgeState BaseMapper::GetState()
|
|||
state.Nametables[i] = _nametableIndexes[i];
|
||||
}
|
||||
|
||||
state.WorkRamStart = -1;
|
||||
state.WorkRamEnd = -1;
|
||||
state.SaveRamStart = -1;
|
||||
state.SaveRamEnd = -1;
|
||||
for(int i = 0x40; i < 0x100; i++) {
|
||||
int32_t address = ToAbsoluteWorkRamAddress(i << 8);
|
||||
if(address >= 0) {
|
||||
if(state.WorkRamStart < 0) {
|
||||
state.WorkRamStart = i << 8;
|
||||
} else {
|
||||
state.WorkRamEnd = (i << 8) + 0x100;
|
||||
}
|
||||
} else {
|
||||
address = ToAbsoluteSaveRamAddress(i << 8);
|
||||
if(address >= 0) {
|
||||
if(state.SaveRamStart < 0) {
|
||||
state.SaveRamStart = i << 8;
|
||||
} else {
|
||||
state.SaveRamEnd = (i << 8) + 0x100;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
|
|
|
@ -77,6 +77,11 @@ struct CartridgeState
|
|||
uint32_t ChrPageSize;
|
||||
uint32_t ChrSelectedPages[64];
|
||||
uint32_t Nametables[8];
|
||||
|
||||
int32_t WorkRamStart;
|
||||
int32_t WorkRamEnd;
|
||||
int32_t SaveRamStart;
|
||||
int32_t SaveRamEnd;
|
||||
};
|
||||
|
||||
struct PPUControlFlags
|
||||
|
|
|
@ -47,10 +47,38 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
|
||||
regions.Add(new MemoryRegionInfo() { Name = "Internal RAM", Size = 0x2000, Color = Color.FromArgb(222, 222, 222) });
|
||||
regions.Add(new MemoryRegionInfo() { Name = "CPU Registers", Size = 0x2020, Color = Color.FromArgb(222, 222, 222) });
|
||||
regions.Add(new MemoryRegionInfo() { Name = "N/A", Size = 0x1FE0, Color = Color.FromArgb(222, 222, 222) });
|
||||
regions.Add(new MemoryRegionInfo() { Name = "Work RAM", Size = 0x2000, Color = Color.FromArgb(0xCD, 0xDC, 0xFA) });
|
||||
|
||||
for(int i = 0; i < 0x8000 / state.PrgPageSize; i++) {
|
||||
Action<int> addEmpty = (int size) => { regions.Add(new MemoryRegionInfo() { Name = "N/A", Size = size, Color = Color.FromArgb(222, 222, 222) }); };
|
||||
Action addWorkRam = () => { regions.Add(new MemoryRegionInfo() { Name = "Work RAM", Size = state.WorkRamEnd - state.WorkRamStart, Color = Color.FromArgb(0xCD, 0xDC, 0xFA) }); };
|
||||
Action addSaveRam = () => { regions.Add(new MemoryRegionInfo() { Name = "Save RAM", Size = state.SaveRamEnd - state.SaveRamStart, Color = Color.FromArgb(0xFA, 0xDC, 0xCD) }); };
|
||||
|
||||
if(state.SaveRamStart > 0 && state.WorkRamStart > 0) {
|
||||
if(state.SaveRamStart > state.WorkRamStart) {
|
||||
addEmpty(state.WorkRamStart - 0x4020);
|
||||
addWorkRam();
|
||||
addEmpty(state.SaveRamStart - state.WorkRamEnd);
|
||||
addSaveRam();
|
||||
} else {
|
||||
addEmpty(state.SaveRamStart - 0x4020);
|
||||
addSaveRam();
|
||||
addEmpty(state.WorkRamStart - state.SaveRamEnd);
|
||||
addWorkRam();
|
||||
}
|
||||
} else if(state.WorkRamStart > 0) {
|
||||
addEmpty(state.WorkRamStart - 0x4020);
|
||||
addWorkRam();
|
||||
} else if(state.SaveRamStart > 0) {
|
||||
addEmpty(state.WorkRamStart - 0x4020);
|
||||
addSaveRam();
|
||||
}
|
||||
|
||||
int currentAddress = regions.Sum((MemoryRegionInfo region) => region.Size);
|
||||
if(currentAddress < 0x8000) {
|
||||
addEmpty(0x8000 - currentAddress);
|
||||
currentAddress = 0x8000;
|
||||
}
|
||||
|
||||
for(int i = (currentAddress - 0x8000) / (int)state.PrgPageSize; i < 0x8000 / state.PrgPageSize; i++) {
|
||||
string text = state.PrgSelectedPages[i] == 0xEEEEEEEE ? "N/A" : ("$" + state.PrgSelectedPages[i].ToString("X2"));
|
||||
regions.Add(new MemoryRegionInfo() { Name = text, Size = (int)state.PrgPageSize, Color = i % 2 == 0 ? Color.FromArgb(0xC4, 0xE7, 0xD4) : Color.FromArgb(0xA4, 0xD7, 0xB4) });
|
||||
}
|
||||
|
|
|
@ -1075,6 +1075,11 @@ namespace Mesen.GUI
|
|||
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
|
||||
public UInt32[] Nametables;
|
||||
|
||||
public Int32 WorkRamStart;
|
||||
public Int32 WorkRamEnd;
|
||||
public Int32 SaveRamStart;
|
||||
public Int32 SaveRamEnd;
|
||||
}
|
||||
|
||||
public struct PPUDebugState
|
||||
|
|
Loading…
Add table
Reference in a new issue