From a2c2322e252d72c8799159cd8b47772e4bde06bf Mon Sep 17 00:00:00 2001 From: zeromus Date: Tue, 1 Jan 2013 18:43:23 +0000 Subject: [PATCH] ntview-do something reasonable if a 4-screen,table2,table3 mirror mode is chosen when the corresponding nametable ram is not available on the cart (instead of crashing) --- src/drivers/win/ntview.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/drivers/win/ntview.cpp b/src/drivers/win/ntview.cpp index 13c13402..4ba8362c 100644 --- a/src/drivers/win/ntview.cpp +++ b/src/drivers/win/ntview.cpp @@ -169,8 +169,11 @@ void ChangeMirroring(){ case NT_FOUR_SCREEN: vnapage[0] = &NTARAM[0x000]; vnapage[1] = &NTARAM[0x400]; - vnapage[2] = ExtraNTARAM; - vnapage[3] = ExtraNTARAM+0x400; + if(ExtraNTARAM) + { + vnapage[2] = ExtraNTARAM; + vnapage[3] = ExtraNTARAM + 0x400; + } break; case NT_SINGLE_SCREEN_TABLE_0: vnapage[0] = vnapage[1] = vnapage[2] = vnapage[3] = &NTARAM[0x000]; @@ -179,10 +182,12 @@ void ChangeMirroring(){ vnapage[0] = vnapage[1] = vnapage[2] = vnapage[3] = &NTARAM[0x400]; break; case NT_SINGLE_SCREEN_TABLE_2: - vnapage[0] = vnapage[1] = vnapage[2] = vnapage[3] = ExtraNTARAM; + if(ExtraNTARAM) + vnapage[0] = vnapage[1] = vnapage[2] = vnapage[3] = ExtraNTARAM; break; case NT_SINGLE_SCREEN_TABLE_3: - vnapage[0] = vnapage[1] = vnapage[2] = vnapage[3] = ExtraNTARAM+0x400; + if(ExtraNTARAM) + vnapage[0] = vnapage[1] = vnapage[2] = vnapage[3] = ExtraNTARAM + 0x400; break; } return; @@ -218,7 +223,11 @@ INLINE void DrawChr(uint8 *pbitmap,uint8 *chr,int pal){ void DrawNameTable(int scanline, int ntnum, bool invalidateCache) { NTCache &c = cache[ntnum]; - uint8 *bitmap = c.bitmap, *table = vnapage[ntnum], *tablecache = c.cache; + uint8 *bitmap = c.bitmap, *tablecache = c.cache; + + uint8 *table = vnapage[ntnum]; + if(table == NULL) + table = vnapage[ntnum&1]; int a, ptable=0; uint8 *pbitmap = bitmap;