32x: packed pixel mode (works over 68k)
authornotaz <notasas@gmail.com>
Sat, 12 Sep 2009 21:54:46 +0000 (21:54 +0000)
committernotaz <notasas@gmail.com>
Sat, 12 Sep 2009 21:54:46 +0000 (21:54 +0000)
git-svn-id: file:///home/notaz/opt/svn/PicoDrive/platform@773 be3aeb3a-fb24-0410-a615-afba39da0efa

common/emu.c
common/menu.c
common/plat.h
gp2x/Makefile
gp2x/emu.c
linux/Makefile

index 6fc25b4..627c3be 100644 (file)
@@ -409,6 +409,32 @@ static void shutdown_MCD(void)
        PicoAHW &= ~PAHW_MCD;\r
 }\r
 \r
+static void system_announce(void)\r
+{\r
+       const char *sys_name, *tv_standard;\r
+       int fps;\r
+\r
+       if (PicoAHW & PAHW_SMS) {\r
+               sys_name = "Master System";\r
+       } else if (PicoAHW & PAHW_PICO) {\r
+               sys_name = "Pico";\r
+       } else if (PicoAHW & 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
+               sys_name = "32X";\r
+       } else {\r
+               sys_name = "MegaDrive";\r
+               if ((Pico.m.hardware & 0xc0) == 0x80)\r
+                       sys_name = "Genesis";\r
+       }\r
+       tv_standard = Pico.m.pal ? "PAL" : "NTSC";\r
+       fps = Pico.m.pal ? 50 : 60;\r
+\r
+       emu_status_msg("%s %s / %dFPS", tv_standard, sys_name, fps);\r
+}\r
+\r
 // note: this function might mangle rom_fname\r
 // XXX: portions of this code should move to pico/\r
 int emu_reload_rom(char *rom_fname)\r
@@ -612,21 +638,7 @@ int emu_reload_rom(char *rom_fname)
        }\r
        else\r
        {\r
-               const char *sys_name, *tv_standard;\r
-               int fps;\r
-\r
-               if (PicoAHW & PAHW_SMS) {\r
-                       sys_name = "Master System";\r
-               } else {\r
-                       sys_name = "MegaDrive";\r
-                       if ((Pico.m.hardware&0xc0) == 0x80)\r
-                               sys_name = "Genesis";\r
-               }\r
-               tv_standard = Pico.m.pal ? "PAL" : "NTSC";\r
-               fps = Pico.m.pal ? 50 : 60;\r
-\r
-               emu_status_msg("%s %s / %dFPS", tv_standard, sys_name, fps);\r
-\r
+               system_announce();\r
                PicoOpt &= ~POPT_DIS_VDP_FIFO;\r
        }\r
 \r
@@ -1073,6 +1085,12 @@ static void emu_tray_close(void)
        emu_status_msg("CD tray closed.");\r
 }\r
 \r
+void emu_32x_startup(void)\r
+{\r
+       plat_video_toggle_renderer(0, 1, 0);\r
+       system_announce();\r
+}\r
+\r
 void emu_reset_game(void)\r
 {\r
        PicoReset();\r
@@ -1200,9 +1218,9 @@ static void run_events_ui(unsigned int which)
                        PicoStateProgressCB = NULL;\r
                }\r
        }\r
-       if (which & PEV_SWITCH_RND)\r
+       if ((which & PEV_SWITCH_RND) && !(PicoAHW & PAHW_32X))\r
        {\r
-               plat_video_toggle_renderer(1, 0);\r
+               plat_video_toggle_renderer(1, 0, 0);\r
        }\r
        if (which & (PEV_SSLOT_PREV|PEV_SSLOT_NEXT))\r
        {\r
index e651694..adfacef 100644 (file)
@@ -1452,7 +1452,7 @@ static int menu_loop_adv_options(menu_id id, int keys)
 \r
 static int mh_opt_render(menu_id id, int keys)\r
 {\r
-       plat_video_toggle_renderer((keys & PBTN_RIGHT) ? 1 : 0, 1);\r
+       plat_video_toggle_renderer((keys & PBTN_RIGHT) ? 1 : 0, 0, 1);\r
        return 0;\r
 }\r
 \r
index ca847c6..e1fc29b 100644 (file)
@@ -36,7 +36,7 @@ void plat_video_menu_begin(void);
 void plat_video_menu_end(void);
 
 void plat_video_wait_vsync(void);
-void plat_video_toggle_renderer(int is_next, int is_menu);
+void plat_video_toggle_renderer(int is_next, int force_16bpp, int is_menu);
 void plat_validate_config(void);
 void plat_update_volume(int has_changed, int is_up);
 
index 817237a..8ccea30 100644 (file)
@@ -72,6 +72,8 @@ 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/cue.o pico/cd/gfx_cd.o \\r
                pico/cd/area.o pico/cd/misc.o pico/cd/pcm.o pico/cd/buffering.o\r
 endif\r
+# Pico - 32X\r
+OBJS += pico/32x/32x.o pico/32x/memory.o pico/32x/draw.o\r
 # Pico - Pico\r
 OBJS += pico/pico/pico.o pico/pico/memory.o pico/pico/xpcm.o\r
 # Pico - carthw\r
index 97b28b6..757bea6 100644 (file)
@@ -498,10 +498,14 @@ static void vidResetMode(void)
        make_local_pal = (PicoAHW & PAHW_SMS) ? make_local_pal_sms : make_local_pal_md;\r
 }\r
 \r
-void plat_video_toggle_renderer(int is_next, int is_menu)\r
+void plat_video_toggle_renderer(int is_next, int force_16bpp, int is_menu)\r
 {\r
+       if (force_16bpp) {\r
+               PicoOpt &= ~POPT_ALT_RENDERER;\r
+               currentConfig.EmuOpt |= EOPT_16BPP;\r
+       }\r
        /* alt, 16bpp, 8bpp */\r
-       if (PicoOpt & POPT_ALT_RENDERER) {\r
+       else if (PicoOpt & POPT_ALT_RENDERER) {\r
                PicoOpt &= ~POPT_ALT_RENDERER;\r
                if (is_next)\r
                        currentConfig.EmuOpt |= EOPT_16BPP;\r
index e6a94a2..32fa3c5 100644 (file)
@@ -40,7 +40,7 @@ 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/cue.o pico/cd/gfx_cd.o \
        pico/cd/area.o pico/cd/misc.o pico/cd/pcm.o pico/cd/buffering.o
 # Pico - 32X
-OBJS += pico/32x/32x.o pico/32x/memory.o
+OBJS += pico/32x/32x.o pico/32x/memory.o pico/32x/draw.o
 # Pico - Pico
 OBJS += pico/pico/pico.o pico/pico/memory.o pico/pico/xpcm.o
 # Pico - sound