// 8bit accurate renderer\r
if (Pico.m.dirtyPal)\r
{\r
+ int pallen = 0x40;\r
Pico.m.dirtyPal = 0;\r
- if(Pico.video.reg[0xC]&8) { // shadow/hilight mode\r
+ if (Pico.video.reg[0xC]&8) // shadow/hilight mode\r
+ {\r
vidConvCpyRGB32(localPal, Pico.cram, 0x40);\r
vidConvCpyRGB32sh(localPal+0x40, Pico.cram, 0x40);\r
vidConvCpyRGB32hi(localPal+0x80, Pico.cram, 0x40);\r
memcpy32(localPal+0xc0, localPal+0x40, 0x40);\r
- localPal[0xc0] = 0x0000c000;\r
- localPal[0xd0] = 0x00c00000;\r
- localPal[0xe0] = 0x00000000; // reserved pixels for OSD\r
- localPal[0xf0] = 0x00ffffff;\r
- gp2x_video_setpalette(localPal, 0x100);\r
- } else if (rendstatus & PDRAW_SONIC_MODE) { // mid-frame palette changes\r
+ pallen = 0x100;\r
+ }\r
+ else if (rendstatus & PDRAW_ACC_SPRITES) {\r
+ vidConvCpyRGB32(localPal, Pico.cram, 0x40);\r
+ memcpy32(localPal+0x40, localPal, 0x40);\r
+ memcpy32(localPal+0x80, localPal, 0x40);\r
+ memcpy32(localPal+0xc0, localPal, 0x40);\r
+ pallen = 0x100;\r
+ }\r
+ else if (rendstatus & PDRAW_SONIC_MODE) { // mid-frame palette changes\r
vidConvCpyRGB32(localPal, Pico.cram, 0x40);\r
vidConvCpyRGB32(localPal+0x40, HighPal, 0x40);\r
vidConvCpyRGB32(localPal+0x80, HighPal+0x40, 0x40);\r
- gp2x_video_setpalette(localPal, 0xc0);\r
- } else {\r
+ pallen = 0xc0;\r
+ }\r
+ else {\r
vidConvCpyRGB32(localPal, Pico.cram, 0x40);\r
- gp2x_video_setpalette(localPal, 0x40);\r
}\r
+ if (pallen > 0xc0) {\r
+ localPal[0xc0] = 0x0000c000;\r
+ localPal[0xd0] = 0x00c00000;\r
+ localPal[0xe0] = 0x00000000; // reserved pixels for OSD\r
+ localPal[0xf0] = 0x00ffffff;\r
+ }\r
+ gp2x_video_setpalette(localPal, pallen);\r
}\r
}\r
\r