frontend: eliminate osd_text dupes

not only dupe code is bad, it's crasing too
This commit is contained in:
notaz 2013-10-12 22:05:04 +03:00
parent 9993e0d6dd
commit f7e40c9b2e
5 changed files with 26 additions and 75 deletions

View file

@ -738,8 +738,26 @@ mk_text_out(emu_text_out16_rot, unsigned short, 0xffff,
#undef mk_text_out #undef mk_text_out
void emu_osd_text16(int x, int y, const char *text)
{
int len = strlen(text) * 8;
int i, h;
void update_movie(void) 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 > 0; i--, p++)
*p = (*p >> 2) & 0x39e7;
}
emu_text_out16(x, y, text);
}
static void update_movie(void)
{ {
int offs = Pico.m.frame_count*3 + 0x40; int offs = Pico.m.frame_count*3 + 0x40;
if (offs+3 > movie_size) { if (offs+3 > movie_size) {

View file

@ -129,6 +129,8 @@ void emu_text_out16(int x, int y, const char *text);
void emu_text_out8_rot (int x, int y, const char *text); void emu_text_out8_rot (int x, int y, const char *text);
void emu_text_out16_rot(int x, int y, const char *text); void emu_text_out16_rot(int x, int y, const char *text);
void emu_osd_text16(int x, int y, const char *text);
void emu_make_path(char *buff, const char *end, int size); void emu_make_path(char *buff, const char *end, int size);
void emu_update_input(void); void emu_update_input(void);
void emu_get_game_name(char *str150); void emu_get_game_name(char *str150);

View file

@ -128,21 +128,6 @@ static void osd_text8(int x, int y, const char *text)
emu_text_out8(x, y, text); emu_text_out8(x, y, text);
} }
static void osd_text16(int x, int y, const char *text)
{
int len = strlen(text)*8;
int *p, i, h, offs;
len = (len+1) >> 1;
for (h = 0; h < 8; h++) {
offs = (x + g_screen_width * (y+h)) & ~1;
p = (int *) ((short *)g_screen_ptr + offs);
for (i = len; i; i--, p++)
*p = (*p >> 2) & 0x39e7;
}
emu_text_out16(x, y, text);
}
static void osd_text8_rot(int x, int y, const char *text) static void osd_text8_rot(int x, int y, const char *text)
{ {
int len = strlen(text) * 8; int len = strlen(text) * 8;
@ -540,7 +525,7 @@ static void vid_reset_mode(void)
PicoDrawSetCallbacks(emu_scan_begin, emu_scan_end); PicoDrawSetCallbacks(emu_scan_begin, emu_scan_end);
if (is_16bit_mode()) if (is_16bit_mode())
osd_text = (currentConfig.EmuOpt & EOPT_WIZ_TEAR_FIX) ? osd_text16_rot : osd_text16; osd_text = (currentConfig.EmuOpt & EOPT_WIZ_TEAR_FIX) ? osd_text16_rot : emu_osd_text16;
else else
osd_text = (currentConfig.EmuOpt & EOPT_WIZ_TEAR_FIX) ? osd_text8_rot : osd_text8; osd_text = (currentConfig.EmuOpt & EOPT_WIZ_TEAR_FIX) ? osd_text8_rot : osd_text8;

View file

@ -34,41 +34,6 @@ void pemu_validate_config(void)
PicoOpt &= ~POPT_EN_DRC; PicoOpt &= ~POPT_EN_DRC;
} }
// FIXME: dupes from GP2X, need cleanup
static void (*osd_text)(int x, int y, const char *text);
/*
static void osd_text8(int x, int y, const char *text)
{
int len = strlen(text)*8;
int *p, i, h, offs;
len = (len+3) >> 2;
for (h = 0; h < 8; h++) {
offs = (x + g_screen_width * (y+h)) & ~3;
p = (int *) ((char *)g_screen_ptr + offs);
for (i = len; i; i--, p++)
*p = 0xe0e0e0e0;
}
emu_text_out8(x, y, text);
}
*/
static void osd_text16(int x, int y, const char *text)
{
int len = strlen(text)*8;
int *p, i, h, offs;
len = (len+1) >> 1;
for (h = 0; h < 8; h++) {
offs = (x + g_screen_width * (y+h)) & ~1;
p = (int *) ((short *)g_screen_ptr + offs);
for (i = len; i; i--, p++)
*p = (*p >> 2) & 0x39e7;
}
emu_text_out16(x, y, text);
}
static void draw_cd_leds(void) static void draw_cd_leds(void)
{ {
int led_reg, pitch, scr_offs, led_offs; int led_reg, pitch, scr_offs, led_offs;
@ -115,9 +80,9 @@ void pemu_finalize_frame(const char *fps, const char *notice)
if (notice || (currentConfig.EmuOpt & EOPT_SHOW_FPS)) { if (notice || (currentConfig.EmuOpt & EOPT_SHOW_FPS)) {
if (notice) if (notice)
osd_text(4, g_screen_height - 8, notice); emu_osd_text16(4, g_screen_height - 8, notice);
if (currentConfig.EmuOpt & EOPT_SHOW_FPS) if (currentConfig.EmuOpt & EOPT_SHOW_FPS)
osd_text(g_screen_width - 60, g_screen_height - 8, fps); emu_osd_text16(g_screen_width - 60, g_screen_height - 8, fps);
} }
if ((PicoAHW & PAHW_MCD) && (currentConfig.EmuOpt & EOPT_EN_CD_LEDS)) if ((PicoAHW & PAHW_MCD) && (currentConfig.EmuOpt & EOPT_EN_CD_LEDS))
draw_cd_leds(); draw_cd_leds();
@ -215,7 +180,6 @@ void emu_video_mode_change(int start_line, int line_count, int is_32cols)
void pemu_loop_prep(void) void pemu_loop_prep(void)
{ {
apply_renderer(); apply_renderer();
osd_text = osd_text16;
} }
void pemu_loop_end(void) void pemu_loop_end(void)

View file

@ -135,24 +135,6 @@ void pemu_validate_config(void)
currentConfig.CPUclock = plat_target_cpu_clock_get(); currentConfig.CPUclock = plat_target_cpu_clock_get();
} }
static void osd_text(int x, int y, const char *text)
{
int len = strlen(text)*8;
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 > 0; i--, p++)
*p = (*p>>2) & 0x39e7;
}
emu_text_out16(x, y, text);
}
static void draw_cd_leds(void) static void draw_cd_leds(void)
{ {
int old_reg; int old_reg;
@ -182,9 +164,9 @@ static void draw_cd_leds(void)
void pemu_finalize_frame(const char *fps, const char *notice) void pemu_finalize_frame(const char *fps, const char *notice)
{ {
if (notice && notice[0]) if (notice && notice[0])
osd_text(2, g_osd_y, notice); emu_osd_text16(2, g_osd_y, notice);
if (fps && fps[0] && (currentConfig.EmuOpt & EOPT_SHOW_FPS)) if (fps && fps[0] && (currentConfig.EmuOpt & EOPT_SHOW_FPS))
osd_text(g_osd_fps_x, g_osd_y, fps); emu_osd_text16(g_osd_fps_x, g_osd_y, fps);
if ((PicoAHW & PAHW_MCD) && (currentConfig.EmuOpt & EOPT_EN_CD_LEDS)) if ((PicoAHW & PAHW_MCD) && (currentConfig.EmuOpt & EOPT_EN_CD_LEDS))
draw_cd_leds(); draw_cd_leds();
} }