fix some issues with menu bg
[picodrive.git] / platform / common / menu_pico.c
index 969fc8e..7b0cd78 100644 (file)
@@ -73,6 +73,7 @@ static void make_bg(int no_scale)
 {
        unsigned short *src = (void *)g_menubg_src_ptr;
        int w = g_screen_width, h = g_screen_height;
+       int pp = g_screen_ppitch;
        short *dst;
        int x, y;
 
@@ -87,7 +88,7 @@ static void make_bg(int no_scale)
                d += (g_menuscreen_h / 2 - h * 2 / 2)
                        * g_menuscreen_w / 2;
                d += (g_menuscreen_w / 2 - w * 2 / 2) / 2;
-               for (y = 0; y < h; y++, src += w, d += g_menuscreen_w*2/2) {
+               for (y = 0; y < h; y++, src += pp, d += g_menuscreen_w*2/2) {
                        for (x = 0; x < w; x++) {
                                t = src[x];
                                t = ((t & 0xf79e)>>1) - ((t & 0xc618)>>3);
@@ -107,7 +108,7 @@ static void make_bg(int no_scale)
                (g_menuscreen_w / 2 - w / 2);
 
        // darken the active framebuffer
-       for (; h > 0; dst += g_menuscreen_w, src += g_screen_width, h--)
+       for (; h > 0; dst += g_menuscreen_w, src += pp, h--)
                menu_darken_bg(dst, src, w, 1);
 }
 
@@ -167,8 +168,8 @@ static void load_progress_cb(int percent)
                len = g_menuscreen_w;
 
        menu_draw_begin(0, 1);
-       dst = (unsigned short *)g_menuscreen_ptr + g_menuscreen_w * me_sfont_h * 2;
-       for (ln = me_sfont_h - 2; ln > 0; ln--, dst += g_menuscreen_w)
+       dst = (unsigned short *)g_menuscreen_ptr + g_menuscreen_pp * me_sfont_h * 2;
+       for (ln = me_sfont_h - 2; ln > 0; ln--, dst += g_menuscreen_pp)
                memset(dst, 0xff, len * 2);
        menu_draw_end();
 }
@@ -179,17 +180,18 @@ static void cdload_progress_cb(const char *fname, int percent)
        unsigned short *dst;
 
        menu_draw_begin(0, 1);
-       dst = (unsigned short *)g_menuscreen_ptr + g_menuscreen_w * me_sfont_h * 2;
-       memset(dst, 0xff, g_menuscreen_w * (me_sfont_h - 2) * 2);
+       dst = (unsigned short *)g_menuscreen_ptr + g_menuscreen_pp * me_sfont_h * 2;
+
+       menuscreen_memset_lines(dst, 0xff, me_sfont_h - 2);
 
        smalltext_out16(1, 3 * me_sfont_h, "Processing CD image / MP3s", 0xffff);
        smalltext_out16(1, 4 * me_sfont_h, fname, 0xffff);
-       dst += g_menuscreen_w * me_sfont_h * 3;
+       dst += g_menuscreen_pp * me_sfont_h * 3;
 
        if (len > g_menuscreen_w)
                len = g_menuscreen_w;
 
-       for (ln = (me_sfont_h - 2); ln > 0; ln--, dst += g_menuscreen_w)
+       for (ln = (me_sfont_h - 2); ln > 0; ln--, dst += g_menuscreen_pp)
                memset(dst, 0xff, len * 2);
        menu_draw_end();
 
@@ -848,13 +850,15 @@ static void debug_menu_loop(void)
                                break;
                        case 2: pemu_forced_frame(1, 0);
                                make_bg(1);
-                               PDebugShowSpriteStats((unsigned short *)g_menuscreen_ptr + (g_menuscreen_h/2 - 240/2)*g_menuscreen_w +
-                                       g_menuscreen_w/2 - 320/2, g_menuscreen_w);
+                               PDebugShowSpriteStats((unsigned short *)g_menuscreen_ptr
+                                       + (g_menuscreen_h/2 - 240/2) * g_menuscreen_pp
+                                       + g_menuscreen_w/2 - 320/2, g_menuscreen_pp);
                                break;
-                       case 3: memset(g_menuscreen_ptr, 0, g_menuscreen_w * g_menuscreen_h * 2);
-                               PDebugShowPalette(g_menuscreen_ptr, g_menuscreen_w);
-                               PDebugShowSprite((unsigned short *)g_menuscreen_ptr + g_menuscreen_w*120 + g_menuscreen_w/2 + 16,
-                                       g_menuscreen_w, spr_offs);
+                       case 3: menuscreen_memset_lines(g_menuscreen_ptr, 0, g_menuscreen_h);
+                               PDebugShowPalette(g_menuscreen_ptr, g_menuscreen_pp);
+                               PDebugShowSprite((unsigned short *)g_menuscreen_ptr
+                                       + g_menuscreen_pp * 120 + g_menuscreen_w / 2 + 16,
+                                       g_menuscreen_pp, spr_offs);
                                draw_text_debug(PDebugSpriteList(), spr_offs, 6);
                                break;
                        case 4: tmp = PDebug32x();
@@ -974,23 +978,23 @@ static void menu_main_draw_status(void)
                return;
 
        /* battery info */
-       bp += (me_mfont_h * 2 + 2) * g_screen_width + g_screen_width - me_mfont_w * 3 - 3;
+       bp += (me_mfont_h * 2 + 2) * g_screen_ppitch + g_screen_width - me_mfont_w * 3 - 3;
        for (i = 0; i < me_mfont_w * 2; i++)
                bp[i] = menu_text_color;
        for (i = 0; i < me_mfont_w * 2; i++)
-               bp[i + g_screen_width * bat_h] = menu_text_color;
+               bp[i + g_screen_ppitch * bat_h] = menu_text_color;
        for (i = 0; i <= bat_h; i++)
-               bp[i * g_screen_width] =
-               bp[i * g_screen_width + me_mfont_w * 2] = menu_text_color;
+               bp[i * g_screen_ppitch] =
+               bp[i * g_screen_ppitch + me_mfont_w * 2] = menu_text_color;
        for (i = 2; i < bat_h - 1; i++)
-               bp[i * g_screen_width - 1] =
-               bp[i * g_screen_width - 2] = menu_text_color;
+               bp[i * g_screen_ppitch - 1] =
+               bp[i * g_screen_ppitch - 2] = menu_text_color;
 
        w = me_mfont_w * 2 - 1;
        wfill = batt_val * w / 100;
        for (u = 1; u < bat_h; u++)
                for (i = 0; i < wfill; i++)
-                       bp[(w - i) + g_screen_width * u] = menu_text_color;
+                       bp[(w - i) + g_screen_ppitch * u] = menu_text_color;
 }
 
 static int main_menu_handler(int id, int keys)