Changeset 1268


Ignore:
Timestamp:
08/04/11 20:12:49 (22 months ago)
Author:
pixeldoc2000
Message:

ixus300_sd4000 finsig2 (http://chdk.setepontos.com/index.php?topic=6560.0) tested and results merged, KEY_SHOOT_FULL changed, zoom_status fixed, comments

Location:
trunk/platform/ixus300_sd4000
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/platform/ixus300_sd4000/kbd.c

    r1196 r1268  
    271271} 
    272272 
    273 // Base values in Play Mode 
     273// Base values in playback 
    274274// physw_status[0] = 0x800C91F      // 1 
    275275// physw_status[1] = 0xFFE          // 2 (Mode Switch: Auto) 
     
    281281// physw_status[2] 0x20000 SD-Card READONLY 
    282282static KeyMap keymap[] = { 
    283     { 0, KEY_UP         , 0x00000004 }, 
    284     { 0, KEY_DOWN       , 0x00000001 }, 
    285     { 0, KEY_LEFT       , 0x00000008 }, 
    286     { 0, KEY_RIGHT      , 0x00000002 }, 
    287     { 1, KEY_SET        , 0x00000040 }, 
    288     { 0, KEY_SHOOT_FULL , 0x00000800 }, 
    289     //{ 0, KEY_SHOOT_FULL , 0x00000900 },   // 0x00000800(KEY_SHOOT_FULL) + 0x00000100 (KEY_SHOOT_HALF) 
    290     { 0, KEY_SHOOT_HALF , 0x00000100 }, 
    291     { 1, KEY_ZOOM_IN    , 0x00000010 }, 
    292     { 1, KEY_ZOOM_OUT   , 0x00000020 }, 
    293     { 1, KEY_MENU       , 0x00000080 }, 
     283    { 0, KEY_UP         , 0x00000004 },    // finsig2 
     284    { 0, KEY_DOWN       , 0x00000001 },    // finsig2 
     285    { 0, KEY_LEFT       , 0x00000008 },    // finsig2 
     286    { 0, KEY_RIGHT      , 0x00000002 },    // finsig2 
     287    { 1, KEY_SET        , 0x00000040 },    // finsig2 
     288    //{ 0, KEY_SHOOT_FULL , 0x00000800 }, 
     289    { 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 
     290    { 0, KEY_SHOOT_HALF , 0x00000100 },    // finsig2 
     291    { 1, KEY_ZOOM_IN    , 0x00000010 },    // finsig2 
     292    { 1, KEY_ZOOM_OUT   , 0x00000020 },    // finsig2 
     293    { 1, KEY_MENU       , 0x00000080 },    // finsig2 
    294294    { 0, KEY_PRINT      , 0x0000000C },   // ALT Key workaround: KEY_UP + KEY_LEFT (camera has no print key) 
    295295    { 0, 0, 0 } 
  • trunk/platform/ixus300_sd4000/lib.c

    r1196 r1268  
    4848//ROM:FF997634                 CMP     R4, #0x94 <--- 
    4949int get_flash_params_count(void) { 
    50     return 148;     // 0x94 = 148 
     50    return 148;     // 0x94 = 148, finsig2 
    5151} 
    5252 
  • trunk/platform/ixus300_sd4000/platform_camera.h

    r1265 r1268  
    3131 
    3232    #undef  CAM_UNCACHED_BIT                        // shut up compiler 
    33     #define CAM_UNCACHED_BIT            0x40000000  // ROM:FF88A248 via ExMem.FreeCacheable() 
     33    #define CAM_UNCACHED_BIT            0x40000000  // ROM:FF88A248 via ExMem.FreeCacheable(), finsig2 
    3434 
    3535    #undef  CAM_HAS_ERASE_BUTTON 
     
    7575    #define cam_CalibrationIlluminant1  1           // ToDo: Daylight ? 
    7676 
    77     #define CAM_RAW_ROWPIX              3816        // ROM:FFB28EEC 
    78     #define CAM_RAW_ROWS                2784        // ROM:FFB28EF4 
     77    #define CAM_RAW_ROWPIX              3816        // ROM:FFB28EEC or ROM:ff93c408, finsig2 
     78    #define CAM_RAW_ROWS                2784        // ROM:FFB28EF4 or ROM:ff93c414, finsig2 
    7979 
    8080    #define CAM_JPEG_WIDTH              3648        // JPEG Exif data or ROM:FFB28EFC 
  • trunk/platform/ixus300_sd4000/shooting.c

    r1196 r1268  
    101101// PROPCASE 49 
    102102// Mapping between camera mode and PROPCASE_SHOOTING_MODE (modelist.h) 
     103// finsig2 found 33324, 33323, 33320, 33322, 33321, 33288, 33289 in firmware but not in modemap 
    103104static const CapturemodeMap modemap[] = { 
    104105    { MODE_AUTO,               32768 }, 
  • trunk/platform/ixus300_sd4000/sub/100d/lib.c

    r1196 r1268  
    6363***/ 
    6464long hook_raw_size() { 
    65     return 0xF32880;    // 15935616 
     65    return 0xF32880;    // 15935616, finsig2 
    6666} 
    6767 
     
    110110// ROM:FF919AD4    LDR     R0, =0x40471000 <--- 
    111111void *vid_get_bitmap_fb() { 
    112     return (void*)0x40471000;    // ROM:FF919AD4 or ROM:FFA347DC or ROM:FF85B154 
     112    return (void*)0x40471000;    // ROM:FF919AD4 or ROM:FFA347DC or ROM:FF85B154, finsig2 
    113113} 
    114114 
     
    121121***/ 
    122122void *vid_get_viewport_fb() { 
    123     return (void*)0x40587700;    // ROM:FFB25ED8 or ROM:FFB25DFC 
     123    return (void*)0x40587700;    // ROM:FFB25ED8 or ROM:FFB25DFC, finsig2 
    124124} 
    125125 
     
    127127// possible future use 
    128128void *vid_get_viewport_fb_d() { 
    129     return (void*)(*(int*)0x2AA4);    // ROM:FF874770 0x2A50 + 0x54 
     129    return (void*)(*(int*)0x2AA4);    // ROM:FF874770 0x2A50 + 0x54, value changes between 0x404ef900 and 0x40f210a0 in playback, record ist always 0x40f210a0 
    130130} 
    131131 
     
    134134// ROM:FFA04F84    ADR     R1, a9999       ; "9999" 
    135135char *camera_jpeg_count_str() { 
    136     return (char*)0xA15B8; 
     136    return (char*)0xA15B8;    // finsig2 
    137137} 
  • trunk/platform/ixus300_sd4000/sub/100d/stubs_entry_2.S

    r1266 r1268  
    66#define NULLSUB 0xFF810B1C 
    77 
    8 // --- not found by sigfinder 
     8// --- not found by finsig 
    99NHSTUB(Lseek, 0xFF836ED4)                            // OK, same as lseek, like G11 
    1010NHSTUB(RefreshPhysicalScreen, 0xFFA12124)            // OK, search String "ScreenUnLock", like G11 
     
    5050 
    5151 
    52 // --- NULLSTUBS (not found by sigfinder) 
     52// --- NULLSTUBS (not found by finsig) 
    5353NHSTUB(UnsetZoomForMovie, NULLSUB)                // nullsub_1, does not exist since canon firmware allow Zoom for Movie 
    5454NHSTUB(SetZoomActuatorSpeedPercent, NULLSUB)      // ToDo: nullsub_1 
     
    6363 
    6464 
    65 // --- stubs_entry.S (sigfinder) 
     65// --- stubs_entry.S (finsig) 
    6666// ROM:FF96CBFC register libc function 
    6767//NHSTUB(AllocateMemory, 0xffab8cf0)                 // OK!! (malloc) 
     
    7272//NHSTUB(DeleteFile_Fut, 0xff836730)                 // OK! 
    7373//NHSTUB(ExecuteEventProcedure, 0xFF88B9C0)          // cause shutdown, referens from FactoryMode Stuff and eventproc_export_ExecuteEventProcedure() 
    74 //NHSTUB(ExecuteEventProcedure, 0xFF88B948)          // sigfinder, like SD990, OK 
     74//NHSTUB(ExecuteEventProcedure, 0xFF88B948)          // finsig, like SD990, OK 
    7575//NHSTUB(ExitTask, 0xff81eacc)                       // OK!, eventproc 
    7676//NHSTUB(Fclose_Fut, 0xff8368ac)                     // OK!, eventproc 
     
    8181//NHSTUB(Fread_Fut, 0xff836958)                      // OK!, eventproc 
    8282//NHSTUB(FreeMemory, 0xffab8ce8)                     // OK!, eventproc 
    83 //NHSTUB(FreeUncacheableMemory, 0xff83a45c)          // OK!! 
     83//NHSTUB(FreeUncacheableMemory, 0xff83a45c)          // OK!!, finsig2 
    8484//NHSTUB(Fseek_Fut, 0xff836a4c)                      // OK!, eventproc 
    8585//NHSTUB(Fwrite_Fut, 0xff8369ac)                     // OK!, eventproc 
    8686//NHSTUB(GetBatteryTemperature, 0xff8652a0)          // OK 
    8787//NHSTUB(GetCCDTemperature, 0xff86522c)              // OK 
    88 //NHSTUB(GetDrive_ClusterSize, 0xff871e30)           // maybe ok, like D10 
    89 //NHSTUB(GetDrive_TotalClusters, 0xff871e64)         // maybe ok 
     88//NHSTUB(GetDrive_ClusterSize, 0xff871e30)           // maybe ok, like D10, finsig2 
     89//NHSTUB(GetDrive_TotalClusters, 0xff871e64)         // maybe ok, finsig2 
    9090//NHSTUB(GetFocusLensSubjectDistance, 0xff9629b8)    // maybe ok 
    91 //NHSTUB(GetFocusLensSubjectDistanceFromLens, 0xff962d40) // maybe ok 
     91//NHSTUB(GetFocusLensSubjectDistanceFromLens, 0xff962d40) // maybe ok, finsig2 
    9292//NHSTUB(GetOpticalTemperature, 0xff865314)          // maybe ok 
    9393//NHSTUB(GetParameterData, 0xff9975f4)               // OK!, like SX210 
     
    9999//NHSTUB(LocalTime, 0xff88923c)                      // OK 
    100100//NHSTUB(LockMainPower, 0xff895b78)                  // OK! 
    101 //NHSTUB(MakeDirectory_Fut, 0xff8367a4)              // OK, like SD990 
    102 //NHSTUB(MoveFocusLensToDistance, 0xffb228b0) 
     101//NHSTUB(MakeDirectory_Fut, 0xff8367a4)              // OK, like SD990, finsig2 
     102//NHSTUB(MoveFocusLensToDistance, 0xffb228b0)        // finsig2 
    103103NHSTUB(MoveFocusLensToDistance, 0xFFB2289C)          // ?!? 
    104104//NHSTUB(MoveZoomLensWithPoint, 0xffab6b64)          // maybe ok 
    105105//NHSTUB(NewTaskShell, 0xff88f06c)                   // OK 
    106 //NHSTUB(Open, 0xff86f13c)                           // sigfinder, WRONG ? 
     106//NHSTUB(Open, 0xff86f13c)                           // finsig, WRONG ? 
    107107//NHSTUB(Open, 0xFF81A9E4)                           // open, don't cause shutdown 
    108108//NHSTUB(Open, 0xFF836D4C)                           // eventproc, like SX210, cause shutdown 
     
    110110//NHSTUB(PostLogicalEventToUI, 0xff893994)           // OK!, eventproc 
    111111//NHSTUB(Read, 0xff81ac7c)                           // OK!! 
    112 //NHSTUB(RenameFile_Fut, 0xff836868)                 // sigfinder, WRONG!, does not point to function start 
     112//NHSTUB(RenameFile_Fut, 0xff836868)                 // finsig, WRONG!, does not point to function start, finsig2 
    113113NHSTUB(RenameFile_Fut, 0xFF83669C)                   // OK, like SD990 and G11 
    114114//NHSTUB(SetAutoShutdownTime, 0xff895bec)            // OK 
    115115//NHSTUB(SetCurrentCaptureModeType, 0xff89e550)      // OK 
    116 //NHSTUB(SetFileTimeStamp, 0xff9514c0)               // sigfinder, WRONG!, does not point to function start 
     116//NHSTUB(SetFileTimeStamp, 0xff9514c0)               // finsig, WRONG!, does not point to function start, finsig2 
    117117NHSTUB(SetFileTimeStamp, 0xFF837054)                 // maybe ok, like G11 and SX210 
    118118//NHSTUB(SetLogicalEventActive, 0xff8958b4)          // OK 
     
    123123//NHSTUB(UnlockMainPower, 0xff895acc)                // OK eventproc 
    124124 
    125 //NHSTUB(UpdateMBROnFlash, 0xFF871CB0)               // sigfinder, OK, "Make card bootable" does work (ROM:FFAB92B8 MakeScriptDisk -> ROM:FF871D5C aMakeScriptDisk -> ROM:FF871CB0 UpdateMBROnFlash) 
     125//NHSTUB(UpdateMBROnFlash, 0xFF871CB0)               // finsig, OK, "Make card bootable" does work (ROM:FFAB92B8 MakeScriptDisk -> ROM:FF871D5C aMakeScriptDisk -> ROM:FF871CB0 UpdateMBROnFlash), finsig2 
    126126//NHSTUB(MakeSDCardBootable, 0xFF871D30)             // not used 
    127127 
     
    132132//NHSTUB(_sqrt, 0xffb5cf50) 
    133133//NHSTUB(close, 0xff81aa94)                          // OK!!!, like D10 
    134 //NHSTUB(closedir, 0xffa95e28)                       // does not point to function start 
     134//NHSTUB(closedir, 0xffa95e28)                       // does not point to function start, finsig2 
    135135NHSTUB(closedir, 0xFFA95C40)                         // OK, like SX210 
    136 //NHSTUB(closefastdir, 0xffa95e28)                   // sigfinder, WRONG!, does not point to function start 
     136//NHSTUB(closefastdir, 0xffa95e28)                   // finsig, WRONG!, does not point to function start, finsig2 
    137137NHSTUB(closefastdir, 0xFFA95C40)                     // aka. closedir 
    138138//NHSTUB(free, 0xff81415c)                           // OK! 
     
    141141//NHSTUB(kbd_p2_f, 0xff8340d0)                       // maybe ok 
    142142//NHSTUB(kbd_read_keys_r2, 0xff86122c)               // OK! 
    143 //NHSTUB(lseek, 0xff836ee0)                          // sigfinder, WRONG!, does not point to function start 
     143//NHSTUB(lseek, 0xff836ee0)                          // finsig, WRONG!, does not point to function start 
    144144NHSTUB(lseek, 0xFF836ED4)                            // OK, same as Lseek 
    145145//NHSTUB(malloc, 0xff814100)                         // OK!, referens from AllocateUncacheableMemory, D10 is different 
     
    147147//NHSTUB(memcpy, 0xff83fae8)                         // OK!!, eventproc, like D10 
    148148//NHSTUB(memset, 0xffa15ddc)                         // OK!, eventproc 
    149 //NHSTUB(mkdir, 0xff837254)                          // OK!, like SX210 and G11 
     149//NHSTUB(mkdir, 0xff837254)                          // OK!, like SX210 and G11, finsig2 
    150150//NHSTUB(mktime_ext, 0xff8ac9f0)                     // OK!, like SD990 and G11 
    151151//NHSTUB(open, 0xff81a9e4)                           // OK!!!, like D10 
    152 //NHSTUB(opendir, 0xffa95c90)                        // looks OK, AKA openfastdir, D10 is different 
    153 //NHSTUB(rand, 0xff820774)                           // OK 
     152//NHSTUB(opendir, 0xffa95c90)                        // looks OK, AKA openfastdir, D10 is different, finsig2 
     153//NHSTUB(rand, 0xff820774)                           // OK, finsig2 
    154154//NHSTUB(read, 0xff81ac7c)                           // OK! 
    155 //NHSTUB(srand, 0xff820768)                          // OK 
     155//NHSTUB(srand, 0xff820768)                          // OK, finsig2 
    156156//NHSTUB(stat, 0xff836f1c)                           // OK, like G11 
    157 //NHSTUB(strcat, 0xff813f5c)                         // WRONG, does point to strncpy 
     157//NHSTUB(strcat, 0xff813f5c)                         // WRONG, does point to strncpy, finsig2 
    158158NHSTUB(strcat, 0xFF8AC1AC)                           // OK!!, like G11 and D10 
    159 //NHSTUB(strchr, 0xff813fe4)                         // OK!!, like D10 
     159//NHSTUB(strchr, 0xff813fe4)                         // OK!!, like D10, finsig2 
    160160//NHSTUB(strcmp, 0xff820628)                         // OK 
    161161//NHSTUB(strcpy, 0xff820610)                         // OK 
     
    163163//NHSTUB(strlen, 0xff814030)                         // OK 
    164164//NHSTUB(strncmp, 0xff813f98)                        // OK!, like D10 
    165 //NHSTUB(strncpy, 0xff813f5c)                        // OK! 
    166 //NHSTUB(strrchr, 0xff83fac0)                        // sigfinder, WRONG! 
     165//NHSTUB(strncpy, 0xff813f5c)                        // OK!, finsig2 
     166//NHSTUB(strrchr, 0xff83fac0)                        // finsig, WRONG!, finsig2 
    167167NHSTUB(strrchr, 0xFF814008)                          // OK!!, like G11 and D10 
    168168//NHSTUB(strtol, 0xff83fdc8)                         // OK 
    169169//NHSTUB(strtolx, 0xff83fbcc)                        // OK 
    170 //NHSTUB(time, 0xff88981c)                           // looks simular to A720 
     170//NHSTUB(time, 0xff88981c)                           // looks simular to A720, finsig2 
    171171//NHSTUB(vsprintf, 0xff8205d4)                       // OK! 
    172172//NHSTUB(write, 0xff81acdc)                          // OK, like SD990 and G11 
     
    189189//NHSTUB(initialise_ptp_handlers_data, 0xFFA4E898) 
    190190NHSTUB(get_ptp_handler, 0xFFA4EC7C) 
    191 //NHSTUB(add_ptp_handler, 0xFFA4EABC)                // sigfinder address ok 
     191//NHSTUB(add_ptp_handler, 0xFFA4EABC)                // finsig address ok 
    192192NHSTUB(remove_ptp_handler, 0xFFA4EBB0) 
    193193NHSTUB(get_task_lists, 0xFF83544C) 
     
    196196NHSTUB(Rec2PB, 0xFF897590)                           // search String "AC:Rec2PB" 
    197197//NHSTUB(set_control_event, 0xFF8955C4)              // via eventproc_export_IsControlEventActive (last call), levent_table contains control event id's (Logical Event Table) 
    198 //NHSTUB(set_control_event, 0xff895504)              // sigfinder ok (ptpcam --chdk mode command does work) 
    199 //NHSTUB(reboot_fw_update, 0xffa9b228)               // sigfinder address ok 
     198//NHSTUB(set_control_event, 0xff895504)              // finsig ok (ptpcam --chdk mode command does work) 
     199//NHSTUB(reboot_fw_update, 0xffa9b228)               // finsig address ok, finsig2 
    200200 
    201201 
  • trunk/platform/ixus300_sd4000/sub/100d/stubs_min.S

    r1266 r1268  
    44 
    55// --- already changed but unshure if 100% correct 
    6 DEF(physw_status, 0x32E94)    // ROM:FF8347D4, in ShowPhySwStatus() search "GpioStatus" or ROM:FF833F4C 
     6DEF(physw_status, 0x32E94)    // ROM:FF8347D4, in ShowPhySwStatus() search "GpioStatus" or ROM:FF833F4C, finsig2 
    77 
    8 DEF(physw_run, 0x1C34)    // ROM:FF834400, in task_PhySw() 0x1C28 + 0xC = 0x1C34 
     8DEF(physw_run, 0x1C34)    // ROM:FF834400, in task_PhySw() 0x1C28 + 0xC = 0x1C34, finsig2 
    99 
    1010// ROM:FF860864                 LDR     R0, =0x24A4 <--- 
     
    2020DEF(led_table, 0x24AC)    // R0 -> 0x24A4 + 0x8 
    2121 
    22 DEF(playrec_mode,0x2D78)    // ROM:FF838AE4 (ROM:FF882328) search for String "MenuIn" 0x2D74 + 4, OK, play: 0x3, rec: 0x2 
     22DEF(playrec_mode,0x2D78)    // ROM:FF838AE4 (ROM:FF882328) search for String "MenuIn" 0x2D74 + 4, play: 0x3, rec: 0x2, finsig2 
    2323 
    2424// like SX210 
     
    3939// ROM:FFAC96BC                 LDR     R0, [R1,R0,LSL#2] 
    4040// ROM:FFAC96C0                 BX      LR 
    41 DEF(FlashParamsTable, 0xFFC00624)    // referenced at ROM:FFAC96B8 
     41DEF(FlashParamsTable, 0xFFC00624)    // referenced at ROM:FFAC96B8, finsig2 
    4242 
    43 // ToDo: check if correct, in playback CHDK OSD does not hide if function menu is active 
     43// ToDo: in playback CHDK OSD does not hide if function menu is active 
    4444// ROM:FF890234, in function StartRecModeMenu() or eventproc_StartRecModeMenu() 
    45 //DEF(canon_menu_active, 0x303C)    // ROM:FF890234 0x303C 
    46 DEF(canon_menu_active, 0x3040)    // ROM:FF890234 0x303C + ROM:FF890238 4 
     45DEF(canon_menu_active, 0x3040)    // ROM:FF890234 0x303C + ROM:FF890238 4, finsig2 
    4746 
    48 // ToDo: check if correct 
    4947// if canon_shoot_menu_active is wrong enable CAM_SHOW_OSD_IN_SHOOT_MENU as a workaround to display CHDK OSD in record mode 
    50 DEF(canon_shoot_menu_active, 0x7B5D)    // ROM:FF9ABD94 0x7B5C + ROM:FF9ABD98 1 
     48DEF(canon_shoot_menu_active, 0x7B5D)    // ROM:FF9ABD94 0x7B5C + ROM:FF9ABD98 1, finsig2 
    5149 
     50// Canon Logical Event Table 
    5251// search for string "PressRightButton" 
    53 DEF(levent_table, 0xFFB9F59C) 
     52DEF(levent_table, 0xFFB9F59C)    // finsig2 
    5453 
    5554// ROM:FF96B418 or ROM:FF96A780 or ROM:FF96B0F8, found in task_MovieRecord() 
    56 DEF(movie_status, 0x6A14)    // 0x69D8 + 0x3C, OK 
     55DEF(movie_status, 0x6A14)    // 0x69D8 + 0x3C, finsig2 
    5756 
    5857// ROM:FF99D340 
     
    6564DEF(focus_busy, 0x67F0)    // 0x67E8 + 0x8 ?!? 
    6665 
    67 // ROM:FFACC8B4, search for "ZoomCon_EnterCaptModeChange" 
    68 DEF(zoom_status, 0x315B)    // ?!? 
     66// ROM:FFACC8B4, search for "ZoomCon_EnterCaptModeChange" ? 
     67//DEF(zoom_status, 0x315B)    // probably wrong... 
     68DEF(zoom_status, 0xCEA4)    // ToDo: verify, finsig2 
    6969 
    7070// ROM:FFA114FC, called by RefreshPhysicalScreen() 
    71 DEF(full_screen_refresh, 0x926C) 
     71DEF(full_screen_refresh, 0x926C)    // finsig2 
    7272 
    7373// ROM:FF96F398, like SX210 and SD990 
    74 DEF(some_flag_for_af_scan, 0x6DD8) 
     74DEF(some_flag_for_af_scan, 0x6DD8)    // finsig2 
    7575 
    7676 
    7777// --- ToDo: required ? 
    78 DEF(some_f_for_dng, 0xDEAD)          // ??? TODO NOT FOUND! 
    79 DEF(second_ext_for_dng, 0xDEAD)      // ??? TODO NOT FOUND! 
     78DEF(some_f_for_dng, 0xDEAD)          // ToDo: required or outdated? 
     79DEF(second_ext_for_dng, 0xDEAD)      // ToDo: required or outdated? 
Note: See TracChangeset for help on using the changeset viewer.