+// --------- sega/mega cd options ----------\r
+\r
+static void draw_cd_menu_options(int menu_sel, char *b_us, char *b_eu, char *b_jp)\r
+{\r
+ int tl_x = 25, tl_y = 60, y;\r
+\r
+ y = tl_y;\r
+ memset(gp2x_screen, 0, 320*240);\r
+ gp2x_text_out8(tl_x, y, "USA BIOS: %s", b_us); // 0\r
+ gp2x_text_out8(tl_x, (y+=10), "EUR BIOS: %s", b_eu); // 1\r
+ gp2x_text_out8(tl_x, (y+=10), "JAP BIOS: %s", b_jp); // 2\r
+ gp2x_text_out8(tl_x, (y+=10), "CD LEDs %s", (tmp_opts.EmuOpt &0x400)?"ON":"OFF"); // 3\r
+ gp2x_text_out8(tl_x, (y+=10), "CDDA audio (using mp3s) %s", (tmp_opts.EmuOpt &0x800)?"ON":"OFF"); // 4\r
+ gp2x_text_out8(tl_x, (y+=10), "Done");\r
+\r
+ // draw cursor\r
+ gp2x_text_out8(tl_x - 16, tl_y + menu_sel*10, ">");\r
+\r
+ if ((menu_sel == 0 && strcmp(b_us, "NOT FOUND")) ||\r
+ (menu_sel == 1 && strcmp(b_eu, "NOT FOUND")) ||\r
+ (menu_sel == 2 && strcmp(b_jp, "NOT FOUND")))\r
+ gp2x_text_out8(tl_x, 220, "Press start to test selected BIOS");\r
+\r
+ gp2x_video_flip();\r
+}\r
+\r
+static void cd_menu_loop_options(void)\r
+{\r
+ int menu_sel = 0, menu_sel_max = 5;\r
+ unsigned long inp = 0;\r
+ char bios_us[32], bios_eu[32], bios_jp[32], *bios, *p;\r
+\r
+ if (find_bios(4, &bios)) { // US\r
+ for (p = bios+strlen(bios)-1; p > bios && *p != '/'; p--); p++;\r
+ strncpy(bios_us, p, 31); bios_us[31] = 0;\r
+ } else strcpy(bios_us, "NOT FOUND");\r
+\r
+ if (find_bios(8, &bios)) { // EU\r
+ for (p = bios+strlen(bios)-1; p > bios && *p != '/'; p--); p++;\r
+ strncpy(bios_eu, p, 31); bios_eu[31] = 0;\r
+ } else strcpy(bios_eu, "NOT FOUND");\r
+\r
+ if (find_bios(1, &bios)) { // JP\r
+ for (p = bios+strlen(bios)-1; p > bios && *p != '/'; p--); p++;\r
+ strncpy(bios_jp, p, 31); bios_jp[31] = 0;\r
+ } else strcpy(bios_jp, "NOT FOUND");\r
+\r
+ for(;;)\r
+ {\r
+ draw_cd_menu_options(menu_sel, bios_us, bios_eu, bios_jp);\r
+ inp = wait_for_input(GP2X_UP|GP2X_DOWN|GP2X_LEFT|GP2X_RIGHT|GP2X_B|GP2X_X|GP2X_A|GP2X_START);\r
+ if(inp & GP2X_UP ) { menu_sel--; if (menu_sel < 0) menu_sel = menu_sel_max; }\r
+ if(inp & GP2X_DOWN) { menu_sel++; if (menu_sel > menu_sel_max) menu_sel = 0; }\r
+ if((inp& GP2X_B)||(inp&GP2X_LEFT)||(inp&GP2X_RIGHT)) { // toggleable options\r
+ switch (menu_sel) {\r
+ case 3: tmp_opts.EmuOpt ^=0x400; break;\r
+ case 4: tmp_opts.EmuOpt ^=0x800; break;\r
+ case 5: return;\r
+ }\r
+ }\r
+ if(inp & (GP2X_X|GP2X_A)) return;\r
+ if(inp & GP2X_START) { // BIOS testers\r
+ switch (menu_sel) {\r
+ case 0: if (find_bios(4, &bios)) { // test US\r
+ strcpy(romFileName, bios);\r
+ engineState = PGS_ReloadRom;\r
+ return;\r
+ }\r
+ break;\r
+ case 1: if (find_bios(8, &bios)) { // test EU\r
+ strcpy(romFileName, bios);\r
+ engineState = PGS_ReloadRom;\r
+ return;\r
+ }\r
+ break;\r
+ case 2: if (find_bios(1, &bios)) { // test JP\r
+ strcpy(romFileName, bios);\r
+ engineState = PGS_ReloadRom;\r
+ return;\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ }\r
+}\r
+\r
+\r
+// --------- advanced options ----------\r
+\r