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
|
||||
- Debugger: Add range watchpoints
|
||||
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)
|
||||
Misc:
|
||||
- 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); \
|
||||
} \
|
||||
++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); \
|
||||
}
|
||||
|
||||
|
@ -557,7 +557,7 @@ uint32_t GBALoad16(struct ARMCore* cpu, uint32_t address, int* cycleCounter) {
|
|||
} else {
|
||||
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);
|
||||
}
|
||||
break;
|
||||
|
@ -777,7 +777,7 @@ uint32_t GBALoad8(struct ARMCore* cpu, uint32_t address, int* cycleCounter) {
|
|||
} \
|
||||
} \
|
||||
++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); \
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue