diff --git a/desmume/src/GPU.h b/desmume/src/GPU.h index 6406356d1..0ada14c7b 100644 --- a/desmume/src/GPU.h +++ b/desmume/src/GPU.h @@ -448,12 +448,30 @@ static INLINE void GPU_ligne(Screen * screen, u16 l) return; case 2: // Display framebuffer { - int ii = l * 256 * 2; - for (i=0; i<(256 * 2); i+=2) + //addition from Normatt + if (gpu->core==0) { - u8 * vram = ARM9Mem.ARM9_LCD + (gpu->vramBlock * 0x20000); - T2WriteWord(dst, i, T1ReadWord(vram, ii)); - ii+=2; + /* we only draw one of the VRAM blocks */ + vram_bank = gpu->dispCnt.bits.VRAM_Block ; + switch (MMU.vram_mode[vram_bank]) + { + case 0: + case 1: + case 2: + case 3: + { + int ii = l * 256 * 2; + for (i=0; i<(256 * 2); i+=2) + { + u8 * vram = ARM9Mem.ARM9_ABG + MMU.vram_mode[vram_bank] * 0x20000; + T2WriteWord(mdst, i, T1ReadWord(vram, ii)); + ii+=2; + } + return; + } + default: + break; + } } } return; @@ -469,31 +487,6 @@ static INLINE void GPU_ligne(Screen * screen, u16 l) return; } -/* -//addition from Normatt - if (gpu->core==0) - for(vram_bank=0; vram_bank<8; vram_bank++) { - switch (MMU.vram_mode[vram_bank]) - { - case 0: - case 1: - case 2: - case 3: - { - int ii = l * 256 * 2; - for (i=0; i<(256 * 2); i+=2) - { - u8 * vram = ARM9Mem.ARM9_ABG + MMU.vram_mode[vram_bank] * 0x20000; - T2WriteWord(mdst, i, T1ReadWord(vram, ii)); - ii+=2; - } - return; - } - default: - break; - } - } -*/ c = T1ReadWord(ARM9Mem.ARM9_VMEM, gpu->core * 0x400); c |= (c<<16);