mirror of
https://github.com/RaySollium99/libpicofe.git
synced 2025-09-04 22:47:44 -04:00
region detection, cd states wip, fixes, stuff
git-svn-id: file:///home/notaz/opt/svn/PicoDrive/platform@25 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
598e7c06cd
commit
979ba09f05
7 changed files with 136 additions and 105 deletions
|
@ -27,6 +27,7 @@ static unsigned char *mp3_mem = 0;
|
|||
|
||||
int crashed_940 = 0;
|
||||
|
||||
static FILE *loaded_mp3 = 0;
|
||||
|
||||
/***********************************************************/
|
||||
|
||||
|
@ -380,6 +381,8 @@ void YM2612Init_940(int baseclock, int rate)
|
|||
|
||||
internal_reset();
|
||||
|
||||
loaded_mp3 = 0;
|
||||
|
||||
/* now cause 940 to init it's ym2612 stuff */
|
||||
shared_ctl->baseclock = baseclock;
|
||||
shared_ctl->rate = rate;
|
||||
|
@ -468,13 +471,12 @@ static void mix_samples(short *dest_buf, int *ym_buf, short *mp3_buf, int len, i
|
|||
|
||||
// here we assume that length is different between games, but constant in one game
|
||||
|
||||
static FILE *loaded_mp3 = 0;
|
||||
static int mp3_samples_ready = 0, mp3_buffer_offs = 0;
|
||||
static int mp3_play_bufsel = 0;
|
||||
|
||||
void YM2612UpdateOne_940(short *buffer, int length, int stereo)
|
||||
{
|
||||
int cdda_on, *ym_buffer = shared_data->mix_buffer, mp3_job = 0;
|
||||
static int mp3_samples_ready = 0, mp3_buffer_offs = 0;
|
||||
static int mp3_play_bufsel = 1;
|
||||
|
||||
//printf("YM2612UpdateOne_940()\n");
|
||||
if (shared_ctl->busy) wait_busy_940();
|
||||
|
@ -567,6 +569,10 @@ void mp3_start_play(FILE *f, int pos) // pos is 0-1023
|
|||
printf("mp3 pos1024: %i, byte_offs %i/%i\n", pos, byte_offs, shared_ctl->mp3_len);
|
||||
|
||||
shared_ctl->mp3_offs = byte_offs;
|
||||
|
||||
// reset buffer pointers..
|
||||
mp3_samples_ready = mp3_buffer_offs = mp3_play_bufsel = 0;
|
||||
shared_ctl->mp3_buffsel = 1; // will change to 0 on first decode
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -40,7 +40,8 @@ OBJS += ../../Pico/Area.o ../../Pico/Cart.o ../../Pico/Utils.o ../../Pico/Memory
|
|||
../../Pico/Pico.o ../../Pico/Sek.o ../../Pico/VideoPort.o ../../Pico/Draw2.o ../../Pico/Draw.o
|
||||
# Pico - CD
|
||||
OBJS += ../../Pico/cd/Pico.o ../../Pico/cd/Memory.o ../../Pico/cd/Sek.o ../../Pico/cd/LC89510.o \
|
||||
../../Pico/cd/cd_sys.o ../../Pico/cd/cd_file.o ../../Pico/cd/gfx_cd.o
|
||||
../../Pico/cd/cd_sys.o ../../Pico/cd/cd_file.o ../../Pico/cd/gfx_cd.o \
|
||||
../../Pico/cd/Area.o ../../Pico/cd/Misc.o
|
||||
# asm stuff
|
||||
ifeq "$(asm_render)" "1"
|
||||
DEFINC += -D_ASM_DRAW_C
|
||||
|
|
10
gp2x/emu.c
10
gp2x/emu.c
|
@ -456,6 +456,7 @@ int emu_ReadConfig(int game)
|
|||
currentConfig.PicoOpt = 0x0f | 0x200; // | use_940
|
||||
currentConfig.PsndRate = 44100;
|
||||
currentConfig.PicoRegion = 0; // auto
|
||||
currentConfig.PicoAutoRgnOrder = 0x184; // US, EU, JP
|
||||
currentConfig.Frameskip = -1; // auto
|
||||
currentConfig.CPUclock = 200;
|
||||
currentConfig.volume = 50;
|
||||
|
@ -490,6 +491,7 @@ int emu_ReadConfig(int game)
|
|||
PicoOpt = currentConfig.PicoOpt;
|
||||
PsndRate = currentConfig.PsndRate;
|
||||
PicoRegionOverride = currentConfig.PicoRegion;
|
||||
PicoAutoRgnOrder = currentConfig.PicoAutoRgnOrder;
|
||||
if (PicoOpt & 0x20) {
|
||||
actionNames[ 8] = "Z"; actionNames[ 9] = "Y";
|
||||
actionNames[10] = "X"; actionNames[11] = "MODE";
|
||||
|
@ -527,6 +529,7 @@ int emu_WriteConfig(int game)
|
|||
currentConfig.PicoOpt = PicoOpt;
|
||||
currentConfig.PsndRate = PsndRate;
|
||||
currentConfig.PicoRegion = PicoRegionOverride;
|
||||
currentConfig.PicoAutoRgnOrder = PicoAutoRgnOrder;
|
||||
bwrite = fwrite(¤tConfig, 1, sizeof(currentConfig), f);
|
||||
fflush(f);
|
||||
fclose(f);
|
||||
|
@ -1231,6 +1234,7 @@ if (Pico.m.frame_count == 31563) {
|
|||
|
||||
// save SRAM
|
||||
if((currentConfig.EmuOpt & 1) && SRam.changed) {
|
||||
blit("", "Writing SRAM/BRAM..");
|
||||
emu_SaveLoadGame(0, 1);
|
||||
SRam.changed = 0;
|
||||
}
|
||||
|
@ -1321,14 +1325,16 @@ int emu_SaveLoadGame(int load, int sram)
|
|||
if( (PmovFile = gzopen(saveFname, load ? "rb" : "wb")) ) {
|
||||
areaRead = gzRead2;
|
||||
areaWrite = gzWrite2;
|
||||
areaEof = (areaeof *) gzeof;
|
||||
if(!load) gzsetparams(PmovFile, 9, Z_DEFAULT_STRATEGY);
|
||||
} else
|
||||
saveFname[strlen(saveFname)-3] = 0;
|
||||
}
|
||||
if(!PmovFile) { // gzip failed or was disabled
|
||||
if( (PmovFile = fopen(saveFname, load ? "rb" : "wb")) ) {
|
||||
areaRead = (STATE_SL_FUNC) fread;
|
||||
areaWrite = (STATE_SL_FUNC) fwrite;
|
||||
areaRead = (arearw *) fread;
|
||||
areaWrite = (arearw *) fwrite;
|
||||
areaEof = (areaeof *) feof;
|
||||
}
|
||||
}
|
||||
if(PmovFile) {
|
||||
|
|
|
@ -30,6 +30,7 @@ typedef struct {
|
|||
int volume;
|
||||
int gamma;
|
||||
int JoyBinds[4][32];
|
||||
int PicoAutoRgnOrder;
|
||||
} currentConfig_t;
|
||||
|
||||
extern char romFileName[];
|
||||
|
|
208
gp2x/menu.c
208
gp2x/menu.c
|
@ -562,18 +562,6 @@ static void kc_sel_loop(void)
|
|||
|
||||
|
||||
|
||||
// order must match that of currentConfig_t
|
||||
|
||||
struct {
|
||||
int EmuOpt;
|
||||
int PicoOpt;
|
||||
int PsndRate;
|
||||
int PicoRegion;
|
||||
int Frameskip;
|
||||
int CPUclock;
|
||||
} tmp_opts;
|
||||
int tmp_gamma;
|
||||
|
||||
// --------- sega/mega cd options ----------
|
||||
|
||||
static void draw_cd_menu_options(int menu_sel, char *b_us, char *b_eu, char *b_jp)
|
||||
|
@ -585,8 +573,8 @@ static void draw_cd_menu_options(int menu_sel, char *b_us, char *b_eu, char *b_j
|
|||
gp2x_text_out8(tl_x, y, "USA BIOS: %s", b_us); // 0
|
||||
gp2x_text_out8(tl_x, (y+=10), "EUR BIOS: %s", b_eu); // 1
|
||||
gp2x_text_out8(tl_x, (y+=10), "JAP BIOS: %s", b_jp); // 2
|
||||
gp2x_text_out8(tl_x, (y+=10), "CD LEDs %s", (tmp_opts.EmuOpt &0x400)?"ON":"OFF"); // 3
|
||||
gp2x_text_out8(tl_x, (y+=10), "CDDA audio (using mp3s) %s", (tmp_opts.EmuOpt &0x800)?"ON":"OFF"); // 4
|
||||
gp2x_text_out8(tl_x, (y+=10), "CD LEDs %s", (currentConfig.EmuOpt &0x400)?"ON":"OFF"); // 3
|
||||
gp2x_text_out8(tl_x, (y+=10), "CDDA audio (using mp3s) %s", (currentConfig.EmuOpt &0x800)?"ON":"OFF"); // 4
|
||||
gp2x_text_out8(tl_x, (y+=10), "Done");
|
||||
|
||||
// draw cursor
|
||||
|
@ -629,8 +617,8 @@ static void cd_menu_loop_options(void)
|
|||
if(inp & GP2X_DOWN) { menu_sel++; if (menu_sel > menu_sel_max) menu_sel = 0; }
|
||||
if((inp& GP2X_B)||(inp&GP2X_LEFT)||(inp&GP2X_RIGHT)) { // toggleable options
|
||||
switch (menu_sel) {
|
||||
case 3: tmp_opts.EmuOpt ^=0x400; break;
|
||||
case 4: tmp_opts.EmuOpt ^=0x800; break;
|
||||
case 3: currentConfig.EmuOpt ^=0x400; break;
|
||||
case 4: currentConfig.EmuOpt ^=0x800; break;
|
||||
case 5: return;
|
||||
}
|
||||
}
|
||||
|
@ -670,16 +658,16 @@ static void draw_amenu_options(int menu_sel)
|
|||
|
||||
y = tl_y;
|
||||
memset(gp2x_screen, 0, 320*240);
|
||||
gp2x_text_out8(tl_x, y, "Scale 32 column mode %s", (tmp_opts.PicoOpt&0x100)?"ON":"OFF"); // 0
|
||||
gp2x_text_out8(tl_x, (y+=10), "Gamma correction %i.%02i", tmp_gamma / 100, tmp_gamma%100); // 1
|
||||
gp2x_text_out8(tl_x, (y+=10), "Emulate Z80 %s", (tmp_opts.PicoOpt&0x004)?"ON":"OFF"); // 2
|
||||
gp2x_text_out8(tl_x, (y+=10), "Emulate YM2612 (FM) %s", (tmp_opts.PicoOpt&0x001)?"ON":"OFF"); // 3
|
||||
gp2x_text_out8(tl_x, (y+=10), "Emulate SN76496 (PSG) %s", (tmp_opts.PicoOpt&0x002)?"ON":"OFF"); // 4
|
||||
gp2x_text_out8(tl_x, (y+=10), "gzip savestates %s", (tmp_opts.EmuOpt &0x008)?"ON":"OFF"); // 5
|
||||
gp2x_text_out8(tl_x, (y+=10), "Don't save config on exit %s", (tmp_opts.EmuOpt &0x020)?"ON":"OFF"); // 6
|
||||
gp2x_text_out8(tl_x, y, "Scale 32 column mode %s", (currentConfig.PicoOpt&0x100)?"ON":"OFF"); // 0
|
||||
gp2x_text_out8(tl_x, (y+=10), "Gamma correction %i.%02i", currentConfig.gamma / 100, currentConfig.gamma%100); // 1
|
||||
gp2x_text_out8(tl_x, (y+=10), "Emulate Z80 %s", (currentConfig.PicoOpt&0x004)?"ON":"OFF"); // 2
|
||||
gp2x_text_out8(tl_x, (y+=10), "Emulate YM2612 (FM) %s", (currentConfig.PicoOpt&0x001)?"ON":"OFF"); // 3
|
||||
gp2x_text_out8(tl_x, (y+=10), "Emulate SN76496 (PSG) %s", (currentConfig.PicoOpt&0x002)?"ON":"OFF"); // 4
|
||||
gp2x_text_out8(tl_x, (y+=10), "gzip savestates %s", (currentConfig.EmuOpt &0x008)?"ON":"OFF"); // 5
|
||||
gp2x_text_out8(tl_x, (y+=10), "Don't save config on exit %s", (currentConfig.EmuOpt &0x020)?"ON":"OFF"); // 6
|
||||
gp2x_text_out8(tl_x, (y+=10), "needs restart:");
|
||||
gp2x_text_out8(tl_x, (y+=10), "craigix's RAM timings %s", (tmp_opts.EmuOpt &0x100)?"ON":"OFF"); // 8
|
||||
gp2x_text_out8(tl_x, (y+=10), "squidgehack (now %s %s", mms, (tmp_opts.EmuOpt &0x010)?"ON":"OFF"); // 9
|
||||
gp2x_text_out8(tl_x, (y+=10), "craigix's RAM timings %s", (currentConfig.EmuOpt &0x100)?"ON":"OFF"); // 8
|
||||
gp2x_text_out8(tl_x, (y+=10), "squidgehack (now %s %s", mms, (currentConfig.EmuOpt &0x010)?"ON":"OFF"); // 9
|
||||
gp2x_text_out8(tl_x, (y+=10), "Done");
|
||||
|
||||
// draw cursor
|
||||
|
@ -701,14 +689,14 @@ static void amenu_loop_options(void)
|
|||
if(inp & GP2X_DOWN) { menu_sel++; if (menu_sel > menu_sel_max) menu_sel = 0; }
|
||||
if((inp& GP2X_B)||(inp&GP2X_LEFT)||(inp&GP2X_RIGHT)) { // toggleable options
|
||||
switch (menu_sel) {
|
||||
case 0: tmp_opts.PicoOpt^=0x100; break;
|
||||
case 2: tmp_opts.PicoOpt^=0x004; break;
|
||||
case 3: tmp_opts.PicoOpt^=0x001; break;
|
||||
case 4: tmp_opts.PicoOpt^=0x002; break;
|
||||
case 5: tmp_opts.EmuOpt ^=0x008; break;
|
||||
case 6: tmp_opts.EmuOpt ^=0x020; break;
|
||||
case 8: tmp_opts.EmuOpt ^=0x100; break;
|
||||
case 9: tmp_opts.EmuOpt ^=0x010; break;
|
||||
case 0: currentConfig.PicoOpt^=0x100; break;
|
||||
case 2: currentConfig.PicoOpt^=0x004; break;
|
||||
case 3: currentConfig.PicoOpt^=0x001; break;
|
||||
case 4: currentConfig.PicoOpt^=0x002; break;
|
||||
case 5: currentConfig.EmuOpt ^=0x008; break;
|
||||
case 6: currentConfig.EmuOpt ^=0x020; break;
|
||||
case 8: currentConfig.EmuOpt ^=0x100; break;
|
||||
case 9: currentConfig.EmuOpt ^=0x010; break;
|
||||
case 10: return;
|
||||
}
|
||||
}
|
||||
|
@ -717,9 +705,9 @@ static void amenu_loop_options(void)
|
|||
switch (menu_sel) {
|
||||
case 1:
|
||||
while ((inp = gp2x_joystick_read(1)) & (GP2X_LEFT|GP2X_RIGHT)) {
|
||||
tmp_gamma += (inp & GP2X_LEFT) ? -1 : 1;
|
||||
if (tmp_gamma < 1) tmp_gamma = 1;
|
||||
if (tmp_gamma > 300) tmp_gamma = 300;
|
||||
currentConfig.gamma += (inp & GP2X_LEFT) ? -1 : 1;
|
||||
if (currentConfig.gamma < 1) currentConfig.gamma = 1;
|
||||
if (currentConfig.gamma > 300) currentConfig.gamma = 300;
|
||||
draw_amenu_options(menu_sel);
|
||||
usleep(18*1000);
|
||||
}
|
||||
|
@ -731,14 +719,26 @@ static void amenu_loop_options(void)
|
|||
|
||||
// -------------- options --------------
|
||||
|
||||
static char *region_name(unsigned int code)
|
||||
static const char *region_name(unsigned int code)
|
||||
{
|
||||
char *names[] = { "Auto", "Japan NTSC", "Japan PAL", "USA", "Europe" };
|
||||
int i = 0;
|
||||
code <<= 1;
|
||||
while((code >>=1)) i++;
|
||||
if (i > 4) return "unknown";
|
||||
return names[i];
|
||||
static const char *names[] = { "Auto", " Japan NTSC", " Japan PAL", " USA", " Europe" };
|
||||
static const char *names_short[] = { "", " JP", " JP", " US", " EU" };
|
||||
int u, i = 0;
|
||||
if (code) {
|
||||
code <<= 1;
|
||||
while((code >>= 1)) i++;
|
||||
if (i > 4) return "unknown";
|
||||
return names[i];
|
||||
} else {
|
||||
static char name[24];
|
||||
strcpy(name, "Auto:");
|
||||
for (u = 0; u < 3; u++) {
|
||||
i = 0; code = ((PicoAutoRgnOrder >> u*4) & 0xf) << 1;
|
||||
while((code >>= 1)) i++;
|
||||
strcat(name, names_short[i]);
|
||||
}
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
static void draw_menu_options(int menu_sel)
|
||||
|
@ -746,13 +746,13 @@ static void draw_menu_options(int menu_sel)
|
|||
int tl_x = 25, tl_y = 40, y;
|
||||
char monostereo[8], strframeskip[8], *strrend;
|
||||
|
||||
strcpy(monostereo, (tmp_opts.PicoOpt&0x08)?"stereo":"mono");
|
||||
if (tmp_opts.Frameskip < 0)
|
||||
strcpy(monostereo, (currentConfig.PicoOpt&0x08)?"stereo":"mono");
|
||||
if (currentConfig.Frameskip < 0)
|
||||
strcpy(strframeskip, "Auto");
|
||||
else sprintf(strframeskip, "%i", tmp_opts.Frameskip);
|
||||
if (tmp_opts.PicoOpt&0x10) {
|
||||
else sprintf(strframeskip, "%i", currentConfig.Frameskip);
|
||||
if (currentConfig.PicoOpt&0x10) {
|
||||
strrend = " 8bit fast";
|
||||
} else if (tmp_opts.EmuOpt&0x80) {
|
||||
} else if (currentConfig.EmuOpt&0x80) {
|
||||
strrend = "16bit accurate";
|
||||
} else {
|
||||
strrend = " 8bit accurate";
|
||||
|
@ -761,19 +761,19 @@ static void draw_menu_options(int menu_sel)
|
|||
y = tl_y;
|
||||
memset(gp2x_screen, 0, 320*240);
|
||||
gp2x_text_out8(tl_x, y, "Renderer: %s", strrend); // 0
|
||||
gp2x_text_out8(tl_x, (y+=10), "Accurate timing (slower) %s", (tmp_opts.PicoOpt&0x040)?"ON":"OFF"); // 1
|
||||
gp2x_text_out8(tl_x, (y+=10), "Accurate sprites (slower) %s", (tmp_opts.PicoOpt&0x080)?"ON":"OFF"); // 2
|
||||
gp2x_text_out8(tl_x, (y+=10), "Show FPS %s", (tmp_opts.EmuOpt &0x002)?"ON":"OFF"); // 3
|
||||
gp2x_text_out8(tl_x, (y+=10), "Accurate timing (slower) %s", (currentConfig.PicoOpt&0x040)?"ON":"OFF"); // 1
|
||||
gp2x_text_out8(tl_x, (y+=10), "Accurate sprites (slower) %s", (currentConfig.PicoOpt&0x080)?"ON":"OFF"); // 2
|
||||
gp2x_text_out8(tl_x, (y+=10), "Show FPS %s", (currentConfig.EmuOpt &0x002)?"ON":"OFF"); // 3
|
||||
gp2x_text_out8(tl_x, (y+=10), "Frameskip %s", strframeskip);
|
||||
gp2x_text_out8(tl_x, (y+=10), "Enable sound %s", (tmp_opts.EmuOpt &0x004)?"ON":"OFF"); // 5
|
||||
gp2x_text_out8(tl_x, (y+=10), "Sound Quality: %5iHz %s", tmp_opts.PsndRate, monostereo);
|
||||
gp2x_text_out8(tl_x, (y+=10), "Use ARM940 core for sound %s", (tmp_opts.PicoOpt&0x200)?"ON":"OFF"); // 7
|
||||
gp2x_text_out8(tl_x, (y+=10), "6 button pad %s", (tmp_opts.PicoOpt&0x020)?"ON":"OFF"); // 8
|
||||
gp2x_text_out8(tl_x, (y+=10), "Genesis Region: %s", region_name(tmp_opts.PicoRegion));
|
||||
gp2x_text_out8(tl_x, (y+=10), "Use SRAM/BRAM savestates %s", (tmp_opts.EmuOpt &0x001)?"ON":"OFF"); // 10
|
||||
gp2x_text_out8(tl_x, (y+=10), "Confirm save overwrites %s", (tmp_opts.EmuOpt &0x200)?"ON":"OFF"); // 11
|
||||
gp2x_text_out8(tl_x, (y+=10), "Enable sound %s", (currentConfig.EmuOpt &0x004)?"ON":"OFF"); // 5
|
||||
gp2x_text_out8(tl_x, (y+=10), "Sound Quality: %5iHz %s", currentConfig.PsndRate, monostereo);
|
||||
gp2x_text_out8(tl_x, (y+=10), "Use ARM940 core for sound %s", (currentConfig.PicoOpt&0x200)?"ON":"OFF"); // 7
|
||||
gp2x_text_out8(tl_x, (y+=10), "6 button pad %s", (currentConfig.PicoOpt&0x020)?"ON":"OFF"); // 8
|
||||
gp2x_text_out8(tl_x, (y+=10), "Genesis Region: %s", region_name(currentConfig.PicoRegion));
|
||||
gp2x_text_out8(tl_x, (y+=10), "Use SRAM/BRAM savestates %s", (currentConfig.EmuOpt &0x001)?"ON":"OFF"); // 10
|
||||
gp2x_text_out8(tl_x, (y+=10), "Confirm save overwrites %s", (currentConfig.EmuOpt &0x200)?"ON":"OFF"); // 11
|
||||
gp2x_text_out8(tl_x, (y+=10), "Save slot %i", state_slot); // 12
|
||||
gp2x_text_out8(tl_x, (y+=10), "GP2X CPU clocks %iMhz", tmp_opts.CPUclock);
|
||||
gp2x_text_out8(tl_x, (y+=10), "GP2X CPU clocks %iMhz", currentConfig.CPUclock);
|
||||
gp2x_text_out8(tl_x, (y+=10), "[Sega/Mega CD options]");
|
||||
gp2x_text_out8(tl_x, (y+=10), "[advanced options]"); // 15
|
||||
gp2x_text_out8(tl_x, (y+=10), "Save cfg as default");
|
||||
|
@ -799,10 +799,32 @@ static int sndrate_prevnext(int rate, int dir)
|
|||
return rates[i];
|
||||
}
|
||||
|
||||
static void region_prevnext(int right)
|
||||
{
|
||||
// jp_ntsc=1, jp_pal=2, usa=4, eu=8
|
||||
static int rgn_orders[] = { 0x148, 0x184, 0x814, 0x418, 0x841, 0x481 };
|
||||
int i;
|
||||
if (right) {
|
||||
if (!currentConfig.PicoRegion) {
|
||||
for (i = 0; i < 6; i++)
|
||||
if (rgn_orders[i] == PicoAutoRgnOrder) break;
|
||||
if (i < 5) PicoAutoRgnOrder = rgn_orders[i+1];
|
||||
else currentConfig.PicoRegion=1;
|
||||
}
|
||||
else currentConfig.PicoRegion<<=1;
|
||||
if (currentConfig.PicoRegion > 8) currentConfig.PicoRegion = 8;
|
||||
} else {
|
||||
if (!currentConfig.PicoRegion) {
|
||||
for (i = 0; i < 6; i++)
|
||||
if (rgn_orders[i] == PicoAutoRgnOrder) break;
|
||||
if (i > 0) PicoAutoRgnOrder = rgn_orders[i-1];
|
||||
}
|
||||
else currentConfig.PicoRegion>>=1;
|
||||
}
|
||||
}
|
||||
|
||||
static void menu_options_save(void)
|
||||
{
|
||||
memcpy(¤tConfig.EmuOpt, &tmp_opts.EmuOpt, sizeof(tmp_opts));
|
||||
currentConfig.gamma = tmp_gamma;
|
||||
PicoOpt = currentConfig.PicoOpt;
|
||||
PsndRate = currentConfig.PsndRate;
|
||||
PicoRegionOverride = currentConfig.PicoRegion;
|
||||
|
@ -820,11 +842,9 @@ static int menu_loop_options(void)
|
|||
unsigned long inp = 0;
|
||||
|
||||
if (rom_data) menu_sel_max++;
|
||||
memcpy(&tmp_opts.EmuOpt, ¤tConfig.EmuOpt, sizeof(tmp_opts));
|
||||
tmp_gamma = currentConfig.gamma;
|
||||
tmp_opts.PicoOpt = PicoOpt;
|
||||
tmp_opts.PsndRate = PsndRate;
|
||||
tmp_opts.PicoRegion = PicoRegionOverride;
|
||||
currentConfig.PicoOpt = PicoOpt;
|
||||
currentConfig.PsndRate = PsndRate;
|
||||
currentConfig.PicoRegion = PicoRegionOverride;
|
||||
|
||||
for(;;)
|
||||
{
|
||||
|
@ -834,14 +854,14 @@ static int menu_loop_options(void)
|
|||
if(inp & GP2X_DOWN) { menu_sel++; if (menu_sel > menu_sel_max) menu_sel = 0; }
|
||||
if((inp& GP2X_B)||(inp&GP2X_LEFT)||(inp&GP2X_RIGHT)) { // toggleable options
|
||||
switch (menu_sel) {
|
||||
case 1: tmp_opts.PicoOpt^=0x040; break;
|
||||
case 2: tmp_opts.PicoOpt^=0x080; break;
|
||||
case 3: tmp_opts.EmuOpt ^=0x002; break;
|
||||
case 5: tmp_opts.EmuOpt ^=0x004; break;
|
||||
case 7: tmp_opts.PicoOpt^=0x200; break;
|
||||
case 8: tmp_opts.PicoOpt^=0x020; break;
|
||||
case 10: tmp_opts.EmuOpt ^=0x001; break;
|
||||
case 11: tmp_opts.EmuOpt ^=0x200; break;
|
||||
case 1: currentConfig.PicoOpt^=0x040; break;
|
||||
case 2: currentConfig.PicoOpt^=0x080; break;
|
||||
case 3: currentConfig.EmuOpt ^=0x002; break;
|
||||
case 5: currentConfig.EmuOpt ^=0x004; break;
|
||||
case 7: currentConfig.PicoOpt^=0x200; break;
|
||||
case 8: currentConfig.PicoOpt^=0x020; break;
|
||||
case 10: currentConfig.EmuOpt ^=0x001; break;
|
||||
case 11: currentConfig.EmuOpt ^=0x200; break;
|
||||
case 14: cd_menu_loop_options();
|
||||
if (engineState == PGS_ReloadRom)
|
||||
return 0; // test BIOS
|
||||
|
@ -859,8 +879,7 @@ static int menu_loop_options(void)
|
|||
return 1;
|
||||
}
|
||||
}
|
||||
if(inp & GP2X_X) return 0; // done (no update or write)
|
||||
if(inp & GP2X_A) {
|
||||
if(inp & (GP2X_X|GP2X_A)) {
|
||||
menu_options_save();
|
||||
return 0; // done (update, no write)
|
||||
}
|
||||
|
@ -868,32 +887,29 @@ static int menu_loop_options(void)
|
|||
switch (menu_sel) {
|
||||
case 0:
|
||||
if (inp & GP2X_LEFT) {
|
||||
if ( tmp_opts.PicoOpt&0x10) tmp_opts.PicoOpt&= ~0x10;
|
||||
else if (!(tmp_opts.EmuOpt &0x80))tmp_opts.EmuOpt |= 0x80;
|
||||
else if ( tmp_opts.EmuOpt &0x80) break;
|
||||
if ( currentConfig.PicoOpt&0x10) currentConfig.PicoOpt&= ~0x10;
|
||||
else if (!(currentConfig.EmuOpt &0x80))currentConfig.EmuOpt |= 0x80;
|
||||
else if ( currentConfig.EmuOpt &0x80) break;
|
||||
} else {
|
||||
if ( tmp_opts.PicoOpt&0x10) break;
|
||||
else if (!(tmp_opts.EmuOpt &0x80))tmp_opts.PicoOpt|= 0x10;
|
||||
else if ( tmp_opts.EmuOpt &0x80) tmp_opts.EmuOpt &= ~0x80;
|
||||
if ( currentConfig.PicoOpt&0x10) break;
|
||||
else if (!(currentConfig.EmuOpt &0x80))currentConfig.PicoOpt|= 0x10;
|
||||
else if ( currentConfig.EmuOpt &0x80) currentConfig.EmuOpt &= ~0x80;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
tmp_opts.Frameskip += (inp & GP2X_LEFT) ? -1 : 1;
|
||||
if (tmp_opts.Frameskip < 0) tmp_opts.Frameskip = -1;
|
||||
if (tmp_opts.Frameskip > 32) tmp_opts.Frameskip = 32;
|
||||
currentConfig.Frameskip += (inp & GP2X_LEFT) ? -1 : 1;
|
||||
if (currentConfig.Frameskip < 0) currentConfig.Frameskip = -1;
|
||||
if (currentConfig.Frameskip > 32) currentConfig.Frameskip = 32;
|
||||
break;
|
||||
case 6:
|
||||
if ((inp & GP2X_RIGHT) && tmp_opts.PsndRate == 44100 && !(tmp_opts.PicoOpt&0x08)) {
|
||||
tmp_opts.PsndRate = 8000; tmp_opts.PicoOpt|= 0x08;
|
||||
} else if ((inp & GP2X_LEFT) && tmp_opts.PsndRate == 8000 && (tmp_opts.PicoOpt&0x08)) {
|
||||
tmp_opts.PsndRate = 44100; tmp_opts.PicoOpt&=~0x08;
|
||||
} else tmp_opts.PsndRate = sndrate_prevnext(tmp_opts.PsndRate, inp & GP2X_RIGHT);
|
||||
if ((inp & GP2X_RIGHT) && currentConfig.PsndRate == 44100 && !(currentConfig.PicoOpt&0x08)) {
|
||||
currentConfig.PsndRate = 8000; currentConfig.PicoOpt|= 0x08;
|
||||
} else if ((inp & GP2X_LEFT) && currentConfig.PsndRate == 8000 && (currentConfig.PicoOpt&0x08)) {
|
||||
currentConfig.PsndRate = 44100; currentConfig.PicoOpt&=~0x08;
|
||||
} else currentConfig.PsndRate = sndrate_prevnext(currentConfig.PsndRate, inp & GP2X_RIGHT);
|
||||
break;
|
||||
case 9:
|
||||
if (inp & GP2X_RIGHT) {
|
||||
if (tmp_opts.PicoRegion) tmp_opts.PicoRegion<<=1; else tmp_opts.PicoRegion=1;
|
||||
if (tmp_opts.PicoRegion > 8) tmp_opts.PicoRegion = 8;
|
||||
} else tmp_opts.PicoRegion>>=1;
|
||||
region_prevnext(inp & GP2X_RIGHT);
|
||||
break;
|
||||
case 12:
|
||||
if (inp & GP2X_RIGHT) {
|
||||
|
@ -903,8 +919,8 @@ static int menu_loop_options(void)
|
|||
break;
|
||||
case 13:
|
||||
while ((inp = gp2x_joystick_read(1)) & (GP2X_LEFT|GP2X_RIGHT)) {
|
||||
tmp_opts.CPUclock += (inp & GP2X_LEFT) ? -1 : 1;
|
||||
if (tmp_opts.CPUclock < 1) tmp_opts.CPUclock = 1;
|
||||
currentConfig.CPUclock += (inp & GP2X_LEFT) ? -1 : 1;
|
||||
if (currentConfig.CPUclock < 1) currentConfig.CPUclock = 1;
|
||||
draw_menu_options(menu_sel);
|
||||
usleep(50*1000);
|
||||
}
|
||||
|
|
|
@ -23,9 +23,9 @@ YM2612 *ym2612_940 = &ym2612;
|
|||
int mix_buffer_[44100/50*2]; /* this is where the YM2612 samples will be mixed to */
|
||||
int *mix_buffer = mix_buffer_;
|
||||
|
||||
static _940_data_t shared_data_;
|
||||
// static _940_data_t shared_data_;
|
||||
static _940_ctl_t shared_ctl_;
|
||||
static _940_data_t *shared_data = &shared_data_;
|
||||
// static _940_data_t *shared_data = &shared_data_;
|
||||
static _940_ctl_t *shared_ctl = &shared_ctl_;
|
||||
|
||||
unsigned char *mp3_mem = 0;
|
||||
|
|
|
@ -30,7 +30,8 @@ OBJS += ../../Pico/Area.o ../../Pico/Cart.o ../../Pico/Utils.o ../../Pico/Memory
|
|||
../../Pico/Pico.o ../../Pico/Sek.o ../../Pico/VideoPort.o ../../Pico/Draw2.o ../../Pico/Draw.o
|
||||
# Pico - CD
|
||||
OBJS += ../../Pico/cd/Pico.o ../../Pico/cd/Memory.o ../../Pico/cd/Sek.o ../../Pico/cd/LC89510.o \
|
||||
../../Pico/cd/cd_sys.o ../../Pico/cd/cd_file.o ../../Pico/cd/gfx_cd.o
|
||||
../../Pico/cd/cd_sys.o ../../Pico/cd/cd_file.o ../../Pico/cd/gfx_cd.o \
|
||||
../../Pico/cd/Area.o ../../Pico/cd/Misc.o
|
||||
# Pico - sound
|
||||
OBJS += ../../Pico/sound/sound.o ../../Pico/sound/sn76496.o ../../Pico/sound/ym2612.o
|
||||
# zlib
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue