Changeset 1356 for branches/philmoz


Ignore:
Timestamp:
10/09/11 04:22:43 (20 months ago)
Author:
philmoz
Message:

Merged most recent changes from main trunk to this branch (up to changeset 1355).

Location:
branches/philmoz
Files:
106 edited
16 copied

Legend:

Unmodified
Added
Removed
  • branches/philmoz

  • branches/philmoz/CHDK/LANG/english.lng

    r1321 r1356  
    601601463 "Video AE Controls" 
    602602464 "<Alt> Shortcut Buttons" 
     603465 "USB Remote" 
     604466 "Show USB Remote Status" 
  • branches/philmoz/CHDK/LANG/ukrainian.lng

    r969 r1356  
    1 // Translation by Pavlo Kasperskyi (pkasperskyi[at]gmail{dot}com): November 14, 2010 
     1// Translation by Pavlo Kasperskyi (pkasperskyi[at]gmail{dot}com): October 1, 2011 
    22// Êîäîâà ñòîð³íêà Win1251 
    33// CHDK ìîâíèé ôàéë 
     
    88   
    99  1 "CHDK - ÃÎËÎÂÍÅ ÌÅÍÞ" 
     10 
     11 
    1012 
    1113 
     
    3840 19 "RAW ôàéë: ðîçøèðåííÿ" 
    3941 
    40   
     42 
    4143 20 "OSD" 
    4244 
     
    5153 28 "Áàòàðåÿ" 
    5254 
    53   
     55 
    5456 29 "óñòîãðàìà" 
    5557 
     
    6062 34 "²ãíîð. ãðàíè÷íèõ ï³ê³â" 
    6163 35 "Àâòîìàòè÷íî çá³ëüøóâàòè" 
    62          
    63          
     64 
     65 
    6466 36 "Çåáðà" 
    6567 
     
    7274 43 "Ïîêàç ïîâåðõ çåáðè" 
    7375 
    74   
     76 
    7577 44 "Ñêðèïòóâàííÿ" 
    7678 
     
    8082 48 "Ïàðàìåòðè ñêðèïòà" 
    8183 
    82   
     84 
    8385 49 "Çîâí³øí³é âèãëÿä" 
    8486 
     
    101103 66 "×èòà÷ òåêñò³â: ôîí" 
    102104 
    103   
     105 
    104106 67 "²íøå" 
    105107 
     
    118120 78 "Ïðî ïàì'ÿòü..." 
    119121 
    120   
     122 
    121123 79 "³äëàãîäæåííÿ" 
    122124 
     
    129131 84 "ijÿ ïðè ALT +/-" 
    130132 85 "Çðîáèòè êàðòó çàâàíòàæóâàëüíîþ" 
    131          
    132          
     133 
     134 
    133135 86 "Áàòàðåÿ" 
    134136 
     
    139141 91 "Ïîêàçóâàòè íàïðóãó" 
    140142 92 "Ïîêàçóâàòè çíà÷îê" 
    141          
    142          
     143 
     144 
    143145 93 "×èòà÷ òåêñò³â" 
    144146 
     
    170172111 "Ïåðåêëþ÷³òü êàìåðó\nâ ðåæèì ÏÅÐÅÃËßÄÓ\n³ ñïðîáóéòå çíîâó. :)" 
    171173 
    172  
     174// file browser titles 
    173175112 "Ôàéëîâèé ìåíåäæåð" 
    174176113 "Âèá³ð ôàéëó ñêðèïòà" 
     
    177179116 "Âèá³ð ìîâíîãî ôàéëó" 
    178180 
    179  
     181// for calendar 
    180182117 "ѳ÷åíü" 
    181183118 "Ëþòèé" 
     
    201203136 "Çàðàç:" 
    202204 
    203  
     205// messagebox buttons 
    204206137 "Îêåé" 
    205207138 "Òàê" 
     
    207209140 "³äì³íà" 
    208210 
    209  
     211// OSD layout editor 
    210212141 "óñòîãðàìà" 
    211213142 "ÃÐÇÏ êàëüê." 
     
    216218147 "Ãîäèííèê" 
    217219 
    218  
     220// palette 
    219221148 "Íàòèñí³òü SET äëÿ ïåðåêëþ÷åííÿ ðåæèìó" 
    220222149 "      Íàòèñí³òü MENU ùîáè âèéòè      " 
     
    222224151 " Óïðàâë³ííÿ: %s " 
    223225 
    224  
     226// reversi 
    225227152 "*** Ðåçóëüòàò ãðè ***" 
    226228153 "Âè âèãðàëè! :-)" 
     
    239241163 "*** Ïðî... ***" 
    240242 
    241  
     243// sokoban 
    242244164 "  гâåíü" 
    243245165 "  Õîä³â" 
     
    245247167 "Òàê!\n  Âè çðîáèëè öå!  " 
    246248 
    247  
     249// console 
    248250168 "*** ÐÎÇÏÎ×ÀÒÎ ***" 
    249251169 "*** ÏÅÐÅÐÂÀÍÎ ***" 
    250252170 "*** ÇÀÂÅÐØÅÍÎ ***" 
    251253 
    252  
     254// file browser 
    253255171 "*** Âèäàëåííÿ ïàïêè ***" 
    254256172 "Âè ÂÏÅÂÍÅͲ, ùî õî÷åòå\nâèäàëèòè ÂѲ ôàéëè\nó âèáðàí³é ïàïö³?" 
     
    256258174 "Âè ÂÏÅÂÍÅͲ, ùî õî÷åòå\nâèäàëèòè âèáðàíèé ôàéë?" 
    257259 
    258  
     260// benchmark     
    259261175 "Òåñò êàìåðè..." 
    260262176 " îá÷èñëåííÿ..." 
     
    487489357 "*** Âèäàëåííÿ RAW ôàéë³â ***" 
    488490358 "Âèäàëèòè RAW" 
    489   
     491 
    490492359 "Ìåíþ Êîðèñòóâà÷à ÿê ïî÷àòêîâå" 
    491493 
     
    559561418 "Çáåðåãòè ãðàíèö³" 
    560562419 "Ïîêàçóâàòè â ðåæ. ïåðåãëÿäó" 
    561  
    562563421 "³äêð. òà âñòàíîâë. çóì" 
    563564422 "Ðåæèì ïàíîðàìóâàííÿ" 
     
    565566424 "DNG ôîðìàò" 
    566567425 "Êåøîâàíèé áóôåð RAW" 
    567 426 "Íå âäàºòüñÿ â³äêðèòè CHDK/badpixel.bin\nÇàïóñò³òü \nCHDK/SCRIPTS/TEST/badpixel.lua" 
     568426 "Íå âäàºòüñÿ â³äêðèòè CHDK/badpixel.bin\nÇàïóñò³òü 'Ñòâîðèòè badpixel.bin'" 
    568569427 "Ô³êñóâàòè ÷àñ çáåðåæåííÿ RAW" 
    569570428 "Connect 4" 
     
    578579437 " ò³ëüêè ïðè â³äåîçéîìö³" 
    579580438 " ñèëà ñïàëàõó" 
    580 439 " ðîçøèðåííÿ 'DNG' ôàéë³â" 
     581439 " ðîçøèðåííÿ '.DNG'" 
    581582440 "DNG âèäèì³ ïî USB" 
    582583441 "Mastermind" 
     
    596597457 "Ïîêàçóâàòè çàâæäè" 
    597598458 " ïîçèö³ÿ ïåðåêðèòòÿ(%)" 
     599459 "Ñòâîðèòè badpixel.bin" 
     600460 "Äëÿ äàíî¿ îïåðàö³¿\níåîáõ³äíèé ðåæèì çéîìêè." 
     601461 "%s íåäîñòóïíî â çá³ðö³" 
     602462 "Ïåðåêðèòòÿ òà÷ñêð³íà" 
     603463 "Êîíòðîëü ÀÅ äëÿ â³äåî" 
     604464 "Êíîïêè äëÿ <Alt>" 
     605465 "USB ïóëüò" 
     606466 "Ïîêàçóâàòè ñòàòóñ USB ïóëüòà" 
  • branches/philmoz/Makefile

    r1343 r1356  
    44# Define the lists of cameras / firmware versions with a BETA status 
    55# This is a list of cameras for which ALL firmware versions are BETA 
    6 BETA_CAMERA="sx1 a1100 a2000 ixus90_sd790 g11 s90 ixus100_sd780 ixus120_sd940 ixus200_sd980 ixus85_sd770 d10 ixus95_sd1200 a430 s95 a490 a495 ixus300_sd4000 sx220hs sx230hs sx130is ixus310_elph500hs" 
     6BETA_CAMERA="sx1 a1100 a2000 ixus90_sd790 g11 s90 ixus100_sd780 ixus120_sd940 ixus200_sd980" 
     7BETA_CAMERA+=" ixus85_sd770 d10 ixus95_sd1200 a430 s95 a490 a495 ixus300_sd4000 sx220hs sx230hs sx130is ixus310_elph500hs" 
    78# If specific firmware version(s) for a camera are BETA; but others are not 
    89# then define the BETA versions here - e.g. g12-100c 
     
    141142        zip -9 $(topdir)bin/$(PLATFORM)-$(PLATFORMSUB)-$(BUILD_NUMBER)-full$(STATE).zip $(topdir)CHDK/SCRIPTS/EXAM/*     > $(DEVNULL) 
    142143        zip -9 $(topdir)bin/$(PLATFORM)-$(PLATFORMSUB)-$(BUILD_NUMBER)-full$(STATE).zip $(topdir)CHDK/SCRIPTS/TEST/*     > $(DEVNULL) 
     144        zip -9 $(topdir)bin/$(PLATFORM)-$(PLATFORMSUB)-$(BUILD_NUMBER)-full$(STATE).zip $(topdir)CHDK/SCRIPTS/4Pack/*    > $(DEVNULL) 
     145        zip -9 $(topdir)bin/$(PLATFORM)-$(PLATFORMSUB)-$(BUILD_NUMBER)-full$(STATE).zip $(topdir)CHDK/SCRIPTS/4Pack/Lua/*        > $(DEVNULL) 
     146        zip -9 $(topdir)bin/$(PLATFORM)-$(PLATFORMSUB)-$(BUILD_NUMBER)-full$(STATE).zip $(topdir)CHDK/SCRIPTS/4Pack/uBasic/*     > $(DEVNULL) 
    143147        zip -9 $(topdir)bin/$(PLATFORM)-$(PLATFORMSUB)-$(BUILD_NUMBER)-full$(STATE).zip $(topdir)CHDK/syscurves.CVF      > $(DEVNULL) 
    144148        zip -9j $(topdir)bin/$(PLATFORM)-$(PLATFORMSUB)-$(BUILD_NUMBER)-full$(STATE).zip $(topdir)doc/changelog.txt  > $(DEVNULL) 
     
    156160  endif 
    157161  ifeq ($(PLATFORMOS),dryos) 
    158 #       zip -9j $(topdir)bin/$(PLATFORM)-$(PLATFORMSUB)-$(BUILD_NUMBER)-full$(STATE).zip $(topdir)doc/readme.txt  > $(DEVNULL) 
    159 #       zip -9j $(topdir)bin/$(PLATFORM)-$(PLATFORMSUB)-$(BUILD_NUMBER)$(STATE).zip $(topdir)doc/readme.txt  > $(DEVNULL) 
    160 ifdef OPT_FI2 
    161   ifdef FI2KEY 
    162         zip -9j $(topdir)bin/$(PLATFORM)-$(PLATFORMSUB)-$(BUILD_NUMBER)-full$(STATE).zip $(topdir)bin/PS.FI2 > $(DEVNULL) 
    163         zip -9j $(topdir)bin/$(PLATFORM)-$(PLATFORMSUB)-$(BUILD_NUMBER)$(STATE).zip $(topdir)bin/PS.FI2 > $(DEVNULL) 
    164         rm -f $(topdir)bin/PS.FI2 
    165   endif 
    166 endif 
     162    ifdef OPT_FI2 
     163      ifdef FI2KEY 
     164            zip -9j $(topdir)bin/$(PLATFORM)-$(PLATFORMSUB)-$(BUILD_NUMBER)-full$(STATE).zip $(topdir)bin/PS.FI2 > $(DEVNULL) 
     165            zip -9j $(topdir)bin/$(PLATFORM)-$(PLATFORMSUB)-$(BUILD_NUMBER)$(STATE).zip $(topdir)bin/PS.FI2 > $(DEVNULL) 
     166            rm -f $(topdir)bin/PS.FI2 
     167      endif 
     168    endif 
    167169  endif 
    168170endif 
  • branches/philmoz/core/conf.c

    r1346 r1356  
    677677 
    678678//------------------------------------------------------------------- 
     679int conf_getValue(unsigned short id, tConfigVal* configVal) { 
     680    unsigned short i; 
     681    int ret = CONF_EMPTY; 
     682    OSD_pos* pos; 
     683     
     684    if( id==0 ) { 
     685        configVal->numb = 0; 
     686        for( i=0; i<CONF_NUM; ++i ) if( configVal->numb<conf_info[i].id ) configVal->numb = conf_info[i].id; 
     687        ret = CONF_VALUE; 
     688    } else { 
     689        for( i=0; i<CONF_NUM; ++i ) { 
     690            if( conf_info[i].id==id ) { 
     691                switch( conf_info[i].type ) { 
     692                    case CONF_VALUE: 
     693                    case CONF_VALUE_PTR: 
     694                        switch( conf_info[i].size ) { 
     695                            case sizeof(int): 
     696                                configVal->numb = *(int*)conf_info[i].var; 
     697                                ret = CONF_VALUE; 
     698                            break; 
     699                            case sizeof(short): 
     700                                configVal->numb = *(short*)conf_info[i].var; 
     701                                ret = CONF_VALUE; 
     702                            break; 
     703                            case sizeof(char): 
     704                                configVal->numb = *(char*)conf_info[i].var; 
     705                                ret = CONF_VALUE; 
     706                            break; 
     707                        } 
     708                    break; 
     709                    case CONF_INT_PTR: 
     710                        configVal->numb = conf_info[i].size/sizeof(int); 
     711                        configVal->pInt = (int*)conf_info[i].var; 
     712                        ret = CONF_INT_PTR; 
     713                    break; 
     714                    case CONF_CHAR_PTR: 
     715                        configVal->str = conf_info[i].var; 
     716                        ret = CONF_CHAR_PTR; 
     717                    break; 
     718                    case CONF_OSD_POS_PTR: 
     719                        pos = (OSD_pos*)conf_info[i].var; 
     720                        configVal->pos.x = pos->x; 
     721                        configVal->pos.y = pos->y; 
     722                        ret = CONF_OSD_POS_PTR; 
     723                    break; 
     724                } 
     725                break; 
     726            } 
     727        } 
     728    } 
     729    return ret; 
     730} 
     731 
     732//------------------------------------------------------------------- 
     733int conf_setValue(unsigned short id, tConfigVal configVal) { 
     734    unsigned short i; 
     735    int ret = CONF_EMPTY, len, len2; 
     736    OSD_pos* pos; 
     737     
     738    for( i=0; i<CONF_NUM; ++i ) { 
     739        if( conf_info[i].id==id ) { 
     740            switch( conf_info[i].type ) { 
     741                case CONF_VALUE: 
     742                case CONF_VALUE_PTR: 
     743                    if( configVal.isNumb ) { 
     744                        switch( conf_info[i].size ) { 
     745                            case sizeof(int): 
     746                                *(int*)conf_info[i].var = (int)configVal.numb; 
     747                                ret = CONF_VALUE; 
     748                            break; 
     749                            case sizeof(short): 
     750                                *(short*)conf_info[i].var = (short)configVal.numb; 
     751                                ret = CONF_VALUE; 
     752                            break; 
     753                            case sizeof(char): 
     754                                *(char*)conf_info[i].var = (char)configVal.numb; 
     755                                ret = CONF_VALUE; 
     756                            break; 
     757                        } 
     758                    } 
     759                break; 
     760                case CONF_INT_PTR: 
     761                    if( configVal.isPInt ) { 
     762                        len = conf_info[i].size; 
     763                        len2 = configVal.numb*sizeof(int); 
     764                        if( len2<len ) len = len2; 
     765                        memcpy(conf_info[i].var, configVal.pInt, len); 
     766                        ret = CONF_INT_PTR; 
     767                    } 
     768                break; 
     769                case CONF_CHAR_PTR: 
     770                    if( configVal.isStr ) { 
     771                        len = strlen(configVal.str); 
     772                        if( len>0 && len<CONF_STR_LEN) { 
     773                            strncpy(conf_info[i].var, configVal.str ,len+1); 
     774                        } 
     775                        ret = CONF_CHAR_PTR; 
     776                    } 
     777                break; 
     778                case CONF_OSD_POS_PTR: 
     779                    if( configVal.isPos ) { 
     780                        pos = (OSD_pos*)conf_info[i].var; 
     781                        pos->x = configVal.pos.x; 
     782                        pos->y = configVal.pos.y; 
     783                        ret = CONF_OSD_POS_PTR; 
     784                    } 
     785                break; 
     786            } 
     787            break; 
     788        } 
     789    } 
     790    if( ret!=CONF_EMPTY ) { 
     791     //   if (conf_info[i].func) { 
     792     //      conf_info[i].func(); 
     793     //   } 
     794        conf_save(); 
     795    } 
     796    return ret; 
     797} 
    679798// Common code extracted from raw.c (raw_savefile) and gui_osd.c (gui_osd_draw_raw_info) 
    680799// returns 0 if RAW save is disabled due to mode settings, etc, return 1 if RAW save OK 
  • branches/philmoz/core/console.c

    r1347 r1356  
    224224} 
    225225 
    226 // If the console is in use then redraw it (used when gui_redraw detects screen has been ereased) 
    227 void console_force_redraw() 
    228 { 
    229     if (console_is_inited()) 
    230     { 
    231             console_last_drawn = get_tick_count(); 
    232         console_draw(); 
    233     } 
    234 } 
  • branches/philmoz/core/gui.c

    r1347 r1356  
    151151extern const int tv_override_zero_shift; 
    152152 
    153  
    154153static void gui_draw_osd(); 
    155154 
     
    205204        static void gui_load_curve(int arg); 
    206205#endif 
    207        const char* gui_histo_show_enum(int change, int arg); 
    208206static const char* gui_histo_mode_enum(int change, int arg); 
    209 static const char* gui_temp_mode_enum(int change, int arg); 
    210207static const char* gui_histo_layout_enum(int change, int arg); 
    211 static const char* gui_zebra_mode_enum(int change, int arg); 
    212 static const char* gui_zebra_draw_osd_enum(int change, int arg); 
    213208static const char* gui_font_enum(int change, int arg); 
    214 static const char* gui_raw_prefix_enum(int change, int arg); 
    215 static const char* gui_raw_ext_enum(int change, int arg); 
    216 static const char* gui_sub_batch_prefix_enum(int change, int arg); 
    217 static const char* gui_sub_batch_ext_enum(int change, int arg); 
    218  
    219 static const char* gui_raw_nr_enum(int change, int arg); 
    220 static const char* gui_autoiso_shutter_enum(int change, int arg); 
    221 #ifdef OPT_TEXTREADER 
    222         static const char* gui_reader_codepage_enum(int change, int arg); 
    223 #endif 
    224 static const char* gui_zoom_value_enum(int change, int arg); 
    225 static const char* gui_show_values_enum(int change, int arg); 
    226 static const char* gui_dof_show_value_enum(int change, int arg); 
     209 
    227210#if CAM_ADJUSTABLE_ALT_BUTTON 
    228211static const char* gui_alt_mode_button_enum(int change, int arg); 
    229212#endif 
    230213static const char* gui_alt_power_enum(int change, int arg); 
    231 static const char* gui_video_mode_enum(int change, int arg); 
    232 static const char* gui_fast_ev_step(int change, int arg); 
    233 #if CAM_QUALITY_OVERRIDE 
    234 static const char* gui_fast_image_quality(int change, int arg); 
    235 #endif 
    236214static const char* gui_video_bitrate_enum(int change, int arg); 
    237 static const char* gui_tv_bracket_values_enum(int change, int arg); 
    238 static const char* gui_av_bracket_values_enum(int change, int arg); 
    239 static const char* gui_iso_bracket_koef_enum(int change, int arg); 
    240 static const char* gui_subj_dist_bracket_koef_enum(int change, int arg); 
    241 static const char* gui_bracket_type_enum(int change, int arg); 
    242215static const char* gui_av_override_enum(int change, int arg); 
    243216#if ZOOM_OVERRIDE 
    244217static const char* gui_zoom_override_enum(int change, int arg); 
    245218#endif 
    246 static const char* gui_iso_override_koef_enum(int change, int arg); 
    247219static const char* gui_tv_override_koef_enum(int change, int arg); 
    248220static const char* gui_tv_override_value_enum(int change, int arg); 
     
    255227static const char* gui_iso_exposure_order_enum(int change, int arg); 
    256228*/ 
    257        const char* gui_nd_filter_state_enum(int change, int arg); 
    258 //static const char* gui_tv_enum(int change, int arg); 
    259229const char* gui_user_menu_show_enum(int change, int arg); 
    260 static const char* gui_hide_osd_enum(int change, int arg); 
    261 static const char* gui_show_clock_enum(int change, int arg); 
    262 static const char* gui_clock_format_enum(int change, int arg); 
    263 static const char* gui_clock_indicator_enum(int change, int arg); 
    264 static const char* gui_clock_halfpress_enum(int change, int arg); 
    265 static const char* gui_space_bar_enum(int change, int arg); 
    266 static const char* gui_space_bar_size_enum(int change, int arg); 
    267 static const char* gui_space_bar_width_enum(int change, int arg); 
    268 static const char* gui_space_warn_type_enum(int change, int arg); 
    269230static const char* gui_bad_pixel_enum(int change, int arg); 
    270231static const char* gui_video_af_key_enum(int change, int arg); 
    271 static const char* gui_show_movie_time(int change, int arg); 
    272        const char* gui_override_disable_enum(int change, int arg); 
    273232#ifdef OPT_CURVES 
    274233        static const char* gui_conf_curve_enum(int change, int arg); 
    275234#endif 
    276235#ifdef OPT_DEBUGGING 
    277         static const char* gui_debug_shortcut_enum(int change, int arg); 
    278         static const char* gui_debug_display_enum(int change, int arg); 
    279236        static void gui_debug_shortcut(void); 
    280237#endif 
     
    283240static void gui_menuproc_edge_save(int arg); 
    284241static void gui_menuproc_edge_load(int arg); 
    285 static const char* gui_edge_pano_enum(int change, int arg); 
    286242#endif 
    287243 
     
    289245static void gui_load_script(int arg); 
    290246static void gui_load_script_default(int arg); 
    291 static const char* gui_script_autostart_enum(int change, int arg); 
    292247static const char* gui_script_param_set_enum(int change, int arg); 
    293248#endif 
    294249 
    295 static const char* gui_show_usb_info_enum(int change, int arg); 
    296  
    297250void rinit(); 
    298  
    299251 
    300252// Menu callbacks 
     
    326278//------------------------------------------------------------------- 
    327279static CMenuItem remote_submenu_items[] = { 
    328     {0x71,LANG_MENU_REMOTE_ENABLE,            MENUITEM_BOOL,                    &conf.remote_enable}, 
    329     {0x0,LANG_MENU_SYNCHABLE_REMOTE,          MENUITEM_SEPARATOR }, 
    330         {0x71,LANG_MENU_SYNCHABLE_REMOTE_ENABLE,  MENUITEM_BOOL,                    &conf.ricoh_ca1_mode            }, 
    331     {0x5c,LANG_MENU_SYNCH_ENABLE,             MENUITEM_BOOL,                    &conf.synch_enable              }, 
    332     {0x5c,LANG_MENU_SYNCH_DELAY_ENABLE,       MENUITEM_BOOL,                    &conf.synch_delay_enable        }, 
    333     {0x5c,LANG_MENU_SYNCH_DELAY_VALUE,        MENUITEM_INT|MENUITEM_F_UNSIGNED, &conf.synch_delay_value         }, 
    334     {0x5c,LANG_MENU_SYNCH_DELAY_COARSE_VALUE, MENUITEM_INT|MENUITEM_F_UNSIGNED, &conf.synch_delay_coarse_value  }, 
    335     {0x5c,LANG_MENU_REMOTE_ZOOM_ENABLE,       MENUITEM_BOOL,                    &conf.remote_zoom_enable        }, 
    336     {0x5f,LANG_MENU_REMOTE_ZOOM_TIMEOUT,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.zoom_timeout, MENU_MINMAX(2,10)}, 
    337     {0x51,LANG_MENU_BACK,                     MENUITEM_UP }, 
     280    MENU_ITEM(0x71,LANG_MENU_REMOTE_ENABLE,            MENUITEM_BOOL,                    &conf.remote_enable, 0), 
     281    MENU_ITEM(0x0,LANG_MENU_SYNCHABLE_REMOTE,          MENUITEM_SEPARATOR, 0, 0 ), 
     282    MENU_ITEM(0x71,LANG_MENU_SYNCHABLE_REMOTE_ENABLE,  MENUITEM_BOOL,                    &conf.ricoh_ca1_mode, 0), 
     283    MENU_ITEM(0x5c,LANG_MENU_SYNCH_ENABLE,             MENUITEM_BOOL,                    &conf.synch_enable, 0), 
     284    MENU_ITEM(0x5c,LANG_MENU_SYNCH_DELAY_ENABLE,       MENUITEM_BOOL,                    &conf.synch_delay_enable, 0), 
     285    MENU_ITEM(0x5c,LANG_MENU_SYNCH_DELAY_VALUE,        MENUITEM_INT|MENUITEM_F_UNSIGNED, &conf.synch_delay_value, 0), 
     286    MENU_ITEM(0x5c,LANG_MENU_SYNCH_DELAY_COARSE_VALUE, MENUITEM_INT|MENUITEM_F_UNSIGNED, &conf.synch_delay_coarse_value, 0), 
     287    MENU_ITEM(0x5c,LANG_MENU_REMOTE_ZOOM_ENABLE,       MENUITEM_BOOL,                    &conf.remote_zoom_enable, 0), 
     288    MENU_ITEM(0x5f,LANG_MENU_REMOTE_ZOOM_TIMEOUT,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.zoom_timeout, MENU_MINMAX(2,10)), 
     289    MENU_ITEM(0x51,LANG_MENU_BACK,                     MENUITEM_UP, 0, 0), 
    338290    {0} 
    339291}; 
     
    342294 
    343295#ifdef OPT_SCRIPTING 
     296static const char* gui_script_autostart_modes[]={ "Off", "On", "Once"}; 
    344297static CMenuItem script_submenu_items_top[] = { 
    345     {0x35,LANG_MENU_SCRIPT_LOAD,             MENUITEM_PROC,                      (int*)gui_load_script }, 
    346     {0x5f,LANG_MENU_SCRIPT_DELAY,            MENUITEM_INT|MENUITEM_F_UNSIGNED,   &conf.script_shoot_delay }, 
     298    MENU_ITEM(0x35,LANG_MENU_SCRIPT_LOAD,             MENUITEM_PROC,                      gui_load_script, 0 ), 
     299    MENU_ITEM(0x5f,LANG_MENU_SCRIPT_DELAY,            MENUITEM_INT|MENUITEM_F_UNSIGNED,   &conf.script_shoot_delay, 0 ), 
    347300        // remote autostart 
    348         {0x5f,LANG_MENU_SCRIPT_AUTOSTART,               MENUITEM_ENUM,                                          (int*)gui_script_autostart_enum }, 
     301        MENU_ENUM2(0x5f,LANG_MENU_SCRIPT_AUTOSTART,               &conf.script_startup, gui_script_autostart_modes ), 
    349302 
    350303#if CAM_REMOTE 
    351     {0x86,LANG_MENU_REMOTE_PARAM,            MENUITEM_SUBMENU,   (int*)&remote_submenu }, 
    352         //{0x71,LANG_MENU_SCRIPT_REMOTE_ENABLE, MENUITEM_BOOL,                                          &conf.remote_enable}, 
    353 #endif 
    354     {0x5d,LANG_MENU_SCRIPT_DEFAULT_VAL,     MENUITEM_PROC,                      (int*)gui_load_script_default }, 
    355     {0x5e,LANG_MENU_SCRIPT_PARAM_SET,     MENUITEM_ENUM,                         (int*)gui_script_param_set_enum }, 
    356     {0x5c,LANG_MENU_SCRIPT_PARAM_SAVE,             MENUITEM_BOOL,                    &conf.script_param_save              }, 
    357     {0x0,(int)script_title,                 MENUITEM_SEPARATOR }, 
    358 //    {0x0,LANG_MENU_SCRIPT_CURRENT,          MENUITEM_SEPARATOR }, 
    359 //    {0x0,(int)script_title,                 MENUITEM_TEXT }, 
    360 //    {0x0,LANG_MENU_SCRIPT_PARAMS,           MENUITEM_SEPARATOR } 
     304    MENU_ITEM(0x86,LANG_MENU_REMOTE_PARAM,            MENUITEM_SUBMENU,   &remote_submenu, 0 ), 
     305        //MENU_ITEM(0x71,LANG_MENU_SCRIPT_REMOTE_ENABLE,        MENUITEM_BOOL,                                          &conf.remote_enable, 0), 
     306#endif 
     307    MENU_ITEM(0x5d,LANG_MENU_SCRIPT_DEFAULT_VAL,     MENUITEM_PROC,                      gui_load_script_default, 0 ), 
     308    MENU_ITEM(0x5e,LANG_MENU_SCRIPT_PARAM_SET,     MENUITEM_ENUM,                         gui_script_param_set_enum, 0 ), 
     309    MENU_ITEM(0x5c,LANG_MENU_SCRIPT_PARAM_SAVE,             MENUITEM_BOOL,                    &conf.script_param_save, 0 ), 
     310    MENU_ITEM(0x0,(int)script_title,                 MENUITEM_SEPARATOR, 0, 0 ), 
     311//    MENU_ITEM(0x0,LANG_MENU_SCRIPT_CURRENT,          MENUITEM_SEPARATOR, 0, 0 ), 
     312//    MENU_ITEM(0x0,(int)script_title,                 MENUITEM_TEXT, 0, 0 ), 
     313//    MENU_ITEM(0x0,LANG_MENU_SCRIPT_PARAMS,           MENUITEM_SEPARATOR, 0, 0) 
    361314}; 
    362315 
    363316static CMenuItem script_submenu_items_bottom[] = { 
    364     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     317    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    365318    {0} 
    366319}; 
     
    373326static CMenuItem games_submenu_items[] = { 
    374327#ifdef OPT_GAME_REVERSI 
    375     {0x38,LANG_MENU_GAMES_REVERSI,           MENUITEM_PROC,  (int*)gui_draw_reversi }, 
     328    MENU_ITEM(0x38,LANG_MENU_GAMES_REVERSI,           MENUITEM_PROC,  gui_draw_reversi, 0 ), 
    376329#endif 
    377330#ifdef OPT_GAME_SOKOBAN 
    378     {0x38,LANG_MENU_GAMES_SOKOBAN,           MENUITEM_PROC,  (int*)gui_draw_sokoban }, 
     331    MENU_ITEM(0x38,LANG_MENU_GAMES_SOKOBAN,           MENUITEM_PROC,  gui_draw_sokoban, 0 ), 
    379332#endif 
    380333#ifdef OPT_GAME_CONNECT4 
    381     {0x38,LANG_MENU_GAMES_CONNECT4,             MENUITEM_PROC,  (int*)gui_draw_4wins }, 
     334    MENU_ITEM(0x38,LANG_MENU_GAMES_CONNECT4,             MENUITEM_PROC,  gui_draw_4wins, 0 ), 
    382335#endif 
    383336#ifdef OPT_GAME_MASTERMIND 
    384     {0x38,LANG_MENU_GAMES_MASTERMIND,           MENUITEM_PROC,  (int*)gui_draw_mastermind }, 
    385 #endif 
    386     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     337    MENU_ITEM(0x38,LANG_MENU_GAMES_MASTERMIND,           MENUITEM_PROC,  gui_draw_mastermind, 0 ), 
     338#endif 
     339    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    387340    {0} 
    388341}; 
    389342static CMenu games_submenu = {0x38,LANG_MENU_GAMES_TITLE, NULL, games_submenu_items }; 
    390343 
     344static const char* gui_autoiso_shutter_modes[] = { "Auto", "1/8s", "1/15s", "1/30s", "1/60s", "1/125s", "1/250s", "1/500s", "1/1000s"}; 
    391345static CMenuItem autoiso_submenu_items[] = { 
    392     {0x5c,LANG_MENU_AUTOISO_ENABLED,          MENUITEM_BOOL,    &conf.autoiso_enable}, 
    393     {0x5f,LANG_MENU_AUTOISO_MIN_SHUTTER,   MENUITEM_ENUM,    (int*)gui_autoiso_shutter_enum }, 
    394     {0x5f,LANG_MENU_AUTOISO_USER_FACTOR,   MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_user_factor, MENU_MINMAX(1, 8)  }, 
     346    MENU_ITEM(0x5c,LANG_MENU_AUTOISO_ENABLED,          MENUITEM_BOOL,   &conf.autoiso_enable, 0), 
     347    MENU_ENUM2(0x5f,LANG_MENU_AUTOISO_MIN_SHUTTER,  &conf.autoiso_shutter, gui_autoiso_shutter_modes ), 
     348    MENU_ITEM(0x5f,LANG_MENU_AUTOISO_USER_FACTOR,   MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_user_factor, MENU_MINMAX(1, 8) ), 
    395349#if CAM_HAS_IS 
    396     {0x5f,LANG_MENU_AUTOISO_IS_FACTOR,       MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_is_factor, MENU_MINMAX(1, 8)  }, 
    397 #endif 
    398     {0x5f,LANG_MENU_AUTOISO_MAX_ISO_HI,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_max_iso_hi, MENU_MINMAX(20, 160)  }, 
    399     {0x5f,LANG_MENU_AUTOISO_MAX_ISO_AUTO, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_max_iso_auto, MENU_MINMAX(10, 80)  }, 
    400     {0x5f,LANG_MENU_AUTOISO_MIN_ISO,           MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_min_iso, MENU_MINMAX(1, 20)  }, 
    401     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     350    MENU_ITEM(0x5f,LANG_MENU_AUTOISO_IS_FACTOR,       MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_is_factor, MENU_MINMAX(1, 8) ), 
     351#endif 
     352    MENU_ITEM(0x5f,LANG_MENU_AUTOISO_MAX_ISO_HI,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_max_iso_hi, MENU_MINMAX(20, 160) ), 
     353    MENU_ITEM(0x5f,LANG_MENU_AUTOISO_MAX_ISO_AUTO, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_max_iso_auto, MENU_MINMAX(10, 80) ), 
     354    MENU_ITEM(0x5f,LANG_MENU_AUTOISO_MIN_ISO,           MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_min_iso, MENU_MINMAX(1, 20) ), 
     355    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    402356    {0} 
    403357}; 
     
    406360 
    407361#ifdef OPT_TEXTREADER 
     362static const char* gui_reader_codepage_cps[] = { "Win1251", "DOS"}; 
    408363static CMenuItem reader_submenu_items[] = { 
    409     {0x35,LANG_MENU_READ_OPEN_NEW,           MENUITEM_PROC,    (int*)gui_draw_read }, 
    410     {0x35,LANG_MENU_READ_OPEN_LAST,          MENUITEM_PROC,    (int*)gui_draw_read_last }, 
    411     {0x35,LANG_MENU_READ_SELECT_FONT,        MENUITEM_PROC,    (int*)gui_draw_load_rbf }, 
    412     {0x5f,LANG_MENU_READ_CODEPAGE,           MENUITEM_ENUM,    (int*)gui_reader_codepage_enum }, 
    413     {0x5c,LANG_MENU_READ_WORD_WRAP,          MENUITEM_BOOL,    &conf.reader_wrap_by_words }, 
    414     {0x5c,LANG_MENU_READ_AUTOSCROLL,         MENUITEM_BOOL,    &conf.reader_autoscroll }, 
    415     {0x5f,LANG_MENU_READ_AUTOSCROLL_DELAY,   MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.reader_autoscroll_delay, MENU_MINMAX(0, 60) }, 
    416     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     364    MENU_ITEM(0x35,LANG_MENU_READ_OPEN_NEW,           MENUITEM_PROC,    gui_draw_read, 0 ), 
     365    MENU_ITEM(0x35,LANG_MENU_READ_OPEN_LAST,          MENUITEM_PROC,    gui_draw_read_last, 0 ), 
     366    MENU_ITEM(0x35,LANG_MENU_READ_SELECT_FONT,        MENUITEM_PROC,    gui_draw_load_rbf, 0 ), 
     367    MENU_ENUM2(0x5f,LANG_MENU_READ_CODEPAGE,          &conf.reader_codepage, gui_reader_codepage_cps ), 
     368    MENU_ITEM(0x5c,LANG_MENU_READ_WORD_WRAP,          MENUITEM_BOOL,    &conf.reader_wrap_by_words, 0 ), 
     369    MENU_ITEM(0x5c,LANG_MENU_READ_AUTOSCROLL,         MENUITEM_BOOL,    &conf.reader_autoscroll, 0 ), 
     370    MENU_ITEM(0x5f,LANG_MENU_READ_AUTOSCROLL_DELAY,   MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.reader_autoscroll_delay, MENU_MINMAX(0, 60) ), 
     371    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    417372    {0} 
    418373}; 
     
    421376 
    422377#ifdef OPT_DEBUGGING 
     378static const char* gui_debug_shortcut_modes[] = { "None", "DmpRAM", "Page", "CmpProps"}; 
     379static const char* gui_debug_display_modes[] = { "None", "Props", "Params", "Tasks"}; 
    423380static CMenuItem debug_submenu_items[] = { 
    424     {0x5c,LANG_MENU_DEBUG_DISPLAY,           MENUITEM_ENUM,          (int*)gui_debug_display_enum }, 
    425     {0x2a,LANG_MENU_DEBUG_PROPCASE_PAGE,     MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,   &conf.debug_propcase_page, MENU_MINMAX(0, 128) }, 
    426     {0x2a,LANG_MENU_DEBUG_TASKLIST_START,    MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,   &debug_tasklist_start, MENU_MINMAX(0, 63) }, 
    427     {0x5c,LANG_MENU_DEBUG_SHOW_MISC_VALS,    MENUITEM_BOOL,          &conf.debug_misc_vals_show }, 
    428     {0x2a,LANG_MENU_DEBUG_MEMORY_BROWSER,    MENUITEM_PROC,          (int*)gui_draw_debug }, 
    429     {0x2a,LANG_MENU_DEBUG_BENCHMARK,         MENUITEM_PROC,          (int*)gui_draw_bench }, 
    430     {0x5c,LANG_MENU_DEBUG_SHORTCUT_ACTION,   MENUITEM_ENUM,          (int*)gui_debug_shortcut_enum }, 
    431     {0x5c,LANG_MENU_RAW_TIMER,               MENUITEM_BOOL,          &conf.raw_timer }, 
     381    MENU_ENUM2(0x5c,LANG_MENU_DEBUG_DISPLAY,          &conf.debug_display, gui_debug_display_modes ), 
     382    MENU_ITEM(0x2a,LANG_MENU_DEBUG_PROPCASE_PAGE,     MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,   &conf.debug_propcase_page, MENU_MINMAX(0, 128) ), 
     383    MENU_ITEM(0x2a,LANG_MENU_DEBUG_TASKLIST_START,    MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,   &debug_tasklist_start, MENU_MINMAX(0, 63) ), 
     384    MENU_ITEM(0x5c,LANG_MENU_DEBUG_SHOW_MISC_VALS,    MENUITEM_BOOL,          &conf.debug_misc_vals_show, 0 ), 
     385    MENU_ITEM(0x2a,LANG_MENU_DEBUG_MEMORY_BROWSER,    MENUITEM_PROC,          gui_draw_debug, 0 ), 
     386    MENU_ITEM(0x2a,LANG_MENU_DEBUG_BENCHMARK,         MENUITEM_PROC,          gui_draw_bench, 0 ), 
     387    MENU_ENUM2(0x5c,LANG_MENU_DEBUG_SHORTCUT_ACTION,  &conf.debug_shortcut_action, gui_debug_shortcut_modes ), 
     388    MENU_ITEM(0x5c,LANG_MENU_RAW_TIMER,               MENUITEM_BOOL,          &conf.raw_timer, 0 ), 
    432389#ifdef OPT_LUA 
    433     {0x5c,LANG_MENU_LUA_RESTART,             MENUITEM_BOOL,          &conf.debug_lua_restart_on_error }, 
     390    MENU_ITEM(0x5c,LANG_MENU_LUA_RESTART,             MENUITEM_BOOL,          &conf.debug_lua_restart_on_error, 0 ), 
    434391#endif 
    435392#if CAM_MULTIPART 
    436     {0x33,LANG_MENU_DEBUG_CREATE_MULTIPART , MENUITEM_PROC,             (int*)gui_menuproc_break_card }, 
    437 #endif 
    438     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     393    MENU_ITEM(0x33,LANG_MENU_DEBUG_CREATE_MULTIPART , MENUITEM_PROC,            gui_menuproc_break_card, 0 ), 
     394#endif 
     395    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    439396    {0} 
    440397}; 
     
    444401 
    445402static CMenuItem misc_submenu_items[] = { 
    446     {0x35,LANG_MENU_MISC_FILE_BROWSER,       MENUITEM_PROC,    (int*)gui_draw_fselect }, 
     403    MENU_ITEM(0x35,LANG_MENU_MISC_FILE_BROWSER,       MENUITEM_PROC,    gui_draw_fselect, 0 ), 
    447404#ifdef OPT_CALENDAR 
    448     {0x36,LANG_MENU_MISC_CALENDAR,           MENUITEM_PROC,    (int*)gui_draw_calendar }, 
     405    MENU_ITEM(0x36,LANG_MENU_MISC_CALENDAR,           MENUITEM_PROC,    gui_draw_calendar, 0 ), 
    449406#endif 
    450407#ifdef OPT_TEXTREADER 
    451     {0x37,LANG_MENU_MISC_TEXT_READER,        MENUITEM_SUBMENU, (int*)&reader_submenu }, 
     408    MENU_ITEM(0x37,LANG_MENU_MISC_TEXT_READER,        MENUITEM_SUBMENU, &reader_submenu, 0 ), 
    452409#endif 
    453410#if defined (OPT_GAME_REVERSI) || (OPT_GAME_SOKOBAN || (OPT_GAME_CONNECT4) || OPT_GAME_MASTERMIND) 
    454     {0x38,LANG_MENU_MISC_GAMES,              MENUITEM_SUBMENU, (int*)&games_submenu }, 
     411    MENU_ITEM(0x38,LANG_MENU_MISC_GAMES,              MENUITEM_SUBMENU, &games_submenu, 0 ), 
    455412#endif 
    456413#if CAM_SWIVEL_SCREEN 
    457     {0x28,LANG_MENU_MISC_FLASHLIGHT,         MENUITEM_BOOL,    &conf.flashlight }, 
    458 #endif 
    459     {0x5c,LANG_MENU_MISC_SHOW_SPLASH,        MENUITEM_BOOL,    &conf.splash_show }, 
    460                 {0x5c,LANG_MENU_MISC_START_SOUND,        MENUITEM_BOOL,    &conf.start_sound }, 
     414    MENU_ITEM(0x28,LANG_MENU_MISC_FLASHLIGHT,         MENUITEM_BOOL,    &conf.flashlight, 0 ), 
     415#endif 
     416    MENU_ITEM(0x5c,LANG_MENU_MISC_SHOW_SPLASH,        MENUITEM_BOOL,    &conf.splash_show, 0 ), 
     417    MENU_ITEM(0x5c,LANG_MENU_MISC_START_SOUND,        MENUITEM_BOOL,    &conf.start_sound, 0 ), 
    461418#if CAM_USE_ZOOM_FOR_MF 
    462     {0x59,LANG_MENU_MISC_ZOOM_FOR_MF,        MENUITEM_BOOL,    &conf.use_zoom_mf }, 
     419    MENU_ITEM(0x59,LANG_MENU_MISC_ZOOM_FOR_MF,        MENUITEM_BOOL,    &conf.use_zoom_mf, 0 ), 
    463420#endif 
    464421#if CAM_ADJUSTABLE_ALT_BUTTON 
    465     {0x22,LANG_MENU_MISC_ALT_BUTTON,         MENUITEM_ENUM,    (int*)gui_alt_mode_button_enum }, 
    466 #endif 
    467     {0x5d,LANG_MENU_MISC_DISABLE_LCD_OFF,    MENUITEM_ENUM,    (int*)gui_alt_power_enum }, 
    468     {0x65,LANG_MENU_MISC_PALETTE,            MENUITEM_PROC,    (int*)gui_draw_palette }, 
    469     {0x80,LANG_MENU_MISC_BUILD_INFO,         MENUITEM_PROC,    (int*)gui_show_build_info }, 
    470     {0x80,LANG_MENU_MISC_MEMORY_INFO,        MENUITEM_PROC,    (int*)gui_show_memory_info }, 
    471     {0x33,LANG_MENU_DEBUG_MAKE_BOOTABLE,     MENUITEM_PROC,    (int*)gui_menuproc_mkbootdisk }, 
     422    MENU_ITEM(0x22,LANG_MENU_MISC_ALT_BUTTON,         MENUITEM_ENUM,    gui_alt_mode_button_enum, 0 ), 
     423#endif 
     424    MENU_ITEM(0x5d,LANG_MENU_MISC_DISABLE_LCD_OFF,    MENUITEM_ENUM,    gui_alt_power_enum, 0 ), 
     425    MENU_ITEM(0x65,LANG_MENU_MISC_PALETTE,            MENUITEM_PROC,    gui_draw_palette, 0 ), 
     426    MENU_ITEM(0x80,LANG_MENU_MISC_BUILD_INFO,         MENUITEM_PROC,    gui_show_build_info, 0 ), 
     427    MENU_ITEM(0x80,LANG_MENU_MISC_MEMORY_INFO,        MENUITEM_PROC,    gui_show_memory_info, 0 ), 
     428    MENU_ITEM(0x33,LANG_MENU_DEBUG_MAKE_BOOTABLE,     MENUITEM_PROC,    gui_menuproc_mkbootdisk, 0 ), 
    472429#if CAM_MULTIPART 
    473     {0x33,LANG_MENU_DEBUG_SWAP_PART,         MENUITEM_PROC,             (int*)gui_menuproc_swap_partitions }, 
    474 #endif 
    475     {0x2b,LANG_MENU_MAIN_RESET_OPTIONS,      MENUITEM_PROC,      (int*)gui_menuproc_reset }, 
     430    MENU_ITEM(0x33,LANG_MENU_DEBUG_SWAP_PART,         MENUITEM_PROC,            gui_menuproc_swap_partitions, 0 ), 
     431#endif 
     432    MENU_ITEM(0x2b,LANG_MENU_MAIN_RESET_OPTIONS,      MENUITEM_PROC,      gui_menuproc_reset, 0 ), 
    476433#ifdef OPT_DEBUGGING 
    477     {0x2a,LANG_MENU_MAIN_DEBUG,              MENUITEM_SUBMENU,   (int*)&debug_submenu }, 
    478 #endif 
    479     {0x86,LANG_MENU_REMOTE_PARAM,            MENUITEM_SUBMENU,   (int*)&remote_submenu }, 
     434    MENU_ITEM(0x2a,LANG_MENU_MAIN_DEBUG,              MENUITEM_SUBMENU,   &debug_submenu, 0 ), 
     435#endif 
     436    MENU_ITEM(0x86,LANG_MENU_REMOTE_PARAM,            MENUITEM_SUBMENU,   &remote_submenu, 0 ), 
    480437#if defined (DNG_EXT_FROM) 
    481     {0x71,LANG_MENU_DNG_VIA_USB,        MENUITEM_BOOL | MENUITEM_ARG_CALLBACK, &conf.dng_usb_ext , (int)cb_change_dng_usb_ext}, 
    482 #endif 
    483     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     438    MENU_ITEM(0x71,LANG_MENU_DNG_VIA_USB,             MENUITEM_BOOL | MENUITEM_ARG_CALLBACK, &conf.dng_usb_ext , (int)cb_change_dng_usb_ext ), 
     439#endif 
     440    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    484441    {0}, 
    485442}; 
     
    488445static int voltage_step; 
    489446static CMenuItem battery_submenu_items[] = { 
    490     {0x66,LANG_MENU_BATT_VOLT_MAX,           MENUITEM_INT|MENUITEM_ARG_ADDR_INC,     &conf.batt_volts_max,   (int)&voltage_step }, 
    491     {0x67,LANG_MENU_BATT_VOLT_MIN,           MENUITEM_INT|MENUITEM_ARG_ADDR_INC,     &conf.batt_volts_min,   (int)&voltage_step }, 
    492     {0x68,LANG_MENU_BATT_STEP_25,            MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,    &conf.batt_step_25,     (int)cb_step_25 }, 
    493     {0x0,(int)"",                           MENUITEM_SEPARATOR }, 
    494     {0x73,LANG_MENU_BATT_SHOW_PERCENT,       MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,    &conf.batt_perc_show,   (int)cb_perc }, 
    495     {0x73,LANG_MENU_BATT_SHOW_VOLTS,         MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,    &conf.batt_volts_show,  (int)cb_volts }, 
    496     {0x32,LANG_MENU_BATT_SHOW_ICON,          MENUITEM_BOOL,                          &conf.batt_icon_show }, 
    497     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     447    MENU_ITEM(0x66,LANG_MENU_BATT_VOLT_MAX,           MENUITEM_INT|MENUITEM_ARG_ADDR_INC,     &conf.batt_volts_max,   (int)&voltage_step ), 
     448    MENU_ITEM(0x67,LANG_MENU_BATT_VOLT_MIN,           MENUITEM_INT|MENUITEM_ARG_ADDR_INC,     &conf.batt_volts_min,   (int)&voltage_step ), 
     449    MENU_ITEM(0x68,LANG_MENU_BATT_STEP_25,            MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,    &conf.batt_step_25,     (int)cb_step_25 ), 
     450    MENU_ITEM(0x0,(int)"",                            MENUITEM_SEPARATOR, 0, 0 ), 
     451    MENU_ITEM(0x73,LANG_MENU_BATT_SHOW_PERCENT,       MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,    &conf.batt_perc_show,   (int)cb_perc ), 
     452    MENU_ITEM(0x73,LANG_MENU_BATT_SHOW_VOLTS,         MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,    &conf.batt_volts_show,  (int)cb_volts ), 
     453    MENU_ITEM(0x32,LANG_MENU_BATT_SHOW_ICON,          MENUITEM_BOOL,                          &conf.batt_icon_show, 0 ), 
     454    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    498455    {0} 
    499456}; 
    500457static CMenu battery_submenu = {0x32,LANG_MENU_BATT_TITLE, cb_battery_menu_change, battery_submenu_items }; 
    501458 
     459static const char* gui_space_bar_modes[] = { "Don't", "Horizontal", "Vertical"}; 
     460static const char* gui_space_bar_size_modes[] = { "1/4", "1/2", "1"}; 
     461static const char* gui_space_bar_width_modes[] = { "1", "2", "3","4","5","6","7","8","9","10"}; 
     462static const char* gui_space_warn_type_modes[] = { "Percent", "MB", "Don't"}; 
    502463static CMenuItem space_submenu_items[] = { 
    503     {0x5c,LANG_MENU_SPACE_SHOW_ICON,         MENUITEM_BOOL,                          &conf.space_icon_show }, 
    504     {0x69,LANG_MENU_SPACE_SHOW_BAR,      MENUITEM_ENUM,                       (int*)gui_space_bar_enum }, 
    505     {0x6a,LANG_MENU_SPACE_BAR_SIZE,      MENUITEM_ENUM,                       (int*)gui_space_bar_size_enum }, 
    506     {0x6b,LANG_MENU_SPACE_BAR_WIDTH,      MENUITEM_ENUM,                       (int*)gui_space_bar_width_enum }, 
    507     {0x5c,LANG_MENU_SPACE_SHOW_PERCENT,      MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,    &conf.space_perc_show,   (int)cb_space_perc }, 
    508     {0x5c,LANG_MENU_SPACE_SHOW_MB,           MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,    &conf.space_mb_show,  (int)cb_space_mb }, 
    509     {0x5f,LANG_MENU_SPACE_WARN_TYPE,      MENUITEM_ENUM,                       (int*)gui_space_warn_type_enum }, 
    510     {0x58,LANG_MENU_SPACE_WARN_PERCENT,     MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,   &conf.space_perc_warn, MENU_MINMAX(1, 99) }, 
    511     {0x58,LANG_MENU_SPACE_WARN_MB,     MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,   &conf.space_mb_warn, MENU_MINMAX(1, 4000) }, 
    512     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     464    MENU_ITEM(0x5c,LANG_MENU_SPACE_SHOW_ICON,         MENUITEM_BOOL,                          &conf.space_icon_show, 0 ), 
     465    MENU_ENUM2(0x69,LANG_MENU_SPACE_SHOW_BAR,     &conf.space_bar_show, gui_space_bar_modes ), 
     466    MENU_ENUM2(0x6a,LANG_MENU_SPACE_BAR_SIZE,     &conf.space_bar_size, gui_space_bar_size_modes ), 
     467    MENU_ENUM2(0x6b,LANG_MENU_SPACE_BAR_WIDTH,    &conf.space_bar_width, gui_space_bar_width_modes ), 
     468    MENU_ITEM(0x5c,LANG_MENU_SPACE_SHOW_PERCENT,      MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,    &conf.space_perc_show,   (int)cb_space_perc ), 
     469    MENU_ITEM(0x5c,LANG_MENU_SPACE_SHOW_MB,           MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,    &conf.space_mb_show,  (int)cb_space_mb ), 
     470    MENU_ENUM2(0x5f,LANG_MENU_SPACE_WARN_TYPE,    &conf.space_warn_type, gui_space_warn_type_modes ), 
     471    MENU_ITEM(0x58,LANG_MENU_SPACE_WARN_PERCENT,     MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,   &conf.space_perc_warn, MENU_MINMAX(1, 99) ), 
     472    MENU_ITEM(0x58,LANG_MENU_SPACE_WARN_MB,     MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,   &conf.space_mb_warn, MENU_MINMAX(1, 4000) ), 
     473    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    513474    {0} 
    514475}; 
    515476static CMenu space_submenu = {0x33,LANG_MENU_OSD_SPACE_PARAMS_TITLE, NULL, space_submenu_items}; 
    516477 
     478static const char* gui_dof_show_value_modes[] = { "Don't", "Separate", "In Misc" }; 
    517479static CMenuItem dof_submenu_items[] = { 
    518           {0x5f,LANG_MENU_OSD_SHOW_DOF_CALC,            MENUITEM_ENUM,      (int*)gui_dof_show_value_enum }, 
    519           {0x5c,LANG_MENU_DOF_SUBJ_DIST_AS_NEAR_LIMIT,  MENUITEM_BOOL,      &conf.dof_subj_dist_as_near_limit}, 
    520           {0x5c,LANG_MENU_DOF_USE_EXIF_SUBJ_DIST,       MENUITEM_BOOL,      &conf.dof_use_exif_subj_dist}, 
    521           {0x5c,LANG_MENU_DOF_SUBJ_DIST_IN_MISC,        MENUITEM_BOOL,      &conf.dof_subj_dist_in_misc}, 
    522           {0x5c,LANG_MENU_DOF_NEAR_LIMIT_IN_MISC,       MENUITEM_BOOL,      &conf.dof_near_limit_in_misc}, 
    523       {0x5c,LANG_MENU_DOF_FAR_LIMIT_IN_MISC,        MENUITEM_BOOL,                       &conf.dof_far_limit_in_misc}, 
    524       {0x5c,LANG_MENU_DOF_HYPERFOCAL_IN_MISC,       MENUITEM_BOOL,      &conf.dof_hyperfocal_in_misc}, 
    525       {0x5c,LANG_MENU_DOF_DEPTH_LIMIT_IN_MISC,      MENUITEM_BOOL,      &conf.dof_depth_in_misc}, 
     480          MENU_ENUM2(0x5f,LANG_MENU_OSD_SHOW_DOF_CALC,           &conf.show_dof, gui_dof_show_value_modes ), 
     481          MENU_ITEM(0x5c,LANG_MENU_DOF_SUBJ_DIST_AS_NEAR_LIMIT,  MENUITEM_BOOL,      &conf.dof_subj_dist_as_near_limit, 0), 
     482          MENU_ITEM(0x5c,LANG_MENU_DOF_USE_EXIF_SUBJ_DIST,       MENUITEM_BOOL,      &conf.dof_use_exif_subj_dist, 0), 
     483          MENU_ITEM(0x5c,LANG_MENU_DOF_SUBJ_DIST_IN_MISC,        MENUITEM_BOOL,      &conf.dof_subj_dist_in_misc, 0), 
     484          MENU_ITEM(0x5c,LANG_MENU_DOF_NEAR_LIMIT_IN_MISC,       MENUITEM_BOOL,      &conf.dof_near_limit_in_misc, 0), 
     485      MENU_ITEM(0x5c,LANG_MENU_DOF_FAR_LIMIT_IN_MISC,        MENUITEM_BOOL,                      &conf.dof_far_limit_in_misc, 0), 
     486      MENU_ITEM(0x5c,LANG_MENU_DOF_HYPERFOCAL_IN_MISC,       MENUITEM_BOOL,      &conf.dof_hyperfocal_in_misc, 0), 
     487      MENU_ITEM(0x5c,LANG_MENU_DOF_DEPTH_LIMIT_IN_MISC,      MENUITEM_BOOL,      &conf.dof_depth_in_misc, 0), 
    526488#if !CAM_DRYOS 
    527       {0x5c,LANG_MENU_DOF_DIST_FROM_LENS,           MENUITEM_BOOL,      &conf.dof_dist_from_lens}, 
    528 #endif 
    529           {0x51,LANG_MENU_BACK,                            MENUITEM_UP }, 
     489      MENU_ITEM(0x5c,LANG_MENU_DOF_DIST_FROM_LENS,           MENUITEM_BOOL,      &conf.dof_dist_from_lens, 0), 
     490#endif 
     491          MENU_ITEM(0x51,LANG_MENU_BACK,                           MENUITEM_UP, 0, 0 ), 
    530492    {0} 
    531493}; 
    532494static CMenu dof_submenu = {0x31,LANG_MENU_DOF_TITLE, /*cb_dof_menu_change*/ NULL, dof_submenu_items }; 
    533495 
     496static const char* gui_zoom_value_modes[] = { "X", "FL", "EFL" }; 
     497static const char* gui_show_values_modes[] = { "Don't", "Always", "Shoot" }; 
    534498static CMenuItem values_submenu_items[] = { 
    535           {0x5f,LANG_MENU_OSD_SHOW_MISC_VALUES,           MENUITEM_ENUM,      (int*)gui_show_values_enum }, 
    536          // {0x43,LANG_MENU_VALUES_SHOW_IN_REVIEW,   MENUITEM_BOOL,      &conf.values_show_in_review}, 
    537           {0x5c,LANG_MENU_SHOW_VALUES_IN_VIDEO,           MENUITEM_BOOL,      &conf.show_values_in_video}, 
    538           {0x5c,LANG_MENU_VALUES_SHOW_ZOOM,               MENUITEM_BOOL,      &conf.values_show_zoom}, 
    539           {0x5f,LANG_MENU_OSD_ZOOM_VALUE,                 MENUITEM_ENUM,      (int*)gui_zoom_value_enum }, 
    540           {0x60,LANG_MENU_OSD_ZOOM_SCALE,                 MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.zoom_scale,   MENU_MINMAX(0, 1000)}, 
    541       {0x62,LANG_MENU_VALUES_SHOW_REAL_APERTURE,      MENUITEM_BOOL,      &conf.values_show_real_aperture}, 
    542       {0x74,LANG_MENU_VALUES_SHOW_REAL_ISO,           MENUITEM_BOOL,      &conf.values_show_real_iso}, 
    543       {0x74,LANG_MENU_VALUES_SHOW_MARKET_ISO,         MENUITEM_BOOL,      &conf.values_show_market_iso}, 
    544           {0x2d,LANG_MENU_SHOW_ISO_ONLY_IN_AUTOISO_MODE,  MENUITEM_BOOL,             &conf.values_show_iso_only_in_autoiso_mode}, 
    545       {0x5c,LANG_MENU_VALUES_SHOW_EV_SETED,                      MENUITEM_BOOL,      &conf.values_show_ev_seted}, 
    546       {0x5c,LANG_MENU_VALUES_SHOW_EV_MEASURED,        MENUITEM_BOOL,             &conf.values_show_ev_measured}, 
    547       {0x5c,LANG_MENU_VALUES_SHOW_BV_SETED,                      MENUITEM_BOOL,      &conf.values_show_bv_seted}, 
    548       {0x5c,LANG_MENU_VALUES_SHOW_BV_MEASURED,           MENUITEM_BOOL,      &conf.values_show_bv_measured}, 
    549       {0x5c,LANG_MENU_VALUES_SHOW_OVEREXPOSURE,      MENUITEM_BOOL,      &conf.values_show_overexposure}, 
    550       {0x5c,LANG_MENU_SHOW_CANON_OVEREXPOSURE,       MENUITEM_BOOL,      &conf.values_show_canon_overexposure}, 
    551       {0x5c,LANG_MENU_VALUES_SHOW_LUMINANCE,         MENUITEM_BOOL,      &conf.values_show_luminance}, 
    552           {0x51,LANG_MENU_BACK,                           MENUITEM_UP }, 
     499          MENU_ENUM2(0x5f,LANG_MENU_OSD_SHOW_MISC_VALUES,          &conf.show_values, gui_show_values_modes ), 
     500         // MENU_ITEM(0x43,LANG_MENU_VALUES_SHOW_IN_REVIEW,   MENUITEM_BOOL,      &conf.values_show_in_review, 0 ), 
     501          MENU_ITEM(0x5c,LANG_MENU_SHOW_VALUES_IN_VIDEO,           MENUITEM_BOOL,      &conf.show_values_in_video, 0 ), 
     502          MENU_ITEM(0x5c,LANG_MENU_VALUES_SHOW_ZOOM,               MENUITEM_BOOL,      &conf.values_show_zoom, 0 ), 
     503          MENU_ENUM2(0x5f,LANG_MENU_OSD_ZOOM_VALUE,                &conf.zoom_value, gui_zoom_value_modes ), 
     504          MENU_ITEM(0x60,LANG_MENU_OSD_ZOOM_SCALE,                 MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.zoom_scale,   MENU_MINMAX(0, 1000) ), 
     505      MENU_ITEM(0x62,LANG_MENU_VALUES_SHOW_REAL_APERTURE,      MENUITEM_BOOL,      &conf.values_show_real_aperture, 0 ), 
     506      MENU_ITEM(0x74,LANG_MENU_VALUES_SHOW_REAL_ISO,           MENUITEM_BOOL,      &conf.values_show_real_iso, 0 ), 
     507      MENU_ITEM(0x74,LANG_MENU_VALUES_SHOW_MARKET_ISO,         MENUITEM_BOOL,      &conf.values_show_market_iso, 0 ), 
     508          MENU_ITEM(0x2d,LANG_MENU_SHOW_ISO_ONLY_IN_AUTOISO_MODE,  MENUITEM_BOOL,            &conf.values_show_iso_only_in_autoiso_mode, 0 ), 
     509      MENU_ITEM(0x5c,LANG_MENU_VALUES_SHOW_EV_SETED,                     MENUITEM_BOOL,      &conf.values_show_ev_seted, 0 ), 
     510      MENU_ITEM(0x5c,LANG_MENU_VALUES_SHOW_EV_MEASURED,        MENUITEM_BOOL,            &conf.values_show_ev_measured, 0 ), 
     511      MENU_ITEM(0x5c,LANG_MENU_VALUES_SHOW_BV_SETED,                     MENUITEM_BOOL,      &conf.values_show_bv_seted, 0 ), 
     512      MENU_ITEM(0x5c,LANG_MENU_VALUES_SHOW_BV_MEASURED,          MENUITEM_BOOL,      &conf.values_show_bv_measured, 0 ), 
     513      MENU_ITEM(0x5c,LANG_MENU_VALUES_SHOW_OVEREXPOSURE,             MENUITEM_BOOL,      &conf.values_show_overexposure, 0 ), 
     514      MENU_ITEM(0x5c,LANG_MENU_SHOW_CANON_OVEREXPOSURE,      MENUITEM_BOOL,      &conf.values_show_canon_overexposure, 0 ), 
     515      MENU_ITEM(0x5c,LANG_MENU_VALUES_SHOW_LUMINANCE,        MENUITEM_BOOL,      &conf.values_show_luminance, 0 ), 
     516          MENU_ITEM(0x51,LANG_MENU_BACK,                           MENUITEM_UP, 0, 0 ), 
    553517    {0} 
    554518}; 
    555519static CMenu values_submenu = {0x28,LANG_MENU_OSD_VALUES_TITLE, /*cb_values_menu_change*/ NULL, values_submenu_items }; 
    556520 
     521static const char* gui_show_clock_modes[]={ "Don't", "Normal", "Seconds"}; 
     522static const char* gui_clock_format_modes[] = { "24h", "12h"}; 
     523static const char* gui_clock_indicator_modes[] = { "PM", "P", "."}; 
     524static const char* gui_clock_halfpress_modes[] = { "Full", "Seconds", "Don't"}; 
    557525static CMenuItem clock_submenu_items[] = { 
    558     {0x5f,LANG_MENU_OSD_SHOW_CLOCK,          MENUITEM_ENUM,      (int*)gui_show_clock_enum }, 
    559     {0x6d,LANG_MENU_OSD_CLOCK_FORMAT,          MENUITEM_ENUM,      (int*)gui_clock_format_enum }, 
    560     {0x6c,LANG_MENU_OSD_CLOCK_INDICATOR,          MENUITEM_ENUM,      (int*)gui_clock_indicator_enum }, 
    561     {0x6e,LANG_MENU_OSD_CLOCK_HALFPRESS,          MENUITEM_ENUM,      (int*)gui_clock_halfpress_enum }, 
    562     {0x51,LANG_MENU_BACK,                           MENUITEM_UP }, 
     526    MENU_ENUM2(0x5f,LANG_MENU_OSD_SHOW_CLOCK,           &conf.show_clock, gui_show_clock_modes ), 
     527    MENU_ENUM2(0x6d,LANG_MENU_OSD_CLOCK_FORMAT,         &conf.clock_format, gui_clock_format_modes ), 
     528    MENU_ENUM2(0x6c,LANG_MENU_OSD_CLOCK_INDICATOR,      &conf.clock_indicator, gui_clock_indicator_modes ), 
     529    MENU_ENUM2(0x6e,LANG_MENU_OSD_CLOCK_HALFPRESS,      &conf.clock_halfpress, gui_clock_halfpress_modes ), 
     530    MENU_ITEM(0x51,LANG_MENU_BACK, MENUITEM_UP, 0, 0 ), 
    563531    {0} 
    564532}; 
     
    566534 
    567535 
     536static const char* gui_show_movie_time_modes[] = { "Don't", "hh:mm:ss", "KB/s","both"}; 
     537#if !CAM_VIDEO_QUALITY_ONLY 
     538    static const char* gui_video_mode_modes[] = { "Bitrate", "Quality"}; 
     539#else 
     540    static const char* gui_video_mode_modes[] = { "Default", "Quality"}; 
     541#endif 
    568542static CMenuItem video_submenu_items[] = { 
    569543#if CAM_CHDK_HAS_EXT_VIDEO_MENU 
    570           {0x23,LANG_MENU_VIDEO_MODE,              MENUITEM_ENUM,    (int*)gui_video_mode_enum}, 
     544        MENU_ENUM2(0x23,LANG_MENU_VIDEO_MODE,             &conf.video_mode, gui_video_mode_modes ), 
    571545#if !CAM_VIDEO_QUALITY_ONLY 
    572       {0x5e,LANG_MENU_VIDEO_BITRATE,           MENUITEM_ENUM,    (int*)gui_video_bitrate_enum}, 
    573 #endif 
    574       {0x60,LANG_MENU_VIDEO_QUALITY,           MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.video_quality, MENU_MINMAX(1, 99)}, 
    575       {0x5c,LANG_MENU_CLEAR_VIDEO_VALUES,    MENUITEM_BOOL,    (int*)&conf.clear_video}, 
     546      MENU_ITEM(0x5e,LANG_MENU_VIDEO_BITRATE,           MENUITEM_ENUM,    gui_video_bitrate_enum, 0 ), 
     547#endif 
     548    MENU_ITEM(0x60,LANG_MENU_VIDEO_QUALITY,           MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.video_quality, MENU_MINMAX(1, 99) ), 
     549    MENU_ITEM(0x5c,LANG_MENU_CLEAR_VIDEO_VALUES,    MENUITEM_BOOL,    &conf.clear_video, 0 ), 
    576550#endif 
    577551#if CAM_VIDEO_CONTROL 
    578       {0x5c,LANG_MENU_FAST_SWITCH_VIDEO,   MENUITEM_BOOL,  &conf.fast_movie_control}, 
     552    MENU_ITEM(0x5c,LANG_MENU_FAST_SWITCH_VIDEO,   MENUITEM_BOOL,  &conf.fast_movie_control, 0 ), 
    579553#endif 
    580554#if CAM_CHDK_HAS_EXT_VIDEO_MENU 
    581       {0x5c,LANG_MENU_FAST_SWITCH_QUALITY_VIDEO,   MENUITEM_BOOL,  &conf.fast_movie_quality_control}, 
     555    MENU_ITEM(0x5c,LANG_MENU_FAST_SWITCH_QUALITY_VIDEO,   MENUITEM_BOOL,  &conf.fast_movie_quality_control, 0 ), 
    582556#endif 
    583557#if CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO 
    584       {0x5c,LANG_MENU_OPTICAL_ZOOM_IN_VIDEO,   MENUITEM_BOOL,  &conf.unlock_optical_zoom_for_video}, 
     558    MENU_ITEM(0x5c,LANG_MENU_OPTICAL_ZOOM_IN_VIDEO,   MENUITEM_BOOL,  &conf.unlock_optical_zoom_for_video, 0 ), 
    585559#endif 
    586560#if CAM_CAN_MUTE_MICROPHONE 
    587       {0x83,LANG_MENU_MUTE_ON_ZOOM,   MENUITEM_BOOL,  &conf.mute_on_zoom}, 
     561    MENU_ITEM(0x83,LANG_MENU_MUTE_ON_ZOOM,   MENUITEM_BOOL,  &conf.mute_on_zoom, 0 ), 
    588562#endif 
    589563#if CAM_AF_SCAN_DURING_VIDEO_RECORD 
    590       {0x82,LANG_MENU_VIDEO_AF_KEY,   MENUITEM_ENUM,    (int*)gui_video_af_key_enum}, 
    591 #endif 
    592                 {0x5c,LANG_MENU_OSD_SHOW_VIDEO_TIME,         MENUITEM_ENUM,      (int*)gui_show_movie_time }, 
    593     {0x60,LANG_MENU_OSD_SHOW_VIDEO_REFRESH,             MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.show_movie_refresh,   MENU_MINMAX(1, 20)}, 
    594       {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
    595       {0} 
     564    MENU_ITEM(0x82,LANG_MENU_VIDEO_AF_KEY,   MENUITEM_ENUM,    gui_video_af_key_enum, 0 ), 
     565#endif 
     566    MENU_ENUM2(0x5c,LANG_MENU_OSD_SHOW_VIDEO_TIME,         &conf.show_movie_time, gui_show_movie_time_modes ), 
     567    MENU_ITEM(0x60,LANG_MENU_OSD_SHOW_VIDEO_REFRESH,             MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.show_movie_refresh,   MENU_MINMAX(1, 20) ), 
     568    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
     569    {0} 
    596570}; 
    597571static CMenu video_submenu = {0x23,LANG_MENU_VIDEO_PARAM_TITLE, NULL, video_submenu_items }; 
    598572 
     573static const char* gui_bracket_values_modes[] = { "Off", "1/3 Ev","2/3 Ev", "1 Ev", "1 1/3Ev", "1 2/3Ev", "2 Ev", "2 1/3Ev", "2 2/3Ev", "3 Ev", "3 1/3Ev", "3 2/3Ev", "4 Ev"}; 
     574static const char* gui_override_koef_modes[] = { "Off", "1", "10", "100", "1000" }; 
     575static const char* gui_bracket_type_modes[] = { "+/-", "-","+"}; 
    599576static CMenuItem bracketing_in_continuous_submenu_items[] = { 
    600           {0x63,LANG_MENU_TV_BRACKET_VALUE,             MENUITEM_ENUM,    (int*)gui_tv_bracket_values_enum }, 
     577          MENU_ENUM2(0x63,LANG_MENU_TV_BRACKET_VALUE,            &conf.tv_bracket_value, gui_bracket_values_modes ), 
    601578#if CAM_HAS_IRIS_DIAPHRAGM 
    602           {0x62,LANG_MENU_AV_BRACKET_VALUE,             MENUITEM_ENUM,    (int*)gui_av_bracket_values_enum }, 
     579          MENU_ENUM2(0x62,LANG_MENU_AV_BRACKET_VALUE,            &conf.av_bracket_value, gui_bracket_values_modes ), 
    603580#endif 
    604581#if CAM_CAN_SD_OVERRIDE 
    605           {0x5e,LANG_MENU_SUBJ_DIST_BRACKET_VALUE,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.subj_dist_bracket_value, MENU_MINMAX(0, 100)}, 
    606           {0x5f,LANG_MENU_SUBJ_DIST_BRACKET_KOEF,       MENUITEM_ENUM,    (int*)gui_subj_dist_bracket_koef_enum}, 
    607 #endif 
    608           {0x74,LANG_MENU_ISO_BRACKET_VALUE,            MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.iso_bracket_value, MENU_MINMAX(0, 100)}, 
    609           {0x5f,LANG_MENU_ISO_BRACKET_KOEF,             MENUITEM_ENUM,    (int*)gui_iso_bracket_koef_enum}, 
    610           {0x60,LANG_MENU_BRACKET_TYPE,                 MENUITEM_ENUM,    (int*)gui_bracket_type_enum }, 
    611           {0x5b,LANG_MENU_CLEAR_BRACKET_VALUES,        MENUITEM_BOOL,        (int*)&conf.clear_bracket}, 
    612      {0x5c,LANG_MENU_BRACKETING_ADD_RAW_SUFFIX,                MENUITEM_BOOL,      &conf.bracketing_add_raw_suffix }, 
    613       {0x51,LANG_MENU_BACK,                         MENUITEM_UP }, 
     582          MENU_ITEM(0x5e,LANG_MENU_SUBJ_DIST_BRACKET_VALUE,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.subj_dist_bracket_value, MENU_MINMAX(0, 100) ), 
     583          MENU_ENUM2(0x5f,LANG_MENU_SUBJ_DIST_BRACKET_KOEF,      &conf.subj_dist_bracket_koef, gui_override_koef_modes ), 
     584#endif 
     585          MENU_ITEM(0x74,LANG_MENU_ISO_BRACKET_VALUE,            MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.iso_bracket_value, MENU_MINMAX(0, 100) ), 
     586          MENU_ENUM2a(0x5f,LANG_MENU_ISO_BRACKET_KOEF,           &conf.iso_bracket_koef, gui_override_koef_modes, 4 ), 
     587          MENU_ENUM2(0x60,LANG_MENU_BRACKET_TYPE,                &conf.bracket_type, gui_bracket_type_modes ), 
     588          MENU_ITEM(0x5b,LANG_MENU_CLEAR_BRACKET_VALUES,        MENUITEM_BOOL,        &conf.clear_bracket, 0 ), 
     589     MENU_ITEM(0x5c,LANG_MENU_BRACKETING_ADD_RAW_SUFFIX,                MENUITEM_BOOL,      &conf.bracketing_add_raw_suffix, 0 ), 
     590      MENU_ITEM(0x51,LANG_MENU_BACK,                         MENUITEM_UP, 0, 0 ), 
    614591      {0} 
    615592}; 
     
    619596/* 
    620597static CMenuItem exposure_submenu_items[] = { 
    621           {0x59,LANG_MENU_RECALC_EXPOSURE,         MENUITEM_BOOL,    &conf.recalc_exposure}, 
    622           {0x63,LANG_MENU_TV_EXPOSURE_ORDER,       MENUITEM_ENUM,    (int*)gui_tv_exposure_order_enum}, 
    623           {0x62,LANG_MENU_AV_EXPOSURE_ORDER,       MENUITEM_ENUM,    (int*)gui_av_exposure_order_enum}, 
    624           {0x74,LANG_MENU_ISO_EXPOSURE_ORDER,      MENUITEM_ENUM,    (int*)gui_iso_exposure_order_enum}, 
    625           {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     598          MENU_ITEM(0x59,LANG_MENU_RECALC_EXPOSURE,         MENUITEM_BOOL,    &conf.recalc_exposure, 0), 
     599          MENU_ITEM(0x63,LANG_MENU_TV_EXPOSURE_ORDER,       MENUITEM_ENUM,    gui_tv_exposure_order_enum, 0), 
     600          MENU_ITEM(0x62,LANG_MENU_AV_EXPOSURE_ORDER,       MENUITEM_ENUM,    gui_av_exposure_order_enum, 0), 
     601          MENU_ITEM(0x74,LANG_MENU_ISO_EXPOSURE_ORDER,     MENUITEM_ENUM,    gui_iso_exposure_order_enum, 0), 
     602          MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    626603      {0} 
    627604}; 
     
    630607 
    631608// "Extra Photo Operations" Menu 
     609static const char* gui_override_disable_modes[] = { "Off", "On", "Disabled"}; 
     610static const char* gui_nd_filter_state_modes[] = { "Off", "In", "Out" }; 
     611static const char* gui_fast_ev_step_modes[] = {"1/6 Ev","1/3 Ev","1/2 Ev", "2/3 Ev","5/6 Ev","1 Ev","1 1/6 Ev","1 1/3 Ev","1 1/2 Ev", "1 2/3 Ev","1 5/6 Ev","2 Ev","2 1/6 Ev","2 1/3 Ev","2 1/2 Ev", "2 2/3 Ev","2 5/6 Ev","3 Ev","3 1/6 Ev","3 1/3 Ev","3 1/2 Ev", "3 2/3 Ev","3 5/6 Ev","4 Ev"}; 
     612static const char* gui_fast_image_quality_modes[] = { "sup.fine", "fine", "normal", "off" }; 
    632613static CMenuItem operation_submenu_items[] = { 
    633       {0x5f,LANG_MENU_OVERRIDE_DISABLE,         MENUITEM_ENUM,    (int*)gui_override_disable_enum},//&conf.override_disable }, 
    634       {0x5c,LANG_MENU_OVERRIDE_DISABLE_ALL,     MENUITEM_BOOL,    &conf.override_disable_all }, 
    635           {0x61,LANG_MENU_OVERRIDE_TV_VALUE,        MENUITEM_ENUM,    (int*)gui_tv_override_value_enum}, 
    636           {0x5f,LANG_MENU_OVERRIDE_TV_KOEF,         MENUITEM_ENUM,    (int*)gui_tv_override_koef_enum}, 
    637           {0x59,LANG_MENU_TV_ENUM_TYPE,             MENUITEM_ENUM,    (int*)gui_tv_enum_type_enum}, 
     614      MENU_ENUM2(0x5f,LANG_MENU_OVERRIDE_DISABLE,    &conf.override_disable, gui_override_disable_modes ), 
     615      MENU_ITEM(0x5c,LANG_MENU_OVERRIDE_DISABLE_ALL,     MENUITEM_BOOL,    &conf.override_disable_all, 0 ), 
     616          MENU_ITEM(0x61,LANG_MENU_OVERRIDE_TV_VALUE,        MENUITEM_ENUM,    gui_tv_override_value_enum, 0 ), 
     617          MENU_ITEM(0x5f,LANG_MENU_OVERRIDE_TV_KOEF,         MENUITEM_ENUM,    gui_tv_override_koef_enum, 0 ), 
     618          MENU_ITEM(0x59,LANG_MENU_TV_ENUM_TYPE,             MENUITEM_ENUM,    gui_tv_enum_type_enum, 0 ), 
    638619#if CAM_HAS_IRIS_DIAPHRAGM 
    639           {0x62,LANG_MENU_OVERRIDE_AV_VALUE,        MENUITEM_ENUM,    (int*)gui_av_override_enum }, 
     620          MENU_ITEM(0x62,LANG_MENU_OVERRIDE_AV_VALUE,        MENUITEM_ENUM,    gui_av_override_enum, 0 ), 
    640621#endif 
    641622#if CAM_HAS_ND_FILTER 
    642       {0x5f,LANG_MENU_OVERRIDE_ND_FILTER,       MENUITEM_ENUM,    (int*)gui_nd_filter_state_enum }, 
     623      MENU_ENUM2(0x5f,LANG_MENU_OVERRIDE_ND_FILTER,      &conf.nd_filter_state, gui_nd_filter_state_modes ), 
    643624#endif 
    644625#if CAM_CAN_SD_OVERRIDE 
    645       {0x5e,LANG_MENU_OVERRIDE_SUBJ_DIST_VALUE, MENUITEM_ENUM,    (int*)gui_subj_dist_override_value_enum}, 
    646           {0x5f,LANG_MENU_OVERRIDE_SUBJ_DIST_KOEF,  MENUITEM_ENUM,    (int*)gui_subj_dist_override_koef_enum}, 
    647 #endif 
    648           {0x74,LANG_MENU_OVERRIDE_ISO_VALUE,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.iso_override_value, MENU_MINMAX(0, 800)}, 
    649           {0x5f,LANG_MENU_OVERRIDE_ISO_KOEF,        MENUITEM_ENUM,    (int*)gui_iso_override_koef_enum}, 
     626      MENU_ITEM(0x5e,LANG_MENU_OVERRIDE_SUBJ_DIST_VALUE, MENUITEM_ENUM,    gui_subj_dist_override_value_enum, 0 ), 
     627          MENU_ITEM(0x5f,LANG_MENU_OVERRIDE_SUBJ_DIST_KOEF,  MENUITEM_ENUM,    gui_subj_dist_override_koef_enum, 0 ), 
     628#endif 
     629          MENU_ITEM(0x74,LANG_MENU_OVERRIDE_ISO_VALUE,     MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.iso_override_value, MENU_MINMAX(0, 800) ), 
     630          MENU_ENUM2a(0x5f,LANG_MENU_OVERRIDE_ISO_KOEF,       &conf.iso_override_koef, gui_override_koef_modes, 4 ), 
    650631#if ZOOM_OVERRIDE 
    651     {0x5c,LANG_MENU_OVERRIDE_ZOOM,         MENUITEM_BOOL,    &conf.zoom_override}, 
    652     {0x5f,LANG_MENU_OVERRIDE_ZOOM_VALUE,          MENUITEM_ENUM,    (int*)gui_zoom_override_enum }, 
    653  
    654           {0x5c,LANG_MENU_CLEAR_ZOOM_OVERRIDE_VALUES,    MENUITEM_BOOL,    (int*)&conf.clear_zoom_override}, 
    655 #endif 
    656           {0x2c,LANG_MENU_BRACKET_IN_CONTINUOUS,           MENUITEM_SUBMENU, (int*)&bracketing_in_continuous_submenu }, 
    657           {0x2d,LANG_MENU_AUTOISO,                  MENUITEM_SUBMENU, (int*)&autoiso_submenu }, 
    658       //{LANG_MENU_EXPOSURE,               MENUITEM_SUBMENU, (int*)&exposure_submenu }, 
    659           {0x5b,LANG_MENU_CLEAR_OVERRIDE_VALUES,    MENUITEM_BOOL,    (int*)&conf.clear_override}, 
    660  
    661       {0x5c,LANG_MENU_MISC_FAST_EV,         MENUITEM_BOOL,    &conf.fast_ev }, 
    662       {0x5f,LANG_MENU_MISC_FAST_EV_STEP,    MENUITEM_ENUM,    (int*)gui_fast_ev_step }, 
     632    MENU_ITEM(0x5c,LANG_MENU_OVERRIDE_ZOOM,         MENUITEM_BOOL,    &conf.zoom_override, 0 ), 
     633    MENU_ITEM(0x5f,LANG_MENU_OVERRIDE_ZOOM_VALUE,         MENUITEM_ENUM,    gui_zoom_override_enum, 0 ), 
     634 
     635          MENU_ITEM(0x5c,LANG_MENU_CLEAR_ZOOM_OVERRIDE_VALUES,    MENUITEM_BOOL,    &conf.clear_zoom_override, 0 ), 
     636#endif 
     637          MENU_ITEM(0x2c,LANG_MENU_BRACKET_IN_CONTINUOUS,          MENUITEM_SUBMENU, &bracketing_in_continuous_submenu, 0 ), 
     638          MENU_ITEM(0x2d,LANG_MENU_AUTOISO,                  MENUITEM_SUBMENU, &autoiso_submenu, 0 ), 
     639      //{LANG_MENU_EXPOSURE,               MENUITEM_SUBMENU, &exposure_submenu, 0 ), 
     640          MENU_ITEM(0x5b,LANG_MENU_CLEAR_OVERRIDE_VALUES,    MENUITEM_BOOL,    &conf.clear_override, 0 ), 
     641 
     642      MENU_ITEM(0x5c,LANG_MENU_MISC_FAST_EV,         MENUITEM_BOOL,    &conf.fast_ev, 0 ), 
     643      MENU_ENUM2(0x5f,LANG_MENU_MISC_FAST_EV_STEP,   &conf.fast_ev_step, gui_fast_ev_step_modes ), 
    663644#if CAM_REAR_CURTAIN 
    664       {0x5c, LANG_MENU_REAR_CURTAIN, MENUITEM_BOOL, &conf.flash_sync_curtain }, 
    665 #endif 
    666           {0x5c, LANG_MENU_FLASH_MANUAL_OVERRIDE, MENUITEM_BOOL,   &conf.flash_manual_override}, 
    667     {0x5f, LANG_MENU_FLASH_VIDEO_OVERRIDE_POWER,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.flash_video_override_power, MENU_MINMAX(0, 2)}, 
     645      MENU_ITEM(0x5c, LANG_MENU_REAR_CURTAIN, MENUITEM_BOOL, &conf.flash_sync_curtain, 0 ), 
     646#endif 
     647          MENU_ITEM(0x5c, LANG_MENU_FLASH_MANUAL_OVERRIDE, MENUITEM_BOOL,   &conf.flash_manual_override, 0 ), 
     648    MENU_ITEM(0x5f, LANG_MENU_FLASH_VIDEO_OVERRIDE_POWER,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.flash_video_override_power, MENU_MINMAX(0, 2) ), 
    668649#if CAM_HAS_VIDEO_BUTTON 
    669     {0x5c, LANG_MENU_FLASH_VIDEO_OVERRIDE, MENUITEM_BOOL,   &conf.flash_video_override}, 
     650    MENU_ITEM(0x5c, LANG_MENU_FLASH_VIDEO_OVERRIDE, MENUITEM_BOOL,   &conf.flash_video_override, 0 ), 
    670651#endif 
    671652#if CAM_QUALITY_OVERRIDE 
    672     {0x5c,LANG_MENU_MISC_IMAGE_QUALITY,    MENUITEM_ENUM,    (int*)gui_fast_image_quality }, 
    673 #endif 
    674     {0x51,LANG_MENU_BACK,                     MENUITEM_UP }, 
     653    MENU_ENUM2(0x5c,LANG_MENU_MISC_IMAGE_QUALITY,   &conf.fast_image_quality, gui_fast_image_quality_modes ), 
     654#endif 
     655    MENU_ITEM(0x51,LANG_MENU_BACK,                     MENUITEM_UP, 0, 0 ), 
    675656    {0} 
    676657}; 
     
    678659 
    679660#ifdef OPT_EDGEOVERLAY 
     661static const char* gui_edge_pano_modes[] = { "Off", "Right", "Down", "Left", "Up", "Free"}; 
    680662static CMenuItem edge_overlay_submenu_items[] = { 
    681     {0x5c,LANG_MENU_EDGE_OVERLAY_ENABLE,     MENUITEM_BOOL,          &conf.edge_overlay_enable }, 
    682     {0x5c,LANG_MENU_EDGE_FILTER,     MENUITEM_BOOL,          &conf.edge_overlay_filter }, 
    683     {0x5f,LANG_MENU_EDGE_PANO,     MENUITEM_ENUM,          (int*)gui_edge_pano_enum }, 
    684     {0x5e,LANG_MENU_EDGE_PANO_OVERLAP,   MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.edge_overlay_pano_overlap, MENU_MINMAX(0, 100)}, 
    685     {0x5c,LANG_MENU_EDGE_SHOW,     MENUITEM_BOOL,          &conf.edge_overlay_show }, 
    686     {0x5e,LANG_MENU_EDGE_OVERLAY_TRESH,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.edge_overlay_thresh, MENU_MINMAX(0, 255)}, 
    687     {0x65,LANG_MENU_EDGE_OVERLAY_COLOR,      MENUITEM_COLOR_FG,      (int*)&conf.edge_overlay_color }, 
    688     {0x5c,LANG_MENU_EDGE_PLAY,                  MENUITEM_BOOL,          &conf.edge_overlay_play }, //does not work on cams like s-series, which dont have a real "hardware" play/rec switch, need a workaround, probably another button 
    689     {0x33,LANG_MENU_EDGE_SAVE,                  MENUITEM_PROC,          (int*)gui_menuproc_edge_save }, 
    690     {0x5c,LANG_MENU_EDGE_ZOOM,     MENUITEM_BOOL,          &conf.edge_overlay_zoom }, 
    691     {0x33,LANG_MENU_EDGE_LOAD,                  MENUITEM_PROC,          (int*)gui_menuproc_edge_load }, 
    692     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     663    MENU_ITEM(0x5c,LANG_MENU_EDGE_OVERLAY_ENABLE,     MENUITEM_BOOL,          &conf.edge_overlay_enable, 0 ), 
     664    MENU_ITEM(0x5c,LANG_MENU_EDGE_FILTER,     MENUITEM_BOOL,          &conf.edge_overlay_filter, 0 ), 
     665    MENU_ENUM2(0x5f,LANG_MENU_EDGE_PANO,    &conf.edge_overlay_pano, gui_edge_pano_modes ), 
     666    MENU_ITEM(0x5e,LANG_MENU_EDGE_PANO_OVERLAP,   MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.edge_overlay_pano_overlap, MENU_MINMAX(0, 100) ), 
     667    MENU_ITEM(0x5c,LANG_MENU_EDGE_SHOW,     MENUITEM_BOOL,          &conf.edge_overlay_show, 0 ), 
     668    MENU_ITEM(0x5e,LANG_MENU_EDGE_OVERLAY_TRESH,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.edge_overlay_thresh, MENU_MINMAX(0, 255) ), 
     669    MENU_ITEM(0x65,LANG_MENU_EDGE_OVERLAY_COLOR,      MENUITEM_COLOR_FG,      &conf.edge_overlay_color, 0 ), 
     670    MENU_ITEM(0x5c,LANG_MENU_EDGE_PLAY,                 MENUITEM_BOOL,          &conf.edge_overlay_play, 0 ), //does not work on cams like s-series, which dont have a real "hardware" play/rec switch, need a workaround, probably another button 
     671    MENU_ITEM(0x33,LANG_MENU_EDGE_SAVE,                 MENUITEM_PROC,          gui_menuproc_edge_save, 0 ), 
     672    MENU_ITEM(0x5c,LANG_MENU_EDGE_ZOOM,     MENUITEM_BOOL,          &conf.edge_overlay_zoom, 0 ), 
     673    MENU_ITEM(0x33,LANG_MENU_EDGE_LOAD,                 MENUITEM_PROC,          gui_menuproc_edge_load, 0 ), 
     674    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    693675    {0} 
    694676}; 
     
    697679 
    698680static CMenuItem grid_submenu_items[] = { 
    699     {0x2f,LANG_MENU_SHOW_GRID,               MENUITEM_BOOL,             &conf.show_grid_lines }, 
    700     {0x35,LANG_MENU_GRID_LOAD,               MENUITEM_PROC,             (int*)gui_grid_lines_load }, 
    701     {0x0,LANG_MENU_GRID_CURRENT,            MENUITEM_SEPARATOR }, 
    702     {0x0,(int)grid_title,                   MENUITEM_TEXT }, 
    703     {0x0,(int)"",                           MENUITEM_SEPARATOR }, 
    704     {0x5c,LANG_MENU_GRID_FORCE_COLOR,        MENUITEM_BOOL,          &conf.grid_force_color }, 
    705     {0x65,LANG_MENU_GRID_COLOR_LINE,         MENUITEM_COLOR_FG,      (int*)&conf.grid_color }, 
    706     {0x65,LANG_MENU_GRID_COLOR_FILL,         MENUITEM_COLOR_BG,      (int*)&conf.grid_color }, 
    707     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     681    MENU_ITEM(0x2f,LANG_MENU_SHOW_GRID,               MENUITEM_BOOL,            &conf.show_grid_lines, 0 ), 
     682    MENU_ITEM(0x35,LANG_MENU_GRID_LOAD,               MENUITEM_PROC,            gui_grid_lines_load, 0 ), 
     683    MENU_ITEM(0x0,LANG_MENU_GRID_CURRENT,            MENUITEM_SEPARATOR, 0, 0 ), 
     684    MENU_ITEM(0x0,(int)grid_title,                   MENUITEM_TEXT, 0, 0 ), 
     685    MENU_ITEM(0x0,(int)"",                           MENUITEM_SEPARATOR, 0, 0 ), 
     686    MENU_ITEM(0x5c,LANG_MENU_GRID_FORCE_COLOR,        MENUITEM_BOOL,          &conf.grid_force_color, 0 ), 
     687    MENU_ITEM(0x65,LANG_MENU_GRID_COLOR_LINE,         MENUITEM_COLOR_FG,      &conf.grid_color, 0 ), 
     688    MENU_ITEM(0x65,LANG_MENU_GRID_COLOR_FILL,         MENUITEM_COLOR_BG,      &conf.grid_color, 0 ), 
     689    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    708690    {0} 
    709691}; 
     
    711693 
    712694static CMenuItem visual_submenu_items[] = { 
    713     {0x35,LANG_MENU_VIS_LANG,                MENUITEM_PROC,      (int*)gui_draw_load_lang }, 
    714     {0x5f,LANG_MENU_VIS_OSD_FONT,            MENUITEM_ENUM,      (int*)gui_font_enum }, 
    715     {0x35,LANG_MENU_VIS_MENU_FONT,           MENUITEM_PROC,      (int*)gui_draw_load_menu_rbf }, 
    716     {0x35,LANG_MENU_VIS_MENU_SYMBOL_FONT,    MENUITEM_PROC,      (int*)gui_draw_load_symbol_rbf }, 
    717     {0x80,LANG_MENU_RESET_FILES          ,         MENUITEM_PROC,          (int*)gui_menuproc_reset_files }, 
    718     {0x0,LANG_MENU_VIS_COLORS,              MENUITEM_SEPARATOR }, 
    719     {0x65,LANG_MENU_VIS_OSD_TEXT,            MENUITEM_COLOR_FG,  (int*)&conf.osd_color }, 
    720     {0x65,LANG_MENU_VIS_OSD_BKG,             MENUITEM_COLOR_BG,  (int*)&conf.osd_color }, 
    721     {0x65,LANG_MENU_VIS_OSD_WARNING,         MENUITEM_COLOR_FG,  (int*)&conf.osd_color_warn }, 
    722     {0x65,LANG_MENU_VIS_OSD_WARNING_BKG,     MENUITEM_COLOR_BG,  (int*)&conf.osd_color_warn }, 
    723     {0x65,LANG_MENU_VIS_HISTO,               MENUITEM_COLOR_FG,  (int*)&conf.histo_color }, 
    724     {0x65,LANG_MENU_VIS_HISTO_BKG,           MENUITEM_COLOR_BG,  (int*)&conf.histo_color }, 
    725     {0x65,LANG_MENU_VIS_HISTO_BORDER,        MENUITEM_COLOR_FG,  (int*)&conf.histo_color2 }, 
    726     {0x65,LANG_MENU_VIS_HISTO_MARKERS,       MENUITEM_COLOR_BG,  (int*)&conf.histo_color2 }, 
    727     {0x65,LANG_MENU_VIS_ZEBRA_UNDER,         MENUITEM_COLOR_BG,  (int*)&conf.zebra_color }, 
    728     {0x65,LANG_MENU_VIS_ZEBRA_OVER,          MENUITEM_COLOR_FG,  (int*)&conf.zebra_color }, 
    729     {0x65,LANG_MENU_VIS_BATT_ICON,           MENUITEM_COLOR_FG,  (int*)&conf.batt_icon_color }, 
    730     {0x65,LANG_MENU_VIS_SPACE_ICON,          MENUITEM_COLOR_FG,  (int*)&conf.space_color }, 
    731     {0x65,LANG_MENU_VIS_SPACE_ICON_BKG,      MENUITEM_COLOR_BG,  (int*)&conf.space_color }, 
    732     {0x65,LANG_MENU_VIS_MENU_TEXT,           MENUITEM_COLOR_FG,  (int*)&conf.menu_color }, 
    733     {0x65,LANG_MENU_VIS_MENU_BKG,            MENUITEM_COLOR_BG,  (int*)&conf.menu_color }, 
    734     {0x65,LANG_MENU_VIS_MENU_TITLE_TEXT,     MENUITEM_COLOR_FG,  (int*)&conf.menu_title_color }, 
    735     {0x65,LANG_MENU_VIS_MENU_TITLE_BKG,      MENUITEM_COLOR_BG,  (int*)&conf.menu_title_color }, 
    736     {0x65,LANG_MENU_VIS_MENU_CURSOR_TEXT,    MENUITEM_COLOR_FG,  (int*)&conf.menu_cursor_color }, 
    737     {0x65,LANG_MENU_VIS_MENU_CURSOR_BKG,     MENUITEM_COLOR_BG,  (int*)&conf.menu_cursor_color }, 
    738     {0x65,LANG_MENU_VIS_MENU_SYMBOL_TEXT,    MENUITEM_COLOR_FG,  (int*)&conf.menu_symbol_color }, 
    739     {0x65,LANG_MENU_VIS_MENU_SYMBOL_BKG,     MENUITEM_COLOR_BG,  (int*)&conf.menu_symbol_color }, 
    740     {0x65,LANG_MENU_VIS_READER_TEXT,         MENUITEM_COLOR_FG,  (int*)&conf.reader_color }, 
    741     {0x65,LANG_MENU_VIS_READER_BKG,          MENUITEM_COLOR_BG,  (int*)&conf.reader_color }, 
    742     {0x65,LANG_MENU_VIS_OSD_OVERRIDE,         MENUITEM_COLOR_FG,  (int*)&conf.osd_color_override }, 
    743     {0x65,LANG_MENU_VIS_OSD_OVERRIDE_BKG,     MENUITEM_COLOR_BG,  (int*)&conf.osd_color_override }, 
    744     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     695    MENU_ITEM(0x35,LANG_MENU_VIS_LANG,                MENUITEM_PROC,      gui_draw_load_lang, 0 ), 
     696    MENU_ITEM(0x5f,LANG_MENU_VIS_OSD_FONT,            MENUITEM_ENUM,      gui_font_enum, 0 ), 
     697    MENU_ITEM(0x35,LANG_MENU_VIS_MENU_FONT,           MENUITEM_PROC,      gui_draw_load_menu_rbf, 0 ), 
     698    MENU_ITEM(0x35,LANG_MENU_VIS_MENU_SYMBOL_FONT,    MENUITEM_PROC,      gui_draw_load_symbol_rbf, 0 ), 
     699    MENU_ITEM(0x80,LANG_MENU_RESET_FILES                 ,         MENUITEM_PROC,          gui_menuproc_reset_files, 0 ), 
     700    MENU_ITEM(0x0,LANG_MENU_VIS_COLORS,              MENUITEM_SEPARATOR, 0, 0 ), 
     701    MENU_ITEM(0x65,LANG_MENU_VIS_OSD_TEXT,            MENUITEM_COLOR_FG,  &conf.osd_color, 0 ), 
     702    MENU_ITEM(0x65,LANG_MENU_VIS_OSD_BKG,             MENUITEM_COLOR_BG,  &conf.osd_color, 0 ), 
     703    MENU_ITEM(0x65,LANG_MENU_VIS_OSD_WARNING,         MENUITEM_COLOR_FG,  &conf.osd_color_warn, 0 ), 
     704    MENU_ITEM(0x65,LANG_MENU_VIS_OSD_WARNING_BKG,     MENUITEM_COLOR_BG,  &conf.osd_color_warn, 0 ), 
     705    MENU_ITEM(0x65,LANG_MENU_VIS_HISTO,               MENUITEM_COLOR_FG,  &conf.histo_color, 0 ), 
     706    MENU_ITEM(0x65,LANG_MENU_VIS_HISTO_BKG,           MENUITEM_COLOR_BG,  &conf.histo_color, 0 ), 
     707    MENU_ITEM(0x65,LANG_MENU_VIS_HISTO_BORDER,        MENUITEM_COLOR_FG,  &conf.histo_color2, 0 ), 
     708    MENU_ITEM(0x65,LANG_MENU_VIS_HISTO_MARKERS,       MENUITEM_COLOR_BG,  &conf.histo_color2, 0 ), 
     709    MENU_ITEM(0x65,LANG_MENU_VIS_ZEBRA_UNDER,         MENUITEM_COLOR_BG,  &conf.zebra_color, 0 ), 
     710    MENU_ITEM(0x65,LANG_MENU_VIS_ZEBRA_OVER,          MENUITEM_COLOR_FG,  &conf.zebra_color, 0 ), 
     711    MENU_ITEM(0x65,LANG_MENU_VIS_BATT_ICON,           MENUITEM_COLOR_FG,  &conf.batt_icon_color, 0 ), 
     712    MENU_ITEM(0x65,LANG_MENU_VIS_SPACE_ICON,          MENUITEM_COLOR_FG,  &conf.space_color, 0 ), 
     713    MENU_ITEM(0x65,LANG_MENU_VIS_SPACE_ICON_BKG,      MENUITEM_COLOR_BG,  &conf.space_color, 0 ), 
     714    MENU_ITEM(0x65,LANG_MENU_VIS_MENU_TEXT,           MENUITEM_COLOR_FG,  &conf.menu_color, 0 ), 
     715    MENU_ITEM(0x65,LANG_MENU_VIS_MENU_BKG,            MENUITEM_COLOR_BG,  &conf.menu_color, 0 ), 
     716    MENU_ITEM(0x65,LANG_MENU_VIS_MENU_TITLE_TEXT,     MENUITEM_COLOR_FG,  &conf.menu_title_color, 0 ), 
     717    MENU_ITEM(0x65,LANG_MENU_VIS_MENU_TITLE_BKG,      MENUITEM_COLOR_BG,  &conf.menu_title_color, 0 ), 
     718    MENU_ITEM(0x65,LANG_MENU_VIS_MENU_CURSOR_TEXT,    MENUITEM_COLOR_FG,  &conf.menu_cursor_color, 0 ), 
     719    MENU_ITEM(0x65,LANG_MENU_VIS_MENU_CURSOR_BKG,     MENUITEM_COLOR_BG,  &conf.menu_cursor_color, 0 ), 
     720    MENU_ITEM(0x65,LANG_MENU_VIS_MENU_SYMBOL_TEXT,    MENUITEM_COLOR_FG,  &conf.menu_symbol_color, 0 ), 
     721    MENU_ITEM(0x65,LANG_MENU_VIS_MENU_SYMBOL_BKG,     MENUITEM_COLOR_BG,  &conf.menu_symbol_color, 0 ), 
     722    MENU_ITEM(0x65,LANG_MENU_VIS_READER_TEXT,         MENUITEM_COLOR_FG,  &conf.reader_color, 0 ), 
     723    MENU_ITEM(0x65,LANG_MENU_VIS_READER_BKG,          MENUITEM_COLOR_BG,  &conf.reader_color, 0 ), 
     724    MENU_ITEM(0x65,LANG_MENU_VIS_OSD_OVERRIDE,         MENUITEM_COLOR_FG,  &conf.osd_color_override, 0 ), 
     725    MENU_ITEM(0x65,LANG_MENU_VIS_OSD_OVERRIDE_BKG,     MENUITEM_COLOR_BG,  &conf.osd_color_override, 0 ), 
     726    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    745727    {0} 
    746728}; 
     
    755737 
    756738static CMenuItem user_submenu_items[USER_MENU_ITEMS + 2] = { 
    757         {0x20,LANG_MENU_MAIN_TITLE,     MENUITEM_PROC,  (int*)rinit} 
     739        MENU_ITEM(0x20,LANG_MENU_MAIN_TITLE,     MENUITEM_PROC,  rinit, 0 ) 
    758740}; 
    759741 
     
    761743 
    762744static CMenuItem raw_state_submenu_items[] = { 
    763     {0x5c,LANG_MENU_OSD_SHOW_RAW_STATE,      MENUITEM_BOOL,      &conf.show_raw_state }, 
    764     {0x5c,LANG_MENU_OSD_SHOW_REMAINING_RAW,  MENUITEM_BOOL,      &conf.show_remaining_raw }, 
    765     {0x60,LANG_MENU_OSD_RAW_TRESHOLD,        MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.remaining_raw_treshold,   MENU_MINMAX(0, 200)}, 
    766     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     745    MENU_ITEM(0x5c,LANG_MENU_OSD_SHOW_RAW_STATE,      MENUITEM_BOOL,      &conf.show_raw_state, 0 ), 
     746    MENU_ITEM(0x5c,LANG_MENU_OSD_SHOW_REMAINING_RAW,  MENUITEM_BOOL,      &conf.show_remaining_raw, 0 ), 
     747    MENU_ITEM(0x60,LANG_MENU_OSD_RAW_TRESHOLD,        MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.remaining_raw_treshold,   MENU_MINMAX(0, 200) ), 
     748    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    767749    {0} 
    768750}; 
     
    771753 
    772754#ifdef  CAM_TOUCHSCREEN_UI 
    773 static const char* gui_touchscreen_disable_video_enum(int change, int arg); 
    774 static const char* gui_touchscreen_disable_shortcuts_enum(int change, int arg); 
     755static const char* gui_touchscreen_disable_modes[]={ "Enable", "Disable" }; 
    775756static CMenuItem touchscreen_submenu_items[] = { 
    776     {0x5f,LANG_MENU_TS_VIDEO_AE_DISABLE,     MENUITEM_ENUM,    (int*)gui_touchscreen_disable_video_enum }, 
    777     {0x5f,LANG_MENU_TS_ALT_SHORTCUTS_DISABLE,MENUITEM_ENUM,    (int*)gui_touchscreen_disable_shortcuts_enum }, 
    778     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     757    MENU_ENUM2(0x5f,LANG_MENU_TS_VIDEO_AE_DISABLE,      &conf.touchscreen_disable_video_controls,    gui_touchscreen_disable_modes ), 
     758    MENU_ENUM2(0x5f,LANG_MENU_TS_ALT_SHORTCUTS_DISABLE, &conf.touchscreen_disable_shortcut_controls, gui_touchscreen_disable_modes ), 
     759    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    779760    {0} 
    780761}; 
     
    782763#endif 
    783764 
     765static const char* gui_temp_mode_modes[] = { "Off", "Optical", "CCD", "Battery", "all" }; 
     766static const char* gui_hide_osd_modes[] = { "Don't", "In Playback", "On Disp Press", "Both"}; 
     767static const char* gui_show_usb_info_modes[] = { "Off", "Icon", "Text"}; 
    784768static CMenuItem osd_submenu_items[] = { 
    785     {0x5c,LANG_MENU_OSD_SHOW,                MENUITEM_BOOL,      &conf.show_osd }, 
    786     {0x5c,LANG_MENU_OSD_HIDE_PLAYBACK,       MENUITEM_ENUM,      (int*)gui_hide_osd_enum }, 
    787     {0x81,LANG_MENU_VIS_MENU_CENTER,         MENUITEM_BOOL,         &conf.menu_center }, 
    788     {0x81,LANG_MENU_SELECT_FIRST_ENTRY,         MENUITEM_BOOL,      &conf.menu_select_first_entry }, 
    789     {0x64,LANG_MENU_VIS_SYMBOL,             MENUITEM_BOOL,          &conf.menu_symbol_enable }, 
    790     {0x2e,LANG_MENU_USER_MENU,                          MENUITEM_SUBMENU,   (int*)&user_submenu}, 
    791     {0x5f,LANG_MENU_USER_MENU_ENABLE,           MENUITEM_ENUM,      (int*)gui_user_menu_show_enum }, 
    792     {0x5c,LANG_MENU_USER_MENU_AS_ROOT,       MENUITEM_BOOL,      &conf.user_menu_as_root }, 
    793     {0x5f,LANG_MENU_OSD_SHOW_STATES,         MENUITEM_BOOL,      &conf.show_state }, 
    794     {0x5f,LANG_MENU_OSD_SHOW_TEMP,         MENUITEM_ENUM,      (int*)gui_temp_mode_enum }, 
    795     {0x59,LANG_MENU_OSD_TEMP_FAHRENHEIT,      MENUITEM_BOOL,      &conf.temperature_unit}, 
    796     {0x71,LANG_MENU_USB_SHOW_INFO,              MENUITEM_ENUM,          (int*)gui_show_usb_info_enum }, 
    797     {0x72,LANG_MENU_OSD_LAYOUT_EDITOR,       MENUITEM_PROC,      (int*)gui_draw_osd_le }, 
    798     {0x2f,LANG_MENU_OSD_GRID_PARAMS,         MENUITEM_SUBMENU,   (int*)&grid_submenu }, 
    799     {0x22,LANG_MENU_OSD_VALUES,                 MENUITEM_SUBMENU,   (int*)&values_submenu }, 
    800     {0x31,LANG_MENU_OSD_DOF_CALC,            MENUITEM_SUBMENU,   (int*)&dof_submenu }, 
    801     {0x24,LANG_MENU_OSD_RAW_STATE_PARAMS,    MENUITEM_SUBMENU,   (int*)&raw_state_submenu }, 
    802     {0x32,LANG_MENU_OSD_BATT_PARAMS,         MENUITEM_SUBMENU,   (int*)&battery_submenu }, 
    803     {0x33,LANG_MENU_OSD_SPACE_PARAMS,        MENUITEM_SUBMENU,   (int*)&space_submenu }, 
    804     {0x34,LANG_MENU_OSD_CLOCK_PARAMS,           MENUITEM_SUBMENU,   (int*)&clock_submenu }, 
    805     {0x59,LANG_MENU_OSD_SHOW_IN_REVIEW,      MENUITEM_BOOL,      &conf.show_osd_in_review}, 
     769    MENU_ITEM(0x5c,LANG_MENU_OSD_SHOW,                MENUITEM_BOOL,      &conf.show_osd, 0 ), 
     770    MENU_ENUM2(0x5c,LANG_MENU_OSD_HIDE_PLAYBACK,      &conf.hide_osd, gui_hide_osd_modes ), 
     771    MENU_ITEM(0x81,LANG_MENU_VIS_MENU_CENTER,         MENUITEM_BOOL,        &conf.menu_center, 0 ), 
     772    MENU_ITEM(0x81,LANG_MENU_SELECT_FIRST_ENTRY,         MENUITEM_BOOL,     &conf.menu_select_first_entry, 0 ), 
     773    MENU_ITEM(0x64,LANG_MENU_VIS_SYMBOL,             MENUITEM_BOOL,         &conf.menu_symbol_enable, 0 ), 
     774    MENU_ITEM(0x2e,LANG_MENU_USER_MENU,                         MENUITEM_SUBMENU,   &user_submenu, 0 ), 
     775    MENU_ITEM(0x5f,LANG_MENU_USER_MENU_ENABLE,          MENUITEM_ENUM,      gui_user_menu_show_enum, 0 ), 
     776    MENU_ITEM(0x5c,LANG_MENU_USER_MENU_AS_ROOT,       MENUITEM_BOOL,      &conf.user_menu_as_root, 0 ), 
     777    MENU_ITEM(0x5f,LANG_MENU_OSD_SHOW_STATES,         MENUITEM_BOOL,      &conf.show_state, 0 ), 
     778    MENU_ENUM2(0x5f,LANG_MENU_OSD_SHOW_TEMP,         &conf.show_temp, gui_temp_mode_modes ), 
     779    MENU_ITEM(0x59,LANG_MENU_OSD_TEMP_FAHRENHEIT,      MENUITEM_BOOL,      &conf.temperature_unit, 0 ), 
     780    MENU_ENUM2(0x71,LANG_MENU_USB_SHOW_INFO,         &conf.usb_info_enable, gui_show_usb_info_modes ), 
     781    MENU_ITEM(0x72,LANG_MENU_OSD_LAYOUT_EDITOR,       MENUITEM_PROC,      gui_draw_osd_le, 0 ), 
     782    MENU_ITEM(0x2f,LANG_MENU_OSD_GRID_PARAMS,         MENUITEM_SUBMENU,   &grid_submenu, 0 ), 
     783    MENU_ITEM(0x22,LANG_MENU_OSD_VALUES,                MENUITEM_SUBMENU,   &values_submenu, 0 ), 
     784    MENU_ITEM(0x31,LANG_MENU_OSD_DOF_CALC,            MENUITEM_SUBMENU,   &dof_submenu, 0 ), 
     785    MENU_ITEM(0x24,LANG_MENU_OSD_RAW_STATE_PARAMS,    MENUITEM_SUBMENU,   &raw_state_submenu, 0 ), 
     786    MENU_ITEM(0x32,LANG_MENU_OSD_BATT_PARAMS,         MENUITEM_SUBMENU,   &battery_submenu, 0 ), 
     787    MENU_ITEM(0x33,LANG_MENU_OSD_SPACE_PARAMS,        MENUITEM_SUBMENU,   &space_submenu, 0 ), 
     788    MENU_ITEM(0x34,LANG_MENU_OSD_CLOCK_PARAMS,          MENUITEM_SUBMENU,   &clock_submenu, 0 ), 
     789    MENU_ITEM(0x59,LANG_MENU_OSD_SHOW_IN_REVIEW,      MENUITEM_BOOL,      &conf.show_osd_in_review, 0 ), 
    806790#ifndef OPTIONS_AUTOSAVE 
    807     {0x5c,LANG_MENU_MAIN_SAVE_OPTIONS,       MENUITEM_PROC,      (int*)gui_menuproc_save }, 
     791    MENU_ITEM(0x5c,LANG_MENU_MAIN_SAVE_OPTIONS,       MENUITEM_PROC,      gui_menuproc_save, 0 ), 
    808792#endif 
    809793#ifdef  CAM_TOUCHSCREEN_UI 
    810     {0x22,LANG_MENU_TOUCHSCREEN_VALUES,          MENUITEM_SUBMENU,   (int*)&touchscreen_submenu }, 
    811 #endif 
    812     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     794    MENU_ITEM(0x22,LANG_MENU_TOUCHSCREEN_VALUES,         MENUITEM_SUBMENU,   &touchscreen_submenu, 0 ), 
     795#endif 
     796    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    813797    {0} 
    814798}; 
     
    816800static CMenu osd_submenu = {0x22,LANG_MENU_OSD_TITLE, NULL, osd_submenu_items }; 
    817801 
     802static const char* gui_histo_show_modes[] = { "Don't", "Always", "Shoot" }; 
    818803static CMenuItem histo_submenu_items[] = { 
    819     {0x5f,LANG_MENU_HISTO_SHOW,              MENUITEM_ENUM,      (int*)gui_histo_show_enum }, 
    820     {0x6f,LANG_MENU_HISTO_LAYOUT,            MENUITEM_ENUM,      (int*)gui_histo_layout_enum }, 
    821     {0x5f,LANG_MENU_HISTO_MODE,              MENUITEM_ENUM,      (int*)gui_histo_mode_enum }, 
    822     {0x5c,LANG_MENU_HISTO_EXP,               MENUITEM_BOOL,       &conf.show_overexp }, 
    823     {0x70,LANG_MENU_HISTO_IGNORE_PEAKS,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.histo_ignore_boundary,   MENU_MINMAX(0, 32)}, 
    824     {0x5c,LANG_MENU_HISTO_MAGNIFY,           MENUITEM_BOOL,       &conf.histo_auto_ajust }, 
    825     {0x5c,LANG_MENU_HISTO_SHOW_EV_GRID,      MENUITEM_BOOL,       &conf.histo_show_ev_grid }, 
    826     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     804    MENU_ENUM2(0x5f,LANG_MENU_HISTO_SHOW,             &conf.show_histo, gui_histo_show_modes ), 
     805    MENU_ITEM(0x6f,LANG_MENU_HISTO_LAYOUT,            MENUITEM_ENUM,      gui_histo_layout_enum, 0 ), 
     806    MENU_ITEM(0x5f,LANG_MENU_HISTO_MODE,              MENUITEM_ENUM,      gui_histo_mode_enum, 0 ), 
     807    MENU_ITEM(0x5c,LANG_MENU_HISTO_EXP,               MENUITEM_BOOL,       &conf.show_overexp, 0 ), 
     808    MENU_ITEM(0x70,LANG_MENU_HISTO_IGNORE_PEAKS,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.histo_ignore_boundary,   MENU_MINMAX(0, 32) ), 
     809    MENU_ITEM(0x5c,LANG_MENU_HISTO_MAGNIFY,           MENUITEM_BOOL,       &conf.histo_auto_ajust, 0 ), 
     810    MENU_ITEM(0x5c,LANG_MENU_HISTO_SHOW_EV_GRID,      MENUITEM_BOOL,       &conf.histo_show_ev_grid, 0 ), 
     811    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    827812    {0} 
    828813}; 
     
    831816static CMenuItem raw_exceptions_submenu_items[] = { 
    832817    #if defined CAM_HAS_VIDEO_BUTTON 
    833      {0x5c,LANG_MENU_RAW_SAVE_IN_VIDEO,                MENUITEM_BOOL,      &conf.save_raw_in_video }, 
     818     MENU_ITEM(0x5c,LANG_MENU_RAW_SAVE_IN_VIDEO,                MENUITEM_BOOL,      &conf.save_raw_in_video, 0 ), 
    834819    #endif 
    835820    #if defined(CAMERA_s3is) 
    836         {0x5c,LANG_MENU_RAW_SAVE_IN_SPORTS,                MENUITEM_BOOL,      &conf.save_raw_in_sports }, 
     821        MENU_ITEM(0x5c,LANG_MENU_RAW_SAVE_IN_SPORTS,                MENUITEM_BOOL,      &conf.save_raw_in_sports, 0 ), 
    837822    #endif 
    838     {0x5c,LANG_MENU_RAW_SAVE_IN_BURST,                MENUITEM_BOOL,      &conf.save_raw_in_burst }, 
    839     {0x5c,LANG_MENU_RAW_SAVE_IN_TIMER,                MENUITEM_BOOL,      &conf.save_raw_in_timer }, 
    840     {0x5c,LANG_MENU_RAW_SAVE_IN_EDGEOVERLAY,          MENUITEM_BOOL,      &conf.save_raw_in_edgeoverlay }, 
    841     {0x5c,LANG_MENU_RAW_SAVE_IN_AUTO,                 MENUITEM_BOOL,      &conf.save_raw_in_auto }, 
     823    MENU_ITEM(0x5c,LANG_MENU_RAW_SAVE_IN_BURST,                MENUITEM_BOOL,      &conf.save_raw_in_burst, 0 ), 
     824    MENU_ITEM(0x5c,LANG_MENU_RAW_SAVE_IN_TIMER,                MENUITEM_BOOL,      &conf.save_raw_in_timer, 0 ), 
     825    MENU_ITEM(0x5c,LANG_MENU_RAW_SAVE_IN_EDGEOVERLAY,          MENUITEM_BOOL,      &conf.save_raw_in_edgeoverlay, 0 ), 
     826    MENU_ITEM(0x5c,LANG_MENU_RAW_SAVE_IN_AUTO,                 MENUITEM_BOOL,      &conf.save_raw_in_auto, 0 ), 
    842827                #if CAM_BRACKETING 
    843         {0x5c,LANG_MENU_RAW_SAVE_IN_EV_BRACKETING,                MENUITEM_BOOL,      &conf.save_raw_in_ev_bracketing }, 
     828        MENU_ITEM(0x5c,LANG_MENU_RAW_SAVE_IN_EV_BRACKETING,                MENUITEM_BOOL,      &conf.save_raw_in_ev_bracketing, 0 ), 
    844829                #endif 
    845     {0x5c,LANG_MENU_RAW_WARN,                MENUITEM_BOOL,      &conf.raw_exceptions_warn }, 
    846     {0x51,LANG_MENU_BACK,                           MENUITEM_UP }, 
     830    MENU_ITEM(0x5c,LANG_MENU_RAW_WARN,                MENUITEM_BOOL,      &conf.raw_exceptions_warn, 0 ), 
     831    MENU_ITEM(0x51,LANG_MENU_BACK,                           MENUITEM_UP, 0, 0 ), 
    847832    {0} 
    848833}; 
     
    850835 
    851836 
     837static const char* gui_raw_nr_modes[] = { "Auto", "Off", "On"}; 
    852838static CMenuItem raw_submenu_items[] = { 
    853     {0x5c,LANG_MENU_RAW_SAVE,                MENUITEM_BOOL,      &conf.save_raw }, 
    854     {0x59,LANG_MENU_OSD_RAW_EXCEPTIONS_PARAMS,          MENUITEM_SUBMENU,   (int*)&raw_exceptions_submenu }, 
    855     {0x5f,LANG_MENU_RAW_NOISE_REDUCTION,     MENUITEM_ENUM,      (int*)gui_raw_nr_enum }, 
    856     {0x5c,LANG_MENU_RAW_FIRST_ONLY,          MENUITEM_BOOL,      &conf.raw_save_first_only }, 
    857     {0x5c,LANG_MENU_RAW_SAVE_IN_DIR,         MENUITEM_BOOL,      &conf.raw_in_dir }, 
    858     {0x5f,LANG_MENU_RAW_PREFIX,              MENUITEM_ENUM,      (int*)gui_raw_prefix_enum }, 
    859     {0x5f,LANG_MENU_RAW_EXTENSION,           MENUITEM_ENUM,      (int*)gui_raw_ext_enum }, 
    860     {0x5f,LANG_MENU_SUB_PREFIX,              MENUITEM_ENUM,      (int*)gui_sub_batch_prefix_enum }, 
    861     {0x5f,LANG_MENU_SUB_EXTENSION,           MENUITEM_ENUM,      (int*)gui_sub_batch_ext_enum }, 
    862 //  {0x60,LANG_MENU_SUB_IN_DARK_VALUE,       MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.sub_in_dark_value, MENU_MINMAX(0, 1023)}, 
    863 //  {0x60,LANG_MENU_SUB_OUT_DARK_VALUE,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.sub_out_dark_value, MENU_MINMAX(0, 1023)}, 
    864     {0x2a,LANG_MENU_RAW_DEVELOP,             MENUITEM_PROC,      (int*)gui_raw_develop }, 
    865     {0x5c,LANG_MENU_BAD_PIXEL_REMOVAL,       MENUITEM_ENUM,      (int*)gui_bad_pixel_enum }, 
     839    MENU_ITEM(0x5c,LANG_MENU_RAW_SAVE,                MENUITEM_BOOL,      &conf.save_raw, 0 ), 
     840    MENU_ITEM(0x59,LANG_MENU_OSD_RAW_EXCEPTIONS_PARAMS,         MENUITEM_SUBMENU,   &raw_exceptions_submenu, 0 ), 
     841    MENU_ENUM2(0x5f,LANG_MENU_RAW_NOISE_REDUCTION,    &conf.raw_nr, gui_raw_nr_modes ), 
     842    MENU_ITEM(0x5c,LANG_MENU_RAW_FIRST_ONLY,          MENUITEM_BOOL,      &conf.raw_save_first_only, 0 ), 
     843    MENU_ITEM(0x5c,LANG_MENU_RAW_SAVE_IN_DIR,         MENUITEM_BOOL,      &conf.raw_in_dir, 0 ), 
     844    MENU_ENUM2a(0x5f,LANG_MENU_RAW_PREFIX,            &conf.raw_prefix, img_prefixes, NUM_IMG_PREFIXES ), 
     845    MENU_ENUM2a(0x5f,LANG_MENU_RAW_EXTENSION,         &conf.raw_ext, img_exts, NUM_IMG_EXTS ), 
     846    MENU_ENUM2a(0x5f,LANG_MENU_SUB_PREFIX,            &conf.sub_batch_prefix, img_prefixes, NUM_IMG_PREFIXES ), 
     847    MENU_ENUM2a(0x5f,LANG_MENU_SUB_EXTENSION,         &conf.sub_batch_ext, img_exts, NUM_IMG_EXTS ), 
     848//  MENU_ITEM(0x60,LANG_MENU_SUB_IN_DARK_VALUE,       MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.sub_in_dark_value, MENU_MINMAX(0, 1023) ), 
     849//  MENU_ITEM(0x60,LANG_MENU_SUB_OUT_DARK_VALUE,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.sub_out_dark_value, MENU_MINMAX(0, 1023) ), 
     850    MENU_ITEM(0x2a,LANG_MENU_RAW_DEVELOP,             MENUITEM_PROC,      gui_raw_develop, 0 ), 
     851    MENU_ITEM(0x5c,LANG_MENU_BAD_PIXEL_REMOVAL,       MENUITEM_ENUM,      gui_bad_pixel_enum, 0 ), 
    866852#if DNG_SUPPORT 
    867     {0x5c,LANG_MENU_DNG_FORMAT,              MENUITEM_BOOL | MENUITEM_ARG_CALLBACK, &conf.dng_raw , (int)cb_change_dng }, 
    868     {0x5c,LANG_MENU_RAW_DNG_EXT,             MENUITEM_BOOL,      &conf.raw_dng_ext}, 
    869     {0x2a,LANG_MENU_BADPIXEL_CREATE,         MENUITEM_PROC,      (int*)gui_menuproc_badpixel_create }, 
    870 #endif 
    871     {0x5c,LANG_MENU_RAW_CACHED,              MENUITEM_BOOL,      &conf.raw_cache }, 
    872     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     853    MENU_ITEM(0x5c,LANG_MENU_DNG_FORMAT,              MENUITEM_BOOL | MENUITEM_ARG_CALLBACK, &conf.dng_raw , (int)cb_change_dng ), 
     854    MENU_ITEM(0x5c,LANG_MENU_RAW_DNG_EXT,             MENUITEM_BOOL,      &conf.raw_dng_ext, 0 ), 
     855    MENU_ITEM(0x2a,LANG_MENU_BADPIXEL_CREATE,         MENUITEM_PROC,      gui_menuproc_badpixel_create, 0 ), 
     856#endif 
     857    MENU_ITEM(0x5c,LANG_MENU_RAW_CACHED,              MENUITEM_BOOL,      &conf.raw_cache, 0 ), 
     858    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    873859    {0} 
    874860}; 
     
    876862 
    877863 
     864static const char* gui_zebra_mode_modes[] = { "Blink 1", "Blink 2", "Blink 3", "Solid", "Zebra 1", "Zebra 2" }; 
     865static const char* gui_zebra_draw_osd_modes[] = { "Nothing", "Histo", "OSD" }; 
    878866static CMenuItem zebra_submenu_items[] = { 
    879     {0x5c,LANG_MENU_ZEBRA_DRAW,              MENUITEM_BOOL,                            &conf.zebra_draw }, 
    880     {0x5f,LANG_MENU_ZEBRA_MODE,              MENUITEM_ENUM,                            (int*)gui_zebra_mode_enum }, 
    881     {0x58,LANG_MENU_ZEBRA_UNDER,             MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.zebra_under,   MENU_MINMAX(0, 32)}, 
    882     {0x57,LANG_MENU_ZEBRA_OVER,              MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.zebra_over,    MENU_MINMAX(0, 32)}, 
    883     {0x28,LANG_MENU_ZEBRA_RESTORE_SCREEN,    MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,      &conf.zebra_restore_screen,     (int)cb_zebra_restore_screen }, 
    884     {0x5c,LANG_MENU_ZEBRA_RESTORE_OSD,       MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,      &conf.zebra_restore_osd,        (int)cb_zebra_restore_osd }, 
    885     {0x5f,LANG_MENU_ZEBRA_DRAW_OVER,         MENUITEM_ENUM,                            (int*)gui_zebra_draw_osd_enum }, 
    886     {0x5c,LANG_MENU_ZEBRA_MULTICHANNEL,      MENUITEM_BOOL,                            &conf.zebra_multichannel}, 
    887     {0x51,LANG_MENU_BACK,                    MENUITEM_UP }, 
     867    MENU_ITEM(0x5c,LANG_MENU_ZEBRA_DRAW,              MENUITEM_BOOL,                            &conf.zebra_draw, 0 ), 
     868    MENU_ENUM2(0x5f,LANG_MENU_ZEBRA_MODE,             &conf.zebra_mode, gui_zebra_mode_modes ), 
     869    MENU_ITEM(0x58,LANG_MENU_ZEBRA_UNDER,             MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.zebra_under,   MENU_MINMAX(0, 32) ), 
     870    MENU_ITEM(0x57,LANG_MENU_ZEBRA_OVER,              MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.zebra_over,    MENU_MINMAX(0, 32) ), 
     871    MENU_ITEM(0x28,LANG_MENU_ZEBRA_RESTORE_SCREEN,    MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,      &conf.zebra_restore_screen,     (int)cb_zebra_restore_screen ), 
     872    MENU_ITEM(0x5c,LANG_MENU_ZEBRA_RESTORE_OSD,       MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,      &conf.zebra_restore_osd,        (int)cb_zebra_restore_osd ), 
     873    MENU_ENUM2(0x5f,LANG_MENU_ZEBRA_DRAW_OVER,        &conf.zebra_draw_osd, gui_zebra_draw_osd_modes ), 
     874    MENU_ITEM(0x5c,LANG_MENU_ZEBRA_MULTICHANNEL,      MENUITEM_BOOL,                            &conf.zebra_multichannel, 0 ), 
     875    MENU_ITEM(0x51,LANG_MENU_BACK,                    MENUITEM_UP, 0, 0 ), 
    888876    {0} 
    889877}; 
     
    892880#ifdef OPT_CURVES 
    893881static CMenuItem curve_submenu_items[] = { 
    894     {0x5f,LANG_MENU_CURVE_ENABLE,        MENUITEM_ENUM,      (int*)gui_conf_curve_enum }, 
    895     {0x35,LANG_MENU_CURVE_LOAD,          MENUITEM_PROC,      (int*)gui_load_curve }, 
    896     {0x51,LANG_MENU_BACK,                MENUITEM_UP }, 
     882    MENU_ITEM(0x5f,LANG_MENU_CURVE_ENABLE,        MENUITEM_ENUM,      gui_conf_curve_enum, 0 ), 
     883    MENU_ITEM(0x35,LANG_MENU_CURVE_LOAD,          MENUITEM_PROC,      gui_load_curve, 0 ), 
     884    MENU_ITEM(0x51,LANG_MENU_BACK,                MENUITEM_UP, 0, 0 ), 
    897885    {0} 
    898886}; 
     
    901889 
    902890static CMenuItem root_menu_items[] = { 
    903     {0x21,LANG_MENU_OPERATION_PARAM,         MENUITEM_SUBMENU,   (int*)&operation_submenu }, 
    904     {0x23,LANG_MENU_VIDEO_PARAM,             MENUITEM_SUBMENU,   (int*)&video_submenu }, 
    905     {0x24,LANG_MENU_MAIN_RAW_PARAM,          MENUITEM_SUBMENU,   (int*)&raw_submenu }, 
     891    MENU_ITEM(0x21,LANG_MENU_OPERATION_PARAM,         MENUITEM_SUBMENU,   &operation_submenu, 0 ), 
     892    MENU_ITEM(0x23,LANG_MENU_VIDEO_PARAM,             MENUITEM_SUBMENU,   &video_submenu, 0 ), 
     893    MENU_ITEM(0x24,LANG_MENU_MAIN_RAW_PARAM,          MENUITEM_SUBMENU,   &raw_submenu, 0 ), 
    906894#ifdef OPT_EDGEOVERLAY 
    907     {0x7f,LANG_MENU_EDGE_OVERLAY,         MENUITEM_SUBMENU,   (int*)&edge_overlay_submenu }, 
     895    MENU_ITEM(0x7f,LANG_MENU_EDGE_OVERLAY,         MENUITEM_SUBMENU,   &edge_overlay_submenu, 0 ), 
    908896#endif 
    909897#ifdef OPT_CURVES 
    910     {0x85,LANG_MENU_CURVE_PARAM,             MENUITEM_SUBMENU,   (int*)&curve_submenu }, 
    911 #endif 
    912     {0x25,LANG_MENU_MAIN_HISTO_PARAM,        MENUITEM_SUBMENU,   (int*)&histo_submenu }, 
    913     {0x26,LANG_MENU_MAIN_ZEBRA_PARAM,        MENUITEM_SUBMENU,   (int*)&zebra_submenu }, 
    914     {0x22,LANG_MENU_MAIN_OSD_PARAM,          MENUITEM_SUBMENU,   (int*)&osd_submenu }, 
    915     {0x28,LANG_MENU_MAIN_VISUAL_PARAM,       MENUITEM_SUBMENU,   (int*)&visual_submenu }, 
     898    MENU_ITEM(0x85,LANG_MENU_CURVE_PARAM,             MENUITEM_SUBMENU,   &curve_submenu, 0 ), 
     899#endif 
     900    MENU_ITEM(0x25,LANG_MENU_MAIN_HISTO_PARAM,        MENUITEM_SUBMENU,   &histo_submenu, 0 ), 
     901    MENU_ITEM(0x26,LANG_MENU_MAIN_ZEBRA_PARAM,        MENUITEM_SUBMENU,   &zebra_submenu, 0 ), 
     902    MENU_ITEM(0x22,LANG_MENU_MAIN_OSD_PARAM,          MENUITEM_SUBMENU,   &osd_submenu, 0 ), 
     903    MENU_ITEM(0x28,LANG_MENU_MAIN_VISUAL_PARAM,       MENUITEM_SUBMENU,   &visual_submenu, 0 ), 
    916904#ifdef OPT_SCRIPTING 
    917     {0x27,LANG_MENU_MAIN_SCRIPT_PARAM,       MENUITEM_SUBMENU,   (int*)&script_submenu }, 
    918 #endif 
    919     {0x29,LANG_MENU_MAIN_MISC,               MENUITEM_SUBMENU,   (int*)&misc_submenu }, 
     905    MENU_ITEM(0x27,LANG_MENU_MAIN_SCRIPT_PARAM,       MENUITEM_SUBMENU,   &script_submenu, 0 ), 
     906#endif 
     907    MENU_ITEM(0x29,LANG_MENU_MAIN_MISC,               MENUITEM_SUBMENU,   &misc_submenu, 0 ), 
    920908#ifndef OPTIONS_AUTOSAVE 
    921     {0x33,LANG_MENU_MAIN_SAVE_OPTIONS,       MENUITEM_PROC,      (int*)gui_menuproc_save }, 
     909    MENU_ITEM(0x33,LANG_MENU_MAIN_SAVE_OPTIONS,       MENUITEM_PROC,      gui_menuproc_save, 0 ), 
    922910#endif 
    923911    {0} 
     
    10881076    return items[*value]; 
    10891077} 
    1090  
    1091 //------------------------------------------------------------------- 
    1092 const char* gui_show_usb_info_enum(int change, int arg) { 
    1093     static const char* modes[]={ "Off", "Icon", "Text"}; 
    1094  
    1095     gui_enum_value_change(&conf.usb_info_enable,change,sizeof(modes)/sizeof(modes[0])); 
    1096  
    1097     return modes[conf.usb_info_enable]; 
     1078const char* gui_change_enum2(const CMenuItem *menu_item, int change) 
     1079{ 
     1080    const char** items = (const char**)menu_item->arg; 
     1081        gui_enum_value_change(menu_item->value, change, menu_item->opt_len); 
     1082    return items[*menu_item->value]; 
    10981083} 
    10991084 
     
    11121097 
    11131098#ifdef OPT_SCRIPTING 
    1114 //------------------------------------------------------------------- 
    1115 const char* gui_script_autostart_enum(int change, int arg) { 
    1116     static const char* modes[]={ "Off", "On", "Once"}; 
    1117         return gui_change_simple_enum(&conf.script_startup,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1118 } 
    1119  
    11201099//------------------------------------------------------------------- 
    11211100const char* gui_script_param_set_enum(int change, int arg) { 
     
    11881167//------------------------------------------------------------------- 
    11891168const char* gui_override_disable_enum(int change, int arg) { 
    1190     static const char* modes[]={ "Off", "On", "Disabled"}; 
    1191         return gui_change_simple_enum(&conf.override_disable,change,modes,sizeof(modes)/sizeof(modes[0])); 
     1169        return gui_change_simple_enum(&conf.override_disable,change,gui_override_disable_modes,sizeof(gui_override_disable_modes)/sizeof(gui_override_disable_modes[0])); 
    11921170} 
    11931171 
     
    12011179 
    12021180    return modes[conf.histo_mode]; 
    1203 } 
    1204  
    1205 //------------------------------------------------------------------- 
    1206 const char* gui_temp_mode_enum(int change, int arg) { 
    1207     static const char* modes[]={ "Off", "Optical","CCD","Battery","all" }; 
    1208         return gui_change_simple_enum(&conf.show_temp,change,modes,sizeof(modes)/sizeof(modes[0])); 
    12091181} 
    12101182 
     
    12421214 
    12431215//------------------------------------------------------------------- 
    1244 const char* gui_raw_prefix_enum(int change, int arg) { 
    1245         return gui_change_simple_enum(&conf.raw_prefix,change,img_prefixes,NUM_IMG_PREFIXES); 
    1246 } 
    1247  
    1248 //------------------------------------------------------------------- 
    1249 const char* gui_raw_ext_enum(int change, int arg) { 
    1250         return gui_change_simple_enum(&conf.raw_ext,change,img_exts,NUM_IMG_EXTS); 
    1251 } 
    1252  
    1253 //------------------------------------------------------------------- 
    1254 const char* gui_sub_batch_prefix_enum(int change, int arg) { 
    1255         return gui_change_simple_enum(&conf.sub_batch_prefix,change,img_prefixes,NUM_IMG_PREFIXES); 
    1256 } 
    1257  
    1258 //------------------------------------------------------------------- 
    1259 const char* gui_sub_batch_ext_enum(int change, int arg) { 
    1260         return gui_change_simple_enum(&conf.sub_batch_ext,change,img_exts,NUM_IMG_EXTS); 
    1261 } 
    1262  
    1263 //------------------------------------------------------------------- 
    12641216#ifdef  CAM_TOUCHSCREEN_UI 
    12651217 
     
    12701222} 
    12711223 
    1272 const char* gui_touchscreen_disable_video_enum(int change, int arg) { 
    1273     static const char* modes[]={ "Enable", "Disable" }; 
    1274         return gui_change_simple_enum(&conf.touchscreen_disable_video_controls,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1275 } 
    1276  
    1277 const char* gui_touchscreen_disable_shortcuts_enum(int change, int arg) { 
    1278     static const char* modes[]={ "Enable", "Disable" }; 
    1279         return gui_change_simple_enum(&conf.touchscreen_disable_shortcut_controls,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1280 } 
    1281  
    1282 #endif 
    1283  
    1284 //------------------------------------------------------------------- 
    1285 const char* gui_raw_nr_enum(int change, int arg) { 
    1286     static const char* modes[]={ "Auto", "Off", "On"}; 
    1287         return gui_change_simple_enum(&conf.raw_nr,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1288 } 
    1289  
    1290 //------------------------------------------------------------------- 
    1291 #ifdef OPT_TEXTREADER 
    1292 const char* gui_reader_codepage_enum(int change, int arg) { 
    1293     static const char* cps[]={ "Win1251", "DOS"}; 
    1294         return gui_change_simple_enum(&conf.reader_codepage,change,cps,sizeof(cps)/sizeof(cps[0])); 
    1295 } 
    1296 #endif 
    1297 //------------------------------------------------------------------- 
    1298 const char* gui_autoiso_shutter_enum(int change, int arg) { 
    1299     static const char* shutter[]={ "Auto", "1/8s", "1/15s", "1/30s", "1/60s", "1/125s", "1/250s", "1/500s", "1/1000s"}; 
    1300         return gui_change_simple_enum(&conf.autoiso_shutter,change,shutter,sizeof(shutter)/sizeof(shutter[0])); 
    1301 } 
    1302  
    1303 //------------------------------------------------------------------- 
    1304 const char* gui_zebra_mode_enum(int change, int arg) { 
    1305     static const char* modes[]={ "Blink 1", "Blink 2", "Blink 3", "Solid", "Zebra 1", "Zebra 2" }; 
    1306         return gui_change_simple_enum(&conf.zebra_mode,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1307 } 
    1308  
    1309 //------------------------------------------------------------------- 
    1310 const char* gui_zebra_draw_osd_enum(int change, int arg) { 
    1311     static const char* modes[]={ "Nothing", "Histo", "OSD" }; 
    1312         return gui_change_simple_enum(&conf.zebra_draw_osd,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1313 } 
    1314  
    1315 //------------------------------------------------------------------- 
    1316 const char* gui_zoom_value_enum(int change, int arg) { 
    1317     static const char* modes[]={ "X", "FL", "EFL" }; 
    1318         return gui_change_simple_enum(&conf.zoom_value,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1319 } 
    1320  
    1321 const char* gui_show_values_enum(int change, int arg) { 
    1322     static const char* modes[]={ "Don't", "Always", "Shoot" }; 
    1323         return gui_change_simple_enum(&conf.show_values,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1324 } 
    1325  
     1224#endif 
     1225 
     1226//------------------------------------------------------------------- 
    13261227const char* gui_nd_filter_state_enum(int change, int arg) { 
    1327     static const char* modes[]={ "Off", "In", "Out" }; 
    1328         return gui_change_simple_enum(&conf.nd_filter_state,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1329 } 
    1330  
    1331 const char* gui_dof_show_value_enum(int change, int arg) { 
    1332     static const char* modes[]={ "Don't", "Separate", "In Misc" }; 
    1333         return gui_change_simple_enum(&conf.show_dof,change,modes,sizeof(modes)/sizeof(modes[0])); 
     1228        return gui_change_simple_enum(&conf.nd_filter_state,change,gui_nd_filter_state_modes,sizeof(gui_nd_filter_state_modes)/sizeof(gui_nd_filter_state_modes[0])); 
    13341229} 
    13351230 
    13361231const char* gui_histo_show_enum(int change, int arg) { 
    1337     static const char* modes[]={ "Don't", "Always", "Shoot" }; 
    1338         return gui_change_simple_enum(&conf.show_histo,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1339 } 
    1340  
    1341 const char* gui_show_clock_enum(int change, int arg) { 
    1342     static const char* modes[]={ "Don't", "Normal", "Seconds"}; 
    1343         return gui_change_simple_enum(&conf.show_clock,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1344 } 
    1345  
    1346 const char* gui_hide_osd_enum(int change, int arg) { 
    1347     static const char* modes[]={ "Don't", "In Playback", "On Disp Press", "both"}; 
    1348         return gui_change_simple_enum(&conf.hide_osd,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1349 } 
    1350  
    1351 const char* gui_clock_format_enum(int change, int arg) { 
    1352     static const char* modes[]={ "24h", "12h"}; 
    1353         return gui_change_simple_enum(&conf.clock_format,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1354 } 
    1355  
    1356 const char* gui_clock_indicator_enum(int change, int arg) { 
    1357     static const char* modes[]={ "PM", "P","."}; 
    1358         return gui_change_simple_enum(&conf.clock_indicator,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1359 } 
    1360  
    1361 const char* gui_clock_halfpress_enum(int change, int arg) { 
    1362     static const char* modes[]={ "Full", "Seconds","Don't"}; 
    1363         return gui_change_simple_enum(&conf.clock_halfpress,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1364 } 
    1365  
    1366 const char* gui_space_bar_enum(int change, int arg) { 
    1367     static const char* modes[]={ "Don't", "Horizontal", "Vertical"}; 
    1368         return gui_change_simple_enum(&conf.space_bar_show,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1369 } 
    1370  
    1371 const char* gui_space_bar_size_enum(int change, int arg) { 
    1372     static const char* modes[]={ "1/4", "1/2", "1"}; 
    1373         return gui_change_simple_enum(&conf.space_bar_size,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1374 } 
    1375  
    1376 const char* gui_space_bar_width_enum(int change, int arg) { 
    1377     static const char* modes[]={ "1", "2", "3","4","5","6","7","8","9","10"}; 
    1378         return gui_change_simple_enum(&conf.space_bar_width,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1379 } 
    1380  
    1381 const char* gui_space_warn_type_enum(int change, int arg) { 
    1382     static const char* modes[]={ "Percent", "MB", "Don't"}; 
    1383         return gui_change_simple_enum(&conf.space_warn_type,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1384 } 
    1385  
    1386 const char* gui_show_movie_time(int change, int arg) { 
    1387     static const char* modes[]={ "Don't", "hh:mm:ss", "KB/s","both"}; 
    1388         return gui_change_simple_enum(&conf.show_movie_time,change,modes,sizeof(modes)/sizeof(modes[0])); 
     1232        return gui_change_simple_enum(&conf.show_histo,change,gui_histo_show_modes,sizeof(gui_histo_show_modes)/sizeof(gui_histo_show_modes[0])); 
    13891233} 
    13901234 
     
    14501294    return modes[conf.alt_prevent_shutdown]; 
    14511295} 
    1452 const char* gui_fast_ev_step(int change, int arg) { 
    1453     static const char* modes[]={"1/6 Ev","1/3 Ev","1/2 Ev", "2/3 Ev","5/6 Ev","1 Ev","1 1/6 Ev","1 1/3 Ev","1 1/2 Ev", "1 2/3 Ev","1 5/6 Ev","2 Ev","2 1/6 Ev","2 1/3 Ev","2 1/2 Ev", "2 2/3 Ev","2 5/6 Ev","3 Ev","3 1/6 Ev","3 1/3 Ev","3 1/2 Ev", "3 2/3 Ev","3 5/6 Ev","4 Ev"}; 
    1454         return gui_change_simple_enum(&conf.fast_ev_step,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1455 } 
    1456 #if CAM_QUALITY_OVERRIDE 
    1457 const char* gui_fast_image_quality(int change, int arg) { 
    1458     static const char* modes[]={"sup.fine","fine","normal","off"}; 
    1459         return gui_change_simple_enum(&conf.fast_image_quality,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1460 } 
    1461 #endif 
    1462  
    1463 const char* gui_video_mode_enum(int change, int arg) { 
    1464 #if !CAM_VIDEO_QUALITY_ONLY 
    1465     static const char* modes[]={ "Bitrate", "Quality"}; 
    1466 #else 
    1467     static const char* modes[]={ "Default", "Quality"}; 
    1468 #endif 
    1469         return gui_change_simple_enum(&conf.video_mode,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1470 } 
    14711296 
    14721297//------------------------------------------------------------------- 
     
    14811306 
    14821307//------------------------------------------------------------------- 
    1483 const char* gui_tv_bracket_values_enum(int change, int arg) { 
    1484     static const char* modes[]={ "Off", "1/3 Ev","2/3 Ev", "1 Ev", "1 1/3Ev", "1 2/3Ev", "2 Ev", "2 1/3Ev", "2 2/3Ev", "3 Ev", "3 1/3Ev", "3 2/3Ev", "4 Ev"}; 
    1485         return gui_change_simple_enum(&conf.tv_bracket_value,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1486 } 
    1487  
    1488 const char* gui_av_bracket_values_enum(int change, int arg) { 
    1489     static const char* modes[]={ "Off", "1/3 Ev","2/3 Ev", "1 Ev", "1 1/3Ev", "1 2/3Ev", "2 Ev", "2 1/3Ev", "2 2/3Ev", "3 Ev", "3 1/3Ev", "3 2/3Ev", "4 Ev"}; 
    1490         return gui_change_simple_enum(&conf.av_bracket_value,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1491 } 
    1492  
    1493 const char* gui_subj_dist_bracket_koef_enum(int change, int arg) { 
    1494     static const char* modes[]={"Off", "1", "10","100","1000"}; 
    1495         return gui_change_simple_enum(&conf.subj_dist_bracket_koef,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1496 } 
    1497  
    1498 const char* gui_iso_bracket_koef_enum(int change, int arg) { 
    1499     static const char* modes[]={ "Off","1", "10","100"}; 
    1500         return gui_change_simple_enum(&conf.iso_bracket_koef,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1501 } 
    1502  
    1503 const char* gui_bracket_type_enum(int change, int arg) { 
    1504     static const char* modes[]={ "+/-", "-","+"}; 
    1505         return gui_change_simple_enum(&conf.bracket_type,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1506 } 
    1507  
    15081308const char* gui_tv_override_koef_enum(int change, int arg) { 
    15091309    static const char* modes[]={"Off", "1/100K", "1/10000", "1/1000","1/100","1/10", "1","10","100"}; 
     
    15721372} 
    15731373 
    1574  
    1575 const char* gui_iso_override_koef_enum(int change, int arg) { 
    1576     static const char* modes[]={ "Off","1", "10","100"}; 
    1577         return gui_change_simple_enum(&conf.iso_override_koef,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1578 } 
    1579  
    15801374const char* gui_subj_dist_override_value_enum(int change, int arg) { 
    15811375        static const int koef[] = {0, 1,10,100,1000}; 
     
    15921386 
    15931387const char* gui_subj_dist_override_koef_enum(int change, int arg) { 
    1594     static const char* modes[]={ "Off","1", "10","100","1000"}; 
    1595         return gui_change_simple_enum(&conf.subj_dist_override_koef,change,modes,sizeof(modes)/sizeof(modes[0])); 
     1388        return gui_change_simple_enum(&conf.subj_dist_override_koef,change,gui_override_koef_modes,sizeof(gui_override_koef_modes)/sizeof(gui_override_koef_modes[0])); 
    15961389} 
    15971390 
     
    17891582#define DEBUG_DISPLAY_PARAMS 2 
    17901583#define DEBUG_DISPLAY_TASKS 3 
    1791 static const char * gui_debug_shortcut_enum(int change, int arg) { 
    1792     static const char* modes[]={ "None", "DmpRAM", "Page", "CmpProps"}; 
    1793         return gui_change_simple_enum(&conf.debug_shortcut_action,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1794 } 
    1795  
    1796 static const char * gui_debug_display_enum(int change, int arg) { 
    1797     static const char* modes[]={ "None", "Props", "Params", "Tasks"}; 
    1798         return gui_change_simple_enum(&conf.debug_display,change,modes,sizeof(modes)/sizeof(modes[0])); 
    1799 } 
    18001584 
    18011585static void gui_debug_shortcut(void) { 
     
    20081792 
    20091793#ifdef CAM_DISP_ALT_TEXT 
    2010  // draw_txt_string(20, 14, "<ALT>", MAKE_COLOR(COLOR_ALT_BG, COLOR_FG)); 
    2011     draw_txt_string(20, 14, "<ALT>", MAKE_COLOR(COLOR_RED, COLOR_WHITE)); 
     1794    draw_txt_string(20, 14, "<ALT>", MAKE_COLOR(COLOR_ALT_BG, COLOR_FG)); 
    20121795#endif 
    20131796 
     
    22982081        gui_menu_force_redraw(); 
    22992082        gui_fselect_force_redraw(); 
    2300         extern void console_force_redraw(); 
    2301         console_force_redraw(); 
    23022083#ifdef CAM_TOUCHSCREEN_UI 
    23032084        extern int redraw_buttons; 
     
    32193000} 
    32203001 
    3221 #ifdef OPT_EDGEOVERLAY 
    3222 static const char* gui_edge_pano_enum(int change, int arg) 
    3223 { 
    3224     static const char* modes[]={ "Off", "Right", "Down", "Left", "Up", "Free"}; 
    3225         return gui_change_simple_enum(&conf.edge_overlay_pano,change,modes,sizeof(modes)/sizeof(modes[0])); 
    3226 } 
    3227 #endif 
    3228  
    32293002#ifdef OPT_DEBUGGING 
    32303003 
  • branches/philmoz/core/gui_batt.c

    r1347 r1356  
    4545 
    4646    int perc = get_batt_perc(); 
    47      
     47 
     48#if defined(CAM_USE_COLORED_ICONS) 
     49 
    4850    draw_get_icon_colors(); 
    4951 
     
    6567    draw_filled_rect(xx+29-(25*perc/100),    yy+6,     xx+29,   yy+9,  MAKE_COLOR(cl2, cl2)); 
    6668    draw_filled_rect(xx+29-(25*perc/100),    yy+3,     xx+29,   yy+5,  MAKE_COLOR(cl3, cl3)); 
     69 
     70#else 
     71 
     72    color cl = (perc<=20)?conf.osd_color_warn:(conf.batt_icon_color&0xFF); 
     73 
     74    // battery icon 
     75    draw_rect(xx+3-1,    yy+1,     xx+3+25+1, yy+1+10,  cl); 
     76    draw_rect(xx+3-3,    yy+1+2,   xx+3-2,    yy+1+8,   cl); 
     77    draw_vline(xx+3-4,    yy+1+2-1, 8,   COLOR_BLACK);  // l 
     78    draw_hline(xx+3-2,    yy+1-1,   29,  COLOR_BLACK);  // t 
     79    draw_hline(xx+3-2,    yy+1+11,  29,  COLOR_BLACK);  // b 
     80    draw_vline(xx+3+25+2, yy+1-1,   11,  COLOR_BLACK);  // r 
     81 
     82    // battery fill 
     83    x = xx+3+1+25-(perc/4); 
     84    if (x<=xx+3) x=xx+3+1; 
     85    if (x>xx+3+25+1) x=xx+3+25+1; 
     86    draw_filled_rect(xx+3, yy+1+1, x-1, yy+1+9, MAKE_COLOR(COLOR_TRANSPARENT, COLOR_BLACK)); 
     87    draw_filled_rect(x, yy+1+1, xx+3+25, yy+1+9, MAKE_COLOR(cl, cl)); 
     88 
     89#endif 
    6790} 
    6891 
  • branches/philmoz/core/gui_draw.c

    r1346 r1356  
    579579 
    580580//------------------------------------------------------------------- 
     581     
     582#if defined(CAM_USE_COLORED_ICONS) 
     583 
    581584// Colors for icons 
    582585// 3 shades for each color 
     
    601604    } 
    602605} 
     606 
     607#endif 
  • branches/philmoz/core/gui_draw.h

    r1346 r1356  
    372372#elif CAM_BITMAP_PALETTE==7 
    373373 
    374 // Used by :- G12, S95, SX130IS, SX30 
     374// Used by :- S95, SX130IS 
    375375 
    376376#define COLOR_WHITE         0x01 
     
    572572#elif CAM_BITMAP_PALETTE==12 
    573573 
    574 // Used by :- IXUS310_ELPH500HS 
     574// Used by :- G12, SX30, IXUS310_ELPH500HS 
    575575 
    576576// Default Canon colors 
    577577#define COLOR_WHITE         0x01 
    578 #define COLOR_GREY          0x1a 
    579 #define COLOR_GREY_MED      0x16 
     578#define COLOR_GREY_DK       0x1a 
     579#define COLOR_GREY          0x16 
    580580#define COLOR_GREY_LT       0x0E 
    581581#undef SCREEN_COLOR 
     
    598598 
    599599#define COLOR_CYAN          COLOR_BLUE_LT 
    600 #define COLOR_BG            COLOR_GREY 
     600#define COLOR_BG            COLOR_GREY_DK 
    601601#define COLOR_FG            COLOR_WHITE 
    602602#define COLOR_SELECTED_BG   COLOR_GREY_LT 
     
    606606#define COLOR_SPLASH_RED    COLOR_RED_DK 
    607607#define COLOR_SPLASH_PINK   COLOR_RED_LT 
    608 #define COLOR_SPLASH_GREY   COLOR_GREY_MED 
     608#define COLOR_SPLASH_GREY   COLOR_GREY_LT 
    609609 
    610610#define COLOR_HISTO_R       COLOR_RED 
     
    634634#define COLOR_ICON_REC_YELLOW_DK        COLOR_YELLOW_DK 
    635635#define COLOR_ICON_REC_YELLOW_LT        COLOR_YELLOW_LT 
    636 #define COLOR_ICON_REC_GREY                     COLOR_GREY_MED 
    637 #define COLOR_ICON_REC_GREY_DK          COLOR_GREY 
     636#define COLOR_ICON_REC_GREY                     COLOR_GREY 
     637#define COLOR_ICON_REC_GREY_DK          COLOR_GREY_DK 
    638638#define COLOR_ICON_REC_GREY_LT          COLOR_GREY_LT 
    639639 
     
    727727extern void draw_ellipse(coord xc, coord yc, unsigned int a, unsigned int b, color cl); 
    728728extern void draw_filled_ellipse(coord xc, coord yc, unsigned int a, unsigned int b, color cl); 
    729  
     729     
     730#if defined(CAM_USE_COLORED_ICONS) 
    730731extern void draw_get_icon_colors(); 
    731732extern color icon_green[3], icon_red[3], icon_yellow[3], icon_grey[3]; 
     733#endif 
    732734 
    733735#if CAM_USES_ASPECT_CORRECTION //nandoide sept-2009 
  • branches/philmoz/core/gui_menu.c

    r1320 r1356  
    260260        else if (kbd_is_key_pressed(KEY_ZOOM_OUT)) c=3; 
    261261        else c=1; 
    262         ((const char* (*)(int change, int arg))(curr_menu->menu[gui_menu_curr_item].value))(c*direction, curr_menu->menu[gui_menu_curr_item].arg); 
     262        if ((curr_menu->menu[gui_menu_curr_item].type & MENUITEM_MASK) == MENUITEM_ENUM) 
     263        { 
     264            ((const char* (*)(int change, int arg))(curr_menu->menu[gui_menu_curr_item].value))(c*direction, curr_menu->menu[gui_menu_curr_item].arg); 
     265        } 
     266        else 
     267        { 
     268            extern const char* gui_change_enum2(const CMenuItem *menu_item, int change); 
     269            gui_change_enum2(&curr_menu->menu[gui_menu_curr_item], c*direction); 
     270        } 
    263271    } 
    264272 
     
    423431                        break; 
    424432                    case MENUITEM_ENUM: 
     433                    case MENUITEM_ENUM2: 
    425434                        update_enum_value(-1); 
    426435                        break; 
     
    444453                        break; 
    445454                    case MENUITEM_ENUM: 
     455                    case MENUITEM_ENUM2: 
    446456                        update_enum_value(1); 
    447457                        break; 
     
    492502                        break; 
    493503                    case MENUITEM_ENUM: 
     504                    case MENUITEM_ENUM2: 
    494505                        update_enum_value(1); 
    495506                        gui_menu_redraw=1; 
     
    743754                gui_menu_draw_value(ch, len_enum); 
    744755                break; 
     756            case MENUITEM_ENUM2: 
     757                if (curr_menu->menu[imenu].value) 
     758                { 
     759                    extern const char* gui_change_enum2(const CMenuItem *menu_item, int change); 
     760                    ch = gui_change_enum2(&curr_menu->menu[imenu], 0); 
     761                } 
     762                gui_menu_draw_value(ch, len_enum); 
     763                break; 
    745764            } 
    746765        } 
  • branches/philmoz/core/gui_menu.h

    r1320 r1356  
    1414#define MENUITEM_COLOR_BG       9 
    1515#define MENUITEM_COLOR_FG       10 
     16#define MENUITEM_ENUM2          11 
    1617 
    1718#define MENUITEM_F_MASK         0x00f0 
     
    3132typedef struct { 
    3233    char                                symbol; 
     34    char                opt_len; 
     35    short               type; 
    3336    int                 text; 
    34     int                 type; 
    3537    int                 *value; 
    3638    int                 arg; 
     
    4446} CMenu; 
    4547 
     48// Menu item constructor macros 
     49#define MENU_ITEM(sym, txt, typ, val, arg)  { (char)sym, 0, (short)typ, (int)txt, (int*)val, (int)arg } 
     50#define MENU_ENUM2(sym, txt, val, arg)      { (char)sym, sizeof(arg)/sizeof(arg[0]), MENUITEM_ENUM2, (int)txt, (int*)val, (int)arg } 
     51#define MENU_ENUM2a(sym, txt, val, arg, num){ (char)sym, (char)num, MENUITEM_ENUM2, (int)txt, (int*)val, (int)arg } 
    4652 
    4753//------------------------------------------------------------------- 
  • branches/philmoz/core/gui_space.c

    r1346 r1356  
    9999    space_color(); 
    100100     
     101#if defined(CAM_USE_COLORED_ICONS) 
     102 
    101103    draw_get_icon_colors(); 
    102104 
     
    134136    draw_rect(xx+9,         yy+4,   xx+28,   yy+13,  cl1); 
    135137    draw_filled_rect(xx+27-(17*perc/100),      yy+5,       xx+27,     yy+12,   MAKE_COLOR(cl2, cl2)); 
     138 
     139#else 
     140 
     141#define LE  23 
     142#define WI  15 
     143 
     144    draw_hline(xx+5,     yy,      LE-5,     COLOR_BLACK);          // outer top 
     145    draw_hline(xx+6,     yy+1,    LE-7,     cl);                   // inner top 
     146    draw_vline(xx,       yy+5,    WI-5,     COLOR_BLACK);          // outer left 
     147    draw_vline(xx+1,     yy+6,    WI-7,     cl);                   // inner left 
     148    draw_hline(xx,       yy+WI,   LE,       COLOR_BLACK);          // outer bottom 
     149    draw_hline(xx+1,     yy+WI-1, LE-2,     cl);                   // inner bottom 
     150    draw_vline(xx+LE,    yy,      WI,       COLOR_BLACK);          // outer right 
     151    draw_vline(xx+LE-1,  yy+1,    WI-2,     cl);                   // inner right 
     152    draw_line(xx+5,      yy,      xx,       yy+5,  COLOR_BLACK);   // edge 
     153    draw_line(xx+5,      yy+1,    xx+1,     yy+5,  cl);            // edge 
     154    draw_line(xx+6,      yy+1,    xx+1,     yy+6,  cl);            // edge 
     155 
     156    // memory fill 
     157    x = LE - (perc*(LE-3)/100) - 2; 
     158    if (x>5) draw_hline(xx+6,      yy+2,     x-6,     COLOR_BLACK); 
     159    if (x>2) draw_hline(xx+x+1,    yy+2,     LE-x-3,  cl); 
     160    else     draw_hline(xx+4,      yy+2,     LE-6,    cl); 
     161    for(i=3; i<7; i++) {                                                   //          /--------------| 
     162        if (x>7-i) draw_pixel(xx+8-i,     yy+i,     COLOR_BLACK);          //        /  1st for loop  | 
     163        if (x>7-i) draw_pixel(xx+x,       yy+i,     COLOR_BLACK);          //      /__________________| 
     164        draw_hline(xx+x+1, yy+i, LE-x-3, cl);                              //     |                   | 
     165    }                                                                      //     |     2nd for loop  | 
     166    for(i=7; i<WI-2; i++) {                                                //     |                   | 
     167        if (x>1) draw_pixel(xx+2, yy+i, COLOR_BLACK);                      //     |-------------------| 
     168        if (x>1) draw_pixel(xx+x, yy+i, COLOR_BLACK); 
     169        draw_hline(xx+x+1, yy+i, LE-x-3, cl); 
     170    } 
     171    if (x>1) draw_hline(xx+2,      yy+WI-2,    x-2,     COLOR_BLACK); 
     172    draw_hline(xx+x+1,             yy+WI-2,    LE-x-3,  cl); 
     173 
     174#endif 
    136175} 
    137176 
  • branches/philmoz/core/luascript.c

    r1321 r1356  
    15741574} 
    15751575 
     1576static int luaCB_get_config_value( lua_State* L ) { 
     1577    unsigned int argc = lua_gettop(L); 
     1578    unsigned int id, i; 
     1579    int ret = 1; 
     1580    tConfigVal configVal; 
     1581     
     1582    if( argc>=1 ) { 
     1583        id = luaL_checknumber(L, 1); 
     1584        switch( conf_getValue(id, &configVal) ) { 
     1585            case CONF_VALUE: 
     1586                lua_pushnumber(L, configVal.numb); 
     1587            break; 
     1588            case CONF_INT_PTR: 
     1589                lua_createtable(L, 0, configVal.numb); 
     1590                for( i=0; i<configVal.numb; i++ ) { 
     1591                    lua_pushinteger(L, configVal.pInt[i]); 
     1592                    lua_rawseti(L, -2, i+1);  //t[i+1]=configVal.pInt[i] 
     1593                } 
     1594            break; 
     1595            case CONF_CHAR_PTR: 
     1596                lua_pushstring(L, configVal.str); 
     1597            break; 
     1598            case CONF_OSD_POS_PTR: 
     1599                lua_pushnumber(L, configVal.pos.x); 
     1600                lua_pushnumber(L, configVal.pos.y); ret++; 
     1601            break; 
     1602            default: 
     1603                if( argc>=2) { //Default 
     1604                    ret = argc-1; 
     1605                } else { 
     1606                    lua_pushnil(L); 
     1607                } 
     1608            break; 
     1609        } 
     1610    } else { 
     1611        lua_pushnil(L); 
     1612    } 
     1613    return ret; 
     1614} 
     1615 
     1616static int luaCB_set_config_value( lua_State* L ) { 
     1617    unsigned int argc = lua_gettop(L); 
     1618    unsigned int id, i, j; 
     1619    tConfigVal configVal = {0,0,0,0};  //initialize isXXX 
     1620     
     1621    if( argc>=2 ) { 
     1622        id = luaL_checknumber(L, 1); 
     1623        for( i=2; i<=argc; i++) { 
     1624            switch( lua_type(L, i) ) { 
     1625                case LUA_TNUMBER: 
     1626                    if( !configVal.isNumb ) { 
     1627                        configVal.numb = luaL_checknumber(L, i); 
     1628                        configVal.isNumb++; 
     1629                    } 
     1630                    switch( configVal.isPos ) { 
     1631                        case 0: configVal.pos.x = luaL_checknumber(L, i); configVal.isPos++; break; 
     1632                        case 1: configVal.pos.y = luaL_checknumber(L, i); configVal.isPos++; break; 
     1633                    } 
     1634                break; 
     1635                case LUA_TSTRING: 
     1636                    if( !configVal.isStr ) { 
     1637                        configVal.str = (char*)luaL_checkstring(L, i); 
     1638                        configVal.isStr++; 
     1639                    } 
     1640                break; 
     1641                case LUA_TTABLE: 
     1642                    if( !configVal.isPInt ) { 
     1643                        configVal.numb = lua_objlen(L, i); 
     1644                        if( configVal.pInt ) { 
     1645                            free(configVal.pInt); 
     1646                            configVal.pInt = NULL; 
     1647                        } 
     1648                        configVal.pInt = malloc(configVal.numb*sizeof(int)); 
     1649                        if( configVal.pInt ) { 
     1650                            for( j=1; j<=configVal.numb; j++) { 
     1651                                lua_rawgeti(L, i, j); 
     1652                                configVal.pInt[j-1] = lua_tointeger(L, -1); 
     1653                                lua_pop(L, 1); 
     1654                            } 
     1655                        } 
     1656                        configVal.isPInt++; 
     1657                    } 
     1658                break; 
     1659            } 
     1660        } 
     1661        lua_pushboolean(L, conf_setValue(id, configVal)); 
     1662        if( configVal.pInt ) { 
     1663            free(configVal.pInt); 
     1664            configVal.pInt = NULL; 
     1665        } 
     1666    } else lua_pushboolean(L, 0); 
     1667    return 1; 
     1668} 
    15761669#ifdef CAM_CHDK_PTP 
    15771670/* 
     
    18771970#endif 
    18781971   FUNC(reboot) 
     1972   FUNC(get_config_value) 
     1973   FUNC(set_config_value) 
    18791974#ifdef CAM_CHDK_PTP 
    18801975   FUNC(read_usb_msg) 
  • branches/philmoz/include/camera.h

    r1346 r1356  
    185185                                                // requires load_chdk_palette() and vid_get_bitmap_active_palette() to be defined 
    186186                                                // correctly for the camera along with 
     187#undef CAM_USE_COLORED_ICONS                    // If the color palette contains enough shades of red, green, yellow and grey 
     188                                                // defined then enable this use the better icons (from CHDK-DE). See gui_batt.c 
     189                                                // and gui_space.c. 
    187190 
    188191//---------------------------------------------------------- 
  • branches/philmoz/include/conf.h

    r1346 r1356  
    66 
    77#define USER_MENU_ITEMS 14 
     8#define CONF_STR_LEN        100 
     9 
     10#define CONF_EMPTY          0 
     11#define CONF_VALUE          1 
     12#define CONF_VALUE_PTR      2 
     13#define CONF_INT_PTR        3 
     14#define CONF_CHAR_PTR       4 
     15#define CONF_OSD_POS_PTR    5 
    816 
    917typedef struct { 
    1018    unsigned short  x, y; 
    1119} OSD_pos; 
     20 
     21typedef struct { 
     22    int isNumb, isStr, isPInt, isPos; 
     23    int numb; 
     24    char* str; 
     25    int* pInt; 
     26    OSD_pos pos; 
     27} tConfigVal; 
    1228 
    1329typedef struct { 
     
    319335extern void conf_change_dng(void); 
    320336extern void conf_update_prevent_shutdown(void); 
     337extern int conf_getValue(unsigned short id, tConfigVal* configVal); 
     338extern int conf_setValue(unsigned short id, tConfigVal configVal); 
    321339 
    322340// reyalp: putting these in conf, since the conf values are lookups for them 
  • branches/philmoz/lib/ubasic/camera_functions.c

    r1036 r1356  
    571571        return 1; 
    572572} 
     573int get_config_value(int id, int v) 
     574{ 
     575    printf("*** get config value %d def: %d ***\n",id, v); 
     576} 
     577void set_config_value(int id, int v) 
     578{ 
     579    printf("*** set config value %d %d ***\n",id, v); 
     580} 
     581 
    573582void reboot(const char *filename)  
    574583{ 
    575584    printf("*** reboot %s ***\n",filename?filename:"NULL"); 
    576585} 
     586 
    577587#endif 
  • branches/philmoz/lib/ubasic/tokenizer.c

    r944 r1356  
    148148  {"get_zoom",                TOKENIZER_GET_ZOOM}, 
    149149  {"get_exp_count",           TOKENIZER_GET_EXP_COUNT}, 
     150  {"get_config_value",        TOKENIZER_GET_CONFIG_VALUE}, 
    150151 
    151152 
     
    187188  {"set_zoom",                TOKENIZER_SET_ZOOM}, 
    188189  {"set_record",              TOKENIZER_SET_RECORD}, 
     190  {"set_config_value",        TOKENIZER_SET_CONFIG_VALUE}, 
    189191   
    190192   
  • branches/philmoz/lib/ubasic/tokenizer.h

    r944 r1356  
    198198  TOKENIZER_IS_CAPTURE_MODE_VALID, 
    199199  TOKENIZER_REBOOT, 
     200  TOKENIZER_GET_CONFIG_VALUE, 
     201  TOKENIZER_SET_CONFIG_VALUE, 
    200202   
    201203} ubasic_token; 
  • branches/philmoz/lib/ubasic/ubasic.c

    r1320 r1356  
    212212{ 
    213213  int r = 0; 
     214  tConfigVal configVal; 
    214215 
    215216  DEBUG_PRINTF("factor: token %d\n", tokenizer_token()); 
     
    535536        r = 1; 
    536537    break; 
     538case TOKENIZER_GET_CONFIG_VALUE: 
     539    accept(TOKENIZER_GET_CONFIG_VALUE); 
     540    int var1 = expr(); 
     541    int var2 = expr(); 
     542    if( conf_getValue(var1, &configVal) == CONF_VALUE) r = configVal.numb; else r = var2; 
     543    break; 
    537544  } 
    538545  default: 
     
    16871694} 
    16881695 
     1696static void set_config_value_statement() 
     1697{ 
     1698    int id, value; 
     1699    tConfigVal configVal = {0,0,0,0}; 
     1700     
     1701    accept(TOKENIZER_SET_CONFIG_VALUE); 
     1702    id = expr(); 
     1703    value = expr(); 
     1704    if( conf_getValue(id, &configVal) == CONF_VALUE ) { 
     1705        configVal.numb = value; 
     1706        configVal.isNumb = 1; 
     1707        conf_setValue(id, configVal); 
     1708    } 
     1709    accept_cr(); 
     1710} 
    16891711/*---------------------------------------------------------------------------*/ 
    16901712 
     
    17121734} 
    17131735 
     1736static void get_config_value_statement() 
     1737{ 
     1738    int var, var1, var2; 
     1739    tConfigVal configVal; 
     1740    accept(TOKENIZER_GET_CONFIG_VALUE); 
     1741    var = expr(); 
     1742    var1 = expr(); 
     1743    var2 = tokenizer_variable_num(); 
     1744    accept(TOKENIZER_VARIABLE); 
     1745    if( conf_getValue(var, &configVal) == CONF_VALUE ) { 
     1746        ubasic_set_variable(var2, configVal.numb); 
     1747    } else { 
     1748        ubasic_set_variable(var2, var1); 
     1749    } 
     1750    accept_cr(); 
     1751} 
    17141752static void on_off_statement(int token, void (*on)(void), void (*off)(void)) 
    17151753{ 
     
    22062244      break; 
    22072245 
     2246 case TOKENIZER_GET_CONFIG_VALUE: 
     2247    get_config_value_statement(); 
     2248 
     2249    break; 
     2250 
     2251  case TOKENIZER_SET_CONFIG_VALUE: 
     2252    set_config_value_statement(); 
     2253    break; 
     2254           
     2255 
    22082256  default: 
    22092257      DEBUG_PRINTF("ubasic.c: statement(): not implemented %d\n", token); 
  • branches/philmoz/makefile.inc

    r1333 r1356  
    247247#PLATFORM=a470 
    248248#PLATFORMSUB=101b 
     249 
     250#PLATFORM=a490 
     251#PLATFORMSUB=100d 
    249252 
    250253#PLATFORM=a490 
  • branches/philmoz/platform/a1100/kbd.c

    r1233 r1356  
    4848    { 2, KEY_ZOOM_OUT   , 0x00000080 }, 
    4949    { 2, KEY_SHOOT_FULL , 0x00000030 }, 
     50    { 2, KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    5051    { 2, KEY_SHOOT_HALF , 0x00000010 }, 
    5152    { 1, KEY_UP         , 0x00000100 }, 
  • branches/philmoz/platform/a2000/kbd.c

    r1031 r1356  
    4949        { 2, KEY_SET            , 0x00000100 },  
    5050        { 1, KEY_SHOOT_FULL     , 0xC0000000 }, 
     51    { 1, KEY_SHOOT_FULL_ONLY, 0x80000000 }, 
    5152        { 1, KEY_SHOOT_HALF     , 0x40000000 },  
    5253        { 2, KEY_ZOOM_IN        , 0x00000004 },  
  • branches/philmoz/platform/a410/kbd.c

    r1240 r1356  
    1212    { KEY_SET       , 0x00000100 }, 
    1313    { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
     14    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    1415    { KEY_SHOOT_HALF, 0x00000010 }, 
    1516//  { KEY_ZOOM_IN   , 0x00000001 }, // KEY_UP/KEY_ZOOM_IN 
  • branches/philmoz/platform/a430/kbd.c

    r1031 r1356  
    405405    { KEY_SET       , 0x00000100 }, 
    406406    { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
     407    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    407408    { KEY_SHOOT_HALF, 0x00000010 }, 
    408409//  { KEY_ZOOM_IN   , 0x00000001 }, // KEY_UP/KEY_ZOOM_IN 
  • branches/philmoz/platform/a450/kbd.c

    r1031 r1356  
    405405    { KEY_SET       , 0x00000100 }, 
    406406    { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
     407    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    407408    { KEY_SHOOT_HALF, 0x00000010 }, 
    408409//  { KEY_ZOOM_IN   , 0x00000001 }, // KEY_UP/KEY_ZOOM_IN 
  • branches/philmoz/platform/a460/kbd.c

    r1031 r1356  
    405405    { KEY_SET       , 0x00000100 }, 
    406406    { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
     407    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    407408    { KEY_SHOOT_HALF, 0x00000010 }, 
    408409//  { KEY_ZOOM_IN   , 0x00000001 }, // KEY_UP/KEY_ZOOM_IN 
  • branches/philmoz/platform/a470/kbd.c

    r1031 r1356  
    439439        { 2, KEY_SET            , 0x00000100 }, // 
    440440        { 2, KEY_SHOOT_FULL     , 0x00000030 },  
     441    { 2, KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    441442        { 2, KEY_SHOOT_HALF     , 0x00000010 },   
    442443        { 2, KEY_MENU           , 0x00000400 },  
  • branches/philmoz/platform/a480/kbd.c

    r1031 r1356  
    4848 
    4949        { 2, KEY_SHOOT_FULL     , 0x00000030 }, 
     50    { 2, KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    5051        { 2, KEY_SHOOT_HALF     , 0x00000010 }, 
    5152        { 2, KEY_UP             , 0x00000001 }, 
  • branches/philmoz/platform/a490/kbd.c

    r1205 r1356  
    4141    { 0, KEY_PRINT      , 0x00020000 }, // Playback 
    4242 
    43     { 2, KEY_SHOOT_FULL , 0x00000030 }, // ? 0x00000010(KEY_SHOOT_HALF) + 0x00000030 (KEY_SHOOT_FULL) 
     43    { 2, KEY_SHOOT_FULL , 0x00000030 }, // 0x00000010 (KEY_SHOOT_HALF) + 0x00000020 (KEY_SHOOT_FULL_ONLY) 
     44    { 2, KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    4445    { 2, KEY_SHOOT_HALF , 0x00000010 }, 
    4546     
  • branches/philmoz/platform/a490/sub/Makefile

    • Property svn:eol-style set to LF
  • branches/philmoz/platform/a495/kbd.c

    r1198 r1356  
    4141    { 0, KEY_PRINT      , 0x00020000 }, // Playback 
    4242 
    43     { 2, KEY_SHOOT_FULL , 0x00000030 }, // ? 0x00000010(KEY_SHOOT_HALF) + 0x00000030 (KEY_SHOOT_FULL) 
     43    { 2, KEY_SHOOT_FULL , 0x00000030 }, // 0x00000010 (KEY_SHOOT_HALF) + 0x00000030 (KEY_SHOOT_FULL_ONLY) 
     44    { 2, KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    4445    { 2, KEY_SHOOT_HALF , 0x00000010 }, 
    4546     
  • branches/philmoz/platform/a530/kbd.c

    r515 r1356  
    1111        { KEY_SET       , 0x00000100 }, //4056FF 
    1212        { KEY_SHOOT_FULL, 0x00000030 }, // 4057CF note 3 here! 
     13    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    1314        { KEY_SHOOT_HALF, 0x00000010 }, //4057EF 
    1415        { KEY_ZOOM_IN   , 0x00000040 }, //4057BF 
  • branches/philmoz/platform/a540/kbd.c

    r515 r1356  
    1414        { KEY_SET       , 0x00000100 }, 
    1515        { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
     16    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    1617        { KEY_SHOOT_HALF, 0x00000010 }, 
    1718        { KEY_ZOOM_IN   , 0x00000040 }, 
  • branches/philmoz/platform/a550/kbd.c

    r1031 r1356  
    473473                {2, KEY_SET, 0x00000100 }, //4056FF 
    474474                {2, KEY_SHOOT_FULL, 0x00000030 }, // 4057CF note 3 here! 
     475        {2, KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    475476                {2, KEY_SHOOT_HALF, 0x00000010 }, //4057EF 
    476477                {2, KEY_ZOOM_IN, 0x00000040 }, //4057BF 
  • branches/philmoz/platform/a560/kbd.c

    r1031 r1356  
    447447        {2, KEY_SET     , 0x00000100 }, 
    448448        {1, KEY_SHOOT_FULL, 0xC0000000 }, // note 3 here! 
     449    {1, KEY_SHOOT_FULL_ONLY, 0x80000000 }, 
    449450        {1, KEY_SHOOT_HALF, 0x40000000 }, 
    450451        {2, KEY_ZOOM_IN , 0x00000004 }, 
  • branches/philmoz/platform/a570/kbd.c

    r1031 r1356  
    448448        {2, KEY_SET     , 0x00000100 }, 
    449449        {1, KEY_SHOOT_FULL, 0xC0000000 }, // note 3 here! 
     450    {1, KEY_SHOOT_FULL_ONLY, 0x80000000 }, 
    450451        {1, KEY_SHOOT_HALF, 0x40000000 }, 
    451452        {2, KEY_ZOOM_IN , 0x00000004 }, 
  • branches/philmoz/platform/a580/kbd.c

    r1320 r1356  
    449449        { 2, KEY_SET            , 0x00000100 }, 
    450450        { 1, KEY_SHOOT_FULL     , 0xC0000000 }, 
    451 // not added to trunk yet 
    452 //        { 1, KEY_SHOOT_FULL_ONLY, 0x80000000 }, 
     451    { 1, KEY_SHOOT_FULL_ONLY, 0x80000000 }, 
    453452        { 1, KEY_SHOOT_HALF     , 0x40000000 }, 
    454453        { 2, KEY_ZOOM_IN        , 0x00000004 }, 
  • branches/philmoz/platform/a590/kbd.c

    r1031 r1356  
    442442        { 2, KEY_SET            , 0x00000100 },  
    443443        { 1, KEY_SHOOT_FULL     , 0xC0000000 },  
     444    { 1, KEY_SHOOT_FULL_ONLY, 0x80000000 }, 
    444445        { 1, KEY_SHOOT_HALF     , 0x40000000 },  
    445446        { 2, KEY_ZOOM_IN        , 0x00000004 },  
  • branches/philmoz/platform/a610/kbd.c

    r515 r1356  
    1111        { KEY_SET       , 0x00000100 }, 
    1212        { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
     13    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    1314        { KEY_SHOOT_HALF, 0x00000010 }, 
    1415        { KEY_ZOOM_IN   , 0x00000040 }, 
  • branches/philmoz/platform/a620/kbd.c

    r515 r1356  
    1111        { KEY_SET       , 0x00000100 }, 
    1212        { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
     13    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    1314        { KEY_SHOOT_HALF, 0x00000010 }, 
    1415        { KEY_ZOOM_IN   , 0x00000040 }, 
  • branches/philmoz/platform/a630/kbd.c

    r515 r1356  
    1111        { KEY_SET       , 0x00000100 }, 
    1212        { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
     13    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    1314        { KEY_SHOOT_HALF, 0x00000010 }, 
    1415        { KEY_ZOOM_IN   , 0x00000040 }, 
  • branches/philmoz/platform/a640/kbd.c

    r515 r1356  
    1111        { KEY_SET       , 0x00000100 }, 
    1212        { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
     13    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    1314        { KEY_SHOOT_HALF, 0x00000010 }, 
    1415        { KEY_ZOOM_IN   , 0x00000040 }, 
  • branches/philmoz/platform/a650/kbd.c

    r1031 r1356  
    454454        { 2, KEY_SET            , 0x00000100 },  
    455455        { 1, KEY_SHOOT_FULL     , 0xC0000000 }, 
     456    { 1, KEY_SHOOT_FULL_ONLY, 0x80000000 }, 
    456457        { 1, KEY_SHOOT_HALF     , 0x40000000 },  
    457458        { 2, KEY_ZOOM_IN        , 0x00000004 },  
  • branches/philmoz/platform/a700/kbd.c

    r515 r1356  
    1111        { KEY_SET       , 0x00000800 }, 
    1212        { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
     13    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    1314        { KEY_SHOOT_HALF, 0x00000010 }, 
    1415        { KEY_ZOOM_IN   , 0x00000040 }, 
  • branches/philmoz/platform/a710/kbd.c

    r515 r1356  
    1111        { KEY_SET       , 0x00000800 }, 
    1212        { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
     13    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    1314        { KEY_SHOOT_HALF, 0x00000010 }, 
    1415        { KEY_ZOOM_IN   , 0x00000040 }, 
  • branches/philmoz/platform/a720/kbd.c

    r1031 r1356  
    445445        { 2, KEY_SET            , 0x00000100 },  
    446446        { 1, KEY_SHOOT_FULL     , 0xC0000000 }, 
     447    { 1, KEY_SHOOT_FULL_ONLY, 0x80000000 }, 
    447448        { 1, KEY_SHOOT_HALF     , 0x40000000 },  
    448449        { 2, KEY_ZOOM_IN        , 0x00000004 },  
  • branches/philmoz/platform/d10/kbd.c

    r1031 r1356  
    422422        { 2, KEY_SET            , 0x00000100 }, 
    423423        { 2, KEY_SHOOT_FULL     , 0x00000003 }, 
     424    { 2, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    424425        { 2, KEY_SHOOT_HALF     , 0x00000001 },  
    425426        { 2, KEY_ZOOM_IN        , 0x00000004 }, 
  • branches/philmoz/platform/g10/kbd.c

    r1333 r1356  
    4343 
    4444static KeyMap keymap[] = { 
     45    { 0, KEY_SHOOT_FULL  ,0x00000003 }, // Found @0xffb0f7c0, levent 0x01 
     46    { 0, KEY_SHOOT_FULL_ONLY, 0x00000002 },      // http://chdk.setepontos.com/index.php?topic=1444.msg70223#msg70223 
    4547    { 0, KEY_SHOOT_HALF  ,0x00000001 }, // Found @0xffb0f7b4, levent 0x00 
    46     { 0, KEY_SHOOT_FULL  ,0x00000003 }, // Found @0xffb0f7c0, levent 0x01 
    4748         
    4849    { 1, KEY_ZOOM_OUT    ,0x00000008 }, // Found @0xffb0f82c, levent 0x03 
  • branches/philmoz/platform/g10/platform_camera.h

    r1333 r1356  
    132132        #define CAM_DETECT_SCREEN_ERASE 1                               // http://chdk.setepontos.com/index.php?topic=6705.msg71062#msg71062     
    133133 
     134    #define CAM_USE_COLORED_ICONS               1       // Enable using the CHDK-DE colored icons. 
    134135 
    135136//---------------------------------------------------------- 
  • branches/philmoz/platform/g11/kbd.c

    r1031 r1356  
    4141        { 0, KEY_SET            , 0x00000800 }, // g11 
    4242        { 2, KEY_SHOOT_FULL     , 0x00000003 }, // g11 
     43    { 2, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    4344        { 2, KEY_SHOOT_HALF     , 0x00000001 }, // g11 
    4445        { 0, KEY_ZOOM_IN        , 0x00000010 }, // g11 
  • branches/philmoz/platform/g12/platform_camera.h

    r1346 r1356  
    117117    #define CAM_LOAD_CUSTOM_COLORS              1       // Enable loading CHDK colors into the camera palette memory/hardware 
    118118    #define CHDK_COLOR_BASE                     0xB3    // Start color index for CHDK colors loaded into camera palette. 
     119    #define CAM_USE_COLORED_ICONS               1       // Enable using the CHDK-DE colored icons. 
    119120 
    120121//---------------------------------------------------------- 
  • branches/philmoz/platform/g7/kbd.c

    r1031 r1356  
    470470        { 1, KEY_SET            , 0x00020000 }, 
    471471        { 0, KEY_SHOOT_FULL     , 0xC0000000 }, 
     472    { 0, KEY_SHOOT_FULL_ONLY, 0x80000000 }, 
    472473        { 0, KEY_SHOOT_HALF     , 0x40000000 }, 
    473474        { 1, KEY_ZOOM_IN        , 0x00000010 }, 
  • branches/philmoz/platform/g9/kbd.c

    r1031 r1356  
    457457        { 1, KEY_SET            , 0x00020000 }, // g7 
    458458        { 0, KEY_SHOOT_FULL     , 0xC0000000 }, // g7 
     459    { 0, KEY_SHOOT_FULL_ONLY, 0x80000000 }, 
    459460        { 0, KEY_SHOOT_HALF     , 0x40000000 }, // g7 
    460461        { 1, KEY_ZOOM_IN        , 0x00000010 }, // g7 
  • branches/philmoz/platform/ixus100_sd780/kbd.c

    r1333 r1356  
    801801 
    802802        { 2, KEY_SHOOT_FULL     , 0x00001001 }, 
     803    { 2, KEY_SHOOT_FULL_ONLY, 0x00001000 }, 
    803804        { 2, KEY_SHOOT_HALF     , 0x00000001 }, 
    804805        { 2, KEY_ZOOM_IN        , 0x00004000 }, 
  • branches/philmoz/platform/ixus120_sd940/kbd.c

    r1340 r1356  
    4646 
    4747        { 2, KEY_SHOOT_FULL     , 0x00000300 }, 
     48    { 2, KEY_SHOOT_FULL_ONLY, 0x00000200 }, 
    4849        { 2, KEY_SHOOT_HALF     , 0x00000100 }, 
    4950        { 2, KEY_UP                     , 0x00000080 }, 
  • branches/philmoz/platform/ixus200_sd980/kbd.c

    r1212 r1356  
    5555 
    5656        { 2, KEY_SHOOT_FULL     , 0x00000300 }, 
     57    { 2, KEY_SHOOT_FULL_ONLY, 0x00000200 }, 
    5758        { 2, KEY_SHOOT_HALF     , 0x00000100 }, 
    5859 
  • branches/philmoz/platform/ixus300_sd4000/kbd.c

    r1320 r1356  
    286286    { 0, KEY_RIGHT      , 0x00000002 },    // finsig2 
    287287    { 1, KEY_SET        , 0x00000040 },    // finsig2 
    288     //{ 0, KEY_SHOOT_FULL , 0x00000800 }, 
    289288    { 0, KEY_SHOOT_FULL , 0x00000900 },    // 0x00000800(KEY_SHOOT_FULL) + 0x00000100 (KEY_SHOOT_HALF), ToDo: still not shure if correct (related to problems with shoot_full?), finsig2 
     289    { 0, KEY_SHOOT_FULL_ONLY , 0x00000800 }, 
    290290    { 0, KEY_SHOOT_HALF , 0x00000100 },    // finsig2 
    291291    { 1, KEY_ZOOM_IN    , 0x00000010 },    // finsig2 
  • branches/philmoz/platform/ixus310_elph500hs/platform_camera.h

    r1346 r1356  
    130130    #define CAM_LOAD_CUSTOM_COLORS              1       // Enable loading CHDK colors into the camera palette memory/hardware 
    131131    #define CHDK_COLOR_BASE                     0xB3    // Start color index for CHDK colors loaded into camera palette. 
     132    #define CAM_USE_COLORED_ICONS               1       // Enable using the CHDK-DE colored icons. 
    132133 
    133134//---------------------------------------------------------- 
  • branches/philmoz/platform/ixus40_sd300/kbd.c

    r955 r1356  
    699699        { KEY_RIGHT     , 0x00000100 }, 
    700700        { KEY_SET       , 0x00000200 }, 
    701         { KEY_SHOOT_FULL, 0x00000006 }, // note 3 here! 
     701        { KEY_SHOOT_FULL, 0x00000006 }, // note 6 here! 
     702    { KEY_SHOOT_FULL_ONLY, 0x00000004 }, 
    702703        { KEY_SHOOT_HALF, 0x00000002 }, 
    703704        { KEY_ZOOM_IN   , 0x00000008 }, 
  • branches/philmoz/platform/ixus50_sd400/kbd.c

    r515 r1356  
    282282        { KEY_RIGHT     , 0x00000100 }, 
    283283        { KEY_SET       , 0x00000200 }, 
    284         { KEY_SHOOT_FULL, 0x00000006 }, // note 3 here! 
     284        { KEY_SHOOT_FULL, 0x00000006 }, // note 6 here! 
     285    { KEY_SHOOT_FULL_ONLY, 0x00000004 }, 
    285286        { KEY_SHOOT_HALF, 0x00000002 }, 
    286287        { KEY_ZOOM_IN   , 0x00000008 }, 
  • branches/philmoz/platform/ixus55_sd450/kbd.c

    r1031 r1356  
    580580        {KEY_RIGHT   , 0x00000100 }, 
    581581        {KEY_SET     , 0x00000200 }, 
     582        {KEY_SHOOT_FULL, 0x00000006 }, 
     583        {KEY_SHOOT_FULL_ONLY, 0x00000004 }, 
    582584        {KEY_SHOOT_HALF, 0x00000002 }, 
    583         {KEY_SHOOT_FULL, 0x00000004 }, 
    584585        {KEY_ZOOM_IN , 0x00000008 }, 
    585586        {KEY_ZOOM_OUT, 0x00000010 }, 
  • branches/philmoz/platform/ixus60_sd600/kbd.c

    r955 r1356  
    346346        { KEY_SET       , 0x00000100 }, 
    347347        { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
     348    { KEY_SHOOT_FULL_ONLY, 0x00000020 },  
    348349        { KEY_SHOOT_HALF, 0x00000010 }, 
    349350        { KEY_ZOOM_IN   , 0x00000040 }, 
  • branches/philmoz/platform/ixus65_sd630/kbd.c

    r955 r1356  
    346346        { KEY_SET       , 0x00000100 }, 
    347347        { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
     348    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    348349        { KEY_SHOOT_HALF, 0x00000010 }, 
    349350        { KEY_ZOOM_IN   , 0x00000040 }, 
  • branches/philmoz/platform/ixus70_sd1000/kbd.c

    r1031 r1356  
    447447        {2, KEY_RIGHT   , 0x00000020 }, 
    448448        {2, KEY_SET     , 0x00000100 }, 
    449         {1, KEY_SHOOT_FULL, 0xC0000000 }, // note 3 here! 
     449        {1, KEY_SHOOT_FULL, 0xC0000000 },  
     450    {1, KEY_SHOOT_FULL_ONLY, 0x80000000 },  
    450451        {1, KEY_SHOOT_HALF, 0x40000000 }, 
    451452        {2, KEY_ZOOM_IN , 0x00000004 }, 
  • branches/philmoz/platform/ixus750_sd550/kbd.c

    r515 r1356  
    318318        {KEY_SET     , 0x00000200 }, 
    319319        {KEY_SHOOT_HALF, 0x00000002 }, 
    320         {KEY_SHOOT_FULL, 0x00000004 }, 
     320        {KEY_SHOOT_FULL, 0x00000006 }, // note 6 here 
     321        {KEY_SHOOT_FULL_ONLY, 0x00000004 }, 
    321322        {KEY_ZOOM_IN , 0x00000008 }, 
    322323        {KEY_ZOOM_OUT, 0x00000010 }, 
  • branches/philmoz/platform/ixus75_sd750/kbd.c

    r641 r1356  
    325325        {2, KEY_RIGHT   , 0x00000020 }, 
    326326        {2, KEY_SET     , 0x00000100 }, 
    327         {1, KEY_SHOOT_FULL, 0xC0000000 }, // note 3 here! 
     327        {1, KEY_SHOOT_FULL, 0xC0000000 }, 
     328    {1, KEY_SHOOT_FULL_ONLY, 0x80000000 }, 
    328329        {1, KEY_SHOOT_HALF, 0x40000000 }, 
    329330        {2, KEY_ZOOM_IN , 0x00000004 }, 
  • branches/philmoz/platform/ixus800_sd700/kbd.c

    r515 r1356  
    1111        { KEY_SET       , 0x00000100 }, 
    1212        { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
     13    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    1314        { KEY_SHOOT_HALF, 0x00000010 }, 
    1415        { KEY_ZOOM_IN   , 0x00000040 }, 
  • branches/philmoz/platform/ixus80_sd1100/kbd.c

    r569 r1356  
    350350        { 2, KEY_SET            , 0x00000100 }, 
    351351        { 2, KEY_SHOOT_FULL     , 0x00000003 }, 
     352    { 2, KEY_SHOOT_FULL_ONLY    , 0x00000002 }, 
    352353        { 2, KEY_SHOOT_HALF     , 0x00000001 }, 
    353354        { 2, KEY_ZOOM_IN        , 0x00000004 }, 
  • branches/philmoz/platform/ixus850_sd800/kbd.c

    r1031 r1356  
    447447        {2, KEY_RIGHT   , 0x00000020 }, 
    448448        {2, KEY_SET     , 0x00000100 }, 
    449         {1, KEY_SHOOT_FULL, 0xC0000000 }, // note 3 here! 
     449        {1, KEY_SHOOT_FULL, 0xC0000000 }, 
     450    {1, KEY_SHOOT_FULL_ONLY, 0x80000000 }, 
    450451        {1, KEY_SHOOT_HALF, 0x40000000 }, 
    451452        {2, KEY_ZOOM_IN , 0x00000004 }, 
  • branches/philmoz/platform/ixus85_sd770/kbd.c

    r1031 r1356  
    4545        { 2, KEY_SET            , 0x00000100 }, 
    4646        { 2, KEY_SHOOT_FULL     , 0x00000003 }, 
     47    { 2, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    4748        { 2, KEY_SHOOT_HALF     , 0x00000001 },  
    4849        { 2, KEY_ZOOM_IN        , 0x00000004 }, 
  • branches/philmoz/platform/ixus860_sd870/kbd.c

    r1031 r1356  
    465465        { 2, KEY_SET            , 0x00000100 },  
    466466        { 2, KEY_SHOOT_FULL     , 0x00000003 }, 
     467    { 2, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    467468        { 2, KEY_SHOOT_HALF     , 0x00000001 },  
    468469        { 2, KEY_ZOOM_IN        , 0x00000004 },  
  • branches/philmoz/platform/ixus870_sd880/kbd.c

    r1031 r1356  
    6565        // group, CHDK key      , mask 
    6666        { 2, KEY_SHOOT_FULL     , 0x00000003 }, 
     67    { 2, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    6768        { 2, KEY_SHOOT_HALF     , 0x00000001 }, 
    6869 
  • branches/philmoz/platform/ixus900_sd900/kbd.c

    r1031 r1356  
    306306    {2, KEY_SET           , 0x00000100}, 
    307307    {1, KEY_SHOOT_FULL    , 0xC0000000}, 
     308    {1, KEY_SHOOT_FULL_ONLY, 0x80000000}, 
    308309    {1, KEY_SHOOT_HALF    , 0x40000000}, 
    309310    {2, KEY_ZOOM_IN       , 0x00000004}, 
  • branches/philmoz/platform/ixus90_sd790/kbd.c

    r1031 r1356  
    455455        { 2, KEY_SET            , 0x00000100 },  
    456456        { 2, KEY_SHOOT_FULL     , 0x00000003 }, 
     457    { 2, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    457458        { 2, KEY_SHOOT_HALF     , 0x00000001 },  
    458459        { 2, KEY_ZOOM_IN        , 0x00000004 },  
  • branches/philmoz/platform/ixus950_sd850/kbd.c

    r1031 r1356  
    444444        {2, KEY_SET     , 0x00000100 }, 
    445445        {1, KEY_SHOOT_FULL, 0xC0000000 }, 
     446    {1, KEY_SHOOT_FULL_ONLY, 0x80000000 }, 
    446447        {1, KEY_SHOOT_HALF, 0x40000000 }, 
    447448        {2, KEY_ZOOM_IN , 0x00000004 }, 
  • branches/philmoz/platform/ixus95_sd1200/kbd.c

    r1031 r1356  
    447447    { 2, KEY_SET        , 0x00000100 }, 
    448448    { 2, KEY_SHOOT_FULL , 0x00000003 }, 
     449    { 2, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    449450    { 2, KEY_SHOOT_HALF , 0x00000001 }, 
    450451    { 2, KEY_ZOOM_IN    , 0x00000004 }, 
  • branches/philmoz/platform/ixus960_sd950/kbd.c

    r1031 r1356  
    456456        { 2, KEY_SET            , 0x00000100 },  
    457457        { 2, KEY_SHOOT_FULL     , 0x00000003 }, 
     458    { 2, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    458459        { 2, KEY_SHOOT_HALF     , 0x00000001 },  
    459460        { 2, KEY_ZOOM_IN        , 0x00000004 },  
  • branches/philmoz/platform/ixus970_sd890/kbd.c

    r1031 r1356  
    4545        { 2, KEY_SET            , 0x00000100 }, 
    4646        { 2, KEY_SHOOT_FULL     , 0x00000003 }, 
     47    { 2, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    4748        { 2, KEY_SHOOT_HALF     , 0x00000001 },  
    4849        { 2, KEY_ZOOM_IN        , 0x00000004 }, 
  • branches/philmoz/platform/ixus980_sd990/kbd.c

    r1031 r1356  
    421421        { 2, KEY_SET            , 0x00000100 }, 
    422422        { 2, KEY_SHOOT_FULL     , 0x00000003 }, 
     423    { 2, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    423424        { 2, KEY_SHOOT_HALF     , 0x00000001 },  
    424425        { 2, KEY_ZOOM_IN        , 0x00000004 }, 
  • branches/philmoz/platform/ixusizoom_sd30/kbd.c

    r621 r1356  
    310310        { KEY_SET       , 0x00000100 }, 
    311311        { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
     312    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    312313        { KEY_SHOOT_HALF, 0x00000010 }, 
    313314        { KEY_ZOOM_IN   , 0x00000040 }, 
  • branches/philmoz/platform/s2is/kbd.c

    r1031 r1356  
    502502        { 1, KEY_SET            , 0x00100000 }, 
    503503        { 0, KEY_SHOOT_FULL     , 0x00000003 }, 
     504    { 0, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    504505        { 0, KEY_SHOOT_HALF     , 0x00000001 }, 
    505506        { 1, KEY_ZOOM_IN        , 0x10000000 }, 
  • branches/philmoz/platform/s3is/kbd.c

    r1031 r1356  
    445445        { 1, KEY_SET            , 0x00100000 }, 
    446446        { 0, KEY_SHOOT_FULL     , 0x00000003 }, 
     447    { 0, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    447448        { 0, KEY_SHOOT_HALF     , 0x00000001 }, 
    448449        { 1, KEY_ZOOM_IN        , 0x10000000 }, 
  • branches/philmoz/platform/s5is/kbd.c

    r1031 r1356  
    9797//      { 0, KEY_M_SHOOT   , 0x00000004 }, // Switch to shoot mode, not defined in CHDK (negative? Default 0, 1 when switching) 
    9898//      { 0, KEY_SHOOT_FULL, 0x00000002 }, // Listed for completeness, this is the 'single' key. 
    99         { 0, KEY_SHOOT_FULL, 0x00000003 }, // This is SHOOT_FULL | SHOOT_HALF. 
     99        { 0, KEY_SHOOT_FULL, 0x00000003 }, // This is SHOOT_FULL_ONLY | SHOOT_HALF. 
     100    { 0, KEY_SHOOT_FULL_ONLY, 0x00000002 },  
    100101        { 0, KEY_SHOOT_HALF, 0x00000001 },  
    101102 
  • branches/philmoz/platform/s90/kbd.c

    r1031 r1356  
    4141        { 1, KEY_SET            , 0x00008000 }, 
    4242        { 0, KEY_SHOOT_FULL     , 0x00000300 }, 
     43    { 0, KEY_SHOOT_FULL_ONLY, 0x00000200 }, 
    4344        { 0, KEY_SHOOT_HALF     , 0x00000100 }, 
    4445        { 1, KEY_ZOOM_IN        , 0x00000010 }, 
  • branches/philmoz/platform/s95/kbd.c

    r1059 r1356  
    4040        { 1, KEY_SET            , 0x00008000 }, 
    4141        { 2, KEY_SHOOT_FULL     , 0x00000300 }, 
     42    { 2, KEY_SHOOT_FULL_ONLY, 0x00000200 }, 
    4243        { 2, KEY_SHOOT_HALF     , 0x00000100 }, 
    4344        { 1, KEY_ZOOM_IN        , 0x00000010 }, 
  • branches/philmoz/platform/s95/sub/100i/stubs_entry_2.S

    r1343 r1356  
    1 e// Note : This file generated by CHDK-PT. 
     1// Note : This file generated by CHDK-PT. 
    22#include "stubs_asm.h" 
    33#define NULL_STUB 0xFF8391E0 
  • branches/philmoz/platform/sx1/kbd.c

    r1031 r1356  
    4848 
    4949        { 0, KEY_SHOOT_FULL     , 0x00000003 }, 
     50    { 0, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    5051        { 0, KEY_SHOOT_HALF     , 0x00000001 }, 
    5152 
  • branches/philmoz/platform/sx10/kbd.c

    r1031 r1356  
    4848 
    4949        { 0, KEY_SHOOT_FULL     , 0x00000003 }, 
     50    { 0, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    5051        { 0, KEY_SHOOT_HALF     , 0x00000001 }, 
    5152 
  • branches/philmoz/platform/sx100is/kbd.c

    r596 r1356  
    5353 
    5454        { 0, KEY_SHOOT_FULL, 0x0000000C },  
     55    { 0, KEY_SHOOT_FULL_ONLY, 0x00000008 },  
    5556        { 0, KEY_SHOOT_HALF, 0x00000004 }, 
    5657 
  • branches/philmoz/platform/sx100is/platform_camera.h

    r1140 r1356  
    5555    #define DNG_EXT_FROM ".CR2" 
    5656    #define CAM_MULTIPART               1 
     57    #define CAM_EXT_TV_RANGE            1 
     58    #define CAM_DETECT_SCREEN_ERASE     1 
    5759//---------------------------------------------------------- 
    5860 
  • branches/philmoz/platform/sx100is/shooting.c

    r860 r1356  
    9191    160 x 120 (3 minutes at 15 fps) 
    9292 
    93 canon mode list FFE9E7EC in 100b 
     93canon mode list FFE9E7EC in 100b, ffe9e824 in 100c 
    9494*/ 
    9595static const CapturemodeMap modemap[] = { 
  • branches/philmoz/platform/sx100is/sub/100b/boot.c

    r691 r1356  
    3030        while (counter--) { asm("nop\n nop\n"); }; 
    3131}*/ 
     32 
     33void taskCreateHook(int *p) { //function taken from the ixus80 port, adapted of course 
     34 p-=16; 
     35 if (p[0]==0xffc98ee4)  p[0]=(int)exp_drv_task; 
     36}  
    3237 
    3338//#define DEBUG_LED 0xC02200C4 
     
    5560    for(i=0;i<canon_bss_len/4;i++) 
    5661        canon_bss_start[i]=0; 
     62 
     63    *(int*)0x1930=(int)taskCreateHook; //from ixus80 port 
     64    *(int*)0x1934=(int)taskCreateHook; //from ixus80 port (was taskCreateHook2...) 
    5765 
    5866    *(int*)0x2578= (*(int*)0xC02200B8)&1 ? 0x100000: 0x200000;  // replacement of sub_FFC12E38 
  • branches/philmoz/platform/sx100is/sub/100b/capt_seq.c

    r550 r1356  
    359359    ); 
    360360} //#fe 
     361 
     362 
     363void __attribute__((naked,noinline)) exp_drv_task(){ 
     364 asm volatile( 
     365"                STMFD   SP!, {R4-R8,LR}\n" 
     366"                SUB     SP, SP, #0x20\n" 
     367"                LDR     R8, =0xBB8\n" 
     368"                LDR     R7, =0x6D70\n" 
     369"                LDR     R5, =0x41350\n" 
     370"                MOV     R0, #0\n" 
     371"                ADD     R6, SP, #0x10\n" 
     372"                STR     R0, [SP,#0xC]\n" 
     373"loc_FFC98F04:\n" 
     374"                LDR     R0, [R7,#0x20]\n" 
     375"                MOV     R2, #0\n" 
     376"                ADD     R1, SP, #0x1C\n" 
     377"                BL      sub_FFC19658\n" 
     378"                LDR     R0, [SP,#0xC]\n" 
     379"                CMP     R0, #1\n" 
     380"                BNE     loc_FFC98F4C\n" 
     381"                LDR     R0, [SP,#0x1C]\n" 
     382"                LDR     R0, [R0]\n" 
     383"                CMP     R0, #0x13\n" 
     384"                CMPNE   R0, #0x14\n" 
     385"                CMPNE   R0, #0x15\n" 
     386"                BEQ     loc_FFC990CC\n" 
     387"                CMP     R0, #0x26\n" 
     388"                BEQ     loc_FFC99038\n" 
     389"                ADD     R1, SP, #0xC\n" 
     390"                MOV     R0, #0\n" 
     391"                BL      sub_FFC98E94\n" 
     392"loc_FFC98F4C:\n" 
     393"                LDR     R0, [SP,#0x1C]\n" 
     394"                LDR     R1, [R0]\n" 
     395"                CMP     R1, #0x2B\n" 
     396"                BNE     loc_FFC98F7C\n" 
     397"                LDR     R0, [SP,#0x1C]\n" 
     398"                BL      sub_FFC9A1C4\n" 
     399"                LDR     R0, [R7,#0x1C]\n" 
     400"                MOV     R1, #1\n" 
     401"                BL      sub_FFC193D4\n" 
     402"                BL      sub_FFC0BE48\n" 
     403"                ADD     SP, SP, #0x20\n" 
     404"                LDMFD   SP!, {R4-R8,PC}\n" 
     405"loc_FFC98F7C:\n" 
     406"                CMP     R1, #0x2A\n" 
     407"                BNE     loc_FFC98F98\n" 
     408"                LDR     R2, [R0,#0x88]!\n" 
     409"                LDR     R1, [R0,#4]\n" 
     410"                MOV     R0, R1\n" 
     411"                BLX     R2\n" 
     412"                B       loc_FFC99530\n" 
     413"loc_FFC98F98:\n" 
     414"                CMP     R1, #0x24\n" 
     415"                BNE     loc_FFC98FE8\n" 
     416"                LDR     R0, [R7,#0x1C]\n" 
     417"                MOV     R1, #0x80\n" 
     418"                BL      sub_FFC19408\n" 
     419"                LDR     R0, =0xFFC95980\n" 
     420"                MOV     R1, #0x80\n" 
     421"                BL      sub_FFD0A4E8\n" 
     422"                LDR     R0, [R7,#0x1C]\n" 
     423"                MOV     R2, R8\n" 
     424"                MOV     R1, #0x80\n" 
     425"                BL      sub_FFC1930C\n" 
     426"                TST     R0, #1\n" 
     427"                LDRNE   R1, =0xD07\n" 
     428"                BNE     loc_FFC990A8\n" 
     429"loc_FFC98FD4:\n" 
     430"                LDR     R1, [SP,#0x1C]\n" 
     431"                LDR     R0, [R1,#0x8C]\n" 
     432"                LDR     R1, [R1,#0x88]\n" 
     433"                BLX     R1\n" 
     434"                B       loc_FFC99530\n" 
     435"loc_FFC98FE8:\n" 
     436"                CMP     R1, #0x25\n" 
     437"                BNE     loc_FFC99030\n" 
     438"                ADD     R1, SP, #0xC\n" 
     439"                BL      sub_FFC98E94\n" 
     440"                LDR     R0, [R7,#0x1C]\n" 
     441"                MOV     R1, #0x100\n" 
     442"                BL      sub_FFC19408\n" 
     443"                MOV     R1, #0x100\n" 
     444"                LDR     R0, =0xFFC95990\n" 
     445"                BL      sub_FFD0ACA8\n" 
     446"                LDR     R0, [R7,#0x1C]\n" 
     447"                MOV     R2, R8\n" 
     448"                MOV     R1, #0x100\n" 
     449"                BL      sub_FFC1930C\n" 
     450"                TST     R0, #1\n" 
     451"                BEQ     loc_FFC98FD4\n" 
     452"                LDR     R1, =0xD11\n" 
     453"                B       loc_FFC990A8\n" 
     454"loc_FFC99030:\n" 
     455"                CMP     R1, #0x26\n" 
     456"                BNE     loc_FFC99048\n" 
     457"loc_FFC99038:\n" 
     458"                LDR     R0, [SP,#0x1C]\n" 
     459"                ADD     R1, SP, #0xC\n" 
     460"                BL      sub_FFC98E94\n" 
     461"                B       loc_FFC98FD4\n" 
     462"loc_FFC99048:\n" 
     463"                CMP     R1, #0x27\n" 
     464"                CMPNE   R1, #0x28\n" 
     465"                BNE     loc_FFC990B4\n" 
     466"                ADD     R1, SP, #0xC\n" 
     467"                BL      sub_FFC98E94\n" 
     468"                LDR     R4, [SP,#0x1C]\n" 
     469"                LDR     R0, [R7,#0x1C]\n" 
     470"                MOV     R1, #0x40\n" 
     471"                BL      sub_FFC19408\n" 
     472"                LDR     R0, [R4]\n" 
     473"                MOV     R1, #0x40\n" 
     474"                CMP     R0, #0x27\n" 
     475"                LDR     R0, =0xFFC959F4\n" 
     476"                BNE     loc_FFC99088\n" 
     477"                BL      sub_FFD0A588\n" 
     478"                B       loc_FFC9908C\n" 
     479"loc_FFC99088:\n" 
     480"                BL      sub_FFD0A614\n" 
     481"loc_FFC9908C:\n" 
     482"                LDR     R0, [R7,#0x1C]\n" 
     483"                MOV     R2, R8\n" 
     484"                MOV     R1, #0x40\n" 
     485"                BL      sub_FFC1930C\n" 
     486"                TST     R0, #1\n" 
     487"                BEQ     loc_FFC98FD4\n" 
     488"                LDR     R1, =0xD1F\n" 
     489"loc_FFC990A8:\n" 
     490"                LDR     R0, =0xFFC96090\n" 
     491"                BL      sub_FFC0C090\n" 
     492"                B       loc_FFC98FD4\n" 
     493"loc_FFC990B4:\n" 
     494"                CMP     R1, #0x29\n" 
     495"                BNE     loc_FFC990CC\n" 
     496"                BL      sub_FFC77FB8\n" 
     497"                BL      sub_FFC78D38\n" 
     498"                BL      sub_FFC787F8\n" 
     499"                B       loc_FFC98FD4\n" 
     500"loc_FFC990CC:\n" 
     501"                LDR     R0, [SP,#0x1C]\n" 
     502"                MOV     R4, #1\n" 
     503"                LDR     R1, [R0]\n" 
     504"                CMP     R1, #0x11\n" 
     505"                CMPNE   R1, #0x12\n" 
     506"                BNE     loc_FFC9913C\n" 
     507"                LDR     R1, [R0,#0x7C]\n" 
     508"                ADD     R1, R1, R1,LSL#1\n" 
     509"                ADD     R1, R0, R1,LSL#2\n" 
     510"                SUB     R1, R1, #8\n" 
     511"                LDMIA   R1, {R2-R4}\n" 
     512"                STMIA   R6, {R2-R4}\n" 
     513"                BL      sub_FFC97A10\n" 
     514"                LDR     R0, [SP,#0x1C]\n" 
     515"                LDR     R1, [R0,#0x7C]\n" 
     516"                LDR     R3, [R0,#0x88]\n" 
     517"                LDR     R2, [R0,#0x8C]\n" 
     518"                ADD     R0, R0, #4\n" 
     519"                BLX     R3\n" 
     520"                LDR     R0, [SP,#0x1C]\n" 
     521"                BL      sub_FFC9A598\n" 
     522"                LDR     R0, [SP,#0x1C]\n" 
     523"                LDR     R1, [R0,#0x7C]\n" 
     524"                LDR     R3, [R0,#0x90]\n" 
     525"                LDR     R2, [R0,#0x94]\n" 
     526"                ADD     R0, R0, #4\n" 
     527"                BLX     R3\n" 
     528"                B       loc_FFC99470\n" 
     529"loc_FFC9913C:\n" 
     530"                CMP     R1, #0x13\n" 
     531"                CMPNE   R1, #0x14\n" 
     532"                CMPNE   R1, #0x15\n" 
     533"                BNE     loc_FFC991F0\n" 
     534"                ADD     R3, SP, #0xC\n" 
     535"                MOV     R2, SP\n" 
     536"                ADD     R1, SP, #0x10\n" 
     537"                BL      sub_FFC97C58\n" 
     538"                CMP     R0, #1\n" 
     539"                MOV     R4, R0\n" 
     540"                CMPNE   R4, #5\n" 
     541"                BNE     loc_FFC9918C\n" 
     542"                LDR     R0, [SP,#0x1C]\n" 
     543"                MOV     R2, R4\n" 
     544"                LDR     R1, [R0,#0x7C]!\n" 
     545"                LDR     R12, [R0,#0xC]!\n" 
     546"                LDR     R3, [R0,#4]\n" 
     547"                MOV     R0, SP\n" 
     548"                BLX     R12\n" 
     549"                B       loc_FFC991C4\n" 
     550"loc_FFC9918C:\n" 
     551"                LDR     R0, [SP,#0x1C]\n" 
     552"                CMP     R4, #2\n" 
     553"                LDR     R3, [R0,#0x8C]\n" 
     554"                CMPNE   R4, #6\n" 
     555"                BNE     loc_FFC991D8\n" 
     556"                LDR     R12, [R0,#0x88]\n" 
     557"                MOV     R0, SP\n" 
     558"                MOV     R2, R4\n" 
     559"                MOV     R1, #1\n" 
     560"                BLX     R12\n" 
     561"                LDR     R0, [SP,#0x1C]\n" 
     562"                MOV     R2, SP\n" 
     563"                ADD     R1, SP, #0x10\n" 
     564"                BL      sub_FFC98BE0\n" 
     565"loc_FFC991C4:\n" 
     566"                LDR     R0, [SP,#0x1C]\n" 
     567"                LDR     R2, [SP,#0xC]\n" 
     568"                MOV     R1, R4\n" 
     569"                BL      sub_FFC98E34\n" 
     570"                B       loc_FFC99470\n" 
     571"loc_FFC991D8:\n" 
     572"                LDR     R1, [R0,#0x7C]\n" 
     573"                LDR     R12, [R0,#0x88]\n" 
     574"                ADD     R0, R0, #4\n" 
     575"                MOV     R2, R4\n" 
     576"                BLX     R12\n" 
     577"                B       loc_FFC99470\n" 
     578"loc_FFC991F0:\n" 
     579"                CMP     R1, #0x20\n" 
     580"                CMPNE   R1, #0x21\n" 
     581"                BNE     loc_FFC9923C\n" 
     582"                LDR     R1, [R0,#0x7C]\n" 
     583"                ADD     R1, R1, R1,LSL#1\n" 
     584"                ADD     R1, R0, R1,LSL#2\n" 
     585"                SUB     R1, R1, #8\n" 
     586"                LDMIA   R1, {R2-R4}\n" 
     587"                STMIA   R6, {R2-R4}\n" 
     588"                BL      sub_FFC96F94\n" 
     589"                LDR     R0, [SP,#0x1C]\n" 
     590"                LDR     R1, [R0,#0x7C]\n" 
     591"                LDR     R3, [R0,#0x88]\n" 
     592"                LDR     R2, [R0,#0x8C]\n" 
     593"                ADD     R0, R0, #4\n" 
     594"                BLX     R3\n" 
     595"                LDR     R0, [SP,#0x1C]\n" 
     596"                BL      sub_FFC97290\n" 
     597"                B       loc_FFC99470\n" 
     598"loc_FFC9923C:\n" 
     599"                ADD     R1, R0, #4\n" 
     600"                LDMIA   R1, {R2,R3,R12}\n" 
     601"                STMIA   R6, {R2,R3,R12}\n" 
     602"                LDR     R1, [R0]\n" 
     603"                CMP     R1, #0x23\n" 
     604"                ADDLS   PC, PC, R1,LSL#2\n" 
     605"                B       loc_FFC99450\n" 
     606"loc_FFC99258:\n" 
     607"                B       loc_FFC992E8\n" 
     608"loc_FFC9925C:\n" 
     609"                B       loc_FFC992E8\n" 
     610"loc_FFC99260:\n" 
     611"                B       loc_FFC99338\n" 
     612"loc_FFC99264:\n" 
     613"                B       loc_FFC99340\n" 
     614"loc_FFC99268:\n" 
     615"                B       loc_FFC99340\n" 
     616"loc_FFC9926C:\n" 
     617"                B       loc_FFC99340\n" 
     618"loc_FFC99270:\n" 
     619"                B       loc_FFC992E8\n" 
     620"loc_FFC99274:\n" 
     621"                B       loc_FFC99338\n" 
     622"loc_FFC99278:\n" 
     623"                B       loc_FFC99340\n" 
     624"loc_FFC9927C:\n" 
     625"                B       loc_FFC99340\n" 
     626"loc_FFC99280:\n" 
     627"                B       loc_FFC99358\n" 
     628"loc_FFC99284:\n" 
     629"                B       loc_FFC99358\n" 
     630"loc_FFC99288:\n" 
     631"                B       loc_FFC99444\n" 
     632"loc_FFC9928C:\n" 
     633"                B       loc_FFC9944C\n" 
     634"loc_FFC99290:\n" 
     635"                B       loc_FFC9944C\n" 
     636"loc_FFC99294:\n" 
     637"                B       loc_FFC9944C\n" 
     638"loc_FFC99298:\n" 
     639"                B       loc_FFC9944C\n" 
     640"loc_FFC9929C:\n" 
     641"                B       loc_FFC99450\n" 
     642"loc_FFC992A0:\n" 
     643"                B       loc_FFC99450\n" 
     644"loc_FFC992A4:\n" 
     645"                B       loc_FFC99450\n" 
     646"loc_FFC992A8:\n" 
     647"                B       loc_FFC99450\n" 
     648"loc_FFC992AC:\n" 
     649"                B       loc_FFC99450\n" 
     650"loc_FFC992B0:\n" 
     651"                B       loc_FFC99348\n" 
     652"loc_FFC992B4:\n" 
     653"                B       loc_FFC99350\n" 
     654"loc_FFC992B8:\n" 
     655"                B       loc_FFC99350\n" 
     656"loc_FFC992BC:\n" 
     657"                B       loc_FFC99364\n" 
     658"loc_FFC992C0:\n" 
     659"                B       loc_FFC9936C\n" 
     660"loc_FFC992C4:\n" 
     661"                B       loc_FFC9939C\n" 
     662"loc_FFC992C8:\n" 
     663"                B       loc_FFC993CC\n" 
     664"loc_FFC992CC:\n" 
     665"                B       loc_FFC993FC\n" 
     666"loc_FFC992D0:\n" 
     667"                B       loc_FFC9942C\n" 
     668"loc_FFC992D4:\n" 
     669"                B       loc_FFC9942C\n" 
     670"loc_FFC992D8:\n" 
     671"                B       loc_FFC99450\n" 
     672"loc_FFC992DC:\n" 
     673"                B       loc_FFC99450\n" 
     674"loc_FFC992E0:\n" 
     675"                B       loc_FFC99434\n" 
     676"loc_FFC992E4:\n" 
     677"                B       loc_FFC9943C\n" 
     678"loc_FFC992E8:\n" 
     679"                BL      sub_FFC95E78\n" 
     680"                B       loc_FFC99450\n" 
     681"loc_FFC99338:\n" 
     682"                BL      sub_FFC96100\n" 
     683"                B       loc_FFC99450\n" 
     684"loc_FFC99340:\n" 
     685"                BL      sub_FFC96304\n" 
     686"                B       loc_FFC99450\n" 
     687"loc_FFC99348:\n" 
     688"                BL      sub_FFC9656C\n" 
     689"                B       loc_FFC99450\n" 
     690"loc_FFC99350:\n" 
     691"                BL      sub_FFC96760\n" 
     692"                B       loc_FFC99450\n" 
     693"loc_FFC99358:\n" 
     694"                BL      sub_FFC969C4_my\n" //-> 
     695"                MOV     R4, #0\n" 
     696"                B       loc_FFC99450\n" 
     697"loc_FFC99364:\n" 
     698"                BL      sub_FFC96B00\n" 
     699"                B       loc_FFC99450\n" 
     700"loc_FFC9936C:\n" 
     701"                LDRH    R1, [R0,#4]\n" 
     702"                STRH    R1, [SP,#0x10]\n" 
     703"                LDRH    R1, [R5,#2]\n" 
     704"                STRH    R1, [SP,#0x12]\n" 
     705"                LDRH    R1, [R5,#4]\n" 
     706"                STRH    R1, [SP,#0x14]\n" 
     707"                LDRH    R1, [R5,#6]\n" 
     708"                STRH    R1, [SP,#0x16]\n" 
     709"                LDRH    R1, [R0,#0xC]\n" 
     710"                STRH    R1, [SP,#0x18]\n" 
     711"                BL      sub_FFC9A238\n" 
     712"                B       loc_FFC99450\n" 
     713"loc_FFC9939C:\n" 
     714"                LDRH    R1, [R0,#4]\n" 
     715"                STRH    R1, [SP,#0x10]\n" 
     716"                LDRH    R1, [R5,#2]\n" 
     717"                STRH    R1, [SP,#0x12]\n" 
     718"                LDRH    R1, [R5,#4]\n" 
     719"                STRH    R1, [SP,#0x14]\n" 
     720"                LDRH    R1, [R5,#6]\n" 
     721"                STRH    R1, [SP,#0x16]\n" 
     722"                LDRH    R1, [R5,#8]\n" 
     723"                STRH    R1, [SP,#0x18]\n" 
     724"                BL      sub_FFC9A3B4\n" 
     725"                B       loc_FFC99450\n" 
     726"loc_FFC993CC:\n" 
     727"                LDRH    R1, [R5]\n" 
     728"                STRH    R1, [SP,#0x10]\n" 
     729"                LDRH    R1, [R0,#6]\n" 
     730"                STRH    R1, [SP,#0x12]\n" 
     731"                LDRH    R1, [R5,#4]\n" 
     732"                STRH    R1, [SP,#0x14]\n" 
     733"                LDRH    R1, [R5,#6]\n" 
     734"                STRH    R1, [SP,#0x16]\n" 
     735"                LDRH    R1, [R5,#8]\n" 
     736"                STRH    R1, [SP,#0x18]\n" 
     737"                BL      sub_FFC9A460\n" 
     738"                B       loc_FFC99450\n" 
     739"loc_FFC993FC:\n" 
     740"                LDRH    R1, [R5]\n" 
     741"                STRH    R1, [SP,#0x10]\n" 
     742"                LDRH    R1, [R5,#2]\n" 
     743"                STRH    R1, [SP,#0x12]\n" 
     744"                LDRH    R1, [R5,#4]\n" 
     745"                STRH    R1, [SP,#0x14]\n" 
     746"                LDRH    R1, [R5,#6]\n" 
     747"                STRH    R1, [SP,#0x16]\n" 
     748"                LDRH    R1, [R0,#0xC]\n" 
     749"                STRH    R1, [SP,#0x18]\n" 
     750"                BL      sub_FFC9A500\n" 
     751"                B       loc_FFC99450\n" 
     752"loc_FFC9942C:\n" 
     753"                BL      sub_FFC96D58\n" 
     754"                B       loc_FFC99450\n" 
     755"loc_FFC99434:\n" 
     756"                BL      sub_FFC97394\n" 
     757"                B       loc_FFC99450\n" 
     758"loc_FFC9943C:\n" 
     759"                BL      sub_FFC975C8\n" 
     760"                B       loc_FFC99450\n" 
     761"loc_FFC99444:\n" 
     762"                BL      sub_FFC97740\n" 
     763"                B       loc_FFC99450\n" 
     764"loc_FFC9944C:\n" 
     765"                BL      sub_FFC978D8\n" 
     766"loc_FFC99450:\n" 
     767"                LDR     R0, [SP,#0x1C]\n" 
     768"                LDR     R1, [R0,#0x7C]\n" 
     769"                LDR     R3, [R0,#0x88]\n" 
     770"                LDR     R2, [R0,#0x8C]\n" 
     771"                ADD     R0, R0, #4\n" 
     772"                BLX     R3\n" 
     773"                CMP     R4, #1\n" 
     774"                BNE     loc_FFC994B8\n" 
     775"loc_FFC99470:\n" 
     776"                LDR     R0, [SP,#0x1C]\n" 
     777"                MOV     R2, #0xC\n" 
     778"                LDR     R1, [R0,#0x7C]\n" 
     779"                ADD     R1, R1, R1,LSL#1\n" 
     780"                ADD     R0, R0, R1,LSL#2\n" 
     781"                SUB     R4, R0, #8\n" 
     782"                LDR     R0, =0x41350\n" 
     783"                ADD     R1, SP, #0x10\n" 
     784"                BL      sub_FFE56AD8\n" 
     785"                LDR     R0, =0x4135C\n" 
     786"                MOV     R2, #0xC\n" 
     787"                ADD     R1, SP, #0x10\n" 
     788"                BL      sub_FFE56AD8\n" 
     789"                LDR     R0, =0x41368\n" 
     790"                MOV     R2, #0xC\n" 
     791"                MOV     R1, R4\n" 
     792"                BL      sub_FFE56AD8\n" 
     793"                B       loc_FFC99530\n" 
     794"loc_FFC994B8:\n" 
     795"                LDR     R0, [SP,#0x1C]\n" 
     796"                LDR     R0, [R0]\n" 
     797"                CMP     R0, #0xB\n" 
     798"                BNE     loc_FFC99500\n" 
     799"                MOV     R3, #0\n" 
     800"                STR     R3, [SP]\n" 
     801"                MOV     R3, #1\n" 
     802"                MOV     R2, #1\n" 
     803"                MOV     R1, #1\n" 
     804"                MOV     R0, #0\n" 
     805"                BL      sub_FFC95C80\n" 
     806"                MOV     R3, #0\n" 
     807"                STR     R3, [SP]\n" 
     808"                MOV     R3, #1\n" 
     809"                MOV     R2, #1\n" 
     810"                MOV     R1, #1\n" 
     811"                MOV     R0, #0\n" 
     812"                B       loc_FFC9952C\n" 
     813"loc_FFC99500:\n" 
     814"                MOV     R3, #1\n" 
     815"                MOV     R2, #1\n" 
     816"                MOV     R1, #1\n" 
     817"                MOV     R0, #1\n" 
     818"                STR     R3, [SP]\n" 
     819"                BL      sub_FFC95C80\n" 
     820"                MOV     R3, #1\n" 
     821"                MOV     R2, #1\n" 
     822"                MOV     R1, #1\n" 
     823"                MOV     R0, #1\n" 
     824"                STR     R3, [SP]\n" 
     825"loc_FFC9952C:\n" 
     826"                BL      sub_FFC95DC0\n" 
     827"loc_FFC99530:\n" 
     828"                LDR     R0, [SP,#0x1C]\n" 
     829"                BL      sub_FFC9A1C4\n" 
     830"                B       loc_FFC98F04\n" 
     831 ); 
     832} 
     833 
     834 
     835 
     836void __attribute__((naked,noinline)) sub_FFC969C4_my(){ 
     837 asm volatile( 
     838"                STMFD   SP!, {R4-R8,LR}\n" 
     839"                LDR     R7, =0x6D70\n" 
     840"                MOV     R4, R0\n" 
     841"                LDR     R0, [R7,#0x1C]\n" 
     842"                MOV     R1, #0x3E\n" 
     843"                BL      sub_FFC19408\n" 
     844"                LDRSH   R0, [R4,#4]\n" 
     845"                MOV     R2, #0\n" 
     846"                MOV     R1, #0\n" 
     847"                BL      sub_FFC95A14\n" 
     848"                MOV     R6, R0\n" 
     849"                LDRSH   R0, [R4,#6]\n" 
     850"                BL      sub_FFC95B20\n" 
     851"                LDRSH   R0, [R4,#8]\n" 
     852"                BL      sub_FFC95B78\n" 
     853"                LDRSH   R0, [R4,#0xA]\n" 
     854"                BL      sub_FFC95BD0\n" 
     855"                LDRSH   R0, [R4,#0xC]\n" 
     856"                BL      sub_FFC95C28\n" 
     857"                MOV     R5, R0\n" 
     858"                LDR     R0, [R4]\n" 
     859"                LDR     R8, =0x41368\n" 
     860"                CMP     R0, #0xB\n" 
     861"                MOVEQ   R6, #0\n" 
     862"                MOVEQ   R5, #0\n" 
     863"                BEQ     loc_FFC96A54\n" 
     864"                CMP     R6, #1\n" 
     865"                BNE     loc_FFC96A54\n" 
     866"                LDRSH   R0, [R4,#4]\n" 
     867"                LDR     R1, =0xFFC95970\n" 
     868"                MOV     R2, #2\n" 
     869"                BL      sub_FFD0A75C\n" 
     870"                STRH    R0, [R4,#4]\n" 
     871"                MOV     R0, #0\n" 
     872"                STR     R0, [R7,#0x28]\n" 
     873"                B       loc_FFC96A5C\n" 
     874"loc_FFC96A54:\n" 
     875"                LDRH    R0, [R8]\n" 
     876"                STRH    R0, [R4,#4]\n" 
     877"loc_FFC96A5C:\n" 
     878"                CMP     R5, #1\n" 
     879"                LDRNEH  R0, [R8,#8]\n" 
     880"                BNE     loc_FFC96A78\n" 
     881"                LDRSH   R0, [R4,#0xC]\n" 
     882"                LDR     R1, =0xFFC95A04\n" 
     883"                MOV     R2, #0x20\n" 
     884"                BL      sub_FFC9A1F4\n" 
     885"loc_FFC96A78:\n" 
     886"                STRH    R0, [R4,#0xC]\n" 
     887"                LDRSH   R0, [R4,#6]\n" 
     888"                BL      sub_FFC77D5C_my\n" //-> 
     889"                LDRSH   R0, [R4,#8]\n" 
     890"                MOV     R1, #1\n" 
     891"                BL      sub_FFC784F0\n" 
     892"                MOV     R1, #0\n" 
     893"                ADD     R0, R4, #8\n" 
     894"                BL      sub_FFC78578\n" 
     895"                LDRSH   R0, [R4,#0xE]\n" 
     896"                BL      sub_FFC8CD94\n" 
     897"                LDR     R4, =0xBB8\n" 
     898"                CMP     R6, #1\n" 
     899"                BNE     loc_FFC96AD0\n" 
     900"                LDR     R0, [R7,#0x1C]\n" 
     901"                MOV     R2, R4\n" 
     902"                MOV     R1, #2\n" 
     903"                BL      sub_FFC1930C\n" 
     904"                TST     R0, #1\n" 
     905"                LDRNE   R1, =0x527\n" 
     906"                LDRNE   R0, =0xFFC96090\n" 
     907"                BLNE    sub_FFC0C090\n" 
     908"loc_FFC96AD0:\n" 
     909"                CMP     R5, #1\n" 
     910"                LDMNEFD SP!, {R4-R8,PC}\n" 
     911"                LDR     R0, [R7,#0x1C]\n" 
     912"                MOV     R2, R4\n" 
     913"                MOV     R1, #0x20\n" 
     914"                BL      sub_FFC1930C\n" 
     915"                TST     R0, #1\n" 
     916"                LDRNE   R1, =0x52C\n" 
     917"                LDRNE   R0, =0xFFC96090\n" 
     918"                LDMNEFD SP!, {R4-R8,LR}\n" 
     919"                BNE     sub_FFC0C090\n" 
     920"                LDMFD   SP!, {R4-R8,PC}\n" 
     921 ); 
     922} 
     923 
     924void __attribute__((naked,noinline)) sub_FFC77D5C_my(){ 
     925 asm volatile( 
     926"                STMFD   SP!, {R4-R6,LR}\n" 
     927"                LDR     R5, =0x66FC\n" 
     928"                MOV     R4, R0\n" 
     929"                LDR     R0, [R5,#4]\n" 
     930"                CMP     R0, #1\n" 
     931"                MOVNE   R1, #0x16C\n" 
     932"                LDRNE   R0, =0xFFC77AF4\n" 
     933"                BLNE    sub_FFC0C090\n" 
     934"                CMN     R4, #0xC00\n" 
     935"                LDREQSH R4, [R5,#2]\n" 
     936"                CMN     R4, #0xC00\n" 
     937"                LDREQ   R1, =0x172\n" 
     938"                LDREQ   R0, =0xFFC77AF4\n" 
     939"                STRH    R4, [R5,#2]\n" 
     940"                BLEQ    sub_FFC0C090\n" 
     941"                MOV     R0, R4\n" 
     942//"                BL      sub_FFD7B458\n" //- 
     943"                BL      apex2us\n" //+ 
     944"                MOV     R4, R0\n" 
     945//"                BL      nullsub\n" 
     946//"                MOV     R0, R4\n" 
     947"                BL      sub_FFCAC394\n" 
     948"                TST     R0, #1\n" 
     949"                LDRNE   R1, =0x177\n" 
     950"                LDMNEFD SP!, {R4-R6,LR}\n" 
     951"                LDRNE   R0, =0xFFC77AF4\n" 
     952"                BNE     sub_FFC0C090\n" 
     953"                LDMFD   SP!, {R4-R6,PC}\n" 
     954 ); 
     955} 
  • branches/philmoz/platform/sx100is/sub/100b/stubs_auto.S

    r596 r1356  
    5555STUB(FFC18FD4) 
    5656STUB(FFC19074) 
     57STUB(FFC1930C) 
    5758STUB(FFC193D4) 
    5859STUB(FFC19408) 
     
    298299STUB(FFC74780) 
    299300STUB(FFC755F0) 
     301STUB(FFC77D5C) 
     302STUB(FFC77FB8) 
     303STUB(FFC784F0) 
     304STUB(FFC78578) 
     305STUB(FFC787F8) 
     306STUB(FFC78D38) 
     307STUB(FFC8CD94) 
     308STUB(FFC95A14) 
     309STUB(FFC95B20) 
     310STUB(FFC95B78) 
     311STUB(FFC95BD0) 
     312STUB(FFC95C28) 
     313STUB(FFC95C80) 
     314STUB(FFC95DC0) 
     315STUB(FFC95E78) 
     316STUB(FFC96100) 
     317STUB(FFC96304) 
     318STUB(FFC9656C) 
     319STUB(FFC96760) 
     320STUB(FFC969C4) 
     321STUB(FFC96B00) 
     322STUB(FFC96D58) 
     323STUB(FFC96F94) 
     324STUB(FFC97290) 
     325STUB(FFC97394) 
     326STUB(FFC975C8) 
     327STUB(FFC97740) 
     328STUB(FFC978D8) 
     329STUB(FFC97A10) 
     330STUB(FFC97C58) 
     331STUB(FFC98BE0) 
     332STUB(FFC98E34) 
     333STUB(FFC98E94) 
     334STUB(FFC9A1C4) 
     335STUB(FFC9A1F4) 
     336STUB(FFC9A238) 
     337STUB(FFC9A3B4) 
     338STUB(FFC9A460) 
     339STUB(FFC9A500) 
     340STUB(FFC9A598) 
    300341STUB(FFC9D474) 
     342STUB(FFCAC394) 
    301343STUB(FFCD75A0) 
    302344STUB(FFCD7664) 
     
    308350STUB(FFCF0BF0) 
    309351STUB(FFCFF884) 
     352STUB(FFD0A4E8) 
     353STUB(FFD0A588) 
     354STUB(FFD0A614) 
     355STUB(FFD0A75C) 
     356STUB(FFD0ACA8) 
    310357STUB(FFD11530) 
    311358STUB(FFD1258C) 
     
    401448STUB(FFD79FA0) 
    402449STUB(FFD7A014) 
     450STUB(FFD7B458) 
     451STUB(FFE56AD8) 
    403452STUB(FFE56D34) 
    404453STUB(FFE585E4) 
  • branches/philmoz/platform/sx100is/sub/100c/boot.c

    r691 r1356  
    3030        while (counter--) { asm("nop\n nop\n"); }; 
    3131}*/ 
     32 
     33void taskCreateHook(int *p) { //function taken from the ixus80 port, adapted of course 
     34 p-=16; 
     35 if (p[0]==0xffc98f18)  p[0]=(int)exp_drv_task; 
     36}  
    3237 
    3338//#define DEBUG_LED 0xC02200C4 
     
    5560    for(i=0;i<canon_bss_len/4;i++) 
    5661        canon_bss_start[i]=0; 
     62 
     63    *(int*)0x1930=(int)taskCreateHook; //from ixus80 port 
     64    *(int*)0x1934=(int)taskCreateHook; //from ixus80 port (was taskCreateHook2...) 
    5765 
    5866    *(int*)0x2578= (*(int*)0xC02200B8)&1 ? 0x100000: 0x200000; // replacement of sub_FFC12E38 
  • branches/philmoz/platform/sx100is/sub/100c/capt_seq.c

    r550 r1356  
    359359    ); 
    360360} //#fe 
     361 
     362 
     363void __attribute__((naked,noinline)) exp_drv_task(){ 
     364 asm volatile( 
     365"                STMFD   SP!, {R4-R8,LR}\n" 
     366"                SUB     SP, SP, #0x20\n" 
     367"                LDR     R8, =0xBB8\n" 
     368"                LDR     R7, =0x6D70\n" 
     369"                LDR     R5, =0x41350\n" 
     370"                MOV     R0, #0\n" 
     371"                ADD     R6, SP, #0x38-0x28\n" 
     372"                STR     R0, [SP,#0x38-0x2C]\n" 
     373"loc_FFC98F38:\n" 
     374"                LDR     R0, [R7,#0x20]\n" 
     375"                MOV     R2, #0\n" 
     376"                ADD     R1, SP, #0x38-0x1C\n" 
     377"                BL      sub_FFC19658\n" 
     378"                LDR     R0, [SP,#0x38-0x2C]\n" 
     379"                CMP     R0, #1\n" 
     380"                BNE     loc_FFC98F80\n" 
     381"                LDR     R0, [SP,#0x38-0x1C]\n" 
     382"                LDR     R0, [R0]\n" 
     383"                CMP     R0, #0x13\n" 
     384"                CMPNE   R0, #0x14\n" 
     385"                CMPNE   R0, #0x15\n" 
     386"                BEQ     loc_FFC99100\n" 
     387"                CMP     R0, #0x26\n" 
     388"                BEQ     loc_FFC9906C\n" 
     389"                ADD     R1, SP, #0x38-0x2C\n" 
     390"                MOV     R0, #0\n" 
     391"                BL      sub_FFC98EC8\n" 
     392"loc_FFC98F80:\n" 
     393"                LDR     R0, [SP,#0x38-0x1C]\n" 
     394"                LDR     R1, [R0]\n" 
     395"                CMP     R1, #0x2B\n" 
     396"                BNE     loc_FFC98FB0\n" 
     397"                LDR     R0, [SP,#0x38-0x1C]\n" 
     398"                BL      sub_FFC9A1F8\n" 
     399"                LDR     R0, [R7,#0x1C]\n" 
     400"                MOV     R1, #1\n" 
     401"                BL      sub_FFC193D4\n" 
     402"                BL      sub_FFC0BE48\n" 
     403"                ADD     SP, SP, #0x20\n" 
     404"                LDMFD   SP!, {R4-R8,PC}\n" 
     405"loc_FFC98FB0:\n" 
     406"                CMP     R1, #0x2A\n" 
     407"                BNE     loc_FFC98FCC\n" 
     408"                LDR     R2, [R0,#0x88]!\n" 
     409"                LDR     R1, [R0,#4]\n" 
     410"                MOV     R0, R1\n" 
     411"                BLX     R2\n" 
     412"                B       loc_FFC99564\n" 
     413"loc_FFC98FCC:\n" 
     414"                CMP     R1, #0x24\n" 
     415"                BNE     loc_FFC9901C\n" 
     416"                LDR     R0, [R7,#0x1C]\n" 
     417"                MOV     R1, #0x80\n" 
     418"                BL      sub_FFC19408\n" 
     419"                LDR     R0, =0xFFC959B4\n" 
     420"                MOV     R1, #0x80\n" 
     421"                BL      sub_FFD0A51C\n" 
     422"                LDR     R0, [R7,#0x1C]\n" 
     423"                MOV     R2, R8\n" 
     424"                MOV     R1, #0x80\n" 
     425"                BL      sub_FFC1930C\n" 
     426"                TST     R0, #1\n" 
     427"                LDRNE   R1, =0xD07\n" 
     428"                BNE     loc_FFC990DC\n" 
     429"loc_FFC99008:\n" 
     430"                LDR     R1, [SP,#0x38-0x1C]\n" 
     431"                LDR     R0, [R1,#0x8C]\n" 
     432"                LDR     R1, [R1,#0x88]\n" 
     433"                BLX     R1\n" 
     434"                B       loc_FFC99564\n" 
     435"loc_FFC9901C:\n" 
     436"                CMP     R1, #0x25\n" 
     437"                BNE     loc_FFC99064\n" 
     438"                ADD     R1, SP, #0x38-0x2C\n" 
     439"                BL      sub_FFC98EC8\n" 
     440"                LDR     R0, [R7,#0x1C]\n" 
     441"                MOV     R1, #0x100\n" 
     442"                BL      sub_FFC19408\n" 
     443"                MOV     R1, #0x100\n" 
     444"                LDR     R0, =0xFFC959C4\n" // 
     445"                BL      sub_FFD0ACDC\n" 
     446"                LDR     R0, [R7,#0x1C]\n" 
     447"                MOV     R2, R8\n" 
     448"                MOV     R1, #0x100\n" 
     449"                BL      sub_FFC1930C\n" 
     450"                TST     R0, #1\n" 
     451"                BEQ     loc_FFC99008\n" 
     452"                LDR     R1, =0xD11\n" 
     453"                B       loc_FFC990DC\n" 
     454"loc_FFC99064:\n" 
     455"                CMP     R1, #0x26\n" 
     456"                BNE     loc_FFC9907C\n" 
     457"loc_FFC9906C:\n" 
     458"                LDR     R0, [SP,#0x38-0x1C]\n" 
     459"                ADD     R1, SP, #0x38-0x2C\n" 
     460"                BL      sub_FFC98EC8\n" 
     461"                B       loc_FFC99008\n" 
     462"loc_FFC9907C:\n" 
     463"                CMP     R1, #0x27\n" 
     464"                CMPNE   R1, #0x28\n" 
     465"                BNE     loc_FFC990E8\n" 
     466"                ADD     R1, SP, #0x38-0x2C\n" 
     467"                BL      sub_FFC98EC8\n" 
     468"                LDR     R4, [SP,#0x38-0x1C]\n" 
     469"                LDR     R0, [R7,#0x1C]\n" 
     470"                MOV     R1, #0x40\n" 
     471"                BL      sub_FFC19408\n" 
     472"                LDR     R0, [R4]\n" 
     473"                MOV     R1, #0x40\n" 
     474"                CMP     R0, #0x27\n" 
     475"                LDR     R0, =0xFFC95A28\n" 
     476"                BNE     loc_FFC990BC\n" 
     477"                BL      sub_FFD0A5BC\n" 
     478"                B       loc_FFC990C0\n" 
     479"loc_FFC990BC:\n" 
     480"                BL      sub_FFD0A648\n" 
     481"loc_FFC990C0:\n" 
     482"                LDR     R0, [R7,#0x1C]\n" 
     483"                MOV     R2, R8\n" 
     484"                MOV     R1, #0x40\n" 
     485"                BL      sub_FFC1930C\n" 
     486"                TST     R0, #1\n" 
     487"                BEQ     loc_FFC99008\n" 
     488"                LDR     R1, =0xD1F\n" 
     489"loc_FFC990DC:\n" 
     490"                LDR     R0, =0xFFC960C4\n" 
     491"                BL      sub_FFC0C090\n" 
     492"                B       loc_FFC99008\n" 
     493"loc_FFC990E8:\n" 
     494"                CMP     R1, #0x29\n" 
     495"                BNE     loc_FFC99100\n" 
     496"                BL      sub_FFC77FEC\n" 
     497"                BL      sub_FFC78D6C\n" 
     498"                BL      sub_FFC7882C\n" 
     499"                B       loc_FFC99008\n" 
     500"loc_FFC99100:\n" 
     501"                LDR     R0, [SP,#0x38-0x1C]\n" 
     502"                MOV     R4, #1\n" 
     503"                LDR     R1, [R0]\n" 
     504"                CMP     R1, #0x11\n" 
     505"                CMPNE   R1, #0x12\n" 
     506"                BNE     loc_FFC99170\n" 
     507"                LDR     R1, [R0,#0x7C]\n" 
     508"                ADD     R1, R1, R1,LSL#1\n" 
     509"                ADD     R1, R0, R1,LSL#2\n" 
     510"                SUB     R1, R1, #8\n" 
     511"                LDMIA   R1, {R2-R4}\n" 
     512"                STMIA   R6, {R2-R4}\n" 
     513"                BL      sub_FFC97A44\n" 
     514"                LDR     R0, [SP,#0x38-0x1C]\n" 
     515"                LDR     R1, [R0,#0x7C]\n" 
     516"                LDR     R3, [R0,#0x88]\n" 
     517"                LDR     R2, [R0,#0x8C]\n" 
     518"                ADD     R0, R0, #4\n" 
     519"                BLX     R3\n" 
     520"                LDR     R0, [SP,#0x38-0x1C]\n" 
     521"                BL      sub_FFC9A5CC\n" 
     522"                LDR     R0, [SP,#0x38-0x1C]\n" 
     523"                LDR     R1, [R0,#0x7C]\n" 
     524"                LDR     R3, [R0,#0x90]\n" 
     525"                LDR     R2, [R0,#0x94]\n" 
     526"                ADD     R0, R0, #4\n" 
     527"                BLX     R3\n" 
     528"                B       loc_FFC994A4\n" 
     529"loc_FFC99170:\n" 
     530"                CMP     R1, #0x13\n" 
     531"                CMPNE   R1, #0x14\n" 
     532"                CMPNE   R1, #0x15\n" 
     533"                BNE     loc_FFC99224\n" 
     534"                ADD     R3, SP, #0x38-0x2C\n" 
     535"                MOV     R2, SP\n" 
     536"                ADD     R1, SP, #0x38-0x28\n" 
     537"                BL      sub_FFC97C8C\n" 
     538"                CMP     R0, #1\n" 
     539"                MOV     R4, R0\n" 
     540"                CMPNE   R4, #5\n" 
     541"                BNE     loc_FFC991C0\n" 
     542"                LDR     R0, [SP,#0x38-0x1C]\n" 
     543"                MOV     R2, R4\n" 
     544"                LDR     R1, [R0,#0x7C]!\n" 
     545"                LDR     R12, [R0,#0xC]!\n" 
     546"                LDR     R3, [R0,#4]\n" 
     547"                MOV     R0, SP\n" 
     548"                BLX     R12\n" 
     549"                B       loc_FFC991F8\n" 
     550"loc_FFC991C0:\n" 
     551"                LDR     R0, [SP,#0x38-0x1C]\n" 
     552"                CMP     R4, #2\n" 
     553"                LDR     R3, [R0,#0x8C]\n" 
     554"                CMPNE   R4, #6\n" 
     555"                BNE     loc_FFC9920C\n" 
     556"                LDR     R12, [R0,#0x88]\n" 
     557"                MOV     R0, SP\n" 
     558"                MOV     R2, R4\n" 
     559"                MOV     R1, #1\n" 
     560"                BLX     R12\n" 
     561"                LDR     R0, [SP,#0x38-0x1C]\n" 
     562"                MOV     R2, SP\n" 
     563"                ADD     R1, SP, #0x38-0x28\n" 
     564"                BL      sub_FFC98C14\n" 
     565"loc_FFC991F8:\n" 
     566"                LDR     R0, [SP,#0x38-0x1C]\n" 
     567"                LDR     R2, [SP,#0x38-0x2C]\n" 
     568"                MOV     R1, R4\n" 
     569"                BL      sub_FFC98E68\n" 
     570"                B       loc_FFC994A4\n" 
     571"loc_FFC9920C:\n" 
     572"                LDR     R1, [R0,#0x7C]\n" 
     573"                LDR     R12, [R0,#0x88]\n" 
     574"                ADD     R0, R0, #4\n" 
     575"                MOV     R2, R4\n" 
     576"                BLX     R12\n" 
     577"                B       loc_FFC994A4\n" 
     578"loc_FFC99224:\n" 
     579"                CMP     R1, #0x20\n" 
     580"                CMPNE   R1, #0x21\n" 
     581"                BNE     loc_FFC99270\n" 
     582"                LDR     R1, [R0,#0x7C]\n" 
     583"                ADD     R1, R1, R1,LSL#1\n" 
     584"                ADD     R1, R0, R1,LSL#2\n" 
     585"                SUB     R1, R1, #8\n" 
     586"                LDMIA   R1, {R2-R4}\n" 
     587"                STMIA   R6, {R2-R4}\n" 
     588"                BL      sub_FFC96FC8\n" 
     589"                LDR     R0, [SP,#0x38-0x1C]\n" 
     590"                LDR     R1, [R0,#0x7C]\n" 
     591"                LDR     R3, [R0,#0x88]\n" 
     592"                LDR     R2, [R0,#0x8C]\n" 
     593"                ADD     R0, R0, #4\n" 
     594"                BLX     R3\n" 
     595"                LDR     R0, [SP,#0x38-0x1C]\n" 
     596"                BL      sub_FFC972C4\n" 
     597"                B       loc_FFC994A4\n" 
     598"loc_FFC99270:\n" 
     599"                ADD     R1, R0, #4\n" 
     600"                LDMIA   R1, {R2,R3,R12}\n" 
     601"                STMIA   R6, {R2,R3,R12}\n" 
     602"                LDR     R1, [R0]\n" 
     603"                CMP     R1, #0x23\n" 
     604"                ADDLS   PC, PC, R1,LSL#2\n" 
     605"                B       loc_FFC99484\n" 
     606"loc_FFC9928C:\n" 
     607"                B       loc_FFC9931C\n" 
     608"loc_FFC99290:\n" 
     609"                B       loc_FFC9931C\n" 
     610"loc_FFC99294:\n" 
     611"                B       loc_FFC9936C\n" 
     612"loc_FFC99298:\n" 
     613"                B       loc_FFC99374\n" 
     614"loc_FFC9929C:\n" 
     615"                B       loc_FFC99374\n" 
     616"loc_FFC992A0:\n" 
     617"                B       loc_FFC99374\n" 
     618"loc_FFC992A4:\n" 
     619"                B       loc_FFC9931C\n" 
     620"loc_FFC992A8:\n" 
     621"                B       loc_FFC9936C\n" 
     622"loc_FFC992AC:\n" 
     623"                B       loc_FFC99374\n" 
     624"loc_FFC992B0:\n" 
     625"                B       loc_FFC99374\n" 
     626"loc_FFC992B4:\n" 
     627"                B       loc_FFC9938C\n" 
     628"loc_FFC992B8:\n" 
     629"                B       loc_FFC9938C\n" 
     630"loc_FFC992BC:\n" 
     631"                B       loc_FFC99478\n" 
     632"loc_FFC992C0:\n" 
     633"                B       loc_FFC99480\n" 
     634"loc_FFC992C4:\n" 
     635"                B       loc_FFC99480\n" 
     636"loc_FFC992C8:\n" 
     637"                B       loc_FFC99480\n" 
     638"loc_FFC992CC:\n" 
     639"                B       loc_FFC99480\n" 
     640"loc_FFC992D0:\n" 
     641"                B       loc_FFC99484\n" 
     642"loc_FFC992D4:\n" 
     643"                B       loc_FFC99484\n" 
     644"loc_FFC992D8:\n" 
     645"                B       loc_FFC99484\n" 
     646"loc_FFC992DC:\n" 
     647"                B       loc_FFC99484\n" 
     648"loc_FFC992E0:\n" 
     649"                B       loc_FFC99484\n" 
     650"loc_FFC992E4:\n" 
     651"                B       loc_FFC9937C\n" 
     652"loc_FFC992E8:\n" 
     653"                B       loc_FFC99384\n" 
     654"loc_FFC992EC:\n" 
     655"                B       loc_FFC99384\n" 
     656"loc_FFC992F0:\n" 
     657"                B       loc_FFC99398\n" 
     658"loc_FFC992F4:\n" 
     659"                B       loc_FFC993A0\n" 
     660"loc_FFC992F8:\n" 
     661"                B       loc_FFC993D0\n" 
     662"loc_FFC992FC:\n" 
     663"                B       loc_FFC99400\n" 
     664"loc_FFC99300:\n" 
     665"                B       loc_FFC99430\n" 
     666"loc_FFC99304:\n" 
     667"                B       loc_FFC99460\n" 
     668"loc_FFC99308:\n" 
     669"                B       loc_FFC99460\n" 
     670"loc_FFC9930C:\n" 
     671"                B       loc_FFC99484\n" 
     672"loc_FFC99310:\n" 
     673"                B       loc_FFC99484\n" 
     674"loc_FFC99314:\n" 
     675"                B       loc_FFC99468\n" 
     676"loc_FFC99318:\n" 
     677"                B       loc_FFC99470\n" 
     678"loc_FFC9931C:\n" 
     679"                BL      sub_FFC95EAC\n" 
     680"                B       loc_FFC99484\n" 
     681"loc_FFC9936C:\n" 
     682"                BL      sub_FFC96134\n" 
     683"                B       loc_FFC99484\n" 
     684"loc_FFC99374:\n" 
     685"                BL      sub_FFC96338\n" 
     686"                B       loc_FFC99484\n" 
     687"loc_FFC9937C:\n" 
     688"                BL      sub_FFC965A0\n" 
     689"                B       loc_FFC99484\n" 
     690"loc_FFC99384:\n" 
     691"                BL      sub_FFC96794\n" 
     692"                B       loc_FFC99484\n" 
     693"loc_FFC9938C:\n" 
     694"                BL      sub_FFC969F8_my\n" //-> 
     695"                MOV     R4, #0\n" 
     696"                B       loc_FFC99484\n" 
     697"loc_FFC99398:\n" 
     698"                BL      sub_FFC96B34\n" 
     699"                B       loc_FFC99484\n" 
     700"loc_FFC993A0:\n" 
     701"                LDRH    R1, [R0,#4]\n" 
     702"                STRH    R1, [SP,#0x38-0x28]\n" 
     703"                LDRH    R1, [R5,#2]\n" 
     704"                STRH    R1, [SP,#0x38-0x26]\n" 
     705"                LDRH    R1, [R5,#4]\n" 
     706"                STRH    R1, [SP,#0x38-0x24]\n" 
     707"                LDRH    R1, [R5,#6]\n" 
     708"                STRH    R1, [SP,#0x38-0x22]\n" 
     709"                LDRH    R1, [R0,#0xC]\n" 
     710"                STRH    R1, [SP,#0x38-0x20]\n" 
     711"                BL      sub_FFC9A26C\n" 
     712"                B       loc_FFC99484\n" 
     713"loc_FFC993D0:\n" 
     714"                LDRH    R1, [R0,#4]\n" 
     715"                STRH    R1, [SP,#0x38-0x28]\n" 
     716"                LDRH    R1, [R5,#2]\n" 
     717"                STRH    R1, [SP,#0x38-0x26]\n" 
     718"                LDRH    R1, [R5,#4]\n" 
     719"                STRH    R1, [SP,#0x38-0x24]\n" 
     720"                LDRH    R1, [R5,#6]\n" 
     721"                STRH    R1, [SP,#0x38-0x22]\n" 
     722"                LDRH    R1, [R5,#8]\n" 
     723"                STRH    R1, [SP,#0x38-0x20]\n" 
     724"                BL      sub_FFC9A3E8\n" 
     725"                B       loc_FFC99484\n" 
     726"loc_FFC99400:\n" 
     727"                LDRH    R1, [R5]\n" 
     728"                STRH    R1, [SP,#0x38-0x28]\n" 
     729"                LDRH    R1, [R0,#6]\n" 
     730"                STRH    R1, [SP,#0x38-0x26]\n" 
     731"                LDRH    R1, [R5,#4]\n" 
     732"                STRH    R1, [SP,#0x38-0x24]\n" 
     733"                LDRH    R1, [R5,#6]\n" 
     734"                STRH    R1, [SP,#0x38-0x22]\n" 
     735"                LDRH    R1, [R5,#8]\n" 
     736"                STRH    R1, [SP,#0x38-0x20]\n" 
     737"                BL      sub_FFC9A494\n" 
     738"                B       loc_FFC99484\n" 
     739"loc_FFC99430:\n" 
     740"                LDRH    R1, [R5]\n" 
     741"                STRH    R1, [SP,#0x38-0x28]\n" 
     742"                LDRH    R1, [R5,#2]\n" 
     743"                STRH    R1, [SP,#0x38-0x26]\n" 
     744"                LDRH    R1, [R5,#4]\n" 
     745"                STRH    R1, [SP,#0x38-0x24]\n" 
     746"                LDRH    R1, [R5,#6]\n" 
     747"                STRH    R1, [SP,#0x38-0x22]\n" 
     748"                LDRH    R1, [R0,#0xC]\n" 
     749"                STRH    R1, [SP,#0x38-0x20]\n" 
     750"                BL      sub_FFC9A534\n" 
     751"                B       loc_FFC99484\n" 
     752"loc_FFC99460:\n" 
     753"                BL      sub_FFC96D8C\n" 
     754"                B       loc_FFC99484\n" 
     755"loc_FFC99468:\n" 
     756"                BL      sub_FFC973C8\n" 
     757"                B       loc_FFC99484\n" 
     758"loc_FFC99470:\n" 
     759"                BL      sub_FFC975FC\n" 
     760"                B       loc_FFC99484\n" 
     761"loc_FFC99478:\n" 
     762"                BL      sub_FFC97774\n" 
     763"                B       loc_FFC99484\n" 
     764"loc_FFC99480:\n" 
     765"                BL      sub_FFC9790C\n" 
     766"loc_FFC99484:\n" 
     767"                LDR     R0, [SP,#0x38-0x1C]\n" 
     768"                LDR     R1, [R0,#0x7C]\n" 
     769"                LDR     R3, [R0,#0x88]\n" 
     770"                LDR     R2, [R0,#0x8C]\n" 
     771"                ADD     R0, R0, #4\n" 
     772"                BLX     R3\n" 
     773"                CMP     R4, #1\n" 
     774"                BNE     loc_FFC994EC\n" 
     775"loc_FFC994A4:\n" 
     776"                LDR     R0, [SP,#0x38-0x1C]\n" 
     777"                MOV     R2, #0xC\n" 
     778"                LDR     R1, [R0,#0x7C]\n" 
     779"                ADD     R1, R1, R1,LSL#1\n" 
     780"                ADD     R0, R0, R1,LSL#2\n" 
     781"                SUB     R4, R0, #8\n" 
     782"                LDR     R0, =0x41350\n" 
     783"                ADD     R1, SP, #0x38-0x28\n" 
     784"                BL      sub_FFE56B0C\n" 
     785"                LDR     R0, =0x4135C\n" 
     786"                MOV     R2, #0xC\n" 
     787"                ADD     R1, SP, #0x38-0x28\n" 
     788"                BL      sub_FFE56B0C\n" 
     789"                LDR     R0, =0x41368\n" 
     790"                MOV     R2, #0xC\n" 
     791"                MOV     R1, R4\n" 
     792"                BL      sub_FFE56B0C\n" 
     793"                B       loc_FFC99564\n" 
     794"loc_FFC994EC:\n" 
     795"                LDR     R0, [SP,#0x38-0x1C]\n" 
     796"                LDR     R0, [R0]\n" 
     797"                CMP     R0, #0xB\n" 
     798"                BNE     loc_FFC99534\n" 
     799"                MOV     R3, #0\n" 
     800"                STR     R3, [SP,#0x38-0x38]\n" 
     801"                MOV     R3, #1\n" 
     802"                MOV     R2, #1\n" 
     803"                MOV     R1, #1\n" 
     804"                MOV     R0, #0\n" 
     805"                BL      sub_FFC95CB4\n" 
     806"                MOV     R3, #0\n" 
     807"                STR     R3, [SP,#0x38-0x38]\n" 
     808"                MOV     R3, #1\n" 
     809"                MOV     R2, #1\n" 
     810"                MOV     R1, #1\n" 
     811"                MOV     R0, #0\n" 
     812"                B       loc_FFC99560\n" 
     813"loc_FFC99534:\n" 
     814"                MOV     R3, #1\n" 
     815"                MOV     R2, #1\n" 
     816"                MOV     R1, #1\n" 
     817"                MOV     R0, #1\n" 
     818"                STR     R3, [SP,#0x38-0x38]\n" 
     819"                BL      sub_FFC95CB4\n" 
     820"                MOV     R3, #1\n" 
     821"                MOV     R2, #1\n" 
     822"                MOV     R1, #1\n" 
     823"                MOV     R0, #1\n" 
     824"                STR     R3, [SP,#0x38-0x38]\n" 
     825"loc_FFC99560:\n" 
     826"                BL      sub_FFC95DF4\n" 
     827"loc_FFC99564:\n" 
     828"                LDR     R0, [SP,#0x38-0x1C]\n" 
     829"                BL      sub_FFC9A1F8\n" 
     830"                B       loc_FFC98F38\n" 
     831 ); 
     832} 
     833 
     834 
     835 
     836void __attribute__((naked,noinline)) sub_FFC969F8_my(){ 
     837 asm volatile( 
     838"                STMFD   SP!, {R4-R8,LR}\n" 
     839"                LDR     R7, =0x6D70\n" 
     840"                MOV     R4, R0\n" 
     841"                LDR     R0, [R7,#0x1C]\n" 
     842"                MOV     R1, #0x3E\n" 
     843"                BL      sub_FFC19408\n" 
     844"                LDRSH   R0, [R4,#4]\n" 
     845"                MOV     R2, #0\n" 
     846"                MOV     R1, #0\n" 
     847"                BL      sub_FFC95A48\n" 
     848"                MOV     R6, R0\n" 
     849"                LDRSH   R0, [R4,#6]\n" 
     850"                BL      sub_FFC95B54\n" 
     851"                LDRSH   R0, [R4,#8]\n" 
     852"                BL      sub_FFC95BAC\n" 
     853"                LDRSH   R0, [R4,#0xA]\n" 
     854"                BL      sub_FFC95C04\n" 
     855"                LDRSH   R0, [R4,#0xC]\n" 
     856"                BL      sub_FFC95C5C\n" 
     857"                MOV     R5, R0\n" 
     858"                LDR     R0, [R4]\n" 
     859"                LDR     R8, =0x41368\n" 
     860"                CMP     R0, #0xB\n" 
     861"                MOVEQ   R6, #0\n" 
     862"                MOVEQ   R5, #0\n" 
     863"                BEQ     loc_FFC96A88\n" 
     864"                CMP     R6, #1\n" 
     865"                BNE     loc_FFC96A88\n" 
     866"                LDRSH   R0, [R4,#4]\n" 
     867"                LDR     R1, =0xFFC959A4\n" 
     868"                MOV     R2, #2\n" 
     869"                BL      sub_FFD0A790\n" 
     870"                STRH    R0, [R4,#4]\n" 
     871"                MOV     R0, #0\n" 
     872"                STR     R0, [R7,#0x28]\n" 
     873"                B       loc_FFC96A90\n" 
     874"loc_FFC96A88:\n" 
     875"                LDRH    R0, [R8]\n" 
     876"                STRH    R0, [R4,#4]\n" 
     877"loc_FFC96A90:\n" 
     878"                CMP     R5, #1\n" 
     879"                LDRNEH  R0, [R8,#8]\n" //ldrhne 
     880"                BNE     loc_FFC96AAC\n" 
     881"                LDRSH   R0, [R4,#0xC]\n" 
     882"                LDR     R1, =0xFFC95A38\n" 
     883"                MOV     R2, #0x20\n" 
     884"                BL      sub_FFC9A228\n" 
     885"loc_FFC96AAC:\n" 
     886"                STRH    R0, [R4,#0xC]\n" 
     887"                LDRSH   R0, [R4,#6]\n" 
     888"                BL      sub_FFC77D90_my\n" //-> 
     889"                LDRSH   R0, [R4,#8]\n" 
     890"                MOV     R1, #1\n" 
     891"                BL      sub_FFC78524\n" 
     892"                MOV     R1, #0\n" 
     893"                ADD     R0, R4, #8\n" 
     894"                BL      sub_FFC785AC\n" 
     895"                LDRSH   R0, [R4,#0xE]\n" 
     896"                BL      sub_FFC8CDC8\n" 
     897"                LDR     R4, =0xBB8\n" 
     898"                CMP     R6, #1\n" 
     899"                BNE     loc_FFC96B04\n" 
     900"                LDR     R0, [R7,#0x1C]\n" 
     901"                MOV     R2, R4\n" 
     902"                MOV     R1, #2\n" 
     903"                BL      sub_FFC1930C\n" 
     904"                TST     R0, #1\n" 
     905"                LDRNE   R1, =0x527\n" 
     906"                LDRNE   R0, =0xFFC960C4\n" 
     907"                BLNE    sub_FFC0C090\n" 
     908"loc_FFC96B04:\n" 
     909"                CMP     R5, #1\n" 
     910"                LDMNEFD SP!, {R4-R8,PC}\n" //ldmfdne 
     911"                LDR     R0, [R7,#0x1C]\n" 
     912"                MOV     R2, R4\n" 
     913"                MOV     R1, #0x20\n" 
     914"                BL      sub_FFC1930C\n" 
     915"                TST     R0, #1\n" 
     916"                LDRNE   R1, =0x52C\n" 
     917"                LDRNE   R0, =0xFFC960C4\n" 
     918"                LDMNEFD SP!, {R4-R8,LR}\n" //ldmfdne 
     919"                BNE     sub_FFC0C090\n" 
     920"                LDMFD   SP!, {R4-R8,PC}\n" 
     921 ); 
     922} 
     923 
     924void __attribute__((naked,noinline)) sub_FFC77D90_my(){ 
     925 asm volatile( 
     926"                STMFD   SP!, {R4-R6,LR}\n" 
     927"                LDR     R5, =0x66FC\n" 
     928"                MOV     R4, R0\n" 
     929"                LDR     R0, [R5,#4]\n" 
     930"                CMP     R0, #1\n" 
     931"                MOVNE   R1, #0x16C\n" 
     932"                LDRNE   R0, =0xFFC77B28\n" 
     933"                BLNE    sub_FFC0C090\n" 
     934"                CMN     R4, #0xC00\n" 
     935"                LDREQSH R4, [R5,#2]\n" //ldrsheq 
     936"                CMN     R4, #0xC00\n" 
     937"                LDREQ   R1, =0x172\n" 
     938"                LDREQ   R0, =0xFFC77B28\n" 
     939"                STRH    R4, [R5,#2]\n" 
     940"                BLEQ    sub_FFC0C090\n" 
     941"                MOV     R0, R4\n" 
     942//"                BL      sub_FFD7B48C\n" //- 
     943"                BL      apex2us\n" //+ 
     944"                MOV     R4, R0\n" 
     945//"                BL      nullsub\n" 
     946//"                MOV     R0, R4\n" 
     947"                BL      sub_FFCAC3C8\n" 
     948"                TST     R0, #1\n" 
     949"                LDRNE   R1, =0x177\n" 
     950"                LDMNEFD SP!, {R4-R6,LR}\n" //ldmfdne 
     951"                LDRNE   R0, =0xFFC77B28\n" 
     952"                BNE     sub_FFC0C090\n" 
     953"                LDMFD   SP!, {R4-R6,PC}\n" 
     954 ); 
     955} 
  • branches/philmoz/platform/sx100is/sub/100c/stubs_auto.S

    r596 r1356  
    5555STUB(FFC18FD4) 
    5656STUB(FFC19074) 
     57STUB(FFC1930C) 
    5758STUB(FFC193D4) 
    5859STUB(FFC19408) 
     
    297298STUB(FFC747B4) 
    298299STUB(FFC75624) 
     300STUB(FFC77D90) 
     301STUB(FFC77FEC) 
     302STUB(FFC78524) 
     303STUB(FFC785AC) 
     304STUB(FFC7882C) 
     305STUB(FFC78D6C) 
     306STUB(FFC8CDC8) 
     307STUB(FFC95A48) 
     308STUB(FFC95B54) 
     309STUB(FFC95BAC) 
     310STUB(FFC95C04) 
     311STUB(FFC95C5C) 
     312STUB(FFC95CB4) 
     313STUB(FFC95DF4) 
     314STUB(FFC95EAC) 
     315STUB(FFC96134) 
     316STUB(FFC96338) 
     317STUB(FFC965A0) 
     318STUB(FFC96794) 
     319STUB(FFC969F8) 
     320STUB(FFC96B34) 
     321STUB(FFC96D8C) 
     322STUB(FFC96FC8) 
     323STUB(FFC972C4) 
     324STUB(FFC973C8) 
     325STUB(FFC975FC) 
     326STUB(FFC97774) 
     327STUB(FFC9790C) 
     328STUB(FFC97A44) 
     329STUB(FFC97C8C) 
     330STUB(FFC98C14) 
     331STUB(FFC98E68) 
     332STUB(FFC98EC8) 
     333STUB(FFC9A1F8) 
     334STUB(FFC9A228) 
     335STUB(FFC9A26C) 
     336STUB(FFC9A3E8) 
     337STUB(FFC9A494) 
     338STUB(FFC9A534) 
     339STUB(FFC9A5CC) 
    299340STUB(FFC9D4A8) 
     341STUB(FFCAC3C8) 
    300342STUB(FFCD75D4) 
    301343STUB(FFCD7698) 
     
    307349STUB(FFCF0C24) 
    308350STUB(FFCFF8B8) 
     351STUB(FFD0A51C) 
     352STUB(FFD0A5BC) 
     353STUB(FFD0A648) 
     354STUB(FFD0A790) 
     355STUB(FFD0ACDC) 
    309356STUB(FFD11564) 
    310357STUB(FFD125C0) 
     
    401448STUB(FFD79FD4) 
    402449STUB(FFD7A048) 
     450STUB(FFD7B48C) 
     451STUB(FFE56B0C) 
    403452STUB(FFE56D68) 
    404453STUB(FFE58618) 
  • branches/philmoz/platform/sx110is/kbd.c

    r1031 r1356  
    6060         
    6161        { 0, KEY_SHOOT_FULL, 0x0000000C }, 
     62    { 0, KEY_SHOOT_FULL_ONLY, 0x00000008 }, 
    6263        { 0, KEY_SHOOT_HALF, 0x00000004 }, 
    6364        { 0, 0 } 
  • branches/philmoz/platform/sx130is/kbd.c

    r1128 r1356  
    5656        { 2, KEY_ZOOM_OUT  , 0x00000020 }, 
    5757        { 2, KEY_SHOOT_FULL, 0x0000000C }, 
     58    { 2, KEY_SHOOT_FULL_ONLY, 0x00000008 }, 
    5859        { 2, KEY_SHOOT_HALF, 0x00000004 }, 
    5960        { 0, 0, 0 } 
  • branches/philmoz/platform/sx20/kbd.c

    r1117 r1356  
    7272 
    7373        { 0, KEY_SHOOT_FULL     , 0x00000003 }, 
     74    { 0, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    7475        { 0, KEY_SHOOT_HALF     , 0x00000001 }, 
    7576 
  • branches/philmoz/platform/sx200is/kbd.c

    r1031 r1356  
    4747 
    4848        { 0, KEY_SHOOT_FULL     , 0x00000300 }, 
     49    { 0, KEY_SHOOT_FULL_ONLY, 0x00000200 }, 
    4950        { 0, KEY_SHOOT_HALF     , 0x00000100 }, 
    5051        { 1, KEY_UP                   , 0x00000100 }, 
  • branches/philmoz/platform/sx220hs/kbd.c

    r1320 r1356  
    7373        { 2, KEY_LEFT_SOFT               , 0x00000080 }, 
    7474        { 2, KEY_LEFT                    , 0x00000100 }, 
     75        { 2, KEY_SHOOT_FULL              , 0x00002002 },         
     76        { 2, KEY_SHOOT_FULL_ONLY , 0x00000002 },         
    7577        { 2, KEY_SHOOT_HALF              , 0x00002000 }, 
    76         { 2, KEY_SHOOT_FULL              , 0x00002002 },         
    7778 
    7879        { 1, KEY_PLAYBACK            , 0x00200000 },     
  • branches/philmoz/platform/sx230hs/kbd.c

    r1333 r1356  
    7070        { 2, KEY_LEFT_SOFT              , 0x00000080 }, 
    7171        { 2, KEY_LEFT                   , 0x00000100 }, 
     72        { 2, KEY_SHOOT_FULL             , 0x00002002 }, 
     73        { 2, KEY_SHOOT_FULL_ONLY, 0x00000002 }, 
    7274        { 2, KEY_SHOOT_HALF             , 0x00002000 }, 
    73         { 2, KEY_SHOOT_FULL             , 0x00002002 }, 
    7475        { 0, 0, 0 } 
    7576}; 
  • branches/philmoz/platform/sx30/platform_camera.h

    r1346 r1356  
    113113    #define CAM_LOAD_CUSTOM_COLORS              1       // Enable loading CHDK colors into the camera palette memory/hardware 
    114114    #define CHDK_COLOR_BASE                     0xB3    // Start color index for CHDK colors loaded into camera palette. 
     115    #define CAM_USE_COLORED_ICONS               1       // Enable using the CHDK-DE colored icons. 
    115116 
    116117//---------------------------------------------------------- 
  • branches/philmoz/platform/tx1/kbd.c

    r1031 r1356  
    431431        {1, KEY_RIGHT   , 0x00000004 }, 
    432432        {1, KEY_SET           , 0x00000010 }, 
     433        {2, KEY_SHOOT_FULL, 0x00003000 }, // note 3 here! 
     434    {2, KEY_SHOOT_FULL_ONLY, 0x00002000 }, 
    433435        {2, KEY_SHOOT_HALF, 0x00001000 }, 
    434         {2, KEY_SHOOT_FULL, 0x00003000 }, // note 3 here! 
    435436        {1, KEY_ZOOM_IN , 0x00040000 }, 
    436437        {1, KEY_ZOOM_OUT  , 0x00010000 }, 
Note: See TracChangeset for help on using the changeset viewer.