}\r
\r
/* it seems we have a CD image here. Try to detect region and load a suitable BIOS now.. */\r
- fseek(cd_f, (type == 1) ? 0x100 : 0x110, SEEK_SET);\r
+ fseek(cd_f, (type == 1) ? 0x100+0x10B : 0x110+0x10B, SEEK_SET);\r
fread(buf, 1, 1, cd_f);\r
fclose(cd_f);\r
\r
- if (buf[0] == 0x64) region = 4; // EU\r
+ if (buf[0] == 0x64) region = 8; // EU\r
if (buf[0] == 0xa1) region = 1; // JAP\r
\r
printf("detected %s Sega/Mega CD image with %s region\n",\r
// bios_help() ?\r
return 0;\r
} else {\r
+ if (PicoMCD & 1) PicoExitMCD();\r
PicoMCD &= ~1;\r
}\r
\r
}\r
}\r
gettimeofday(¬iceMsgTime, 0);\r
-printf("PicoMCD: %x\n", PicoMCD);\r
+\r
// load SRAM for this ROM\r
if(currentConfig.EmuOpt & 1)\r
emu_SaveLoadGame(1, 1);\r
// set default config\r
memset(¤tConfig, 0, sizeof(currentConfig));\r
currentConfig.lastRomFile[0] = 0;\r
- currentConfig.EmuOpt = 0x1f;\r
- currentConfig.PicoOpt = 0x0f;\r
- currentConfig.PsndRate = 22050;\r
+ currentConfig.EmuOpt = 0x1f | 0x400; // | cd_leds\r
+ currentConfig.PicoOpt = 0x0f | 0xe00; // | use_940 | cd_pcm | cd_cdda\r
+ currentConfig.PsndRate = 44100;\r
currentConfig.PicoRegion = 0; // auto\r
+ currentConfig.PicoAutoRgnOrder = 0x184; // US, EU, JP\r
currentConfig.Frameskip = -1; // auto\r
currentConfig.CPUclock = 200;\r
currentConfig.volume = 50;\r
PicoOpt = currentConfig.PicoOpt;\r
PsndRate = currentConfig.PsndRate;\r
PicoRegionOverride = currentConfig.PicoRegion;\r
+ PicoAutoRgnOrder = currentConfig.PicoAutoRgnOrder;\r
if (PicoOpt & 0x20) {\r
actionNames[ 8] = "Z"; actionNames[ 9] = "Y";\r
actionNames[10] = "X"; actionNames[11] = "MODE";\r
currentConfig.PicoOpt = PicoOpt;\r
currentConfig.PsndRate = PsndRate;\r
currentConfig.PicoRegion = PicoRegionOverride;\r
+ currentConfig.PicoAutoRgnOrder = PicoAutoRgnOrder;\r
bwrite = fwrite(¤tConfig, 1, sizeof(currentConfig), f);\r
fflush(f);\r
fclose(f);\r
// 8-bit modes\r
unsigned int col_g = (old_reg & 2) ? 0xc0c0c0c0 : 0xe0e0e0e0;\r
unsigned int col_r = (old_reg & 1) ? 0xd0d0d0d0 : 0xe0e0e0e0;\r
- *(unsigned int *)((char *)gp2x_screen + 320*2+306) =\r
- *(unsigned int *)((char *)gp2x_screen + 320*3+306) =\r
- *(unsigned int *)((char *)gp2x_screen + 320*4+306) = col_g;\r
- *(unsigned int *)((char *)gp2x_screen + 320*2+312) =\r
- *(unsigned int *)((char *)gp2x_screen + 320*3+312) =\r
- *(unsigned int *)((char *)gp2x_screen + 320*4+312) = col_r;\r
+ *(unsigned int *)((char *)gp2x_screen + 320*2+ 4) =\r
+ *(unsigned int *)((char *)gp2x_screen + 320*3+ 4) =\r
+ *(unsigned int *)((char *)gp2x_screen + 320*4+ 4) = col_g;\r
+ *(unsigned int *)((char *)gp2x_screen + 320*2+12) =\r
+ *(unsigned int *)((char *)gp2x_screen + 320*3+12) =\r
+ *(unsigned int *)((char *)gp2x_screen + 320*4+12) = col_r;\r
} else {\r
// 16-bit modes\r
- unsigned int *p = (unsigned int *)((short *)gp2x_screen + 320*2+306);\r
+ unsigned int *p = (unsigned int *)((short *)gp2x_screen + 320*2+4);\r
unsigned int col_g = (old_reg & 2) ? 0x06000600 : 0;\r
unsigned int col_r = (old_reg & 1) ? 0xc000c000 : 0;\r
- *p++ = col_g; *p++ = col_g; p++; *p++ = col_r; *p++ = col_r; p += 320/2 - 10/2;\r
- *p++ = col_g; *p++ = col_g; p++; *p++ = col_r; *p++ = col_r; p += 320/2 - 10/2;\r
- *p++ = col_g; *p++ = col_g; p++; *p++ = col_r; *p++ = col_r; p += 320/2 - 10/2;\r
+ *p++ = col_g; *p++ = col_g; p+=2; *p++ = col_r; *p++ = col_r; p += 320/2 - 12/2;\r
+ *p++ = col_g; *p++ = col_g; p+=2; *p++ = col_r; *p++ = col_r; p += 320/2 - 12/2;\r
+ *p++ = col_g; *p++ = col_g; p+=2; *p++ = col_r; *p++ = col_r; p += 320/2 - 12/2;\r
}\r
}\r
\r
\r
// save SRAM\r
if((currentConfig.EmuOpt & 1) && SRam.changed) {\r
+ blit("", "Writing SRAM/BRAM..");\r
emu_SaveLoadGame(0, 1);\r
SRam.changed = 0;\r
}\r
return gzwrite(file, p, _n);\r
}\r
\r
-typedef unsigned int (*STATE_SL_FUNC)(void *, unsigned int, unsigned int, void *);\r
\r
int emu_SaveLoadGame(int load, int sram)\r
{\r
if( (PmovFile = gzopen(saveFname, load ? "rb" : "wb")) ) {\r
areaRead = gzRead2;\r
areaWrite = gzWrite2;\r
+ areaEof = (areaeof *) gzeof;\r
+ areaSeek = (areaseek *) gzseek;\r
if(!load) gzsetparams(PmovFile, 9, Z_DEFAULT_STRATEGY);\r
} else\r
saveFname[strlen(saveFname)-3] = 0;\r
}\r
if(!PmovFile) { // gzip failed or was disabled\r
if( (PmovFile = fopen(saveFname, load ? "rb" : "wb")) ) {\r
- areaRead = (STATE_SL_FUNC) fread;\r
- areaWrite = (STATE_SL_FUNC) fwrite;\r
+ areaRead = (arearw *) fread;\r
+ areaWrite = (arearw *) fwrite;\r
+ areaEof = (areaeof *) feof;\r
+ areaSeek = (areaseek *) fseek;\r
}\r
}\r
if(PmovFile) {\r
- PmovState(load ? 6 : 5, PmovFile);\r
- strcpy(noticeMsg, load ? "GAME LOADED " : "GAME SAVED ");\r
+ ret = PmovState(load ? 6 : 5, PmovFile);\r
if(areaRead == gzRead2)\r
gzclose(PmovFile);\r
else fclose ((FILE *) PmovFile);\r
PmovFile = 0;\r
if (!load) sync();\r
else Pico.m.dirtyPal=1;\r
- } else {\r
+ }\r
+ else ret = -1;\r
+ if (!ret)\r
+ strcpy(noticeMsg, load ? "GAME LOADED " : "GAME SAVED ");\r
+ else\r
+ {\r
strcpy(noticeMsg, load ? "LOAD FAILED " : "SAVE FAILED ");\r
ret = -1;\r
}\r