#include <linux/limits.h>\r
#include <ctype.h>\r
#include <unistd.h>\r
-#include <sched.h>\r
\r
#include <stdarg.h>\r
\r
defaultConfig.s_PsndRate = 44100;\r
defaultConfig.s_PicoRegion = 0; // auto\r
defaultConfig.s_PicoAutoRgnOrder = 0x184; // US, EU, JP\r
- defaultConfig.s_PicoCDBuffers = 64;\r
+ defaultConfig.s_PicoCDBuffers = 0;\r
defaultConfig.Frameskip = -1; // auto\r
defaultConfig.CPUclock = 200;\r
defaultConfig.volume = 50;\r
}\r
}\r
\r
-static int EmuScan16(unsigned int num, void *sdata)\r
+static int EmuScanBegin16(unsigned int num)\r
{\r
if (!(Pico.video.reg[1]&8)) num += 8;\r
- DrawLineDest = (unsigned short *) gp2x_screen + 320*(num+1);\r
+ DrawLineDest = (unsigned short *) gp2x_screen + 320 * num;\r
\r
return 0;\r
}\r
\r
-static int EmuScan8(unsigned int num, void *sdata)\r
+static int EmuScanBegin8(unsigned int num)\r
{\r
if (!(Pico.video.reg[1]&8)) num += 8;\r
- DrawLineDest = (unsigned char *) gp2x_screen + 320*(num+1);\r
+ DrawLineDest = (unsigned char *) gp2x_screen + 320 * num;\r
\r
return 0;\r
}\r
else if (!(emu_opt&0x80))\r
{\r
// 8bit accurate renderer\r
- if (Pico.m.dirtyPal) {\r
+ if (Pico.m.dirtyPal)\r
+ {\r
Pico.m.dirtyPal = 0;\r
if(Pico.video.reg[0xC]&8) { // shadow/hilight mode\r
vidConvCpyRGB32(localPal, Pico.cram, 0x40);\r
localPal[0xe0] = 0x00000000; // reserved pixels for OSD\r
localPal[0xf0] = 0x00ffffff;\r
gp2x_video_setpalette(localPal, 0x100);\r
- } else if (rendstatus & 0x20) { // mid-frame palette changes\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
if (emu_opt & 2)\r
osd_text(osd_fps_x, h, fps);\r
}\r
- if ((emu_opt & 0x400) && (PicoMCD & 1))\r
+ if ((emu_opt & 0x400) && (PicoAHW & PAHW_MCD))\r
cd_leds();\r
\r
//gp2x_video_wait_vsync();\r
} else if (currentConfig.EmuOpt&0x80) {\r
gp2x_video_changemode(16);\r
PicoDrawSetColorFormat(1);\r
- PicoScan = EmuScan16;\r
- PicoScan(0, 0);\r
+ PicoScanBegin = EmuScanBegin16;\r
} else {\r
gp2x_video_changemode(8);\r
PicoDrawSetColorFormat(2);\r
- PicoScan = EmuScan8;\r
- PicoScan(0, 0);\r
+ PicoScanBegin = EmuScanBegin8;\r
}\r
if ((PicoOpt&0x10)||!(currentConfig.EmuOpt&0x80)) {\r
// setup pal for 8-bit modes\r
(!(which & 0x1000) && (currentConfig.EmuOpt & 0x200))) ) { // save\r
unsigned long keys;\r
blit("", (which & 0x1000) ? "LOAD STATE? (Y=yes, X=no)" : "OVERWRITE SAVE? (Y=yes, X=no)");\r
- while( !((keys = gp2x_joystick_read(1)) & (GP2X_X|GP2X_Y)) )\r
+ while ( !((keys = gp2x_joystick_read(1)) & (GP2X_X|GP2X_Y)) )\r
usleep(50*1024);\r
if (keys & GP2X_X) do_it = 0;\r
+ while ( gp2x_joystick_read(1) & (GP2X_X|GP2X_Y) ) // wait for release\r
+ usleep(50*1024);\r
clearArea(0);\r
}\r
if (do_it) {\r
\r
//vidResetMode();\r
PicoDrawSetColorFormat(1);\r
- PicoScan = EmuScan16;\r
- PicoScan(0, 0);\r
+ PicoScanBegin = EmuScanBegin16;\r
Pico.m.dirtyPal = 1;\r
PicoFrameDrawOnly();\r
\r
gettimeofday(&tval, 0);\r
if (thissec != tval.tv_sec) tval.tv_usec+=1000000;\r
\r
- if (tval.tv_usec < lim_time)\r
- sched_yield();\r
-\r
while (tval.tv_usec < lim_time)\r
{\r
spend_cycles(1024);\r
}\r
\r
// prepare CD buffer\r
- if (PicoMCD & 1) PicoCDBufferInit();\r
+ if (PicoAHW & PAHW_MCD) PicoCDBufferInit();\r
\r
// calc vsync offset to sync timing code with vsync\r
if (currentConfig.EmuOpt&0x2000) {\r
bench_fps += frames_shown;\r
sprintf(fpsbuff, "%02i/%02i/%02i", frames_shown, bench_fps_s, (bf[0]+bf[1]+bf[2]+bf[3])>>2);\r
#else\r
- if (currentConfig.EmuOpt & 2)\r
+ if (currentConfig.EmuOpt & 2) {\r
sprintf(fpsbuff, "%02i/%02i", frames_shown, frames_done);\r
- if (fpsbuff[5] == 0) { fpsbuff[5] = fpsbuff[6] = ' '; fpsbuff[7] = 0; }\r
+ if (fpsbuff[5] == 0) { fpsbuff[5] = fpsbuff[6] = ' '; fpsbuff[7] = 0; }\r
+ }\r
#endif\r
frames_shown = frames_done = 0;\r
thissec = tval.tv_sec;\r
\r
change_fast_forward(0);\r
\r
- if (PicoMCD & 1) PicoCDBufferFree();\r
+ if (PicoAHW & PAHW_MCD) PicoCDBufferFree();\r
\r
// save SRAM\r
if((currentConfig.EmuOpt & 1) && SRam.changed) {\r
\r
void emu_ResetGame(void)\r
{\r
- PicoReset(0);\r
+ PicoReset();\r
reset_timing = 1;\r
}\r
\r