- int emu_opt = currentConfig.EmuOpt;\r
-\r
- if (PicoOpt&0x10)\r
- {\r
- // 8bit fast renderer\r
- if (Pico.m.dirtyPal) {\r
- Pico.m.dirtyPal = 0;\r
- vidConvCpyRGB32(localPal, Pico.cram, 0x40);\r
- // feed new palette to our device\r
- // gp2x_video_setpalette(localPal, 0x40);\r
- }\r
- // a hack for VR\r
- if (PicoRead16Hook == PicoSVPRead16)\r
- memset32((int *)(PicoDraw2FB+328*8+328*223), 0xe0e0e0e0, 328);\r
- // do actual copy\r
- vidCpyM2((unsigned char *)g_screen_ptr+g_screen_width*8, PicoDraw2FB+328*8);\r
- }\r
- else if (!(emu_opt&0x80))\r
- {\r
- // 8bit accurate renderer\r
- if (Pico.m.dirtyPal)\r
- {\r
- int pallen = 0xc0;\r
- Pico.m.dirtyPal = 0;\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
- 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
- pallen = 0xc0;\r
- }\r
- else {\r
- vidConvCpyRGB32(localPal, Pico.cram, 0x40);\r
- memcpy32(localPal+0x80, 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
- if (notice || (emu_opt & 2)) {\r
- int h = g_screen_height-16;\r
- if (currentConfig.scaling == 2 && !(Pico.video.reg[1]&8)) h -= 16;\r
- if (notice) osd_text(4, h, notice);\r
- if (emu_opt & 2)\r
- osd_text(osd_fps_x, h, fps);\r