small fixes

This commit is contained in:
Jaklyy 2024-10-19 16:51:40 -04:00
parent a32d59774e
commit 744f5c9fcd
2 changed files with 9 additions and 5 deletions

View File

@ -1160,6 +1160,7 @@ void ARMv5::CodeFetch()
NextInstr[1] >>= 16; NextInstr[1] >>= 16;
NDS.ARM9Timestamp++; NDS.ARM9Timestamp++;
if (NDS.ARM9Timestamp < TimestampActual) NDS.ARM9Timestamp = TimestampActual; if (NDS.ARM9Timestamp < TimestampActual) NDS.ARM9Timestamp = TimestampActual;
Store = false;
DataRegion = Mem9_Null; DataRegion = Mem9_Null;
} }
else NextInstr[1] = CodeRead32(PC, false); else NextInstr[1] = CodeRead32(PC, false);
@ -1218,8 +1219,7 @@ void ARMv5::HandleInterlocksMemory(u8 reg)
u64 diff = ILPrevTime - NDS.ARM9Timestamp; // should always be 1? u64 diff = ILPrevTime - NDS.ARM9Timestamp; // should always be 1?
NDS.ARM9Timestamp = ILPrevTime; NDS.ARM9Timestamp = ILPrevTime;
MainRAMTimestamp += diff; ITCMTimestamp += diff; // checkme
ITCMTimestamp += diff;
ILPrevTime = 16; ILPrevTime = 16;
} }

View File

@ -413,6 +413,7 @@ u32 ARMv5::ICacheLookup(const u32 addr)
NDS.ARM9Timestamp += 1; NDS.ARM9Timestamp += 1;
if (NDS.ARM9Timestamp < TimestampActual) NDS.ARM9Timestamp = TimestampActual; if (NDS.ARM9Timestamp < TimestampActual) NDS.ARM9Timestamp = TimestampActual;
DataRegion = Mem9_Null; DataRegion = Mem9_Null;
Store = false;
return cacheLine[(addr & (ICACHE_LINELENGTH -1)) >> 2]; return cacheLine[(addr & (ICACHE_LINELENGTH -1)) >> 2];
} }
} }
@ -489,11 +490,12 @@ u32 ARMv5::ICacheLookup(const u32 addr)
if (NDS.ARM9Timestamp < MainRAMTimestamp) NDS.ARM9Timestamp = MainRAMTimestamp + ((1<<NDS.ARM9ClockShift)-1) & ~((1<<NDS.ARM9ClockShift)-1); if (NDS.ARM9Timestamp < MainRAMTimestamp) NDS.ARM9Timestamp = MainRAMTimestamp + ((1<<NDS.ARM9ClockShift)-1) & ~((1<<NDS.ARM9ClockShift)-1);
} }
else if (NDS.ARM9Regions[addr>>14] == DataRegion && Store) NDS.ARM9Timestamp += (1<<NDS.ARM9ClockShift); else if (NDS.ARM9Regions[addr>>14] == DataRegion && Store) NDS.ARM9Timestamp += (1<<NDS.ARM9ClockShift);
Store = false;
NDS.ARM9Timestamp += CodeCycles;
if (NDS.ARM9Timestamp < TimestampActual) NDS.ARM9Timestamp = TimestampActual;
CodeCycles = ((NDS.ARM9MemTimings[tag >> 14][2] + (NDS.ARM9MemTimings[tag >> 14][3] * ((DCACHE_LINELENGTH / 4) - 1)) - 1) << NDS.ARM9ClockShift) + 1; CodeCycles = ((NDS.ARM9MemTimings[tag >> 14][2] + (NDS.ARM9MemTimings[tag >> 14][3] * ((DCACHE_LINELENGTH / 4) - 1)) - 1) << NDS.ARM9ClockShift) + 1;
NDS.ARM9Timestamp += CodeCycles;
if (NDS.ARM9Timestamp < TimestampActual) NDS.ARM9Timestamp = TimestampActual;
DataRegion = Mem9_Null; DataRegion = Mem9_Null;
return ptr[(addr & (ICACHE_LINELENGTH-1)) >> 2]; return ptr[(addr & (ICACHE_LINELENGTH-1)) >> 2];
} }
@ -1863,6 +1865,7 @@ u32 ARMv5::CodeRead32(u32 addr, bool branch)
NDS.ARM9Timestamp += CodeCycles; NDS.ARM9Timestamp += CodeCycles;
if (NDS.ARM9Timestamp < TimestampActual) NDS.ARM9Timestamp = TimestampActual; if (NDS.ARM9Timestamp < TimestampActual) NDS.ARM9Timestamp = TimestampActual;
DataRegion = Mem9_Null; DataRegion = Mem9_Null;
Store = false;
return 0; return 0;
} }
@ -1874,6 +1877,7 @@ u32 ARMv5::CodeRead32(u32 addr, bool branch)
NDS.ARM9Timestamp += CodeCycles; NDS.ARM9Timestamp += CodeCycles;
if (NDS.ARM9Timestamp < TimestampActual) NDS.ARM9Timestamp = TimestampActual; if (NDS.ARM9Timestamp < TimestampActual) NDS.ARM9Timestamp = TimestampActual;
DataRegion = Mem9_Null; DataRegion = Mem9_Null;
Store = false;
return *(u32*)&ITCM[addr & (ITCMPhysicalSize - 1)]; return *(u32*)&ITCM[addr & (ITCMPhysicalSize - 1)];
} }