X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=platform%2Fcommon%2Fmenu.h;h=0227d52c942531a219ddb705ccc7ee68e5464f9e;hb=1fb0dd88aa0c2a05a54f1f3aead0542521285f6c;hp=8a9f424d16acd3c2b91d0a68de95a6ad6788697c;hpb=a8869ad1e809e6cacd6141fa7e9c86d349b0c0be;p=picodrive.git diff --git a/platform/common/menu.h b/platform/common/menu.h index 8a9f424..0227d52 100644 --- a/platform/common/menu.h +++ b/platform/common/menu.h @@ -1,4 +1,4 @@ -// (c) Copyright 2006,2007 notaz, All rights reserved. +// (c) Copyright 2006-2008 notaz, All rights reserved. void menu_init(void); @@ -6,15 +6,16 @@ void text_out16(int x, int y, const char *texto, ...); void smalltext_out16(int x, int y, const char *texto, int color); void smalltext_out16_lim(int x, int y, const char *texto, int color, int max); void menu_draw_selection(int x, int y, int w); +void debug_menu_loop(void); extern char menuErrorMsg[64]; - typedef enum { MB_NONE = 1, /* no auto processing */ - MB_ONOFF, /* ON/OFF setting */ - MB_RANGE, /* [min-max] setting */ + MB_OPT_ONOFF, /* ON/OFF setting */ + MB_OPT_RANGE, /* [min-max] setting */ + MB_OPT_CUSTOM, } menu_behavior; typedef enum @@ -47,12 +48,15 @@ typedef enum MA_OPT_CPU_CLOCKS, MA_OPT_SCD_OPTS, MA_OPT_ADV_OPTS, + MA_OPT_DISP_OPTS, /* psp */ MA_OPT_SAVECFG, MA_OPT_SAVECFG_GAME, MA_OPT_LOADCFG, MA_OPT_INTERLACED, /* giz */ + MA_OPT_ROTATION, /* uiq */ MA_OPT2_GAMMA, MA_OPT2_A_SN_GAMMA, + MA_OPT2_DBLBUFF, /* giz */ MA_OPT2_VSYNC, MA_OPT2_ENABLE_Z80, MA_OPT2_ENABLE_YM2612, @@ -61,7 +65,23 @@ typedef enum MA_OPT2_NO_LAST_ROM, MA_OPT2_RAMTIMINGS, /* gp2x */ MA_OPT2_SQUIDGEHACK, /* gp2x */ + MA_OPT2_STATUS_LINE, /* psp */ + MA_OPT2_NO_FRAME_LIMIT, /* psp */ + MA_OPT2_SVP_DYNAREC, + MA_OPT2_NO_SPRITE_LIM, + MA_OPT2_NO_IDLE_LOOPS, MA_OPT2_DONE, + MA_OPT3_SCALE, /* psp (all OPT3) */ + MA_OPT3_HSCALE32, + MA_OPT3_HSCALE40, + MA_OPT3_PRES_NOSCALE, + MA_OPT3_PRES_SCALE43, + MA_OPT3_PRES_FULLSCR, + MA_OPT3_FILTERING, + MA_OPT3_VSYNC, + MA_OPT3_GAMMAA, + MA_OPT3_BLACKLVL, + MA_OPT3_DONE, MA_CDOPT_TESTBIOS_USA, MA_CDOPT_TESTBIOS_EUR, MA_CDOPT_TESTBIOS_JAP, @@ -73,6 +93,11 @@ typedef enum MA_CDOPT_SCALEROT_CHIP, MA_CDOPT_BETTER_SYNC, MA_CDOPT_DONE, + MA_CTRL_PLAYER1, + MA_CTRL_PLAYER2, + MA_CTRL_EMU, + MA_CTRL_TURBO_RATE, + MA_CTRL_DONE, } menu_id; typedef struct @@ -80,21 +105,46 @@ typedef struct char *name; menu_behavior beh; menu_id id; - void *var; /* for on-off settings */ - int mask; + void *var; /* for on-off/range settings */ + int mask; /* bit to toggle for on/off */ signed char min; /* for ranged integer settings, to be sign-extended */ signed char max; char enabled; + char need_to_save; + int (*submenu_handler)(menu_id id); + const char * (*generate_name)(int is_left); } menu_entry; +#define mee_submenu_id(name, id, handler) \ + { name, MB_NONE, id, NULL, 0, 0, 0, 1, 0, handler, NULL } + +#define mee_submenu(name, handler) \ + mee_submenu_id(name, MA_NONE, handler) + +#define mee_end \ + { NULL, 0, 0, NULL, 0, 0, 0, 0, 0, NULL, NULL } + +typedef struct +{ + char *name; + int mask; +} me_bind_action; + +extern me_bind_action me_ctrl_actions[15]; +extern me_bind_action emuctrl_actions[]; // platform code + typedef void (me_draw_custom_f)(const menu_entry *entry, int x, int y, void *param); -int me_id2offset(const menu_entry *entries, int count, menu_id id); -void me_enable(menu_entry *entries, int count, menu_id id, int enable); -int me_count_enabled(const menu_entry *entries, int count); -menu_id me_index2id(const menu_entry *entries, int count, int index); +/* TODO: move? */ +int me_id2offset(const menu_entry *entries, menu_id id); +void me_enable(menu_entry *entries, menu_id id, int enable); +int me_count_enabled(const menu_entry *ent); +menu_id me_index2id(const menu_entry *entries, int index); void me_draw(const menu_entry *entries, int count, int x, int y, me_draw_custom_f *cust_draw, void *param); -int me_process(menu_entry *entries, int count, menu_id id, int is_next); +int me_process(menu_entry *entries, menu_id id, int is_next); + +const char *me_region_name(unsigned int code, int auto_order); +void menu_darken_bg(void *dst, int pixels, int darker);