X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=frontend%2Fplugin_lib.c;h=6cce912141c82989abd0eb3fd78d1b271bb7653e;hp=d306cc4ffeffad229e3418047013bfb826c81b36;hb=841ba5ee5bfeb32bb1194c423a047f98825d26fd;hpb=2c5d0a55b2b48b33f6d15b59d6f04a06c90b2ab5 diff --git a/frontend/plugin_lib.c b/frontend/plugin_lib.c index d306cc4f..6cce9121 100644 --- a/frontend/plugin_lib.c +++ b/frontend/plugin_lib.c @@ -72,20 +72,24 @@ static __attribute__((noinline)) int get_cpu_ticks(void) static void print_msg(int h, int border) { if (pl_vout_bpp == 16) - pl_text_out16(border + 2, h - 10, "%s", hud_msg); + basic_text_out16_nf(pl_vout_buf, pl_vout_w, + border + 2, h - 10, hud_msg); } static void print_fps(int h, int border) { if (pl_vout_bpp == 16) - pl_text_out16(border + 2, h - 10, "%2d %4.1f", + basic_text_out16(pl_vout_buf, pl_vout_w, + border + 2, h - 10, "%2d %4.1f", pl_rearmed_cbs.flips_per_sec, pl_rearmed_cbs.vsps_cur); } static void print_cpu_usage(int w, int h, int border) { if (pl_vout_bpp == 16) - pl_text_out16(w - border - 28, h - 10, "%3d", pl_rearmed_cbs.cpu_usage); + basic_text_out16(pl_vout_buf, pl_vout_w, + pl_vout_w - border - 28, h - 10, + "%3d", pl_rearmed_cbs.cpu_usage); } // draw 192x8 status of 24 sound channels @@ -123,6 +127,8 @@ void pl_print_hud(int w, int h, int xborder) if (h < 16) return; + xborder += (pl_vout_w - w) / 2; + if (g_opts & OPT_SHOWSPU) draw_active_chans(w, h); @@ -435,12 +441,25 @@ void pl_switch_dispmode(void) * more square-like analogs in PSX */ static void update_analog_nub_adjust(int *x_, int *y_) { - static const int scale[] = { 0, 0, 0, 12, 30, 60, 75, 60, 60 }; - int x = *x_; - int y = *y_; - - x += x * scale[abs(y) / 16] >> 8; - y += y * scale[abs(x) / 16] >> 8; + const int d = 16; + static const int scale[] = + { 0 - d*2, 0 - d*2, 0 - d*2, 12 - d*2, + 30 - d*2, 60 - d*2, 75 - d*2, 60 - d*2, 60 - d*2 }; + int x = abs(*x_); + int y = abs(*y_); + int scale_x = scale[y / 16]; + int scale_y = scale[x / 16]; + + if (x) { + x += d + (x * scale_x >> 8); + if (*x_ < 0) + x = -x; + } + if (y) { + y += d + (y * scale_y >> 8); + if (*y_ < 0) + y = -y; + } *x_ = x; *y_ = y; @@ -628,57 +647,6 @@ void pl_timing_prepare(int is_pal_) (100000*100 / (unsigned long)(pl_rearmed_cbs.gpu_peops.fFrameRateHz*100)); } -static void pl_text_out16_(int x, int y, const char *text) -{ - int i, l, w = pl_vout_w; - unsigned short *screen; - unsigned short val = 0xffff; - - x &= ~1; - screen = (unsigned short *)pl_vout_buf + x + y * w; - for (i = 0; ; i++, screen += 8) - { - char c = text[i]; - if (c == 0) - break; - if (c == ' ') - continue; - - for (l = 0; l < 8; l++) - { - unsigned char fd = fontdata8x8[c * 8 + l]; - unsigned short *s = screen + l * w; - unsigned int *s32 = (void *)s; - - s32[0] = (s32[0] >> 1) & 0x7bef7bef; - s32[1] = (s32[1] >> 1) & 0x7bef7bef; - s32[2] = (s32[2] >> 1) & 0x7bef7bef; - s32[3] = (s32[3] >> 1) & 0x7bef7bef; - - if (fd&0x80) s[0] = val; - if (fd&0x40) s[1] = val; - if (fd&0x20) s[2] = val; - if (fd&0x10) s[3] = val; - if (fd&0x08) s[4] = val; - if (fd&0x04) s[5] = val; - if (fd&0x02) s[6] = val; - if (fd&0x01) s[7] = val; - } - } -} - -void pl_text_out16(int x, int y, const char *texto, ...) -{ - va_list args; - char buffer[256]; - - va_start(args, texto); - vsnprintf(buffer, sizeof(buffer), texto, args); - va_end(args); - - pl_text_out16_(x, y, buffer); -} - static void pl_get_layer_pos(int *x, int *y, int *w, int *h) { *x = g_layer_x;