Revert "GBA Memory: Improve gamepak prefetch timing"

This reverts commit 8a6cf8dc9c.
This commit is contained in:
Vicki Pfau 2020-01-18 19:35:45 -08:00
parent 4ca16fb2ef
commit 95e1dd9c35
2 changed files with 5 additions and 7 deletions

View File

@ -92,7 +92,6 @@ Emulation fixes:
- ARM: Fix stepping when events are pending
- GBA DMA: Fix case where DMAs could get misaligned (fixes mgba.io/i/1092)
- GBA Memory: Fix open bus from IWRAM (fixes mgba.io/i/1575)
- GBA Memory: Improve gamepak prefetch timing
- GBA Timers: Improve timer startup emulation
- GBA Video: Fix OpenGL renderer 512x512 backgrounds (fixes mgba.io/i/1572)
- GBA Video: Fix BLDY for semitransparent sprite on non-target-2 backgrounds

View File

@ -1622,19 +1622,17 @@ int32_t GBAMemoryStall(struct ARMCore* cpu, int32_t wait) {
maxLoads -= previousLoads;
}
int32_t s = cpu->memory.activeSeqCycles16;
int32_t s = cpu->memory.activeSeqCycles16 + 1;
int32_t n2s = cpu->memory.activeNonseqCycles16 - cpu->memory.activeSeqCycles16 + 1;
// Figure out how many sequential loads we can jam in
int32_t stall = s + 1;
int32_t stall = s;
int32_t loads = 1;
while (stall < wait && loads < maxLoads) {
stall += s;
++loads;
}
memory->lastPrefetchedPc = cpu->gprs[ARM_PC] + WORD_SIZE_THUMB * (loads + previousLoads - 1);
if (stall > wait) {
// The wait cannot take less time than the prefetch stalls
wait = stall;
@ -1643,9 +1641,10 @@ int32_t GBAMemoryStall(struct ARMCore* cpu, int32_t wait) {
// This instruction used to have an N, convert it to an S.
wait -= n2s;
// The next |loads|S waitstates disappear entirely, so long as they're all in a row
wait -= stall - 1;
memory->lastPrefetchedPc = cpu->gprs[ARM_PC] + WORD_SIZE_THUMB * (loads + previousLoads - 1);
// The next |loads|S waitstates disappear entirely, so long as they're all in a row
cpu->cycles -= (s - 1) * loads;
return wait;
}