DS Video: Fix extended modes 1.x VRAM access
Vicki Pfau vi@endrift.com
Fri, 07 Apr 2017 16:26:26 -0700
1 files changed,
4 insertions(+),
4 deletions(-)
jump to
M
src/ds/renderers/software.c
→
src/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;