X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=psp%2Fmenu.c;h=fc44446248044b6adb37ef9c4c4874b1b020438d;hb=6d741b3258179dadc7890f45e155b0a6871ebdc5;hp=52381eb91ee0c85bdfc61b703c9ef21922771d13;hpb=5ecedd0cc2257b564dfcf68cb0e9d7d541bfc2b8;p=libpicofe.git diff --git a/psp/menu.c b/psp/menu.c index 52381eb..fc44446 100644 --- a/psp/menu.c +++ b/psp/menu.c @@ -1,4 +1,4 @@ -// (c) Copyright 2006,2007 notaz, All rights reserved. +// (c) Copyright 2007 notaz, All rights reserved. // Free for non-commercial use. // For commercial use, separate licencing terms must be obtained. @@ -185,7 +185,7 @@ struct my_dirent static unsigned short file2color(const char *fname) { const char *ext = fname + strlen(fname) - 3; - static const char *rom_exts[] = { "zip", "bin", "smd", "gen", "iso" }; + static const char *rom_exts[] = { "zip", "bin", "smd", "gen", "iso", "cso" }; static const char *other_exts[] = { "gmv", "pat" }; int i; @@ -335,13 +335,14 @@ end: } +static SceIoStat cpstat; + static char *romsel_loop(char *curr_path) { struct my_dirent **namelist; int n, iret, sel = 0; unsigned long inp = 0; char *ret = NULL, *fname = NULL; - SceIoStat cpstat; // is this a dir or a full path? memset(&cpstat, 0, sizeof(cpstat)); @@ -349,8 +350,11 @@ static char *romsel_loop(char *curr_path) if (iret >= 0 && (cpstat.st_attr & FIO_SO_IFREG)) { // file char *p; for (p = curr_path + strlen(curr_path) - 1; p > curr_path && *p != '/'; p--); - *p = 0; - fname = p+1; + if (p > curr_path) { + *p = 0; + fname = p+1; + } + else strcpy(curr_path, "ms0:/"); } else if (iret >= 0 && (cpstat.st_attr & FIO_SO_IFDIR)); // dir else strcpy(curr_path, "ms0:/"); // something else @@ -402,7 +406,7 @@ static char *romsel_loop(char *curr_path) p = start + strlen(start) - 1; while (*p == '/' && p > start) p--; while (*p != '/' && *p != ':' && p > start) p--; - if (p <= start || *p == ':' || p[-1] == ':') strcpy(newdir, "ms0:/"); + if (p <= start || *p == ':') strcpy(newdir, "ms0:/"); else { strncpy(newdir, start, p-start); newdir[p-start] = 0; } } else { strcpy(newdir, curr_path); @@ -941,7 +945,7 @@ static void cd_menu_loop_options(void) for (;;) { draw_cd_menu_options(menu_sel, &bios_names); - inp = wait_for_input(BTN_UP|BTN_DOWN|BTN_LEFT|BTN_RIGHT|BTN_X|BTN_CIRCLE, 0); + inp = wait_for_input(BTN_UP|BTN_DOWN|BTN_LEFT|BTN_RIGHT|BTN_X|BTN_CIRCLE|BTN_START, 0); if (inp & BTN_UP ) { menu_sel--; if (menu_sel < 0) menu_sel = menu_sel_max; } if (inp & BTN_DOWN) { menu_sel++; if (menu_sel > menu_sel_max) menu_sel = 0; } selected_id = me_index2id(cdopt_entries, CDOPT_ENTRY_COUNT, menu_sel); @@ -958,11 +962,12 @@ static void cd_menu_loop_options(void) } } } - if (inp & BTN_CIRCLE) { // toggleable options + if (inp & BTN_CIRCLE) // toggleable options if (!me_process(cdopt_entries, CDOPT_ENTRY_COUNT, selected_id, 1) && selected_id == MA_CDOPT_DONE) { return; } + if (inp & BTN_START) { switch (selected_id) { // BIOS testers case MA_CDOPT_TESTBIOS_USA: if (emu_findBios(4, &bios)) { // test US @@ -1000,9 +1005,11 @@ menu_entry opt3_entries[] = { NULL, MB_NONE, MA_OPT3_SCALE, NULL, 0, 0, 0, 1 }, { NULL, MB_NONE, MA_OPT3_HSCALE32, NULL, 0, 0, 0, 1 }, { NULL, MB_NONE, MA_OPT3_HSCALE40, NULL, 0, 0, 0, 1 }, - { NULL, MB_ONOFF, MA_OPT3_FILTERING, ¤tConfig.scaling, 1, 0, 0, 1 }, + { NULL, MB_ONOFF, MA_OPT3_FILTERING, ¤tConfig.scaling, 1, 0, 0, 1 }, + { NULL, MB_RANGE, MA_OPT3_GAMMAA, ¤tConfig.gamma, 0, -4, 16, 1 }, { NULL, MB_NONE, MA_OPT3_VSYNC, NULL, 0, 0, 0, 1 }, { "Set to unscaled centered", MB_NONE, MA_OPT3_PRES_NOSCALE, NULL, 0, 0, 0, 1 }, + { "Set to 4:3 scaled", MB_NONE, MA_OPT3_PRES_SCALE43, NULL, 0, 0, 0, 1 }, { "Set to fullscreen", MB_NONE, MA_OPT3_PRES_FULLSCR, NULL, 0, 0, 0, 1 }, { "done", MB_NONE, MA_OPT3_DONE, NULL, 0, 0, 0, 1 }, }; @@ -1026,6 +1033,9 @@ static void menu_opt3_cust_draw(const menu_entry *entry, int x, int y, void *par case MA_OPT3_FILTERING: text_out16(x, y, "Bilinear filtering %s", currentConfig.scaling?"ON":"OFF"); break; + case MA_OPT3_GAMMAA: + text_out16(x, y, "Gamma adjustment %2i", currentConfig.gamma); + break; case MA_OPT3_VSYNC: { char *val = " never"; if (currentConfig.EmuOpt & 0x2000) @@ -1106,10 +1116,11 @@ static void dispmenu_loop_options(void) int tmp; me_process(opt3_entries, OPT3_ENTRY_COUNT, selected_id, (inp&BTN_RIGHT) ? 1 : 0); switch (selected_id) { - case MA_OPT3_SCALE: setting = ¤tConfig.scale; break; - case MA_OPT3_HSCALE40: setting = ¤tConfig.hscale40; is_32col = 0; break; - case MA_OPT3_HSCALE32: setting = ¤tConfig.hscale32; is_32col = 1; break; - case MA_OPT3_FILTERING:menu_opt3_preview(is_32col); break; + case MA_OPT3_SCALE: setting = ¤tConfig.scale; break; + case MA_OPT3_HSCALE40: setting = ¤tConfig.hscale40; is_32col = 0; break; + case MA_OPT3_HSCALE32: setting = ¤tConfig.hscale32; is_32col = 1; break; + case MA_OPT3_FILTERING: + case MA_OPT3_GAMMAA: menu_opt3_preview(is_32col); break; case MA_OPT3_VSYNC: tmp = ((currentConfig.EmuOpt>>13)&1) | ((currentConfig.EmuOpt>>15)&2); tmp = (inp & BTN_LEFT) ? (tmp>>1) : ((tmp<<1)|1); if (tmp > 3) tmp = 3; @@ -1136,6 +1147,12 @@ static void dispmenu_loop_options(void) currentConfig.scale = currentConfig.hscale40 = currentConfig.hscale32 = 1.0; menu_opt3_preview(is_32col); break; + case MA_OPT3_PRES_SCALE43: + currentConfig.scale = 1.20; + currentConfig.hscale40 = 1.00; + currentConfig.hscale32 = 1.25; + menu_opt3_preview(is_32col); + break; case MA_OPT3_PRES_FULLSCR: currentConfig.scale = 1.20; currentConfig.hscale40 = 1.25; @@ -1157,13 +1174,14 @@ static void dispmenu_loop_options(void) menu_entry opt2_entries[] = { - { "Emulate Z80", MB_ONOFF, MA_OPT2_ENABLE_Z80, ¤tConfig.PicoOpt,0x00004, 0, 0, 1 }, - { "Emulate YM2612 (FM)", MB_ONOFF, MA_OPT2_ENABLE_YM2612, ¤tConfig.PicoOpt,0x00001, 0, 0, 1 }, - { "Emulate SN76496 (PSG)", MB_ONOFF, MA_OPT2_ENABLE_SN76496,¤tConfig.PicoOpt,0x00002, 0, 0, 1 }, - { "gzip savestates", MB_ONOFF, MA_OPT2_GZIP_STATES, ¤tConfig.EmuOpt, 0x00008, 0, 0, 1 }, - { "Don't save last used ROM", MB_ONOFF, MA_OPT2_NO_LAST_ROM, ¤tConfig.EmuOpt, 0x00020, 0, 0, 1 }, - { "Status line in main menu", MB_ONOFF, MA_OPT2_STATUS_LINE, ¤tConfig.EmuOpt, 0x20000, 0, 0, 1 }, - { "done", MB_NONE, MA_OPT2_DONE, NULL, 0, 0, 0, 1 }, + { "Emulate Z80", MB_ONOFF, MA_OPT2_ENABLE_Z80, ¤tConfig.PicoOpt,0x00004, 0, 0, 1 }, + { "Emulate YM2612 (FM)", MB_ONOFF, MA_OPT2_ENABLE_YM2612, ¤tConfig.PicoOpt,0x00001, 0, 0, 1 }, + { "Emulate SN76496 (PSG)", MB_ONOFF, MA_OPT2_ENABLE_SN76496, ¤tConfig.PicoOpt,0x00002, 0, 0, 1 }, + { "gzip savestates", MB_ONOFF, MA_OPT2_GZIP_STATES, ¤tConfig.EmuOpt, 0x00008, 0, 0, 1 }, + { "Don't save last used ROM", MB_ONOFF, MA_OPT2_NO_LAST_ROM, ¤tConfig.EmuOpt, 0x00020, 0, 0, 1 }, + { "Status line in main menu", MB_ONOFF, MA_OPT2_STATUS_LINE, ¤tConfig.EmuOpt, 0x20000, 0, 0, 1 }, + { "Disable frame limitter", MB_ONOFF, MA_OPT2_NO_FRAME_LIMIT, ¤tConfig.EmuOpt, 0x40000, 0, 0, 1 }, + { "done", MB_NONE, MA_OPT2_DONE, NULL, 0, 0, 0, 1 }, }; #define OPT2_ENTRY_COUNT (sizeof(opt2_entries) / sizeof(opt2_entries[0]))