From: notaz Date: Sun, 11 Aug 2013 22:50:03 +0000 (+0300) Subject: pandora: use quad buffering so that ff doesn't tear X-Git-Tag: v1.85~2^2~30 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b011c2af397e6fa9a9763a130d971915d2362d46;p=picodrive.git pandora: use quad buffering so that ff doesn't tear also fix frame counter overflowing fb --- diff --git a/platform/common/emu.c b/platform/common/emu.c index 4098bd25..1573d128 100644 --- a/platform/common/emu.c +++ b/platform/common/emu.c @@ -1370,10 +1370,8 @@ void emu_loop(void) sprintf(fpsbuff, "%02i/%02i/%02i", frames_shown, bench_fps_s, (bf[0]+bf[1]+bf[2]+bf[3])>>2); printf("%s\n", fpsbuff); #else - if (currentConfig.EmuOpt & EOPT_SHOW_FPS) { - sprintf(fpsbuff, "%02i/%02i", frames_shown, frames_done); - if (fpsbuff[5] == 0) { fpsbuff[5] = fpsbuff[6] = ' '; fpsbuff[7] = 0; } - } + if (currentConfig.EmuOpt & EOPT_SHOW_FPS) + sprintf(fpsbuff, "%02i/%02i ", frames_shown, frames_done); #endif frames_shown = frames_done = 0; timestamp_fps += ms_to_ticks(1000); diff --git a/platform/pandora/plat.c b/platform/pandora/plat.c index a9fa9920..306f2c36 100644 --- a/platform/pandora/plat.c +++ b/platform/pandora/plat.c @@ -73,6 +73,7 @@ static struct in_default_bind in_evdev_defbinds[] = { KEY_S, IN_BINDTYPE_PLAYER12, GBTN_B }, { KEY_D, IN_BINDTYPE_PLAYER12, GBTN_C }, { KEY_ENTER, IN_BINDTYPE_PLAYER12, GBTN_START }, + { KEY_F, IN_BINDTYPE_EMU, PEVB_FF }, { KEY_BACKSLASH, IN_BINDTYPE_EMU, PEVB_MENU }, { KEY_SPACE, IN_BINDTYPE_EMU, PEVB_MENU }, /* Pandora */ @@ -104,10 +105,13 @@ static void osd_text(int x, int y, const char *text) int i, h; len++; + if (x + len > g_screen_width) + len = g_screen_width - x; + for (h = 0; h < 8; h++) { unsigned short *p; p = (unsigned short *)g_screen_ptr + x + g_screen_width*(y + h); - for (i = len; i; i--, p++) + for (i = len; i > 0; i--, p++) *p = (*p>>2) & 0x39e7; } emu_text_out16(x, y, text); @@ -348,7 +352,7 @@ void emu_video_mode_change(int start_line, int line_count, int is_32cols) pnd_setup_layer(1, g_layer_x, g_layer_y, g_layer_w, g_layer_h); vout_fbdev_clear(layer_fb); - vout_fbdev_resize(layer_fb, fb_w, fb_h, 16, fb_left, fb_right, fb_top, fb_bottom, 3); + vout_fbdev_resize(layer_fb, fb_w, fb_h, 16, fb_left, fb_right, fb_top, fb_bottom, 4); plat_video_flip(); PicoDrawSetOutFormat(PDF_RGB555, 0); @@ -447,7 +451,7 @@ void plat_init(void) g_menuscreen_ptr = vout_fbdev_flip(main_fb); w = 320; h = 240; - layer_fb = vout_fbdev_init(layer_fb_name, &w, &h, 16, 3); + layer_fb = vout_fbdev_init(layer_fb_name, &w, &h, 16, 4); if (layer_fb == NULL) { fprintf(stderr, "couldn't init fb: %s\n", layer_fb_name); goto fail0;