diff --git a/desmume/src/GPU.cpp b/desmume/src/GPU.cpp index a8f71c2f8..82fe1278c 100644 --- a/desmume/src/GPU.cpp +++ b/desmume/src/GPU.cpp @@ -1000,14 +1000,17 @@ template INLINE void renderline_textBG(GPU * gpu, u16 XBG, u16 YBG, } yoff = ((YBG&7)<<3); - + u8* tilePal; xfin = 8 - (xoff&7); + u32 extPalMask = -dispCnt->ExBGxPalette_Enable; for(x = 0; x < LG; xfin = std::min(x+8, LG)) { tmp = (xoff & (lg-1))>>3; mapinfo = map + (tmp & 31) * 2; if(tmp > 31) mapinfo += 32*32*2; tileentry.val = T1ReadWord(MMU_gpu_map(mapinfo), 0); + + tilePal = pal + ((tileentry.bits.Palette<<8) & extPalMask); line = (u8*)MMU_gpu_map(tile + (tileentry.bits.TileNum*0x40) + ((tileentry.bits.VFlip) ? (7*8)-yoff : yoff)); @@ -1021,10 +1024,7 @@ template INLINE void renderline_textBG(GPU * gpu, u16 XBG, u16 YBG, } for(; x < xfin; ) { - if(dispCnt->ExBGxPalette_Enable) - color = T1ReadWord(pal, ((*line) + (tileentry.bits.Palette<<8)) << 1); - else - color = T1ReadWord(pal, (*line) << 1); + color = T1ReadWord(tilePal, (*line) << 1); gpu->__setFinalColorBck(color,x,*line); diff --git a/desmume/src/cp15.cpp b/desmume/src/cp15.cpp index 390a27c25..c06a0ae36 100644 --- a/desmume/src/cp15.cpp +++ b/desmume/src/cp15.cpp @@ -447,7 +447,8 @@ BOOL armcp15_moveARM2CP(armcp15_t *armcp15, u32 val, u8 CRn, u8 CRm, u8 opcode1, { armcp15->ctrl = val; MMU.ARM9_RW_MODE = BIT7(val); - armcp15->cpu->intVector = 0x0FFF0000 * (BIT13(val)); + //zero 31-jan-2010: change from 0x0FFF0000 to 0xFFFF0000 per gbatek + armcp15->cpu->intVector = 0xFFFF0000 * (BIT13(val)); armcp15->cpu->LDTBit = !BIT15(val); //TBit /*if(BIT17(val)) {