rearrange globals
[picodrive.git] / platform / common / emu.c
index 85e1ba7..822fec7 100644 (file)
@@ -171,8 +171,8 @@ static const char *find_bios(int *region, const char *cd_fname)
        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
@@ -266,16 +266,16 @@ static char *emu_make_rom_id(const char *fname)
        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
@@ -296,7 +296,7 @@ static char *emu_make_rom_id(const char *fname)
 // 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
@@ -315,22 +315,22 @@ static void system_announce(void)
        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
@@ -451,7 +451,7 @@ int emu_reload_rom(const char *rom_fname_in)
        }\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
@@ -470,12 +470,12 @@ int emu_reload_rom(const char *rom_fname_in)
                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
@@ -486,7 +486,7 @@ int emu_reload_rom(const char *rom_fname_in)
        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
@@ -603,10 +603,10 @@ void emu_prep_defconfig(void)
 void emu_set_defconfig(void)\r
 {\r
        memcpy(&currentConfig, &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
@@ -767,20 +767,20 @@ static void update_movie(void)
                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
@@ -809,9 +809,9 @@ char *emu_get_save_fname(int load, int is_sram, int slot, int *time)
 \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
@@ -885,9 +885,9 @@ int emu_save_load_game(int load, int sram)
                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
@@ -912,7 +912,7 @@ int emu_save_load_game(int load, int sram)
                        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
@@ -974,7 +974,7 @@ void emu_set_fastforward(int set_on)
                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
@@ -1034,11 +1034,11 @@ void run_events_pico(unsigned int events)
                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
@@ -1057,7 +1057,7 @@ void run_events_pico(unsigned int events)
        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
@@ -1159,13 +1159,13 @@ void emu_update_input(void)
        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
@@ -1181,7 +1181,7 @@ void emu_update_input(void)
 \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
@@ -1202,14 +1202,14 @@ static void mkdir_path(char *path_with_reserve, int pos, const char *name)
 \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
@@ -1218,7 +1218,7 @@ void emu_cmn_forced_frame(int no_scale, int do_emu)
        else\r
                PicoFrameDrawOnly();\r
 \r
-       PicoOpt = po_old;\r
+       PicoIn.opt = po_old;\r
 }\r
 \r
 void emu_init(void)\r
@@ -1293,7 +1293,7 @@ void emu_sound_start(void)
 \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
@@ -1470,9 +1470,9 @@ void emu_loop(void)
                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