X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=linux%2Femu.c;h=0b4361d1d44f18ae1818a5d8009b11d6dabbc660;hb=902972d1c7f353aebb17a5ab587b2526e1a45d60;hp=7dc2c14ec89211d5311865bda92f646b6e8aa17a;hpb=662e622b59369f975691a70756f80188d8d27ea0;p=libpicofe.git diff --git a/linux/emu.c b/linux/emu.c index 7dc2c14..0b4361d 100644 --- a/linux/emu.c +++ b/linux/emu.c @@ -17,11 +17,8 @@ static short __attribute__((aligned(4))) sndBuffer[2*44100/50]; -char cpu_clk_name[] = "unused"; -const char *renderer_names_[] = { "16bit accurate", " 8bit accurate", " 8bit fast", NULL }; -const char *renderer_names32x_[] = { "accurate", "faster ", "fastest ", NULL }; -const char **renderer_names = renderer_names_; -const char **renderer_names32x = renderer_names32x_; +const char *renderer_names[] = { "16bit accurate", " 8bit accurate", " 8bit fast", NULL }; +const char *renderer_names32x[] = { "accurate", "faster", "fastest", NULL }; enum renderer_types { RT_16BIT, RT_8BIT_ACC, RT_8BIT_FAST, RT_COUNT }; @@ -127,9 +124,6 @@ void pemu_finalize_frame(const char *fps, const char *notice) static void apply_renderer(void) { - PicoScanBegin = NULL; - PicoScanEnd = NULL; - switch (currentConfig.renderer) { case RT_16BIT: PicoOpt &= ~POPT_ALT_RENDERER; @@ -156,6 +150,8 @@ static void apply_renderer(void) PicoDraw32xSetFrameMode(1, only_32x); PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2); } + //PicoDraw32xSetFrameMode(0, 0); + //PicoDrawSetOutFormat(PDF_RGB555, 1); } void plat_video_toggle_renderer(int change, int is_menu) @@ -178,7 +174,7 @@ void plat_video_menu_enter(int is_rom_loaded) void plat_video_menu_begin(void) { - memcpy32(g_screen_ptr, g_menubg_ptr, g_screen_width * g_screen_height * 2 / 4); + g_menuscreen_ptr = g_screen_ptr; } void plat_video_menu_end(void) @@ -212,21 +208,29 @@ void plat_update_volume(int has_changed, int is_up) { } -void pemu_forced_frame(int opts) +void pemu_forced_frame(int no_scale, int do_emu) { int po_old = PicoOpt; - int eo_old = currentConfig.EmuOpt; + + memset32(g_screen_ptr, 0, g_screen_width * g_screen_height * 2 / 4); PicoOpt &= ~POPT_ALT_RENDERER; - PicoOpt |= opts|POPT_ACC_SPRITES; // acc_sprites + PicoOpt |= POPT_ACC_SPRITES; + if (!no_scale) + PicoOpt |= POPT_EN_SOFTSCALE; - PicoDrawSetOutFormat(PDF_RGB555, 0); + PicoDrawSetOutFormat(PDF_RGB555, 1); + PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2); + PicoDraw32xSetFrameMode(0, 0); Pico.m.dirtyPal = 1; - PicoFrameDrawOnly(); + if (do_emu) + PicoFrame(); + else + PicoFrameDrawOnly(); + g_menubg_src_ptr = g_screen_ptr; PicoOpt = po_old; - currentConfig.EmuOpt = eo_old; } static void updateSound(int len) @@ -301,22 +305,10 @@ void pemu_loop_prep(void) void pemu_loop_end(void) { - int po_old = PicoOpt; - int eo_old = currentConfig.EmuOpt; - pemu_sound_stop(); - memset32(g_screen_ptr, 0, g_screen_width * g_screen_height * 2 / 4); /* do one more frame for menu bg */ - PicoOpt &= ~POPT_ALT_RENDERER; - PicoOpt |= POPT_EN_SOFTSCALE|POPT_ACC_SPRITES; - - PicoDrawSetOutFormat(PDF_RGB555, 0); - Pico.m.dirtyPal = 1; - PicoFrame(); - - PicoOpt = po_old; - currentConfig.EmuOpt = eo_old; + pemu_forced_frame(0, 1); } void plat_wait_till_us(unsigned int us_to)