[Project64] Add Load32Rom
This commit is contained in:
parent
4fe7ce8242
commit
d5ceb3d367
|
@ -2479,35 +2479,14 @@ bool CMipsMemoryVM::LW_NonMemory(uint32_t PAddr, uint32_t* Value)
|
|||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
m_MemLookupAddress = PAddr;
|
||||
if (PAddr >= 0x10000000 && PAddr < 0x16000000)
|
||||
{
|
||||
if (m_RomWrittenTo)
|
||||
{
|
||||
*Value = m_RomWroteValue;
|
||||
//LogMessage("%X: Read crap from Rom %08X from %08X",PROGRAM_COUNTER,*Value,PAddr);
|
||||
m_RomWrittenTo = false;
|
||||
#ifdef ROM_IN_MAPSPACE
|
||||
{
|
||||
uint32_t OldProtect;
|
||||
VirtualProtect(ROM,RomFileSize,PAGE_READONLY, &OldProtect);
|
||||
}
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
if ((PAddr - 0x10000000) < m_RomSize)
|
||||
{
|
||||
*Value = *(uint32_t *)&m_Rom[PAddr - 0x10000000];
|
||||
return true;
|
||||
Load32Rom();
|
||||
}
|
||||
else
|
||||
{
|
||||
*Value = PAddr & 0xFFFF;
|
||||
*Value = (*Value << 16) | *Value;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
m_MemLookupAddress = PAddr;
|
||||
switch (PAddr & 0xFFF00000)
|
||||
{
|
||||
case 0x03F00000: Load32RDRAMRegisters(); break;
|
||||
|
@ -2530,6 +2509,7 @@ bool CMipsMemoryVM::LW_NonMemory(uint32_t PAddr, uint32_t* Value)
|
|||
m_MemLookupValue.UW[0] = PAddr & 0xFFFF;
|
||||
m_MemLookupValue.UW[0] = (m_MemLookupValue.UW[0] << 16) | m_MemLookupValue.UW[0];
|
||||
}
|
||||
}
|
||||
*Value = m_MemLookupValue.UW[0];
|
||||
return true;
|
||||
}
|
||||
|
@ -5705,3 +5685,32 @@ void CMipsMemoryVM::Load32PifRam(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CMipsMemoryVM::Load32Rom(void)
|
||||
{
|
||||
if (g_MMU->m_RomWrittenTo)
|
||||
{
|
||||
m_MemLookupValue.UW[0] = g_MMU->m_RomWroteValue;
|
||||
//LogMessage("%X: Read crap from Rom %08X from %08X",PROGRAM_COUNTER,*Value,PAddr);
|
||||
g_MMU->m_RomWrittenTo = false;
|
||||
#ifdef ROM_IN_MAPSPACE
|
||||
{
|
||||
uint32_t OldProtect;
|
||||
VirtualProtect(ROM, RomFileSize, PAGE_READONLY, &OldProtect);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else if ((m_MemLookupAddress & 0xFFFFFFF) < g_MMU->m_RomSize)
|
||||
{
|
||||
m_MemLookupValue.UW[0] = *(uint32_t *)&g_MMU->m_Rom[(m_MemLookupAddress & 0xFFFFFFF)];
|
||||
}
|
||||
else
|
||||
{
|
||||
m_MemLookupValue.UW[0] = m_MemLookupAddress & 0xFFFF;
|
||||
m_MemLookupValue.UW[0] = (m_MemLookupValue.UW[0] << 16) | m_MemLookupValue.UW[0];
|
||||
if (bHaveDebugger())
|
||||
{
|
||||
g_Notify->BreakPoint(__FILE__, __LINE__);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -194,6 +194,7 @@ private:
|
|||
static void Load32CartridgeDomain2Address1(void);
|
||||
static void Load32CartridgeDomain2Address2(void);
|
||||
static void Load32PifRam(void);
|
||||
static void Load32Rom(void);
|
||||
|
||||
CMipsMemory_CallBack * const m_CBClass;
|
||||
|
||||
|
|
Loading…
Reference in New Issue