all repos — mgba @ f97983d498ac7a460a6f8160351909735e05f372

mGBA Game Boy Advance Emulator

DS Video: Fix extended modes 1.x VRAM access
Vicki Pfau vi@endrift.com
Fri, 07 Apr 2017 16:26:26 -0700
commit

f97983d498ac7a460a6f8160351909735e05f372

parent

3439eada8c1f871cf7e6fb4c9cb6e0a193723ec2

1 files changed, 4 insertions(+), 4 deletions(-)

jump to
M src/ds/renderers/software.csrc/ds/renderers/software.c

@@ -774,11 +774,11 @@ BACKGROUND_BITMAP_ITERATE(width, height);

if (!mosaicWait) { uint32_t address = (localX >> 8) + (localY >> 8) * width + screenBase; - uint8_t* vram = (uint8_t*) renderer->d.vramBG[address >> 17]; + uint8_t* vram = (uint8_t*) renderer->d.vramBG[address >> VRAM_BLOCK_OFFSET]; if (UNLIKELY(!vram)) { continue; } - color = vram[address]; + color = vram[address & VRAM_BLOCK_MASK]; mosaicWait = mosaicH; } else { --mosaicWait;

@@ -831,11 +831,11 @@ BACKGROUND_BITMAP_ITERATE(width, height);

if (!mosaicWait) { uint32_t address = ((localX >> 8) + (localY >> 8) * width + screenBase) << 1; - uint16_t* vram = renderer->d.vramBG[address >> 17]; + uint16_t* vram = renderer->d.vramBG[address >> VRAM_BLOCK_OFFSET]; if (UNLIKELY(!vram)) { continue; } - LOAD_16(color, address & 0x1FFFE, vram); + LOAD_16(color, address & VRAM_BLOCK_MASK, vram); #ifndef COLOR_16_BIT unsigned color32; color32 = 0;