keep the GPU from crashing if there's no VRAM mapped, I guess.

noting that the way it's accessing VRAM is grossly inaccurate.
This commit is contained in:
StapleButter 2017-01-31 04:06:05 +01:00
parent 594286ee5d
commit 12ebf83665
3 changed files with 5 additions and 3 deletions

View File

@ -239,6 +239,7 @@ void GPU2D::DrawBG_Text_4bpp(u32 line, u16* dst, u32 bgnum)
{ {
tileset = (u8*)GPU::VRAM_BBG[((bgcnt & 0x003C) >> 2)]; tileset = (u8*)GPU::VRAM_BBG[((bgcnt & 0x003C) >> 2)];
tilemap = (u16*)GPU::VRAM_BBG[((bgcnt & 0x1800) >> 11)]; tilemap = (u16*)GPU::VRAM_BBG[((bgcnt & 0x1800) >> 11)];
if (!tileset || !tilemap) return;
tilemap += ((bgcnt & 0x0700) << 2); tilemap += ((bgcnt & 0x0700) << 2);
pal = (u16*)&GPU::Palette[0x400]; pal = (u16*)&GPU::Palette[0x400];
@ -247,6 +248,7 @@ void GPU2D::DrawBG_Text_4bpp(u32 line, u16* dst, u32 bgnum)
{ {
tileset = (u8*)GPU::VRAM_ABG[((DispCnt & 0x07000000) >> 22) + ((bgcnt & 0x003C) >> 2)]; tileset = (u8*)GPU::VRAM_ABG[((DispCnt & 0x07000000) >> 22) + ((bgcnt & 0x003C) >> 2)];
tilemap = (u16*)GPU::VRAM_ABG[((DispCnt & 0x38000000) >> 27) + ((bgcnt & 0x1800) >> 11)]; tilemap = (u16*)GPU::VRAM_ABG[((DispCnt & 0x38000000) >> 27) + ((bgcnt & 0x1800) >> 11)];
if (!tileset || !tilemap) return;
tilemap += ((bgcnt & 0x0700) << 2); tilemap += ((bgcnt & 0x0700) << 2);
pal = (u16*)&GPU::Palette[0]; pal = (u16*)&GPU::Palette[0];

View File

@ -1697,7 +1697,7 @@ void ARM9IOWrite32(u32 addr, u32 val)
else else
{ {
bool wasempty = IPCFIFO9->IsEmpty(); bool wasempty = IPCFIFO9->IsEmpty();
IPCFIFO9->Write(val);printf("IPC FIFO %08X %08X\n", val, ARM9->R[6]+0x114); IPCFIFO9->Write(val);
if ((IPCFIFOCnt7 & 0x0400) && wasempty) if ((IPCFIFOCnt7 & 0x0400) && wasempty)
TriggerIRQ(1, IRQ_IPCRecv); TriggerIRQ(1, IRQ_IPCRecv);
} }

View File

@ -41,7 +41,7 @@
"types.h" "types.h"
"ARM.h" "ARM.h"
1485817127 source:c:\documents\sources\melonds\arminterpreter.cpp 1485831103 source:c:\documents\sources\melonds\arminterpreter.cpp
<stdio.h> <stdio.h>
"NDS.h" "NDS.h"
"CP15.h" "CP15.h"
@ -117,7 +117,7 @@
1484698068 c:\documents\sources\melonds\dma.h 1484698068 c:\documents\sources\melonds\dma.h
"types.h" "types.h"
1485809857 source:c:\documents\sources\melonds\gpu.cpp 1485831589 source:c:\documents\sources\melonds\gpu.cpp
<stdio.h> <stdio.h>
<string.h> <string.h>
"NDS.h" "NDS.h"