ret = emu_read_config(cd_fname, 0);\r
if (!ret) emu_read_config(NULL, 0);\r
\r
- if (PicoRegionOverride) {\r
- *region = PicoRegionOverride;\r
+ if (PicoIn.regionOverride) {\r
+ *region = PicoIn.regionOverride;\r
lprintf("override region to %s\n", *region != 4 ?\r
(*region == 8 ? "EU" : "JAP") : "USA");\r
}\r
static char id_string[3+0xe*3+0x3*3+0x30*3+3];\r
int pos, swab = 1;\r
\r
- if (PicoAHW & PAHW_MCD) {\r
+ if (PicoIn.AHW & PAHW_MCD) {\r
strcpy(id_string, "CD|");\r
swab = 0;\r
}\r
- else if (PicoAHW & PAHW_SMS)\r
+ else if (PicoIn.AHW & PAHW_SMS)\r
strcpy(id_string, "MS|");\r
else strcpy(id_string, "MD|");\r
pos = 3;\r
\r
- if (!(PicoAHW & PAHW_SMS)) {\r
+ if (!(PicoIn.AHW & PAHW_SMS)) {\r
pos += extract_text(id_string + pos, media_id_header + 0x80, 0x0e, swab); // serial\r
id_string[pos] = '|'; pos++;\r
pos += extract_text(id_string + pos, media_id_header + 0xf0, 0x03, swab); // region\r
// buffer must be at least 150 byte long\r
void emu_get_game_name(char *str150)\r
{\r
- int ret, swab = (PicoAHW & PAHW_MCD) ? 0 : 1;\r
+ int ret, swab = (PicoIn.AHW & PAHW_MCD) ? 0 : 1;\r
char *s, *d;\r
\r
ret = extract_text(str150, media_id_header + 0x50, 0x30, swab); // overseas name\r
const char *sys_name, *tv_standard, *extra = "";\r
int fps;\r
\r
- if (PicoAHW & PAHW_SMS) {\r
+ if (PicoIn.AHW & PAHW_SMS) {\r
sys_name = "Master System";\r
#ifdef NO_SMS\r
extra = " [no support]";\r
#endif\r
- } else if (PicoAHW & PAHW_PICO) {\r
+ } else if (PicoIn.AHW & PAHW_PICO) {\r
sys_name = "Pico";\r
- } else if ((PicoAHW & (PAHW_32X|PAHW_MCD)) == (PAHW_32X|PAHW_MCD)) {\r
+ } else if ((PicoIn.AHW & (PAHW_32X|PAHW_MCD)) == (PAHW_32X|PAHW_MCD)) {\r
sys_name = "32X + Mega CD";\r
if ((Pico.m.hardware & 0xc0) == 0x80)\r
sys_name = "32X + Sega CD";\r
- } else if (PicoAHW & PAHW_MCD) {\r
+ } else if (PicoIn.AHW & PAHW_MCD) {\r
sys_name = "Mega CD";\r
if ((Pico.m.hardware & 0xc0) == 0x80)\r
sys_name = "Sega CD";\r
- } else if (PicoAHW & PAHW_32X) {\r
+ } else if (PicoIn.AHW & PAHW_32X) {\r
sys_name = "32X";\r
} else {\r
sys_name = "MegaDrive";\r
}\r
\r
// make quirks visible in UI\r
- if (PicoQuirks & PQUIRK_FORCE_6BTN)\r
+ if (PicoIn.quirks & PQUIRK_FORCE_6BTN)\r
currentConfig.input_dev0 = PICO_INPUT_PAD_6BTN;\r
\r
menu_romload_end();\r
PicoSetInputDevice(0, indev);\r
PicoSetInputDevice(1, indev);\r
\r
- PicoOpt |= POPT_DIS_VDP_FIFO; // no VDP fifo timing\r
+ PicoIn.opt |= POPT_DIS_VDP_FIFO; // no VDP fifo timing\r
if (movie_data[0xF] >= 'A') {\r
if (movie_data[0x16] & 0x80) {\r
- PicoRegionOverride = 8;\r
+ PicoIn.regionOverride = 8;\r
} else {\r
- PicoRegionOverride = 4;\r
+ PicoIn.regionOverride = 4;\r
}\r
PicoReset();\r
// TODO: bits 6 & 5\r
else\r
{\r
system_announce();\r
- PicoOpt &= ~POPT_DIS_VDP_FIFO;\r
+ PicoIn.opt &= ~POPT_DIS_VDP_FIFO;\r
}\r
\r
strncpy(rom_fname_loaded, rom_fname, sizeof(rom_fname_loaded)-1);\r
void emu_set_defconfig(void)\r
{\r
memcpy(¤tConfig, &defaultConfig, sizeof(currentConfig));\r
- PicoOpt = currentConfig.s_PicoOpt;\r
+ PicoIn.opt = currentConfig.s_PicoOpt;\r
PsndRate = currentConfig.s_PsndRate;\r
- PicoRegionOverride = currentConfig.s_PicoRegion;\r
- PicoAutoRgnOrder = currentConfig.s_PicoAutoRgnOrder;\r
+ PicoIn.regionOverride = currentConfig.s_PicoRegion;\r
+ PicoIn.autoRgnOrder = currentConfig.s_PicoAutoRgnOrder;\r
}\r
\r
int emu_read_config(const char *rom_fname, int no_defaults)\r
lprintf("END OF MOVIE.\n");\r
} else {\r
// MXYZ SACB RLDU\r
- PicoPad[0] = ~movie_data[offs] & 0x8f; // ! SCBA RLDU\r
- if(!(movie_data[offs] & 0x10)) PicoPad[0] |= 0x40; // C\r
- if(!(movie_data[offs] & 0x20)) PicoPad[0] |= 0x10; // A\r
- if(!(movie_data[offs] & 0x40)) PicoPad[0] |= 0x20; // B\r
- PicoPad[1] = ~movie_data[offs+1] & 0x8f; // ! SCBA RLDU\r
- if(!(movie_data[offs+1] & 0x10)) PicoPad[1] |= 0x40; // C\r
- if(!(movie_data[offs+1] & 0x20)) PicoPad[1] |= 0x10; // A\r
- if(!(movie_data[offs+1] & 0x40)) PicoPad[1] |= 0x20; // B\r
- PicoPad[0] |= (~movie_data[offs+2] & 0x0A) << 8; // ! MZYX\r
- if(!(movie_data[offs+2] & 0x01)) PicoPad[0] |= 0x0400; // X\r
- if(!(movie_data[offs+2] & 0x04)) PicoPad[0] |= 0x0100; // Z\r
- PicoPad[1] |= (~movie_data[offs+2] & 0xA0) << 4; // ! MZYX\r
- if(!(movie_data[offs+2] & 0x10)) PicoPad[1] |= 0x0400; // X\r
- if(!(movie_data[offs+2] & 0x40)) PicoPad[1] |= 0x0100; // Z\r
+ PicoIn.pad[0] = ~movie_data[offs] & 0x8f; // ! SCBA RLDU\r
+ if(!(movie_data[offs] & 0x10)) PicoIn.pad[0] |= 0x40; // C\r
+ if(!(movie_data[offs] & 0x20)) PicoIn.pad[0] |= 0x10; // A\r
+ if(!(movie_data[offs] & 0x40)) PicoIn.pad[0] |= 0x20; // B\r
+ PicoIn.pad[1] = ~movie_data[offs+1] & 0x8f; // ! SCBA RLDU\r
+ if(!(movie_data[offs+1] & 0x10)) PicoIn.pad[1] |= 0x40; // C\r
+ if(!(movie_data[offs+1] & 0x20)) PicoIn.pad[1] |= 0x10; // A\r
+ if(!(movie_data[offs+1] & 0x40)) PicoIn.pad[1] |= 0x20; // B\r
+ PicoIn.pad[0] |= (~movie_data[offs+2] & 0x0A) << 8; // ! MZYX\r
+ if(!(movie_data[offs+2] & 0x01)) PicoIn.pad[0] |= 0x0400; // X\r
+ if(!(movie_data[offs+2] & 0x04)) PicoIn.pad[0] |= 0x0100; // Z\r
+ PicoIn.pad[1] |= (~movie_data[offs+2] & 0xA0) << 4; // ! MZYX\r
+ if(!(movie_data[offs+2] & 0x10)) PicoIn.pad[1] |= 0x0400; // X\r
+ if(!(movie_data[offs+2] & 0x40)) PicoIn.pad[1] |= 0x0100; // Z\r
}\r
}\r
\r
\r
if (is_sram)\r
{\r
- strcpy(ext, (PicoAHW & PAHW_MCD) ? ".brm" : ".srm");\r
+ strcpy(ext, (PicoIn.AHW & PAHW_MCD) ? ".brm" : ".srm");\r
romfname_ext(saveFname, sizeof(static_buff),\r
- (PicoAHW & PAHW_MCD) ? "brm"PATH_SEP : "srm"PATH_SEP, ext);\r
+ (PicoIn.AHW & PAHW_MCD) ? "brm"PATH_SEP : "srm"PATH_SEP, ext);\r
if (!load)\r
return saveFname;\r
\r
int sram_size;\r
unsigned char *sram_data;\r
int truncate = 1;\r
- if (PicoAHW & PAHW_MCD)\r
+ if (PicoIn.AHW & PAHW_MCD)\r
{\r
- if (PicoOpt & POPT_EN_MCD_RAMCART) {\r
+ if (PicoIn.opt & POPT_EN_MCD_RAMCART) {\r
sram_size = 0x12000;\r
sram_data = Pico.sv.data;\r
if (sram_data)\r
ret = fread(sram_data, 1, sram_size, sramFile);\r
ret = ret > 0 ? 0 : -1;\r
fclose(sramFile);\r
- if ((PicoAHW & PAHW_MCD) && (PicoOpt&POPT_EN_MCD_RAMCART))\r
+ if ((PicoIn.AHW & PAHW_MCD) && (PicoIn.opt&POPT_EN_MCD_RAMCART))\r
memcpy(Pico_mcd->bram, sram_data, 0x2000);\r
} else {\r
// sram save needs some special processing\r
PsndRerate(1);\r
is_on = 0;\r
// mainly to unbreak pcm\r
- if (PicoAHW & PAHW_MCD)\r
+ if (PicoIn.AHW & PAHW_MCD)\r
pcd_state_loaded();\r
}\r
}\r
return;\r
\r
/* handle other input modes */\r
- if (PicoPad[0] & 1) pico_pen_y--;\r
- if (PicoPad[0] & 2) pico_pen_y++;\r
- if (PicoPad[0] & 4) pico_pen_x--;\r
- if (PicoPad[0] & 8) pico_pen_x++;\r
- PicoPad[0] &= ~0x0f; // release UDLR\r
+ if (PicoIn.pad[0] & 1) pico_pen_y--;\r
+ if (PicoIn.pad[0] & 2) pico_pen_y++;\r
+ if (PicoIn.pad[0] & 4) pico_pen_x--;\r
+ if (PicoIn.pad[0] & 8) pico_pen_x++;\r
+ PicoIn.pad[0] &= ~0x0f; // release UDLR\r
\r
lim_x = (Pico.video.reg[12]&1) ? 319 : 255;\r
if (pico_pen_y < 8)\r
PicoPicohw.pen_pos[1] = pico_inp_mode == 1 ? (0x2f8 + pico_pen_y) : (0x1fc + pico_pen_y);\r
}\r
\r
-static void do_turbo(int *pad, int acts)\r
+static void do_turbo(unsigned short *pad, int acts)\r
{\r
static int turbo_pad = 0;\r
static unsigned char turbo_cnt[3] = { 0, 0, 0 };\r
pl_actions[0] = actions[IN_BINDTYPE_PLAYER12];\r
pl_actions[1] = actions[IN_BINDTYPE_PLAYER12] >> 16;\r
\r
- PicoPad[0] = pl_actions[0] & 0xfff;\r
- PicoPad[1] = pl_actions[1] & 0xfff;\r
+ PicoIn.pad[0] = pl_actions[0] & 0xfff;\r
+ PicoIn.pad[1] = pl_actions[1] & 0xfff;\r
\r
if (pl_actions[0] & 0x7000)\r
- do_turbo(&PicoPad[0], pl_actions[0]);\r
+ do_turbo(&PicoIn.pad[0], pl_actions[0]);\r
if (pl_actions[1] & 0x7000)\r
- do_turbo(&PicoPad[1], pl_actions[1]);\r
+ do_turbo(&PicoIn.pad[1], pl_actions[1]);\r
\r
events = actions[IN_BINDTYPE_EMU] & PEV_MASK;\r
\r
\r
events &= ~prev_events;\r
\r
- if (PicoAHW == PAHW_PICO)\r
+ if (PicoIn.AHW == PAHW_PICO)\r
run_events_pico(events);\r
if (events)\r
run_events_ui(events);\r
\r
void emu_cmn_forced_frame(int no_scale, int do_emu)\r
{\r
- int po_old = PicoOpt;\r
+ int po_old = PicoIn.opt;\r
\r
memset32(g_screen_ptr, 0, g_screen_width * g_screen_height * 2 / 4);\r
\r
- PicoOpt &= ~POPT_ALT_RENDERER;\r
- PicoOpt |= POPT_ACC_SPRITES;\r
+ PicoIn.opt &= ~POPT_ALT_RENDERER;\r
+ PicoIn.opt |= POPT_ACC_SPRITES;\r
if (!no_scale)\r
- PicoOpt |= POPT_EN_SOFTSCALE;\r
+ PicoIn.opt |= POPT_EN_SOFTSCALE;\r
\r
PicoDrawSetOutFormat(PDF_RGB555, 1);\r
Pico.m.dirtyPal = 1;\r
else\r
PicoFrameDrawOnly();\r
\r
- PicoOpt = po_old;\r
+ PicoIn.opt = po_old;\r
}\r
\r
void emu_init(void)\r
\r
if (currentConfig.EmuOpt & EOPT_EN_SOUND)\r
{\r
- int is_stereo = (PicoOpt & POPT_EN_STEREO) ? 1 : 0;\r
+ int is_stereo = (PicoIn.opt & POPT_EN_STEREO) ? 1 : 0;\r
\r
PsndRerate(Pico.m.frame_count ? 1 : 0);\r
\r
emu_update_input();\r
if (skip) {\r
int do_audio = diff > -target_frametime_x3 * 2;\r
- PicoSkipFrame = do_audio ? 1 : 2;\r
+ PicoIn.skipFrame = do_audio ? 1 : 2;\r
PicoFrame();\r
- PicoSkipFrame = 0;\r
+ PicoIn.skipFrame = 0;\r
}\r
else {\r
PicoFrame();\r