mirror of https://github.com/mgba-emu/mgba.git
GBA Memory: Make VRAM access stalls only apply to BG RAM
This commit is contained in:
parent
941ad50723
commit
0d0e92ce59
1
CHANGES
1
CHANGES
|
@ -3,6 +3,7 @@ Features:
|
||||||
- New unlicensed GB mappers: NT (older types 1 and 2), Li Cheng, GGB-81
|
- New unlicensed GB mappers: NT (older types 1 and 2), Li Cheng, GGB-81
|
||||||
- Debugger: Add range watchpoints
|
- Debugger: Add range watchpoints
|
||||||
Emulation fixes:
|
Emulation fixes:
|
||||||
|
- GBA Memory: Make VRAM access stalls only apply to BG RAM
|
||||||
- GBA Video: Disable BG target 1 blending when OBJ blending (fixes mgba.io/i/2722)
|
- GBA Video: Disable BG target 1 blending when OBJ blending (fixes mgba.io/i/2722)
|
||||||
Misc:
|
Misc:
|
||||||
- GB Serialize: Add missing savestate support for MBC6 and NT (newer)
|
- GB Serialize: Add missing savestate support for MBC6 and NT (newer)
|
||||||
|
|
|
@ -397,7 +397,7 @@ static void GBASetActiveRegion(struct ARMCore* cpu, uint32_t address) {
|
||||||
LOAD_32(value, address & 0x0001FFFC, gba->video.vram); \
|
LOAD_32(value, address & 0x0001FFFC, gba->video.vram); \
|
||||||
} \
|
} \
|
||||||
++wait; \
|
++wait; \
|
||||||
if (gba->video.shouldStall) { \
|
if (gba->video.shouldStall && (address & 0x0001FFFF) < ((GBARegisterDISPCNTGetMode(gba->memory.io[REG_DISPCNT >> 1]) >= 3) ? 0x00014000 : 0x00010000)) { \
|
||||||
wait += GBAMemoryStallVRAM(gba, wait, 1); \
|
wait += GBAMemoryStallVRAM(gba, wait, 1); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -557,7 +557,7 @@ uint32_t GBALoad16(struct ARMCore* cpu, uint32_t address, int* cycleCounter) {
|
||||||
} else {
|
} else {
|
||||||
LOAD_16(value, address & 0x0001FFFE, gba->video.vram);
|
LOAD_16(value, address & 0x0001FFFE, gba->video.vram);
|
||||||
}
|
}
|
||||||
if (gba->video.shouldStall) {
|
if (gba->video.shouldStall && (address & 0x0001FFFF) < ((GBARegisterDISPCNTGetMode(gba->memory.io[REG_DISPCNT >> 1]) >= 3) ? 0x00014000 : 0x00010000)) {
|
||||||
wait += GBAMemoryStallVRAM(gba, wait, 0);
|
wait += GBAMemoryStallVRAM(gba, wait, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -777,7 +777,7 @@ uint32_t GBALoad8(struct ARMCore* cpu, uint32_t address, int* cycleCounter) {
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
++wait; \
|
++wait; \
|
||||||
if (gba->video.shouldStall) { \
|
if (gba->video.shouldStall && (address & 0x0001FFFF) < ((GBARegisterDISPCNTGetMode(gba->memory.io[REG_DISPCNT >> 1]) >= 3) ? 0x00014000 : 0x00010000)) { \
|
||||||
wait += GBAMemoryStallVRAM(gba, wait, 1); \
|
wait += GBAMemoryStallVRAM(gba, wait, 1); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -904,7 +904,7 @@ void GBAStore16(struct ARMCore* cpu, uint32_t address, int16_t value, int* cycle
|
||||||
gba->video.renderer->writeVRAM(gba->video.renderer, address & 0x0001FFFE);
|
gba->video.renderer->writeVRAM(gba->video.renderer, address & 0x0001FFFE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (gba->video.shouldStall) {
|
if (gba->video.shouldStall && (address & 0x0001FFFF) < ((GBARegisterDISPCNTGetMode(gba->memory.io[REG_DISPCNT >> 1]) >= 3) ? 0x00014000 : 0x00010000)) {
|
||||||
wait += GBAMemoryStallVRAM(gba, wait, 0);
|
wait += GBAMemoryStallVRAM(gba, wait, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue