Changeset 1628


Ignore:
Timestamp:
01/30/12 06:09:43 (16 months ago)
Author:
reyalp
Message:

Merged r1627 from branches/release-1_0:a430 updates from srsa_4c in http://chdk.setepontos.com/index.php?topic=3785.msg80082#msg80082

  • adds a430 to autobuild as beta
  • NOTE changes keyboard initialization for other cameras that use generic/kbd.c, tested OK on a540
Location:
trunk
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/camera_list.csv

    r1620 r1628  
    88a3300,100d,BETA,,SKIP_AUTOBUILD 
    99a410,100f,BETA,100e, 
    10 a430,100b,BETA,,SKIP_AUTOBUILD 
     10a430,100b,BETA,, 
    1111a450,100d,,, 
    1212a460,100d,,, 
  • trunk/platform/a430/kbd.c

    r1568 r1628  
    1 #include "lolevel.h" 
    2 #include "platform.h" 
    3 #include "conf.h" 
    4 #include "core.h" 
    5 #include "keyboard.h" 
     1#include "../generic/kbd.c" 
    62 
    7 typedef struct { 
    8         long hackkey; 
    9         long canonkey; 
    10 } KeyMap; 
    11  
    12  
    13 long kbd_new_state[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }; 
    14 static long kbd_prev_state[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }; 
    15 static long kbd_mod_state = 0xFFFFFFFF ; 
    16  
    17 static KeyMap keymap[]; 
    18 static long last_kbd_key = 0; 
    19  
    20 #define NEW_SS (0x2000) 
    21 #define SD_READONLY_FLAG (0x20000) 
    22  
    23 #define USB_MASK 0x40000 
    24 #define USB_IDX 2 
    25  
    26 extern void usb_remote_key( int ) ; 
    27 int get_usb_bit()  
    28 { 
    29         long usb_physw[3]; 
    30         usb_physw[USB_IDX] = 0; 
    31         _kbd_read_keys_r2(usb_physw); 
    32         return(( usb_physw[USB_IDX] & USB_MASK)==USB_MASK) ;  
    33 } 
    34  
    35  
    36 #ifndef MALLOCD_STACK 
    37 static char kbd_stack[NEW_SS]; 
    38 #endif 
    39  
    40 long __attribute__((naked)) wrap_kbd_p1_f() ; 
    41  
    42 static void __attribute__((noinline)) mykbd_task_proceed() 
    43 { 
    44     while (physw_run){ 
    45         _SleepTask(10); 
    46  
    47         if (wrap_kbd_p1_f() == 1){ // autorepeat ? 
    48             _kbd_p2_f(); 
    49         } 
    50     } 
    51 } 
    52  
    53 void __attribute__((naked,noinline)) mykbd_task() 
    54 { 
    55     /* WARNING 
    56      * Stack pointer manipulation performed here! 
    57      * This means (but not limited to): 
    58      *  function arguments destroyed; 
    59      *  function CAN NOT return properly; 
    60      *  MUST NOT call or use stack variables before stack 
    61      *  is setup properly; 
    62      * 
    63      */ 
    64  
    65     register int i; 
    66     register long *newstack; 
    67  
    68 #ifndef MALLOCD_STACK 
    69     newstack = (void*)kbd_stack; 
    70 #else 
    71     newstack = malloc(NEW_SS); 
    72 #endif 
    73  
    74     for (i=0;i<NEW_SS/4;i++) 
    75         newstack[i]=0xdededede; 
    76  
    77     asm volatile ( 
    78         "MOV    SP, %0" 
    79         :: "r"(((char*)newstack)+NEW_SS) 
    80         : "memory" 
    81     ); 
    82  
    83     mykbd_task_proceed(); 
    84  
    85     /* function can be modified to restore SP here... 
    86      */ 
    87  
    88     _ExitTask(); 
    89 } 
    90  
    91  
    92 long __attribute__((naked,noinline)) wrap_kbd_p1_f() 
    93 { 
    94  
    95     asm volatile( 
    96                 "STMFD   SP!, {R4-R7,LR}\n" 
    97                 "SUB     SP, SP, #0xC\n" 
    98                 "BL      my_kbd_read_keys\n" 
    99                 "B       _kbd_p1_f_cont\n" 
    100     ); 
    101     return 0; // shut up the compiler 
    102 } 
    103  
    104  
    105 void my_kbd_read_keys() 
    106 { 
    107     kbd_prev_state[0] = kbd_new_state[0]; 
    108     kbd_prev_state[1] = kbd_new_state[1]; 
    109     kbd_prev_state[2] = kbd_new_state[2]; 
    110  
    111     kbd_fetch_data(kbd_new_state); 
    112  
    113     if (kbd_process() == 0){ 
    114         // leave it alone... 
    115         physw_status[0] = kbd_new_state[0]; 
    116         physw_status[1] = kbd_new_state[1]; 
    117         physw_status[2] = kbd_new_state[2]; 
    118  
    119     } else { 
    120         // override keys 
    121  
    122         physw_status[0] = kbd_new_state[0]; 
    123         physw_status[1] = kbd_new_state[1]; 
    124         physw_status[2] = (kbd_new_state[2] & (~0x1fff)) | 
    125                           (kbd_mod_state & 0x1fff); 
    126  
    127     } 
    128  
    129     _kbd_read_keys_r2(physw_status); 
    130  
    131         usb_remote_key(physw_status[USB_IDX]) ; 
    132  
    133     if (conf.remote_enable) { 
    134       physw_status[USB_IDX] = physw_status[USB_IDX] & ~(SD_READONLY_FLAG | USB_MASK); 
    135     } 
    136     else      
    137       physw_status[USB_IDX] = physw_status[USB_IDX] & ~SD_READONLY_FLAG; 
    138  
    139 } 
    140  
    141  
    142 void kbd_key_press(long key) 
    143 { 
    144     int i; 
    145     for (i=0;keymap[i].hackkey;i++){ 
    146         if (keymap[i].hackkey == key){ 
    147             kbd_mod_state &= ~keymap[i].canonkey; 
    148             return; 
    149         } 
    150     } 
    151 } 
    152  
    153 void kbd_key_release(long key) 
    154 { 
    155     int i; 
    156     for (i=0;keymap[i].hackkey;i++){ 
    157         if (keymap[i].hackkey == key){ 
    158             kbd_mod_state |= keymap[i].canonkey; 
    159             return; 
    160         } 
    161     } 
    162 } 
    163  
    164 void kbd_key_release_all() 
    165 { 
    166     kbd_mod_state |= 0x1fff; 
    167 } 
    168  
    169 long kbd_is_key_pressed(long key) 
    170 { 
    171     int i; 
    172     for (i=0;keymap[i].hackkey;i++){ 
    173         if (keymap[i].hackkey == key){ 
    174             return ((kbd_new_state[2] & keymap[i].canonkey) == 0) ? 1:0; 
    175         } 
    176     } 
    177     return 0; 
    178 } 
    179  
    180 long kbd_is_key_clicked(long key) 
    181 { 
    182     int i; 
    183     for (i=0;keymap[i].hackkey;i++){ 
    184         if (keymap[i].hackkey == key){ 
    185             return ((kbd_prev_state[2] & keymap[i].canonkey) != 0) && 
    186                     ((kbd_new_state[2] & keymap[i].canonkey) == 0); 
    187         } 
    188     } 
    189     return 0; 
    190 } 
    191  
    192 long kbd_get_pressed_key() 
    193 { 
    194     int i; 
    195     for (i=0;keymap[i].hackkey;i++){ 
    196         if ((kbd_new_state[2] & keymap[i].canonkey) == 0){ 
    197             return keymap[i].hackkey; 
    198         } 
    199     } 
    200     return 0; 
    201 } 
    202  
    203 long kbd_get_clicked_key() 
    204 { 
    205     int i; 
    206     for (i=0;keymap[i].hackkey;i++){ 
    207         if (((kbd_prev_state[2] & keymap[i].canonkey) != 0) && 
    208             ((kbd_new_state[2] & keymap[i].canonkey) == 0)){ 
    209             return keymap[i].hackkey; 
    210         } 
    211     } 
    212     return 0; 
    213 } 
    214  
    215 void kbd_reset_autoclicked_key() { 
    216     last_kbd_key = 0; 
    217 } 
    218  
    219 long kbd_get_autoclicked_key() { 
    220     static long last_kbd_time = 0, press_count = 0; 
    221     register long key, t; 
    222  
    223     key=kbd_get_clicked_key(); 
    224     if (key) { 
    225         last_kbd_key = key; 
    226         press_count = 0; 
    227         last_kbd_time = get_tick_count(); 
    228         return key; 
    229     } else { 
    230         if (last_kbd_key && kbd_is_key_pressed(last_kbd_key)) { 
    231             t = get_tick_count(); 
    232             if (t-last_kbd_time>((press_count)?175:500)) { 
    233                 ++press_count; 
    234                 last_kbd_time = t; 
    235                 return last_kbd_key; 
    236             } else { 
    237                 return 0; 
    238             } 
    239         } else { 
    240             last_kbd_key = 0; 
    241             return 0; 
    242         } 
    243     } 
    244 } 
    245  
    246 long kbd_use_zoom_as_mf() { 
    247     return 0; 
    248 } 
    2493static KeyMap keymap[] = { 
    2504    /* tiny bug: key order matters. see kbd_get_pressed_key() 
     
    25913    { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    26014    { KEY_SHOOT_HALF, 0x00000010 }, 
    261 //  { KEY_ZOOM_IN   , 0x00000001 }, // KEY_UP/KEY_ZOOM_IN 
    262 //  { KEY_ZOOM_OUT  , 0x00000002 }, // KEY_DOWN/KEY_ZOOM_OUT/KEY_ERASE 
    26315    { KEY_MENU      , 0x00000400 }, 
    26416    { KEY_DISPLAY   , 0x00000200 }, 
    26517    { KEY_PRINT     , 0x00001000 }, // KEY_DOWN/KEY_ZOOM_OUT/KEY_ERASE 
    266 //  { KEY_ERASE     , 0x00000002 }, 
    267 //  { KEY_DUMMY     , 0x00001000 }, 
    26818    { 0, 0 } 
    26919}; 
  • trunk/platform/a430/lib.c

    r1376 r1628  
    22 
    33int get_flash_params_count(void){ 
    4  return 111; 
     4 return 108; 
    55} 
  • trunk/platform/a430/main.c

    r1376 r1628  
    1111} 
    1212 
    13 static const int fl_tbl[] = {5400, 6800, 8100, 9800, 11800, 14400, 17300}; 
     13static const int fl_tbl[] = {5400, 6800, 8100, 9800, 11800, 14400, 17300, 21600}; //from a460 
    1414#define NUM_FL (sizeof(fl_tbl)/sizeof(fl_tbl[0])) 
    1515#define CF_EFL 70371 
     
    3333} 
    3434 
    35 /* static struct { 
    36         int hackmode; 
    37         int canonmode; 
    38 } modemap[] = { 
    39     { MODE_AUTO,               32768 }, 
    40     { MODE_P,                  32772 }, 
    41 //    { MODE_TV,                 32771 }, 
    42 //    { MODE_AV,                 32770 }, 
    43 //    { MODE_M,                  32769 }, 
    44     { MODE_PORTRAIT,           16397 }, 
    45 //    { MODE_NIGHT,              32782 }, 
    46 //    { MODE_LANDSCAPE,          32780 }, 
    47     { MODE_VIDEO_STD,          2597  }, 
    48 //    { MODE_VIDEO_SPEED,        2597  }, 
    49     { MODE_VIDEO_COMPACT,      2599  }, 
    50 //    { MODE_VIDEO_MY_COLORS,    2595  }, 
    51 //    { MODE_VIDEO_COLOR_ACCENT, 2594  }, 
    52 //    { MODE_STITCH,             33290 }, 
    53 //    { MODE_MY_COLORS,          16922 }, 
    54 //    { MODE_SCN_WATER,          16405 }, 
    55     { MODE_SCN_NIGHT,          16395 }, 
    56     { MODE_SCN_CHILD,          16400 }, 
    57     { MODE_SCN_PARTY,          16401 }, 
    58     { MODE_SCN_GRASS,          16402 }, 
    59     { MODE_SCN_SNOW,           16403 }, 
    60     { MODE_SCN_BEACH,          16404 }, 
    61     { MODE_SCN_FIREWORK,       16405 }//, 
    62    */ 
    6335#define MODESCNT (sizeof(modemap)/sizeof(modemap[0])) 
    64  
    65 /* int mode_get() { 
    66     int mode, i, t=0xFF; 
    67                                                                           
    68     mode  = (physw_status[2] & 0x00002000)?MODE_REC:MODE_PLAY;            
    69 //    mode |= (physw_status[2] & 0x00008000)?0:MODE_SCREEN_OPENED;        
    70 //    mode |= (physw_status[2] & 0x00004000)?0:MODE_SCREEN_ROTATED;       
    71      
    72     _GetPropertyCase(PROPCASE_SHOOTING_MODE, &t, 4); 
    73     for (i=0; i<MODESCNT; ++i) { 
    74         if (modemap[i].canonmode == t) { 
    75             return (mode | (modemap[i].hackmode & MODE_SHOOTING_MASK)); 
    76         } 
    77     } 
    78     return (mode); 
    79 } 
    80  
    81 */ 
  • trunk/platform/a430/notes.txt

    r925 r1628  
    55- A430 uses Propset 1 of Properties (see http://tinyurl.com/6zbv9b) 
    66 
    7  
     7Changes: 
     82012-01-05 
     9- histogram, zebra display now correct for replay mode 
     10- raw numbering fixed 
     11- optical data copied from A460 (same 4x zoom optics), updated 
     12- modemap corrected 
     13- some corrections in capt_seq.c 
     14- most of kbd.c thrown out, the generic one is used 
     15- usb sensing identified, working (for usb remote) 
  • trunk/platform/a430/platform_camera.h

    r1555 r1628  
    3737        #undef  CAM_HAS_IS 
    3838        #define CAM_CAN_MUTE_MICROPHONE                 1 
    39         #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1 
     39        #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1 //crashes, when used in 640x480 mode 
    4040        #define CAM_EV_IN_VIDEO                                 1 
    4141 
     
    4949      -96906,  1000000,  148194, 1000000,  191583, 1000000 
    5050 
    51         #define CAM_CONSOLE_LOG_ENABLED                 1 
    5251        #define cam_CalibrationIlluminant1              1 // Daylight 
    5352        // cropping 
     
    6059        // camera name 
    6160        #define PARAM_CAMERA_NAME               3 // parameter number for GetParameterData 
    62         #define CAM_BRACKETING                  1 
    63 //      #define CAM_MULTIPART                   1 
    64  
    65         #define REMOTE_SYNC_STATUS_LED  0xc0220084                              // specifies an LED that turns on while camera waits for USB remote to sync 
     61        #define CAM_DETECT_SCREEN_ERASE         1 
  • trunk/platform/a430/shooting.c

    r1376 r1628  
    11#define PARAM_FILE_COUNTER      0x34 
     2#define PARAM_EXPOSURE_COUNTER  0x01 
    23 
    34#include "platform.h" 
    45 
    56const ApertureSize aperture_sizes_table[] = { 
    6     {  9, 292, "2.8" }, 
    7     { 10, 303, "3.2" }, 
    8     { 11, 320, "3.5" }, 
    9     { 12, 342, "3.5" }, 
    10     { 13, 367, "4.0" }, 
    11     { 14, 395, "4.5" }, 
    12     { 15, 427, "5.1" }, 
    13     { 16, 571, "8.0 ND" }, 
    14     { 17, 590, "9.0 ND" }, 
    15     { 18, 610, "10.0 ND" }, 
    16     { 19, 633, "10.0 ND" }, 
    17     { 20, 660, "11.0 ND" }, 
    18     { 21, 688, "13.0 ND" }, 
    19     { 22, 722, "16.0 ND" }, 
    20 }; 
     7    {  9, 288, "2.8" }, 
     8    { 10, 302, "3.2" }, 
     9    { 11, 318, "3.5" }, 
     10    { 12, 339, "3.5" }, 
     11    { 13, 363, "4.0" }, 
     12    { 14, 390, "4.5" }, 
     13    { 15, 420, "5.0" }, 
     14    { 16, 457, "5.8" }, 
     15    { 17, 449, "8.0 ND" }, 
     16    { 18, 466, "9.0 ND" }, 
     17    { 19, 485, "10.0 ND" }, 
     18    { 20, 510, "10.0 ND" }, 
     19    { 21, 536, "11.0 ND" }, 
     20    { 22, 565, "13.0 ND" }, 
     21    { 23, 597, "16.0 ND" }, 
     22    { 24, 635, "18.0 ND" }, 
     23};// from a460, second column updated (propcase 68) 
    2124 
    2225const ShutterSpeed shutter_speeds_table[] = { 
     
    7174const ISOTable iso_table[] = { 
    7275    {  0,    0, "Auto", -1}, 
    73     {  1,   80,   "80", -1}, 
     76    {  1,   64,   "64", -1}, 
    7477    {  2,  100,  "100", -1}, 
    7578    {  3,  200,  "200", -1}, 
     
    7982/* 
    8083http://www.usa.canon.com/cusa/support/consumer/digital_cameras/powershot_a_series/powershot_a430#Specifications 
    81 Shooting Modes 
    82     Auto; Creative: P, Av, Tv, M; Image: Portrait, Landscape, Night Scene, 
    83     Special Scene  
    84         (Foliage, Snow, Beach, Fireworks, Underwater, Indoor, Kids & Pets, 
    85         Night Snapshot, Color Accent, Color Swap), 
    86     My Colors, Stitch Assist, Movie 
    87 Movie: 640 x 480 / 320 x 240 (30 fps/15 fps) available up to 1GB or 1 hour for each file size, 
    88     320 x 240 (1 min. at 60 fps), 160 x 120 (3 min. at 15 fps) 
    8984canon mode list FFD588D4 in 100b 
    9085*/           
    9186static const CapturemodeMap modemap[] = { 
    92     { MODE_M,                  32769 }, 
     87//    { MODE_M,                  32769 }, 
    9388    { MODE_P,                  32772 }, 
    9489    { MODE_AUTO,               32768 }, 
    95     { MODE_PORTRAIT,           32781 }, 
    96     { MODE_NIGHT_SCENE,        32782 }, // "night scene" on dial, different from "night snapshot" under "scene" below 
    97     { MODE_STITCH,             33290 }, 
    98     { MODE_SCN_NIGHT_SNAPSHOT, 16395 }, // "night snapshot" 
    99     { MODE_SCN_KIDS_PETS,      16399 }, // "kids and pets" 
    100     { MODE_SCN_INDOOR,         16400 }, // "indoor" 
    101     { MODE_SCN_FOLIAGE,        16401 }, // "foliage" 
    102     { MODE_SCN_SNOW,           16402 }, // "snow" 
    103     { MODE_SCN_BEACH,          16403 }, // "beach" 
    104     { MODE_SCN_FIREWORK,       16404 }, // "fireworks" 
    105     { MODE_SCN_COLOR_ACCENT,   16920 }, // "color accent" 
    106     { MODE_SCN_COLOR_SWAP,     16921 }, // "color swap" 
    107     { MODE_VIDEO_STD,          2593  }, 
    108     { MODE_VIDEO_SPEED,        2594  }, // "fast frame rate" 
     90    { MODE_PORTRAIT,           16396 }, 
     91//    { MODE_NIGHT_SCENE,        32782 }, // "night scene" on dial, different from "night snapshot" under "scene" below 
     92    { MODE_STITCH,             33289 }, // 
     93    { MODE_SCN_NIGHT_SNAPSHOT, 16394 }, // "night snapshot" 
     94    { MODE_SCN_KIDS_PETS,      16398 }, // "kids and pets" 
     95    { MODE_SCN_INDOOR,         16399 }, // "indoor" 
     96    { MODE_SCN_FOLIAGE,        16400 }, // "foliage" 
     97    { MODE_SCN_SNOW,           16401 }, // "snow" 
     98    { MODE_SCN_BEACH,          16402 }, // "beach" 
     99    { MODE_SCN_FIREWORK,       16403 }, // "fireworks" 
     100    { MODE_SCN_COLOR_ACCENT,   33303 }, // "color accent" 
     101    { MODE_SCN_COLOR_SWAP,     33304 }, // "color swap" 
     102    { MODE_SUPER_MACRO,        33288 }, //  
     103    { MODE_VIDEO_STD,          3613  }, // 
     104/*    { MODE_VIDEO_SPEED,        2594  }, // "fast frame rate" 
    109105    { MODE_VIDEO_COMPACT,      2595  }, // "compact" 
    110106    { MODE_VIDEO_COLOR_ACCENT, 2591  }, // "color accent" 
    111107    { MODE_VIDEO_COLOR_SWAP,   2592  }, // "color swap" 
     108*/ 
    112109}; 
    113110#include "../generic/shooting.c" 
    114111 
    115 long get_file_next_counter() { 
    116     return get_file_counter(); 
     112long get_file_next_counter() { //looks like this hack is needed for old vxworks 
     113    return ((get_file_counter()>>4)+1)<<4; 
    117114} 
     115 
    118116 
    119117long get_target_file_num() { 
  • trunk/platform/a430/sub/100b/capt_seq.c

    r1376 r1628  
    66 
    77#include "../../../generic/capt_seq.c" 
     8//please note: comments ending in question marks contain the original authors' work 
     9//since most of these functions is copied from the original fw, I corrected parts of the code, 
     10//where (in my opinion) it shouldn't differ from the original - srsa_4c 
    811 
    912void __attribute__((naked,noinline)) sub_FFD2C9B8_my(long p) 
     
    2629              "LDR     R0, [R3]\n" 
    2730              "BL      sub_FFC8B090\n" 
    28             "BL      wait_until_remote_button_is_released\n" 
    29               "BL      capt_seq_hook_set_nr\n" 
    30               "B       sub_FFD2C9F4\n" 
     31            "BL      wait_until_remote_button_is_released\n" // + 
     32              "BL      capt_seq_hook_set_nr\n" // + 
     33              "B       sub_FFD2C9F4\n" //jump to the rest 
    3134  ); 
    3235} 
     
    7376 
    7477              "BL      sub_FFD2C9B8_my\n" 
    75               "BL      capt_seq_hook_raw_here\n" 
     78              "BL      capt_seq_hook_raw_here\n"  // + 
    7679 
    7780             // "BL      sub_FFD483A4\n" 
     
    211214          "BEQ     loc_FFD29B9C\n" 
    212215          "MOV     R1, #0x28C\n" 
    213           "LDR     R0, =0xFFD2952C\n" 
    214           "ADD     R1, R1, #3\n" 
     216          "LDR     R0, =0xFFD29530\n" // =0xffd2952c ? 
     217          "ADD     R1, R1, #2\n" // #3 ? 
    215218          "BL      sub_FFC03AEC\n" 
    216           "BL      _ExitTask\n" 
    217           "BL      sub_FFC11620\n" 
     219          "BL      sub_FFC11620\n" // ExitTask 
    218220          "ADD     SP, SP, #4\n" 
    219221          "LDMFD   SP!, {R4,PC}\n" 
     
    312314"                LDR     R12, [SP]\n" 
    313315"                MOV     R0, R5\n" 
    314 "                LDR     R1, [R12,#0x40]\n" 
     316"                LDR     R1, [R12,#0x24]\n" //0x40 ? 
    315317"                MOV     R2, R4\n" 
    316 "                LDR     R3, [R12,#0x50]\n" 
    317 "                MOV     LR, PC\n" 
    318 "                LDR     PC, [R12,#0x4C]\n" 
     318"                LDR     R3, [R12,#0x34]\n" //0x50 ? 
     319"                MOV     LR, PC\n" 
     320"                LDR     PC, [R12,#0x30]\n" //0x4C ? 
    319321"                B       loc_FFCDEB88\n" 
    320322"loc_FFCDEB50:\n" 
     
    342344"                MOV     R2, R4\n" 
    343345"                ADD     R0, R12, #4\n" 
    344 "                LDR     R1, [R12,#0x40]\n" 
    345 "                LDR     R3, [R12,#0x50]\n" 
    346 "                MOV     LR, PC\n" 
    347 "                LDR     PC, [R12,#0x4C]\n" 
     346"                LDR     R1, [R12,#0x24]\n" //0x40 ? 
     347"                LDR     R3, [R12,#0x34]\n" //0x50 ? 
     348"                MOV     LR, PC\n" 
     349"                LDR     PC, [R12,#0x30]\n" //0x4c ? 
    348350"                B       loc_FFCDED9C\n" 
    349351"loc_FFCDEBB8:\n" 
    350 "                SUB     R3, R2, #0x17\n" 
    351 "                BHI     loc_FFCDEC0C\n" 
     352"                CMP     R2, #0x17\n" //SUB     R3, R2, #0x17 ? 
     353"                BNE     loc_FFCDEC0C\n" //BHI     loc_FFCDEC0C ? 
    352354"                LDR     R1, [R12,#0x24]\n" 
    353355"                ADD     R1, R1, R1,LSL#1\n" 
     
    365367"                LDR     R2, [R3,#0x34]\n" 
    366368"                MOV     LR, PC\n" 
    367 "                LDR     PC, [R3,#0x4C]\n" 
     369"                LDR     PC, [R3,#0x30]\n" //0x4c ? 
    368370"                LDR     R0, [SP]\n" 
    369371"                BL      sub_FFCDD8BC\n" 
     
    518520"                LDR     R12, [SP]\n" 
    519521"                LDR     R2, [R12]\n" 
    520 "                CMP     R2, #0x20\n" 
     522"                CMP     R2, #0x1F\n" //0x20 ? 
    521523"                BNE     loc_FFCDEA08\n" 
    522524"                MOV     R0, R12\n" 
  • trunk/platform/a430/sub/100b/lib.c

    r1527 r1628  
    2121    return 0x4FEED0;       // ?? "CRAW BUF","WBIntegPrm.c" -  1/3" 4 MPix -  (2272*1704*10/8=0x49D7C0) 
    2222} 
    23  
    24 /* 
    25 void *vid_get_viewport_live_fb() 
    26 { 
    27     return (void*)0; 
    28 } 
    29 */ 
    3023 
    3124void *vid_get_viewport_live_fb() // from a540 
     
    5447void *vid_get_viewport_fb_d() 
    5548{ 
    56     return (void*)(*(int*)0x71964); // ?? (found in sub_FFD0F248) 
     49    return (void*)(*(int*)0x71AB0); // @ffd0f29c 
    5750} 
    5851 
  • trunk/platform/a430/sub/100b/stubs_min.S

    r1376 r1628  
    1515DEF(some_flag_for_af_scan, 0x72BA0) // 0xFFD2A294 
    1616DEF(levent_table, 0xFFD3547C) 
    17 DEF(playrec_mode, 0x639C) // FFD32638 
     17DEF(playrec_mode, 0x638C) // @ffd32644 
    1818DEF(sys_mempart_id, 0xD648) // memFindMax 
    19  
  • trunk/platform/generic/kbd.c

    r1568 r1628  
    3333 
    3434#if     defined(CAMERA_a630) || defined(CAMERA_a640) || defined(CAMERA_a610)\ 
    35         || defined(CAMERA_a620) || defined(CAMERA_ixus800_sd700) || defined(CAMERA_a410) 
     35        || defined(CAMERA_a620) || defined(CAMERA_ixus800_sd700) || defined(CAMERA_a410)\ 
     36    || defined(CAMERA_a430) 
    3637#define USB_MASK 0x8000000 
    3738#define USB_IDX 1 
     
    5051                x = (long)*mmio2; 
    5152        #elif           defined(CAMERA_a610) || defined(CAMERA_a620) || defined(CAMERA_a630)\ 
    52                         || defined(CAMERA_a640) ||      defined(CAMERA_ixus800_sd700) || defined(CAMERA_a410)  
     53                        || defined(CAMERA_a640) ||      defined(CAMERA_ixus800_sd700) || defined(CAMERA_a410)\ 
     54            || defined(CAMERA_a430) 
    5355                x = (long)*mmio1; 
    5456        #elif defined(CAMERA_a710) || defined(CAMERA_a700) 
Note: See TracChangeset for help on using the changeset viewer.