ROM load progress bar
[picodrive.git] / platform / gp2x / menu.c
index 9b51d7c..06a3e3d 100644 (file)
@@ -420,6 +420,39 @@ static unsigned long wait_for_input_usbjoy(unsigned long interesting, int *joy)
 \r
 \r
 \r
+// --------- loading ROM screen ----------\r
+\r
+static void load_progress_cb(int percent)\r
+{\r
+       int ln, len = percent * 320 / 100;\r
+       unsigned char *dst = (unsigned char *)gp2x_screen + 320*20;\r
+\r
+       if (len > 320) len = 320;\r
+       for (ln = 10; ln > 0; ln--, dst += 320)\r
+               memset(dst, 0xf0, len);\r
+       gp2x_video_flip2();\r
+}\r
+\r
+void menu_romload_prepare(const char *rom_name)\r
+{\r
+       const char *p = rom_name + strlen(rom_name);\r
+       while (p > rom_name && *p != '/') p--;\r
+\r
+       gp2x_pd_clone_buffer2();\r
+       gp2x_smalltext8(1, 1, "Loading");\r
+       gp2x_smalltext8_lim(1, 10, p, 53);\r
+       gp2x_memcpy_buffers(3, gp2x_screen, 0, 320*240);\r
+       gp2x_video_flip2();\r
+       PicoCartLoadProgressCB = load_progress_cb;\r
+}\r
+\r
+void menu_romload_end(void)\r
+{\r
+       PicoCartLoadProgressCB = NULL;\r
+       gp2x_smalltext8(1, 30, "Starting emulation...");\r
+       gp2x_video_flip2();\r
+}\r
+\r
 // -------------- ROM selector --------------\r
 \r
 static void draw_dirlist(char *curdir, struct dirent **namelist, int n, int sel)\r
@@ -429,7 +462,6 @@ static void draw_dirlist(char *curdir, struct dirent **namelist, int n, int sel)
        start = 12 - sel;\r
        n--; // exclude current dir (".")\r
 \r
-       //memset(gp2x_screen, 0, 320*240);\r
        gp2x_pd_clone_buffer2();\r
 \r
        if(start - 2 >= 0)\r