Changeset 1251


Ignore:
Timestamp:
07/29/11 08:25:29 (22 months ago)
Author:
philmoz
Message:

Patch for sx220 from funnel http://chdk.setepontos.com/index.php?topic=650.msg70956#msg70956
-new defs in platform_camera.c to disable raw in lowlight mode and compression of badpixel.bin
-shooting.c: now using the GetImageFolder? function to get the target_dir_name.
-cleanup of boot.c. Removed dual partition support. New cameras support booting from fat32 partitions.
-capt_seq.c: moved capt_seq_hook_raw_here and added the short shutter press fix code.
-assigned more exmem memory in makefile.inc because the big badpixel.bin(made at ISO3200 181kb) caused lua scripts to throw a not enough memory error.
-stubs_entry_2.S comments cleanup.

Location:
trunk/platform/sx220hs
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/platform/sx220hs/platform_camera.h

    r1237 r1251  
    2020// for information on each setting. If the default values are correct for your camera then 
    2121// don't override them again in here. 
    22  
     22         
     23        #define CAM_DISABLE_RAW_IN_LOW_LIGHT_MODE       1 
     24        #define DNG_VERT_RLE_BADPIXELS                  1 
    2325        #define CAM_AV_OVERRIDE_IRIS_FIX                1               // for cameras that require _MoveIrisWithAv function to override Av. 
    2426        #define CAM_KEY_CLICK_DELAY                     150 
  • trunk/platform/sx220hs/shooting.c

    r1237 r1251  
    138138    n = (n>>4)&0x3FFF; 
    139139 
    140     //n+=22; 
    141         return n; 
     140    return n; 
     141} 
     142 
     143void get_target_dir_name(char *out) 
     144{        
     145        extern void _GetImageFolder(char*,int,int,int); 
     146        _GetImageFolder(out,get_file_next_counter(),0x400,time(NULL)); 
    142147} 
    143148 
     
    150155} 
    151156 
    152 void get_target_dir_name(char *out) 
    153 {        
    154         //getting the dir name directly from ram @0xBECA4. @FF159918 
    155         char str[14]; 
    156         strncpy(str, (char*)((int*)(0xBECA4)), 14); 
    157         sprintf(out, "A%s", str); 
    158          
    159         //SX220 crashes on GetImageFolder (Mounter.c assert) 
    160 /*      extern void _GetImageFolder(char*,int,int,int); 
    161         out[0] = 'A'; 
    162         _GetImageFolder(out+1,get_file_next_counter(),0x400,time(NULL));*/ 
    163          
    164         //this one worked only for monthly, not for daily 
    165 /*      int month; 
    166         struct tm *ttm; 
    167         unsigned long t; 
    168         t = time(NULL); 
    169         ttm = localtime(&t); 
    170         month = ttm->tm_mon + 1; 
    171         sprintf(out, "A/DCIM/%03d___%02d", get_target_dir_num(), month);*/ 
    172  
    173 } 
    174  
    175157int circle_of_confusion = 5; 
    176158 
  • trunk/platform/sx220hs/sub/100a/boot.c

    r1230 r1251  
    441441                 "MOVNE   R0, R5\n" 
    442442                 "BLNE    sub_FF08F3F4\n" 
    443                  "BL      sub_FF08B1AC_my\n"                     //patched 
     443                 "BL      sub_FF08B1AC\n" 
    444444                 "BL      core_spytask_can_start\n"      //added CHDK: Set "it's-safe-to-start"-Flag for spytask 
    445                                  "CMP     R4, #0\n" 
    446                  "LDMNEFD SP!, {R4-R6,PC}\n" 
    447                  "MOV     R0, R5\n" 
    448                  "LDMFD   SP!, {R4-R6,LR}\n" 
    449                  "MOV     R1, #0\n" 
    450                                  "B       sub_FF08F3F4\n" 
    451445                                  
    452  ); 
    453 } 
    454  
    455 void __attribute__((naked,noinline)) sub_FF08B1AC_my() { 
    456   
    457  asm volatile( 
    458                  "STMFD   SP!, {R4,LR}\n" 
    459                  "MOV     R0, #3\n" 
    460                  "BL      sub_FF06A9D0_my\n"           //patched 
    461                  "BL      sub_FF169D7C\n"              //nullsub_100 
    462                  "LDR     R4, =0x4268\n" 
    463                  "LDR     R0, [R4,#4]\n" 
    464                  "CMP     R0, #0\n" 
    465                  "BNE     loc_FF08B1E4\n" 
    466                  "BL      sub_FF069B68\n" 
    467                  "BL      sub_FF15943C\n" 
    468                  "BL      sub_FF069B68\n" 
    469                  "BL      sub_FF066010\n" 
    470                  "BL      sub_FF069A3C\n" 
    471                  "BL      sub_FF1594D4\n" 
    472  "loc_FF08B1E4:\n" 
    473                  "MOV     R0, #1\n" 
    474                  "STR     R0, [R4]\n" 
    475                  "LDMFD   SP!, {R4,PC}\n" 
    476  ); 
    477 } 
    478  
    479  
    480 void __attribute__((naked,noinline)) sub_FF06A9D0_my() { 
    481   
    482  asm volatile( 
    483                  "STMFD   SP!, {R4-R10,LR}\n" 
    484                  "MOV     R6, R0\n" 
    485                  "BL      sub_FF06A980\n" 
    486                  "LDR     R1, =0x3C5A0\n" 
    487                  "MOV     R5, R0\n" 
    488                  "ADD     R4, R1, R0,LSL#7\n" 
    489                  "LDR     R0, [R4,#0x6C]\n" 
    490                  "TST     R0, #4\n" 
    491                  "LDRNE   R1, =0x9C4\n" 
    492                  "LDRNE   R0, =0xFF06A3C4\n"  //aMounter 
    493                  "BLNE    sub_FF00EC88\n"     //Assert 
    494                  "MOV     R1, R6\n" 
    495                  "MOV     R0, R5\n" 
    496                  "BL      sub_FF06A138\n" 
    497                  "LDR     R0, [R4,#0x38]\n" 
    498                  "BL      sub_FF06B010\n" 
    499                  "CMP     R0, #0\n" 
    500                  "STREQ   R0, [R4,#0x6C]\n" 
    501                  "MOV     R0, R5\n" 
    502                  "BL      sub_FF06A1C8\n" 
    503                  "MOV     R0, R5\n" 
    504                  "BL      sub_FF06A524_my\n"  //patched 
    505                  "MOV     R9, R0\n" 
    506                  "MOV     R0, R5\n" 
    507                  "BL      sub_FF06A840\n" 
    508                  "LDR     R2, =0x3C620\n" 
    509                  "LDR     R6, [R4,#0x3C]\n" 
    510                  "ADD     R1, R5, R5,LSL#4\n" 
    511                  "LDR     R8, [R4,#0x38]\n" 
    512                  "LDR     R7, [R2,R1,LSL#2]\n" 
    513                  "CMP     R6, #0\n" 
    514                  "AND     R9, R9, R0\n" 
    515                  "MOV     R5, #0\n" 
    516                  "MOVEQ   R0, #0x80000001\n" 
    517                  "BEQ     loc_FF06AAA0\n" 
    518                  "MOV     R0, R8\n" 
    519                  "BL      sub_FF069CB4\n" 
    520                  "CMP     R0, #0\n" 
    521                  "MOVNE   R5, #4\n" 
    522                  "MOV     R0, R8\n" 
    523                  "BL      sub_FF16CCD8\n" 
    524                  "CMP     R0, #0\n" 
    525                  "CMPNE   R7, #2\n" 
    526                  "BICNE   R5, R5, #4\n" 
    527                  "CMP     R6, #5\n" 
    528                  "ORRNE   R0, R5, #1\n" 
    529                  "BICEQ   R0, R5, #1\n" 
    530                  "CMP     R9, #0\n" 
    531                  "BICEQ   R0, R0, #2\n" 
    532                  "ORREQ   R0, R0, #0x80000000\n" 
    533                  "BICNE   R0, R0, #0x80000000\n" 
    534                  "ORRNE   R0, R0, #2\n" 
    535  
    536  "loc_FF06AAA0:\n" 
    537                  "STR     R0, [R4,#0x40]\n" 
    538                  "LDMFD   SP!, {R4-R10,PC}\n" 
    539  
    540  ); 
    541 } 
    542  
    543 void __attribute__((naked,noinline)) sub_FF06A524_my() { 
    544  
    545  asm volatile( 
    546                  "STMFD   SP!, {R4-R6,LR}\n" 
    547                  "MOV     R5, R0\n" 
    548                  "LDR     R0, =0x3C5A0\n" 
    549                  "ADD     R4, R0, R5,LSL#7\n" 
    550                  "LDR     R0, [R4,#0x6C]\n" 
    551                  "TST     R0, #2\n" 
    552                  "MOVNE   R0, #1\n" 
    553                  "LDMNEFD SP!, {R4-R6,PC}\n" 
    554                  "LDR     R0, [R4,#0x38]\n" 
    555                  "MOV     R1, R5\n" 
    556                //  "BL      sub_FF06A24C\n"    
    557                                  "BL      sub_FF06A24C_my\n"  //patched 
    558                  "CMP     R0, #0\n" 
    559                  "LDRNE   R0, [R4,#0x38]\n" 
    560                  "MOVNE   R1, R5\n" 
    561                  "BLNE    sub_FF06A3E8\n" 
    562                  "LDR     R2, =0x3C620\n" 
    563                  "ADD     R1, R5, R5,LSL#4\n" 
    564                  "LDR     R1, [R2,R1,LSL#2]\n" 
    565                  "CMP     R1, #4\n" 
    566                  "BEQ     loc_FF06A584\n" 
    567                  "CMP     R0, #0\n" 
    568                  "LDMEQFD SP!, {R4-R6,PC}\n" 
    569                  "MOV     R0, R5\n" 
    570                  "BL      sub_FF069D44\n" 
    571  "loc_FF06A584:\n" 
    572                  "CMP     R0, #0\n" 
    573                  "LDRNE   R1, [R4,#0x6C]\n" 
    574                  "ORRNE   R1, R1, #2\n" 
    575                  "STRNE   R1, [R4,#0x6C]\n" 
    576                  "LDMFD   SP!, {R4-R6,PC}\n" 
    577  
    578         ); 
    579   
    580 } 
    581  
    582 void __attribute__((naked,noinline)) sub_FF06A24C_my() { 
    583  
    584  asm volatile( 
    585                                  "STMFD   SP!, {R4-R10,LR}\n" 
    586                                  "MOV     R9, R0\n" 
    587                  "LDR     R0, =0x3C5A0\n" 
    588                  "MOV     R6, #0\n" 
    589                  "ADD     R5, R0, R1,LSL#7\n" 
    590                  "LDR     R0, [R5,#0x3C]\n" 
    591                  "MOV     R7, R6\n" 
    592                  "CMP     R0, #7\n" 
    593                  "MOV     R8, R6\n" 
    594                                  "ADDCC   PC, PC, R0,LSL#2\n"   
    595                                  "B       loc_FF06A3A4\n" 
    596  
    597  "loc_FF06A278:\n" 
    598                  "B       loc_FF06A2AC\n" 
    599  
    600  "loc_FF06A27C:\n" 
    601                  "B       loc_FF06A294\n" 
    602  
    603  "loc_FF06A280:\n" 
    604                  "B       loc_FF06A294\n" 
    605  
    606  "loc_FF06A284:\n" 
    607                  "B       loc_FF06A294\n" 
    608  
    609  "loc_FF06A288:\n" 
    610                  "B       loc_FF06A294\n" 
    611  
    612  "loc_FF06A28C:\n" 
    613                  "B       loc_FF06A39C\n" 
    614  
    615  "loc_FF06A290:\n" 
    616                  "B       loc_FF06A294\n" 
    617  
    618  "loc_FF06A294:\n" 
    619                                  "MOV     R2, #0\n" 
    620                  "MOV     R1, #0x200\n" 
    621                  "MOV     R0, #2\n" 
    622                  "BL      sub_FF085288\n" 
    623                  "MOVS    R4, R0\n" 
    624                  "BNE     loc_FF06A2B4\n" 
    625  
    626  "loc_FF06A2AC:\n" 
    627                  "MOV     R0, #0\n" 
    628                  "LDMFD   SP!, {R4-R10,PC}\n" 
    629  
    630  "loc_FF06A2B4:\n" 
    631                  "LDR     R12, [R5,#0x50]\n" 
    632                  "MOV     R3, R4\n" 
    633                  "MOV     R2, #1\n" 
    634                  "MOV     R1, #0\n" 
    635                  "MOV     R0, R9\n" 
    636                  "BLX     R12\n" 
    637                  "CMP     R0, #1\n" 
    638                  "BNE     loc_FF06A2E0\n" 
    639                  "MOV     R0, #2\n" 
    640                  "BL      sub_FF0853D4\n"       ///ExMemMan.c 
    641                  "B       loc_FF06A2AC\n" 
    642  
    643  "loc_FF06A2E0:\n" 
    644                  "LDR     R1, [R5,#0x64]\n" 
    645                  "MOV     R0, R9\n" 
    646                  "BLX     R1\n" 
    647                                   
    648                 //Allready inserted code 
    649  
    650                                 "MOV   R1, R4\n"           //  pointer to MBR in R1 
    651                                 "BL    mbr_read_dryos\n"   //  total sectors count in R0 before and after call 
    652  
    653                                 // Start of DataGhost's FAT32 autodetection code 
    654                                 // Policy: If there is a partition which has type W95 FAT32, use the first one of those for image storage 
    655                                 // According to the code below, we can use R1, R2, R3 and R12. 
    656                                 // LR wasn't really used anywhere but for storing a part of the partition signature. This is the only thing 
    657                                 // that won't work with an offset, but since we can load from LR+offset into LR, we can use this to do that :) 
    658                                 "MOV     R12, R4\n"                    // Copy the MBR start address so we have something to work with 
    659                                 "MOV     LR, R4\n"                     // Save old offset for MBR signature 
    660                                 "MOV     R1, #1\n"                     // Note the current partition number 
    661                                 "B       dg_sd_fat32_enter\n"          // We actually need to check the first partition as well, no increments yet! 
    662      "dg_sd_fat32:\n" 
    663                                 "CMP     R1, #4\n"                     // Did we already see the 4th partition? 
    664                                 "BEQ     dg_sd_fat32_end\n"            // Yes, break. We didn't find anything, so don't change anything. 
    665                                 "ADD     R12, R12, #0x10\n"            // Second partition 
    666                                 "ADD     R1, R1, #1\n"                 // Second partition for the loop 
    667      "dg_sd_fat32_enter:\n" 
    668                                 "LDRB    R2, [R12, #0x1BE]\n"          // Partition status 
    669                                 "LDRB    R3, [R12, #0x1C2]\n"          // Partition type (FAT32 = 0xB) 
    670                                 "CMP     R3, #0xB\n"                   // Is this a FAT32 partition? 
    671                                 "CMPNE   R3, #0xC\n"                   // Not 0xB, is it 0xC (FAT32 LBA) then? 
    672                                 "BNE     dg_sd_fat32\n"                // No, it isn't. Loop again. 
    673                                 "CMP     R2, #0x00\n"                  // It is, check the validity of the partition type 
    674                                 "CMPNE   R2, #0x80\n" 
    675                                 "BNE     dg_sd_fat32\n"                // Invalid, go to next partition 
    676                                                  // This partition is valid, it's the first one, bingo! 
    677                                 "MOV     R4, R12\n"                    // Move the new MBR offset for the partition detection. 
    678  
    679      "dg_sd_fat32_end:\n" 
    680                                 // End of DataGhost's FAT32 autodetection code 
    681                  "MOV     R1, R0\n"       //SX220 . Was not present in sx210 
    682                                  "LDRB    R0, [R4,#0x1C9]\n" 
    683                  "LDRB    R2, [R4,#0x1C8]\n" 
    684                  "LDRB    R12, [R4,#0x1CC]\n" 
    685                  "MOV     R0, R0,LSL#24\n" 
    686                  "ORR     R0, R0, R2,LSL#16\n" 
    687                  "LDRB    R2, [R4,#0x1C7]\n" 
    688                  "LDRB    R3, [R4,#0x1BE]\n" 
    689                  "ORR     R0, R0, R2,LSL#8\n" 
    690                  "LDRB    R2, [R4,#0x1C6]\n" 
    691                  "CMP     R3, #0\n" 
    692                  "CMPNE   R3, #0x80\n" 
    693                  "ORR     R0, R0, R2\n" 
    694                  "LDRB    R2, [R4,#0x1CD]\n" 
    695                  "MOV     R2, R2,LSL#24\n" 
    696                  "ORR     R2, R2, R12,LSL#16\n" 
    697                  "LDRB    R12, [R4,#0x1CB]\n" 
    698                  "ORR     R2, R2, R12,LSL#8\n" 
    699                  "LDRB    R12, [R4,#0x1CA]\n" 
    700                  "ORR     R2, R2, R12\n" 
    701            //      "LDRB    R12, [R4,#0x1FE]\n"     //remains commented as in sx200 and sx210 
    702            //      "LDRB    R4, [R4,#0x1FF]\n"      //remains commented as in sx200 and sx210 
    703                  "LDRB    R12, [LR,#0x1FE]\n"           // + First MBR signature byte (0x55), LR is original offset. 
    704                  "LDRB    LR, [LR,#0x1FF]\n"            // + Last MBR signature byte (0xAA), LR is original offset. 
    705                              "BNE     loc_FF06A370\n" 
    706                  "CMP     R1, R0\n" 
    707                  "BCC     loc_FF06A370\n" 
    708                  "ADD     R3, R0, R2\n" 
    709                  "CMP     R3, R1\n" 
    710                  "CMPLS   R12, #0x55\n" 
    711                  "CMPEQ   LR, #0xAA\n"                          // + R4 to LR 
    712                  "MOVEQ   R6, R0\n" 
    713                  "MOVEQ   R7, R2\n" 
    714                  "MOVEQ   R4, #1\n" 
    715                  "BEQ     loc_FF06A374\n" 
    716  
    717  "loc_FF06A370:\n" 
    718                  "MOV     R4, R8\n" 
    719  
    720  "loc_FF06A374:\n" 
    721                                  "MOV     R0, #2\n" 
    722                  "BL      sub_FF0853D4\n"               //ExMemMan.c 
    723                  "CMP     R4, #0\n" 
    724                  "BNE     loc_FF06A3B0\n" 
    725                  "LDR     R1, [R5,#0x64]\n" 
    726                  "MOV     R6, #0\n" 
    727                  "MOV     R0, R9\n" 
    728                  "BLX     R1\n" 
    729                  "MOV     R7, R0\n" 
    730                  "B       loc_FF06A3B0\n" 
    731  
    732  "loc_FF06A39C:\n" 
    733                  "MOV     R7, #0x40\n" 
    734                  "B       loc_FF06A3B0\n" 
    735  
    736  "loc_FF06A3A4:\n" 
    737                  "LDR     R1, =0x623\n" 
    738                  "LDR     R0, =0xFF06A3C4\n"    //"Mounter.c" aMounter_c 
    739                  "BL      sub_FF00EC88\n"       //ASSERT 
    740  
    741  "loc_FF06A3B0:\n" 
    742                  "ADD     R1, R5, #0x44\n" 
    743                  "STMIA   R1, {R6-R8}\n" 
    744                  "MOV     R0, #1\n" 
    745                  "LDMFD   SP!, {R4-R10,PC}\n" 
    746  
    747  ); 
    748 } 
     446                                 "B               sub_FF095260\n"                                //continue in firmware 
     447         ); 
     448}                         
    749449 
    750450// In SX220 called RotaryEncoder FF05671C 
     
    819519 //------------------  original code ------------------ 
    820520                         
    821                                  "LDR     R0, =0x25BC\n"                //=0xFF0569E4, changing all asc_... fixed the crash when rotating the wheel 
     521                                 "LDR     R0, =0x25C8\n"                //=0xFF0569E4, changing all asc_... fixed the crash when rotating the wheel 
    822522                 "LDR     R0, [R0,R4,LSL#2]\n" 
    823523                 "BL      sub_FF02BCFC\n" 
     
    853553                 "CMP     R0, #0\n" 
    854554                 "BEQ     loc_FF05697C\n" 
    855                  "LDR     R7, =0x25BC\n"   //=0xFF0569E4 
     555                 "LDR     R7, =0x25C8\n"   //=0xFF0569E4 
    856556                 "LDR     R0, [R7,R4,LSL#2]\n" 
    857557                 "BL      sub_FF02BCFC\n" 
     
    912612                 "BL      sub_FF0240E0\n" 
    913613                 "LDR     R0, [R7,#0x10]\n" 
    914                  "LDR     R7, =0x25BC\n"                //=0xFF0569E4 
     614                 "LDR     R7, =0x25C8\n"                //=0xFF0569E4 
    915615                 "STR     R0, [R9,R4,LSL#2]\n" 
    916616                 "LDRH    R1, [R11]\n" 
  • trunk/platform/sx220hs/sub/100a/capt_seq.c

    r1230 r1251  
    158158                 "B       loc_FF0778F0\n" 
    159159 
    160  "loc_FF077714:\n"                            // 
     160 "loc_FF077714:\n" 
    161161                                         
    162162                 "BL      sub_FF077F04\n" 
    163                   
    164 //Commented area copied from sx210 
    165 // TESTING DOSNT DO BAD NEITHER GOOD  LIKE IN SD1200 but seems to dont work too!!! 
    166 /* 
    167 "    STMFD   SP!, {R1-R12,LR}\n" 
    168 "    BL      captseq_hack_override_active\n" // returns 1 if tv or sv override in effect 
    169 "    LDMFD   SP!, {R1-R12,LR}\n" 
    170 "    STR     R0,[SP,#-4]!\n" // push return value 
    171 "    BL      shooting_expo_param_override\n" // saves all regs 
    172  
    173 "                BL      sub_FF87C4C0\n" 
    174  
    175 "    LDR     R0,[SP],#4\n" // pop override hack 
    176 "    CMP     R0, #1\n" 
    177 "    MOVEQ   R0, #0\n" 
    178 "    STREQ   R0, [R4,#0x24]\n"  // fixes overrides behavior at short shutter press 
    179 */                                
    180  
    181  
    182163                                 "BL      shooting_expo_param_override\n"  // + patched                  
    183164                                 "BL      sub_FF074BC4\n" 
    184   
    185   
    186  //SX220 Funnel:  
    187  //  copied over from SX10 don't know if we need it yet 
    188  //  this code added to avoid some incorrect behavior if overrides are used. 
    189  //  but it can cause some unexpected side effects. In this case, remove this code! 
    190  //              "MOV     R0, #0\n" 
    191  //              "STR     R0, [R4,#0x24]\n"  // fixes overrides  behavior at short shutter press 
    192  //  end of my code 
    193  
    194                                  "LDR     R0, [R5,#0x28]\n" 
    195                  "CMP     R0, #0\n" 
    196                  "BLNE    sub_FF18D9B4\n" 
     165                                  
     166                                 "MOV     R0, #0\n"                                                     // added 
     167                                 "STR     R0, [R5,#0x28]\n"                                     // added, fixes overrides  behavior at short shutter press (from SX30) 
     168 
     169//                               "LDR     R0, [R5,#0x28]\n"                                     // above two lines make this code redundant 
     170//                               "CMP     R0, #0\n"                                                     // above two lines make this code redundant 
     171//                               "BLNE    sub_FF18D9B4\n"                                       // above two lines make this code redundant 
     172 
    197173                 "B       loc_FF0778F0\n" 
    198174 
     
    202178                                 // "BL      sub_FF18D790\n"    // SX220 
    203179                                 "BL      sub_FF18D790_my\n"   // + patched 
    204                                  "BL      capt_seq_hook_raw_here\n"     //added                                   
    205180                                 "MOV     R4, R0\n" 
    206181                 "MOV     R2, R8\n" 
     
    593568 "loc_FF18D98C:\n"                            
    594569                 "MOV     R0, R4\n" 
    595                  "BL      sub_FF3058A0\n" 
     570                 "BL      sub_FF3058A0_my\n"            //patched 
    596571                                  
    597572 "loc_FF18D994:\n"                           
     
    611586                        ); 
    612587}  
     588 
     589void __attribute__((naked,noinline)) sub_FF3058A0_my(  ) { 
     590asm volatile ( 
     591"       STMFD   SP!, {R3-R7,LR} \n"                 
     592"       MOV     R4, R0 \n"                            
     593"       BL      sub_FF18E4F0 \n"                       
     594"       MVN     R1, #0 \n"                            
     595"       BL      sub_FF0826F8 \n"                       
     596"       LDR     R0, =0xFF18D1CC \n"                   
     597"       MOV     R1, R4 \n"                            
     598"       BL      sub_FF0B8C48 \n"                       
     599"       MOV     R0, R4 \n"                            
     600"       BL      sub_FF18D0C8 \n"                       
     601"       MOV     R0, R4 \n"                            
     602"       BL      sub_FF18D53C \n"                       
     603"       MOV     R6, R0 \n"                            
     604"       LDR     R1, =0xEF48 \n"                       
     605"       MOV     R2, #4 \n"                            
     606"       MOV     R0, #0x8A \n"                         
     607"       BL      sub_FF08A944 \n"                       
     608"       TST     R0, #1 \n"                            
     609"       LDRNE   R1, =0x21E \n"                      
     610"       LDRNE   R0, =0xFF305AB0 \n"                 
     611"       BLNE    sub_FF00EC88 \n"                     
     612"       BL      sub_FF07AF50 \n"                       
     613"       CMP     R6, #0xA \n"                          
     614"       MOV     R5, #1 \n"                            
     615"       MOV     R7, #0 \n"                            
     616"       ADDCC   PC, PC, R6, LSL #2 \n"              
     617"       B       loc_FF3059D0 \n"                        
     618"       B       loc_FF3059D0 \n"                        
     619"       B       loc_FF305934 \n"                        
     620"       B       loc_FF305944 \n"                        
     621"       B       loc_FF305960 \n"                        
     622"       B       loc_FF305970 \n"                        
     623"       B       loc_FF30599C \n"                        
     624"       B       loc_FF3059D0 \n"                        
     625"       B       loc_FF3059D0 \n"                        
     626"       B       loc_FF3059D0 \n"                        
     627"       B       loc_FF3059B4 \n"                        
     628"loc_FF305934:\n" 
     629"       MOV     R0, #1 \n"                            
     630"       BL      sub_FF0B8C78 \n"                       
     631"       STRH    R7, [R4, #0x10] \n"                  
     632"       B       loc_FF3059C4 \n"                        
     633"loc_FF305944:\n" 
     634"       MOV     R0, #1 \n"                            
     635"       BL      sub_FF0B8C78 \n"                       
     636"       MOV     R0, R4 \n"                            
     637"       STRH    R5, [R4, #0x10] \n"                  
     638"       BL      sub_FF305688 \n"                       
     639"loc_FF305958:\n" 
     640"       MOV     R5, R0 \n"                            
     641"       B       loc_FF3059E0 \n"                        
     642"loc_FF305960:\n" 
     643"       MOV     R0, #1 \n"                            
     644"       BL      sub_FF0B8C78 \n"                       
     645"       MOV     R0, #1 \n"                            
     646"       B       loc_FF30597C \n"                        
     647"loc_FF305970:\n" 
     648"       MOV     R0, #1 \n"                            
     649"       BL      sub_FF0B8C78 \n"                       
     650"       MOV     R0, #2 \n"                            
     651"loc_FF30597C:\n" 
     652"       BL      sub_FF24C69C \n"                       
     653"       MOV     R0, R4 \n"                            
     654"       STRH    R5, [R4, #0x10] \n"                  
     655"       BL      sub_FF305688 \n"                       
     656"       MOV     R5, R0 \n"                            
     657"       MOV     R0, #0 \n"                            
     658"       BL      sub_FF24C69C \n"                       
     659"       B       loc_FF3059E0 \n"                        
     660"loc_FF30599C:\n" 
     661"       MOV     R0, #1 \n"                            
     662"       BL      sub_FF0B8C78 \n"                       
     663"       MOV     R0, R4 \n"                            
     664"       STRH    R7, [R4, #0x10] \n"                  
     665"       BL      sub_FF305750 \n"                       
     666"       B       loc_FF305958 \n"                        
     667"loc_FF3059B4:\n" 
     668"       MOV     R0, #0 \n"                            
     669"       BL      sub_FF0B8C78 \n"                       
     670"       MOV     R0, #4 \n"                            
     671"       STRH    R0, [R4, #0x10] \n"                  
     672"loc_FF3059C4:\n" 
     673"       MOV     R0, R4 \n"                            
     674"       BL      sub_FF305608 \n"                       
     675"       B       loc_FF305958 \n"                        
     676"loc_FF3059D0:\n" 
     677"       MOV     R1, #0x264 \n"                        
     678"       LDR     R0, =0xFF305AB0 \n"                   
     679"       BL      sub_FF00EC88 \n"                       
     680"       MOV     R5, #0x1D \n"                         
     681"loc_FF3059E0:\n" 
     682"       TST     R5, #1 \n"                            
     683"       MOVNE   R0, R5 \n"                          
     684"       BNE     loc_FF305A84 \n"                      
     685"       LDR     R5, =0xEF44 \n"                       
     686"       LDR     R0, [R5] \n"                          
     687"       CMP     R0, #0 \n"                            
     688"       BNE     loc_FF305A10 \n"                      
     689"       LDRH    R0, [R4, #0x10] \n"                  
     690"       CMP     R0, #1 \n"                            
     691"       CMPNE   R0, #3 \n"                          
     692"       CMPNE   R0, #5 \n"                          
     693"       BEQ     loc_FF305A24 \n"                      
     694"loc_FF305A10:\n" 
     695"       LDR     R0, =0x3EB1C \n"                      
     696"       LDRH    R0, [R0] \n"                         
     697"       SUB     R1, R0, #0x4000 \n"                   
     698"       SUBS    R1, R1, #0x20C \n"                   
     699"       BLEQ    sub_FF0A14C8 \n"                     
     700"loc_FF305A24:\n" 
     701"       MOV     R0, R4 \n"                            
     702"       BL      sub_FF18D638 \n"                       
     703"       MOV     R0, R4 \n"                            
     704"       BL      sub_FF18D5D4 \n"                       
     705"       BL      capt_seq_hook_raw_here\n"     //added 
     706"       LDR     R0, [R5] \n"                          
     707"       CMP     R0, #0 \n"                            
     708"       BNE     loc_FF305A54 \n"                      
     709"       LDRH    R0, [R4, #0x10] \n"                  
     710"       CMP     R0, #1 \n"                            
     711"       CMPNE   R0, #3 \n"                          
     712"       CMPNE   R0, #5 \n"                          
     713"       BEQ     loc_FF305A80 \n"                      
     714"loc_FF305A54:\n" 
     715"       BL      sub_FF18E4F0 \n"                       
     716"       LDR     R4, =0x27E \n"                        
     717"       LDR     R2, =0x3A98 \n"                       
     718"       LDR     R3, =0xFF305AB0 \n"                   
     719"       MOV     R1, #4 \n"                            
     720"       STR     R4, [SP] \n"                          
     721"       BL      sub_FF07DB68 \n"                       
     722"       CMP     R0, #0 \n"                            
     723"       MOVNE   R1, R4 \n"                          
     724"       LDRNE   R0, =0xFF305AB0 \n"                 
     725"       BLNE    sub_FF00EC88 \n"                     
     726"loc_FF305A80:\n" 
     727"       MOV     R0, #0 \n"                            
     728"loc_FF305A84:\n" 
     729"       LDMFD   SP!, {R3-R7,PC} \n"                 
     730        ); 
     731} 
    613732 
    614733///////sx220 sub_FF0C3E54 
  • trunk/platform/sx220hs/sub/100a/makefile.inc

    r1230 r1251  
    1212 
    1313ifdef OPT_CHDK_IN_EXMEM 
    14 MEMISOSTART=0x79067E0  # MAXRAMADDR+1 - EXMEM_HEAP_SKIP - EXMEM_BUFFER_SIZE - 32(0x20) (exmem allocates 64 bytes extra, 32 before and 32 after block allocated) 
     14MEMISOSTART=0x78E67E0  # MAXRAMADDR+1 - EXMEM_HEAP_SKIP - EXMEM_BUFFER_SIZE - 32(0x20) (exmem allocates 64 bytes extra, 32 before and 32 after block allocated) 
    1515else                                    #265kb=79467E0, 512kb=79067E0, 640kb=78E67E0 
    1616MEMISOSTART=0x186AE4   # original non-exmem value 
     
    2020 
    2121MAXRAMADDR=0x7FFFFFF 
    22 EXMEM_BUFFER_SIZE=0x80000  # 40000=256KB, 80000=512KB, A0000=640kb, C0000=768KB, 100000=1MB  
     22EXMEM_BUFFER_SIZE=0xA0000  # 40000=256KB, 80000=512KB, A0000=640kb, C0000=768KB, 100000=1MB  
    2323EXMEM_HEAP_SKIP=0x679800 
    2424 
  • trunk/platform/sx220hs/sub/100a/stubs_auto.S

    r1230 r1251  
    7474STUB(FF056AA0) 
    7575STUB(FF056ABC) 
    76 STUB(FF066010) 
    77 STUB(FF069A3C) 
    78 STUB(FF069B68) 
    79 STUB(FF069CB4) 
    80 STUB(FF069D44) 
    81 STUB(FF06A138) 
    82 STUB(FF06A1C8) 
    83 STUB(FF06A24C) 
    84 STUB(FF06A3E8) 
    85 STUB(FF06A524) 
    86 STUB(FF06A840) 
    87 STUB(FF06A980) 
    88 STUB(FF06A9D0) 
    89 STUB(FF06B010) 
    9076STUB(FF074BC4) 
    9177STUB(FF07531C) 
     
    10894STUB(FF0793E0) 
    10995STUB(FF079490) 
     96STUB(FF07AF50) 
    11097STUB(FF07B8D8) 
    11198STUB(FF07B95C) 
     
    116103STUB(FF07D6AC) 
    117104STUB(FF07D70C) 
     105STUB(FF07DB68) 
    118106STUB(FF07EFE8) 
    119107STUB(FF082520) 
     
    121109STUB(FF0826C4) 
    122110STUB(FF0826F8) 
    123 STUB(FF085288) 
    124 STUB(FF0853D4) 
    125111STUB(FF08A944) 
    126112STUB(FF08B180) 
     
    128114STUB(FF08F3F4) 
    129115STUB(FF091B38) 
     116STUB(FF095260) 
     117STUB(FF0A14C8) 
    130118STUB(FF0B048C) 
    131119STUB(FF0B071C) 
     
    136124STUB(FF0B1200) 
    137125STUB(FF0B1688) 
     126STUB(FF0B8C48) 
     127STUB(FF0B8C78) 
    138128STUB(FF0B9F58) 
    139129STUB(FF0BF168) 
     
    174164STUB(FF104D38) 
    175165STUB(FF112D6C) 
    176 STUB(FF15943C) 
    177 STUB(FF1594D4) 
    178 STUB(FF169D7C) 
    179 STUB(FF16CCD8) 
    180166STUB(FF17E248) 
    181167STUB(FF17E520) 
     
    205191STUB(FF18CE8C) 
    206192STUB(FF18D004) 
     193STUB(FF18D0C8) 
    207194STUB(FF18D14C) 
    208195STUB(FF18D17C) 
    209196STUB(FF18D468) 
     197STUB(FF18D53C) 
     198STUB(FF18D5D4) 
     199STUB(FF18D638) 
    210200STUB(FF18D790) 
    211201STUB(FF18D9B4) 
     
    215205STUB(FF18E1FC) 
    216206STUB(FF18E330) 
     207STUB(FF18E4F0) 
    217208STUB(FF18E6BC) 
    218209STUB(FF18E788) 
    219210STUB(FF18E7C0) 
     211STUB(FF24C69C) 
    220212STUB(FF2ADD10) 
    221213STUB(FF2ADDC0) 
     
    230222STUB(FF2FCDAC) 
    231223STUB(FF2FD440) 
     224STUB(FF305608) 
     225STUB(FF305688) 
     226STUB(FF305750) 
    232227STUB(FF3058A0) 
    233228STUB(FF305C60) 
     
    236231STUB(FF3AB8A8) 
    237232STUB(FF3ABAE0) 
    238 STUB(FF87C4C0) 
  • trunk/platform/sx220hs/sub/100a/stubs_entry_2.S

    r1230 r1251  
    11#include "stubs_asm.h" 
    2  
    3 //beta3 
    4 NHSTUB(WriteSDCard,0xFF16C828)  //swaped with ReadSDCard 
    5 NHSTUB(ReadSDCard,0xFF16C62C) 
    6 NHSTUB(strtolx,0xFF0310F0)      //swapped with strtol 
    7 NHSTUB(strtol,0xFF0312EC)        
    8 NHSTUB(LEDDrive,0xff0557c0)     //corrected 
    9  
    10 //beta2 
    11 NHSTUB(GetImageFolder, 0xFF1598B8)      //doesn't work 
    122 
    133# Addresses for firmware task handlers (used in taskHook) 
     
    177DEF(task_MovieRecord,0xFF1882F0) 
    188DEF(task_ExpDrv,0xFF0C3E54) 
    19  
    20 NHSTUB(write, 0xff00adb8)                        //changed. was same as Write and worked. 
    21 NHSTUB(GetCurrentAvValue,0xFF17F15C) //changed was FF0B05D4 
    22 NHSTUB(MoveIrisWithAv, 0xFF303638)   //added like g12. should fix avbracketing, change in generic/shooting.c 
     9DEF(task_PhySw,0xff0244f0) 
     10 
     11NHSTUB(DebugAssert                             ,0xff00ec88) 
     12NHSTUB(GetMemInfo                              ,0xff00a29c) 
     13NHSTUB(GiveSemaphore                           ,0xff02b23c) 
     14NHSTUB(MakeSDCardBootable                      ,0xff06b04c) 
     15NHSTUB(PT_MoveDigitalZoomToWide                ,0xff0746e8) 
     16NHSTUB(PT_MoveOpticalZoomAt                    ,0xff0746c0) 
     17NHSTUB(ScreenLock                              ,0xff0ab250) 
     18NHSTUB(ScreenUnlock                            ,0xff0ab2b4) 
     19NHSTUB(err_init_task                           ,0xff005fd4) 
     20NHSTUB(WriteSDCard,0xFF16C828) 
     21NHSTUB(ReadSDCard,0xFF16C62C) 
     22NHSTUB(strtolx,0xFF0310F0) 
     23NHSTUB(strtol,0xFF0312EC)        
     24NHSTUB(LEDDrive,0xff0557c0) 
     25NHSTUB(GetImageFolder, 0xFF1598B8) 
     26NHSTUB(write, 0xff00adb8) 
     27NHSTUB(GetCurrentAvValue,0xFF17F15C) 
     28NHSTUB(MoveIrisWithAv, 0xFF303638) 
    2329NHSTUB(_log10,0xFF3ACCB8) 
    2430NHSTUB(_log,0xFF3AC778) 
    25  
    26 //beta1 
    27 NHSTUB(PutInNdFilter,0xFF36BDD4)  // NDfilter works 
    28 NHSTUB(PutOutNdFilter,0xFF36BE0C) // NDfilter works 
    29 NHSTUB(GetKbdState, 0xFF056474)   // in kbd.c 
    30  
     31NHSTUB(PutInNdFilter,0xFF36BDD4) 
     32NHSTUB(PutOutNdFilter,0xFF36BE0C) 
     33NHSTUB(GetKbdState, 0xFF056474) 
    3134NHSTUB(ufree,0xFF02B884) 
    32  
    33 //EXMEM 
    3435NHSTUB(exmem_alloc, 0xFF085434) 
    35  
    36 /////////////////////SX220HS  START////////////////////// 
    3736NHSTUB(CreateTask,0xFF00E9B0) 
    3837NHSTUB(LocalTime,0xFF08446C) 
     
    7069NHSTUB(_pow,0xFF3ACE30)           
    7170NHSTUB(add_ptp_handler,0xff28aa1c) 
    72 NHSTUB(localtime,0xFF08446C)  //2 times 
     71NHSTUB(localtime,0xFF08446C) 
    7372NHSTUB(memset,0xFF245BEC) 
    7473NHSTUB(memcpy,0xFF030FEC) 
     
    7877NHSTUB(time,0xff084a48) 
    7978NHSTUB(Lseek,0xFF0272A0) 
    80 NHSTUB(Close,0xFF027084)  //sx220 something different in code. Not sure. 
     79NHSTUB(Close,0xFF027084) 
    8180NHSTUB(EnterToCompensationEVF,0xFF028E74) 
    8281NHSTUB(ExitFromCompensationEVF,0xFF028EB8) 
     
    9695NHSTUB(TurnOnBackLight,0xFF0A21A0) 
    9796NHSTUB(UIFS_WriteFirmInfoToFile,0xFF1A4414) 
    98 NHSTUB(Write,0xFF0270D8)  //ok 
     97NHSTUB(Write,0xFF0270D8) 
    9998NHSTUB(closedir,0xFF2DD260) 
    10099NHSTUB(closefastdir,0xFF2DD260) 
     
    103102NHSTUB(kbd_pwr_on,0xFF000B24) 
    104103NHSTUB(kbd_read_keys,0xFF024960) 
    105  
    106104NHSTUB(qsort,0xFF359478) 
    107 NHSTUB(rename,0xFF026908)    //small difference in code vs sx210 
    108 NHSTUB(RenameFile_Fut, 0xff026908)  //same as rename like in sx210 
     105NHSTUB(rename,0xFF026908) 
     106NHSTUB(RenameFile_Fut, 0xff026908) 
    109107NHSTUB(strrchr,0xFF0040DC) 
    110108NHSTUB(vsprintf,0xFF010858) 
    111 NSTUB(readdir,0xFF2DD404) //changed from null to readfastdir 
    112  
     109NSTUB(readdir,0xFF2DD404) 
    113110NHSTUB(openfastdir, 0xFF2DD2B0) 
    114111NHSTUB(opendir, 0xff2dd2b0) 
    115  
    116 /////////////////AUTO FOUND CHECKED////////////////// 
    117112NHSTUB(AllocateMemory, 0xff3075d0) 
    118113NHSTUB(AllocateUncacheableMemory, 0xff02b844) 
     
    126121NHSTUB(GetSystemTime, 0xff307628) 
    127122NHSTUB(NewTaskShell, 0xff08a38c) 
    128 NHSTUB(Read, 0xff00ad58) //fixed was adb8 
    129 NHSTUB(SetFileTimeStamp, 0xFF027410)   //auto stubs was wrong here. small differences in code from sx210 
     123NHSTUB(Read, 0xff00ad58) 
     124NHSTUB(SetFileTimeStamp, 0xFF027410) 
    130125NHSTUB(SetPropertyCase, 0xff08a828) 
    131126NHSTUB(VbattGet, 0xff023040) 
    132127NHSTUB(_sqrt, 0xff3aed14) 
    133128NHSTUB(close, 0xff00abb4) 
    134 NHSTUB(lseek, 0xff0272a0)  //corrected auto stubs. same sa Lseek 
    135 NHSTUB(malloc, 0xFF0041EC)  //corrected auto stubs 
     129NHSTUB(lseek, 0xff0272a0) 
     130NHSTUB(malloc, 0xFF0041EC) 
    136131NHSTUB(memcmp, 0xff0108f4) 
    137132NHSTUB(mktime_ext, 0xff0ac0c8) 
    138133NHSTUB(open, 0xff00ab04) 
    139  
    140 NHSTUB(read, 0xff00ad58)  //fixed was adb8 
     134NHSTUB(read, 0xff00ad58) 
    141135NHSTUB(reboot_fw_update, 0xff2e28a0) 
    142136NHSTUB(stat, 0xff0272e8) 
    143 NHSTUB(strcat, 0xFF0AB880)  //auto stubs error. 
     137NHSTUB(strcat, 0xFF0AB880) 
    144138NHSTUB(strchr, 0xff0040b8) 
    145139NHSTUB(strcmp, 0xff0108b0) 
    146140NHSTUB(strcpy, 0xff010898) 
    147 NHSTUB(strlen, 0xFF004104) //corrected auto stubs error 
     141NHSTUB(strlen, 0xFF004104) 
    148142NHSTUB(kbd_p1_f, 0xFF0249DC) 
    149143NHSTUB(kbd_p1_f_cont, 0xFF0249E8) 
     
    157151NHSTUB(UnlockAF, 0xFF028C10) 
    158152NHSTUB(DoAFLock, 0xFF028BD8) 
    159 NHSTUB(MakeAFScan, 0xFF18B938)   //ok 
     153NHSTUB(MakeAFScan, 0xFF18B938) 
    160154NHSTUB(ExpCtrlTool_StartContiAE, 0xFF037FE4) 
    161 NHSTUB(ExpCtrlTool_StopContiAE, 0xFF0380BC)  //new added 
     155NHSTUB(ExpCtrlTool_StopContiAE, 0xFF0380BC) 
    162156NHSTUB(apex2us, 0xFF246BEC) 
    163157NHSTUB(SetScriptMode, 0xFF091610) 
     
    167161NHSTUB(rand,0xFF245D2C) 
    168162NHSTUB(srand,0xFF245D20) 
    169 ///////////////SX220HS  END/////////////////// 
     163NHSTUB(UnsetZoomForMovie, 0xFF1BB954) //not needed 
    170164 
    171165//Fixed errors in compiler 
    172166STUB(FF187C10) 
    173167STUB(FF18D1CC) 
    174 /* 
    175 STUB(FF000B28) 
    176 STUB(FF00A374) 
    177 STUB(FF005B18) 
    178 STUB(FF005C00) 
    179 STUB(FF18669C) 
    180  
    181 */ 
    182 NHSTUB(UnsetZoomForMovie, 0xFF1BB954) //not needed 
    183  
    184 ////////////NOT FOUND//////////// 
    185 ////All pointed to NULL (nullsub_10 -> 0xFF02D4BC)   // SX220 
     168 
     169////All pointed to NULL (nullsub_10 -> 0xFF02D4BC) 
    186170NHSTUB(Unmount_FileSystem, 0xFF02D4BC) 
    187171NHSTUB(Mount_FileSystem, 0xFF02D4BC) 
    188172NHSTUB(SetZoomActuatorSpeedPercent, 0xFF02D4BC) 
    189173NHSTUB(rewinddir, 0xFF02D4BC) 
    190 ///////////////NEW///////////////// 
    191174NSTUB(DisableDispatch,0xFF02D4BC) 
    192175NSTUB(CreatePhysicalVram,0xFF02D4BC) 
     
    227210NSTUB(toupper,0xFF02D4BC) 
    228211NSTUB(utime,0xFF02D4BC) 
    229  
  • trunk/platform/sx220hs/sub/101a/boot.c

    r1230 r1251  
    453453                 "MOVNE   R0, R5\n" 
    454454                 "BLNE    sub_FF08F3F4\n" 
    455                  "BL      sub_FF08B1AC_my\n"              // patched 
     455                 "BL      sub_FF08B1AC\n" 
    456456                 "BL      core_spytask_can_start\n"   //added CHDK: Set "it's-safe-to-start"-Flag for spytask 
    457                                  "CMP     R4, #0\n" 
    458                  "LDMNEFD SP!, {R4-R6,PC}\n" 
    459                  "MOV     R0, R5\n" 
    460                  "LDMFD   SP!, {R4-R6,LR}\n" 
    461                  "MOV     R1, #0\n" 
    462                                  "B       sub_FF08F3F4\n" 
    463                                   
     457 
     458                                 "B               sub_FF095260\n"                                //continue in firmware 
    464459 ); 
    465460} 
    466  
    467  
    468  
    469  
    470  
    471  
    472 void __attribute__((naked,noinline)) sub_FF08B1AC_my() { 
    473   
    474  asm volatile( 
    475                  "STMFD   SP!, {R4,LR}\n" 
    476                  "MOV     R0, #3\n" 
    477                  "BL      sub_FF06A9D0_my\n"           //patched 
    478                  "BL      sub_FF169D7C\n"              //nullsub_100 
    479                  "LDR     R4, =0x4268\n" 
    480                  "LDR     R0, [R4,#4]\n" 
    481                  "CMP     R0, #0\n" 
    482                  "BNE     loc_FF08B1E4\n" 
    483                  "BL      sub_FF069B68\n" 
    484                  "BL      sub_FF15943C\n" 
    485                  "BL      sub_FF069B68\n" 
    486                  "BL      sub_FF066010\n" 
    487                  "BL      sub_FF069A3C\n" 
    488                  "BL      sub_FF1594D4\n" 
    489  "loc_FF08B1E4:\n" 
    490                  "MOV     R0, #1\n" 
    491                  "STR     R0, [R4]\n" 
    492                  "LDMFD   SP!, {R4,PC}\n" 
    493  ); 
    494 } 
    495  
    496  
    497 void __attribute__((naked,noinline)) sub_FF06A9D0_my() { 
    498   
    499  asm volatile( 
    500                  "STMFD   SP!, {R4-R10,LR}\n" 
    501                  "MOV     R6, R0\n" 
    502                  "BL      sub_FF06A980\n" 
    503                  "LDR     R1, =0x3C5A0\n" 
    504                  "MOV     R5, R0\n" 
    505                  "ADD     R4, R1, R0,LSL#7\n" 
    506                  "LDR     R0, [R4,#0x6C]\n" 
    507                  "TST     R0, #4\n" 
    508                  "LDRNE   R1, =0x9C4\n" 
    509                  "LDRNE   R0, =0xFF06A3C4\n"  //aMounter 
    510                  "BLNE    sub_FF00EC88\n"     //Assert 
    511                  "MOV     R1, R6\n" 
    512                  "MOV     R0, R5\n" 
    513                  "BL      sub_FF06A138\n" 
    514                  "LDR     R0, [R4,#0x38]\n" 
    515                  "BL      sub_FF06B010\n" 
    516                  "CMP     R0, #0\n" 
    517                  "STREQ   R0, [R4,#0x6C]\n" 
    518                  "MOV     R0, R5\n" 
    519                  "BL      sub_FF06A1C8\n" 
    520                  "MOV     R0, R5\n" 
    521                  "BL      sub_FF06A524_my\n"  // patched 
    522                  "MOV     R9, R0\n" 
    523                  "MOV     R0, R5\n" 
    524                  "BL      sub_FF06A840\n" 
    525                  "LDR     R2, =0x3C620\n" 
    526                  "LDR     R6, [R4,#0x3C]\n" 
    527                  "ADD     R1, R5, R5,LSL#4\n" 
    528                  "LDR     R8, [R4,#0x38]\n" 
    529                  "LDR     R7, [R2,R1,LSL#2]\n" 
    530                  "CMP     R6, #0\n" 
    531                  "AND     R9, R9, R0\n" 
    532                  "MOV     R5, #0\n" 
    533                  "MOVEQ   R0, #0x80000001\n" 
    534                  "BEQ     loc_FF06AAA0\n" 
    535                  "MOV     R0, R8\n" 
    536                  "BL      sub_FF069CB4\n" 
    537                  "CMP     R0, #0\n" 
    538                  "MOVNE   R5, #4\n" 
    539                  "MOV     R0, R8\n" 
    540                  "BL      sub_FF16CCD8\n" 
    541                  "CMP     R0, #0\n" 
    542                  "CMPNE   R7, #2\n" 
    543                  "BICNE   R5, R5, #4\n" 
    544                  "CMP     R6, #5\n" 
    545                  "ORRNE   R0, R5, #1\n" 
    546                  "BICEQ   R0, R5, #1\n" 
    547                  "CMP     R9, #0\n" 
    548                  "BICEQ   R0, R0, #2\n" 
    549                  "ORREQ   R0, R0, #0x80000000\n" 
    550                  "BICNE   R0, R0, #0x80000000\n" 
    551                  "ORRNE   R0, R0, #2\n" 
    552  
    553  "loc_FF06AAA0:\n" 
    554                  "STR     R0, [R4,#0x40]\n" 
    555                  "LDMFD   SP!, {R4-R10,PC}\n" 
    556  
    557  ); 
    558 } 
    559  
    560  
    561  
    562  
    563  
    564 void __attribute__((naked,noinline)) sub_FF06A524_my() { 
    565  
    566  asm volatile( 
    567                  "STMFD   SP!, {R4-R6,LR}\n" 
    568                  "MOV     R5, R0\n" 
    569                  "LDR     R0, =0x3C5A0\n" 
    570                  "ADD     R4, R0, R5,LSL#7\n" 
    571                  "LDR     R0, [R4,#0x6C]\n" 
    572                  "TST     R0, #2\n" 
    573                  "MOVNE   R0, #1\n" 
    574                  "LDMNEFD SP!, {R4-R6,PC}\n" 
    575                  "LDR     R0, [R4,#0x38]\n" 
    576                  "MOV     R1, R5\n" 
    577                //  "BL      sub_FF06A24C\n" 
    578                                  "BL      sub_FF06A24C_my\n"  // patched 
    579                  "CMP     R0, #0\n" 
    580                  "LDRNE   R0, [R4,#0x38]\n" 
    581                  "MOVNE   R1, R5\n" 
    582                  "BLNE    sub_FF06A3E8\n" 
    583                  "LDR     R2, =0x3C620\n" 
    584                  "ADD     R1, R5, R5,LSL#4\n" 
    585                  "LDR     R1, [R2,R1,LSL#2]\n" 
    586                  "CMP     R1, #4\n" 
    587                  "BEQ     loc_FF06A584\n" 
    588                  "CMP     R0, #0\n" 
    589                  "LDMEQFD SP!, {R4-R6,PC}\n" 
    590                  "MOV     R0, R5\n" 
    591                  "BL      sub_FF069D44\n" 
    592  "loc_FF06A584:\n" 
    593                  "CMP     R0, #0\n" 
    594                  "LDRNE   R1, [R4,#0x6C]\n" 
    595                  "ORRNE   R1, R1, #2\n" 
    596                  "STRNE   R1, [R4,#0x6C]\n" 
    597                  "LDMFD   SP!, {R4-R6,PC}\n" 
    598  
    599  ); 
    600  
    601   
    602 } 
    603  
    604 void __attribute__((naked,noinline)) sub_FF06A24C_my() { 
    605  
    606  asm volatile( 
    607                                  "STMFD   SP!, {R4-R10,LR}\n" 
    608                                  "MOV     R9, R0\n" 
    609                  "LDR     R0, =0x3C5A0\n" 
    610                  "MOV     R6, #0\n" 
    611                  "ADD     R5, R0, R1,LSL#7\n" 
    612                  "LDR     R0, [R5,#0x3C]\n" 
    613                  "MOV     R7, R6\n" 
    614                  "CMP     R0, #7\n" 
    615                  "MOV     R8, R6\n" 
    616                                  "ADDCC   PC, PC, R0,LSL#2\n"   
    617                                  "B       loc_FF06A3A4\n" 
    618  
    619  "loc_FF06A278:\n" 
    620                  "B       loc_FF06A2AC\n" 
    621  
    622  "loc_FF06A27C:\n" 
    623                  "B       loc_FF06A294\n" 
    624  
    625  "loc_FF06A280:\n" 
    626                  "B       loc_FF06A294\n" 
    627  
    628  "loc_FF06A284:\n" 
    629                  "B       loc_FF06A294\n" 
    630  
    631  "loc_FF06A288:\n" 
    632                  "B       loc_FF06A294\n" 
    633  
    634  "loc_FF06A28C:\n" 
    635                  "B       loc_FF06A39C\n" 
    636  
    637  "loc_FF06A290:\n" 
    638                  "B       loc_FF06A294\n" 
    639  
    640  "loc_FF06A294:\n" 
    641                                  "MOV     R2, #0\n" 
    642                  "MOV     R1, #0x200\n" 
    643                  "MOV     R0, #2\n" 
    644                  "BL      sub_FF085288\n" 
    645                  "MOVS    R4, R0\n" 
    646                  "BNE     loc_FF06A2B4\n" 
    647  
    648  "loc_FF06A2AC:\n" 
    649                  "MOV     R0, #0\n" 
    650                  "LDMFD   SP!, {R4-R10,PC}\n" 
    651  
    652  "loc_FF06A2B4:\n" 
    653                  "LDR     R12, [R5,#0x50]\n" 
    654                  "MOV     R3, R4\n" 
    655                  "MOV     R2, #1\n" 
    656                  "MOV     R1, #0\n" 
    657                  "MOV     R0, R9\n" 
    658                  "BLX     R12\n" 
    659                  "CMP     R0, #1\n" 
    660                  "BNE     loc_FF06A2E0\n" 
    661                  "MOV     R0, #2\n" 
    662                  "BL      sub_FF0853D4\n"       ///ExMemMan.c 
    663                  "B       loc_FF06A2AC\n" 
    664  
    665  "loc_FF06A2E0:\n" 
    666                  "LDR     R1, [R5,#0x64]\n" 
    667                  "MOV     R0, R9\n" 
    668                  "BLX     R1\n" 
    669                                   
    670                 //Allready inserted code 
    671  
    672                                 "MOV   R1, R4\n"           //  pointer to MBR in R1 
    673                                 "BL    mbr_read_dryos\n"   //  total sectors count in R0 before and after call 
    674  
    675                                 // Start of DataGhost's FAT32 autodetection code 
    676                                 // Policy: If there is a partition which has type W95 FAT32, use the first one of those for image storage 
    677                                 // According to the code below, we can use R1, R2, R3 and R12. 
    678                                 // LR wasn't really used anywhere but for storing a part of the partition signature. This is the only thing 
    679                                 // that won't work with an offset, but since we can load from LR+offset into LR, we can use this to do that :) 
    680                                 "MOV     R12, R4\n"                    // Copy the MBR start address so we have something to work with 
    681                                 "MOV     LR, R4\n"                     // Save old offset for MBR signature 
    682                                 "MOV     R1, #1\n"                     // Note the current partition number 
    683                                 "B       dg_sd_fat32_enter\n"          // We actually need to check the first partition as well, no increments yet! 
    684      "dg_sd_fat32:\n" 
    685                                 "CMP     R1, #4\n"                     // Did we already see the 4th partition? 
    686                                 "BEQ     dg_sd_fat32_end\n"            // Yes, break. We didn't find anything, so don't change anything. 
    687                                 "ADD     R12, R12, #0x10\n"            // Second partition 
    688                                 "ADD     R1, R1, #1\n"                 // Second partition for the loop 
    689      "dg_sd_fat32_enter:\n" 
    690                                 "LDRB    R2, [R12, #0x1BE]\n"          // Partition status 
    691                                 "LDRB    R3, [R12, #0x1C2]\n"          // Partition type (FAT32 = 0xB) 
    692                                 "CMP     R3, #0xB\n"                   // Is this a FAT32 partition? 
    693                                 "CMPNE   R3, #0xC\n"                   // Not 0xB, is it 0xC (FAT32 LBA) then? 
    694                                 "BNE     dg_sd_fat32\n"                // No, it isn't. Loop again. 
    695                                 "CMP     R2, #0x00\n"                  // It is, check the validity of the partition type 
    696                                 "CMPNE   R2, #0x80\n" 
    697                                 "BNE     dg_sd_fat32\n"                // Invalid, go to next partition 
    698                                                  // This partition is valid, it's the first one, bingo! 
    699                                 "MOV     R4, R12\n"                    // Move the new MBR offset for the partition detection. 
    700  
    701      "dg_sd_fat32_end:\n" 
    702                                 // End of DataGhost's FAT32 autodetection code 
    703                  "MOV     R1, R0\n"       //SX220 . Was not present in sx210 
    704                                  "LDRB    R0, [R4,#0x1C9]\n" 
    705                  "LDRB    R2, [R4,#0x1C8]\n" 
    706                  "LDRB    R12, [R4,#0x1CC]\n" 
    707                  "MOV     R0, R0,LSL#24\n" 
    708                  "ORR     R0, R0, R2,LSL#16\n" 
    709                  "LDRB    R2, [R4,#0x1C7]\n" 
    710                  "LDRB    R3, [R4,#0x1BE]\n" 
    711                  "ORR     R0, R0, R2,LSL#8\n" 
    712                  "LDRB    R2, [R4,#0x1C6]\n" 
    713                  "CMP     R3, #0\n" 
    714                  "CMPNE   R3, #0x80\n" 
    715                  "ORR     R0, R0, R2\n" 
    716                  "LDRB    R2, [R4,#0x1CD]\n" 
    717                  "MOV     R2, R2,LSL#24\n" 
    718                  "ORR     R2, R2, R12,LSL#16\n" 
    719                  "LDRB    R12, [R4,#0x1CB]\n" 
    720                  "ORR     R2, R2, R12,LSL#8\n" 
    721                  "LDRB    R12, [R4,#0x1CA]\n" 
    722                  "ORR     R2, R2, R12\n" 
    723            //      "LDRB    R12, [R4,#0x1FE]\n"     //remains commented as in sx200 and sx210 
    724            //      "LDRB    R4, [R4,#0x1FF]\n"      //remains commented as in sx200 and sx210 
    725                  "LDRB    R12, [LR,#0x1FE]\n"           // + First MBR signature byte (0x55), LR is original offset. 
    726                  "LDRB    LR, [LR,#0x1FF]\n"            // + Last MBR signature byte (0xAA), LR is original offset. 
    727                              "BNE     loc_FF06A370\n" 
    728                  "CMP     R1, R0\n" 
    729                  "BCC     loc_FF06A370\n" 
    730                  "ADD     R3, R0, R2\n" 
    731                  "CMP     R3, R1\n" 
    732                  "CMPLS   R12, #0x55\n" 
    733                  "CMPEQ   LR, #0xAA\n"  // + R4 to LR 
    734                  "MOVEQ   R6, R0\n" 
    735                  "MOVEQ   R7, R2\n" 
    736                  "MOVEQ   R4, #1\n" 
    737                  "BEQ     loc_FF06A374\n" 
    738  
    739  "loc_FF06A370:\n" 
    740                  "MOV     R4, R8\n" 
    741  
    742  "loc_FF06A374:\n" 
    743                                  "MOV     R0, #2\n" 
    744                  "BL      sub_FF0853D4\n"               //ExMemMan.c 
    745                  "CMP     R4, #0\n" 
    746                  "BNE     loc_FF06A3B0\n" 
    747                  "LDR     R1, [R5,#0x64]\n" 
    748                  "MOV     R6, #0\n" 
    749                  "MOV     R0, R9\n" 
    750                  "BLX     R1\n" 
    751                  "MOV     R7, R0\n" 
    752                  "B       loc_FF06A3B0\n" 
    753  
    754  "loc_FF06A39C:\n" 
    755                  "MOV     R7, #0x40\n" 
    756                  "B       loc_FF06A3B0\n" 
    757  
    758  "loc_FF06A3A4:\n" 
    759                  "LDR     R1, =0x623\n" 
    760                  "LDR     R0, =0xFF06A3C4\n"    //"Mounter.c" aMounter_c 
    761                  "BL      sub_FF00EC88\n"       //ASSERT 
    762  
    763  "loc_FF06A3B0:\n" 
    764                  "ADD     R1, R5, #0x44\n" 
    765                  "STMIA   R1, {R6-R8}\n" 
    766                  "MOV     R0, #1\n" 
    767                  "LDMFD   SP!, {R4-R10,PC}\n" 
    768  
    769  ); 
    770 } 
    771  
    772461 
    773462// In SX220 called RotaryEncoder FF05671C 
     
    841530 "labelB:\n" 
    842531 //------------------  original code ------------------ 
    843                          "LDR     R0, =0x25BC\n"                //=0xFF0569E4, changing all asc_... fixed the crash when rotating the wheel 
     532                         "LDR     R0, =0x25C8\n"                //=0xFF0569E4, changing all asc_... fixed the crash when rotating the wheel 
    844533                 "LDR     R0, [R0,R4,LSL#2]\n" 
    845534                 "BL      sub_FF02BCFC\n" 
     
    875564                 "CMP     R0, #0\n" 
    876565                 "BEQ     loc_FF05697C\n" 
    877                  "LDR     R7, =0x25BC\n"                        //=0xFF0569E4 
     566                 "LDR     R7, =0x25C8\n"                        //=0xFF0569E4 
    878567                 "LDR     R0, [R7,R4,LSL#2]\n" 
    879568                 "BL      sub_FF02BCFC\n" 
     
    934623                 "BL      sub_FF0240E0\n" 
    935624                 "LDR     R0, [R7,#0x10]\n" 
    936                  "LDR     R7, =0x25BC\n"                //=0xFF0569E4 
     625                 "LDR     R7, =0x25C8\n"                //=0xFF0569E4 
    937626                 "STR     R0, [R9,R4,LSL#2]\n" 
    938627                 "LDRH    R1, [R11]\n" 
  • trunk/platform/sx220hs/sub/101a/capt_seq.c

    r1230 r1251  
    160160                                         
    161161                 "BL      sub_FF077F04\n" 
    162                   
    163 //Commented area copied from sx210 
    164 // TESTING DOSNT DO BAD NEITHER GOOD  LIKE IN SD1200 but seems to dont work too!!! 
    165 /* 
    166 "    STMFD   SP!, {R1-R12,LR}\n" 
    167 "    BL      captseq_hack_override_active\n" // returns 1 if tv or sv override in effect 
    168 "    LDMFD   SP!, {R1-R12,LR}\n" 
    169 "    STR     R0,[SP,#-4]!\n" // push return value 
    170 "    BL      shooting_expo_param_override\n" // saves all regs 
    171  
    172 "                BL      sub_FF87C4C0\n" 
    173  
    174 "    LDR     R0,[SP],#4\n" // pop override hack 
    175 "    CMP     R0, #1\n" 
    176 "    MOVEQ   R0, #0\n" 
    177 "    STREQ   R0, [R4,#0x24]\n"  // fixes overrides behavior at short shutter press 
    178 */                                
    179  
    180  
    181162                                 "BL      shooting_expo_param_override\n"  // + patched                  
    182163                                 "BL      sub_FF074BC4\n" 
    183164  
    184   
    185  //SX220 Funnel:  
    186  //  copied over from SX10 don't know if we need it yet 
    187  //  this code added to avoid some incorrect behavior if overrides are used. 
    188  //  but it can cause some unexpected side effects. In this case, remove this code! 
    189  //              "MOV     R0, #0\n" 
    190  //              "STR     R0, [R4,#0x24]\n"  // fixes overrides  behavior at short shutter press 
    191  //  end of my code 
    192  
    193                                  "LDR     R0, [R5,#0x28]\n" 
    194                  "CMP     R0, #0\n" 
    195                  "BLNE    sub_FF18D9B4\n" 
     165                                 "MOV     R0, #0\n"                                                     // added 
     166                                 "STR     R0, [R5,#0x28]\n"                                     // added, fixes overrides  behavior at short shutter press (from SX30) 
     167  
     168//                               "LDR     R0, [R5,#0x28]\n"                                     // above two lines make this code redundant 
     169//               "CMP     R0, #0\n"                                                     // above two lines make this code redundant 
     170//               "BLNE    sub_FF18D9B4\n"                                       // above two lines make this code redundant 
    196171                 "B       loc_FF0778F0\n" 
    197172 
     
    201176                // "BL      sub_FF18D790\n"    // SX220 
    202177                                 "BL      sub_FF18D790_my\n"   // + patched 
    203                                  "BL      capt_seq_hook_raw_here\n"    //added                            
    204178                                 "MOV     R4, R0\n" 
    205179                 "MOV     R2, R8\n" 
     
    591565 "loc_FF18D98C:\n"                            
    592566                 "MOV     R0, R4\n" 
    593                  "BL      sub_FF3058B8\n" 
     567                 "BL      sub_FF3058B8_my\n"            //patched 
    594568                         
    595569 "loc_FF18D994:\n"                           
     
    609583                        ); 
    610584}  
     585 
     586void __attribute__((naked,noinline)) sub_FF3058B8_my(  ) { 
     587asm volatile ( 
     588"       STMFD   SP!, {R3-R7,LR} \n"                 
     589"       MOV     R4, R0 \n"                            
     590"       BL      sub_FF18E4F0 \n"                       
     591"       MVN     R1, #0 \n"                            
     592"       BL      sub_FF0826F8 \n"                       
     593"       LDR     R0, =0xFF18D1CC \n"                   
     594"       MOV     R1, R4 \n"                            
     595"       BL      sub_FF0B8C48 \n"                       
     596"       MOV     R0, R4 \n"                            
     597"       BL      sub_FF18D0C8 \n"                       
     598"       MOV     R0, R4 \n"                            
     599"       BL      sub_FF18D53C \n"                       
     600"       MOV     R6, R0 \n"                            
     601"       LDR     R1, =0xEF48 \n"                       
     602"       MOV     R2, #4 \n"                            
     603"       MOV     R0, #0x8A \n"                         
     604"       BL      sub_FF08A944 \n"                       
     605"       TST     R0, #1 \n"                            
     606"       LDRNE   R1, =0x21E \n"                      
     607"       LDRNE   R0, =0xFF305AC8 \n"                 
     608"       BLNE    sub_FF00EC88 \n"                     
     609"       BL      sub_FF07AF50 \n"                       
     610"       CMP     R6, #0xA \n"                          
     611"       MOV     R5, #1 \n"                            
     612"       MOV     R7, #0 \n"                            
     613"       ADDCC   PC, PC, R6, LSL #2 \n"              
     614"       B       loc_FF3059E8 \n"                        
     615"       B       loc_FF3059E8 \n"                        
     616"       B       loc_FF30594C \n"                        
     617"       B       loc_FF30595C \n"                        
     618"       B       loc_FF305978 \n"                        
     619"       B       loc_FF305988 \n"                        
     620"       B       loc_FF3059B4 \n"                        
     621"       B       loc_FF3059E8 \n"                        
     622"       B       loc_FF3059E8 \n"                        
     623"       B       loc_FF3059E8 \n"                        
     624"       B       loc_FF3059CC \n"                        
     625"loc_FF30594C:\n" 
     626"       MOV     R0, #1 \n"                            
     627"       BL      sub_FF0B8C78 \n"                       
     628"       STRH    R7, [R4, #0x10] \n"                  
     629"       B       loc_FF3059DC \n"                        
     630"loc_FF30595C:\n" 
     631"       MOV     R0, #1 \n"                            
     632"       BL      sub_FF0B8C78 \n"                       
     633"       MOV     R0, R4 \n"                            
     634"       STRH    R5, [R4, #0x10] \n"                  
     635"       BL      sub_FF3056A0 \n"                       
     636"loc_FF305970:\n" 
     637"       MOV     R5, R0 \n"                            
     638"       B       loc_FF3059F8 \n"                        
     639"loc_FF305978:\n" 
     640"       MOV     R0, #1 \n"                            
     641"       BL      sub_FF0B8C78 \n"                       
     642"       MOV     R0, #1 \n"                            
     643"       B       loc_FF305994 \n"                        
     644"loc_FF305988:\n" 
     645"       MOV     R0, #1 \n"                            
     646"       BL      sub_FF0B8C78 \n"                       
     647"       MOV     R0, #2 \n"                            
     648"loc_FF305994:\n" 
     649"       BL      sub_FF24C69C \n"                       
     650"       MOV     R0, R4 \n"                            
     651"       STRH    R5, [R4, #0x10] \n"                  
     652"       BL      sub_FF3056A0 \n"                       
     653"       MOV     R5, R0 \n"                            
     654"       MOV     R0, #0 \n"                            
     655"       BL      sub_FF24C69C \n"                       
     656"       B       loc_FF3059F8 \n"                        
     657"loc_FF3059B4:\n" 
     658"       MOV     R0, #1 \n"                            
     659"       BL      sub_FF0B8C78 \n"                       
     660"       MOV     R0, R4 \n"                            
     661"       STRH    R7, [R4, #0x10] \n"                  
     662"       BL      sub_FF305768 \n"                       
     663"       B       loc_FF305970 \n"                        
     664"loc_FF3059CC:\n" 
     665"       MOV     R0, #0 \n"                            
     666"       BL      sub_FF0B8C78 \n"                       
     667"       MOV     R0, #4 \n"                            
     668"       STRH    R0, [R4, #0x10] \n"                  
     669"loc_FF3059DC:\n" 
     670"       MOV     R0, R4 \n"                            
     671"       BL      sub_FF305620 \n"                       
     672"       B       loc_FF305970 \n"                        
     673"loc_FF3059E8:\n" 
     674"       MOV     R1, #0x264 \n"                        
     675"       LDR     R0, =0xFF305AC8 \n"                   
     676"       BL      sub_FF00EC88 \n"                       
     677"       MOV     R5, #0x1D \n"                         
     678"loc_FF3059F8:\n" 
     679"       TST     R5, #1 \n"                            
     680"       MOVNE   R0, R5 \n"                          
     681"       BNE     loc_FF305A9C \n"                      
     682"       LDR     R5, =0xEF44 \n"                       
     683"       LDR     R0, [R5] \n"                          
     684"       CMP     R0, #0 \n"                            
     685"       BNE     loc_FF305A28 \n"                      
     686"       LDRH    R0, [R4, #0x10] \n"                  
     687"       CMP     R0, #1 \n"                            
     688"       CMPNE   R0, #3 \n"                          
     689"       CMPNE   R0, #5 \n"                          
     690"       BEQ     loc_FF305A3C \n"                      
     691"loc_FF305A28:\n" 
     692"       LDR     R0, =0x3EB1C \n"                      
     693"       LDRH    R0, [R0] \n"                         
     694"       SUB     R1, R0, #0x4000 \n"                   
     695"       SUBS    R1, R1, #0x20C \n"                   
     696"       BLEQ    sub_FF0A14C8 \n"                     
     697"loc_FF305A3C:\n" 
     698"       MOV     R0, R4 \n"                            
     699"       BL      sub_FF18D638 \n"                       
     700"       MOV     R0, R4 \n"                            
     701"       BL      sub_FF18D5D4 \n"                       
     702"       BL      capt_seq_hook_raw_here\n"    //added                              
     703"       LDR     R0, [R5] \n"                          
     704"       CMP     R0, #0 \n"                            
     705"       BNE     loc_FF305A6C \n"                      
     706"       LDRH    R0, [R4, #0x10] \n"                  
     707"       CMP     R0, #1 \n"                            
     708"       CMPNE   R0, #3 \n"                          
     709"       CMPNE   R0, #5 \n"                          
     710"       BEQ     loc_FF305A98 \n"                      
     711"loc_FF305A6C:\n" 
     712"       BL      sub_FF18E4F0 \n"                       
     713"       LDR     R4, =0x27E \n"                        
     714"       LDR     R2, =0x3A98 \n"                       
     715"       LDR     R3, =0xFF305AC8 \n"                   
     716"       MOV     R1, #4 \n"                            
     717"       STR     R4, [SP] \n"                          
     718"       BL      sub_FF07DB68 \n"                       
     719"       CMP     R0, #0 \n"                            
     720"       MOVNE   R1, R4 \n"                          
     721"       LDRNE   R0, =0xFF305AC8 \n"                 
     722"       BLNE    sub_FF00EC88 \n"                     
     723"loc_FF305A98:\n" 
     724"       MOV     R0, #0 \n"                            
     725"loc_FF305A9C:\n" 
     726"       LDMFD   SP!, {R3-R7,PC} \n"                 
     727        ); 
     728} 
    611729 
    612730///////sx220 sub_FF0C3E54 
  • trunk/platform/sx220hs/sub/101a/makefile.inc

    r1230 r1251  
    1212 
    1313ifdef OPT_CHDK_IN_EXMEM 
    14 MEMISOSTART=0x79067E0   # MAXRAMADDR+1 - EXMEM_HEAP_SKIP - EXMEM_BUFFER_SIZE - 32(0x20) (exmem allocates 64 bytes extra, 32 before and 32 after block allocated) 
     14MEMISOSTART=0x78E67E0   # MAXRAMADDR+1 - EXMEM_HEAP_SKIP - EXMEM_BUFFER_SIZE - 32(0x20) (exmem allocates 64 bytes extra, 32 before and 32 after block allocated) 
    1515else 
    1616MEMISOSTART=0x186AE4   # original non-exmem value 
     
    2020 
    2121MAXRAMADDR=0x7FFFFFF 
    22 EXMEM_BUFFER_SIZE=0x80000  # now 256KB, 80000=512KB, C0000=768KB, 100000=1MB 
     22EXMEM_BUFFER_SIZE=0xA0000  # now 256KB, 80000=512KB, C0000=768KB, 100000=1MB 
    2323EXMEM_HEAP_SKIP=0x679800 
    2424 
  • trunk/platform/sx220hs/sub/101a/stubs_auto.S

    r1230 r1251  
    7474STUB(FF056ABC) 
    7575STUB(FF05BA94) 
    76 STUB(FF066010) 
    77 STUB(FF069A3C) 
    78 STUB(FF069B68) 
    79 STUB(FF069CB4) 
    80 STUB(FF069D44) 
    81 STUB(FF06A138) 
    82 STUB(FF06A1C8) 
    83 STUB(FF06A24C) 
    84 STUB(FF06A3E8) 
    85 STUB(FF06A524) 
    86 STUB(FF06A840) 
    87 STUB(FF06A980) 
    88 STUB(FF06A9D0) 
    89 STUB(FF06B010) 
    9076STUB(FF074BC4) 
    9177STUB(FF07531C) 
     
    10894STUB(FF0793E0) 
    10995STUB(FF079490) 
     96STUB(FF07AF50) 
    11097STUB(FF07B8D8) 
    11198STUB(FF07B95C) 
     
    116103STUB(FF07D6AC) 
    117104STUB(FF07D70C) 
     105STUB(FF07DB68) 
    118106STUB(FF07EFE8) 
    119107STUB(FF082520) 
     
    121109STUB(FF0826C4) 
    122110STUB(FF0826F8) 
    123 STUB(FF085288) 
    124 STUB(FF0853D4) 
    125111STUB(FF08A944) 
    126112STUB(FF08B180) 
     
    128114STUB(FF08F3F4) 
    129115STUB(FF091B38) 
     116STUB(FF095260) 
     117STUB(FF0A14C8) 
    130118STUB(FF0B048C) 
    131119STUB(FF0B071C) 
     
    136124STUB(FF0B1200) 
    137125STUB(FF0B1688) 
     126STUB(FF0B8C48) 
     127STUB(FF0B8C78) 
    138128STUB(FF0B9F58) 
    139129STUB(FF0BF168) 
     
    174164STUB(FF104D38) 
    175165STUB(FF112D6C) 
    176 STUB(FF15943C) 
    177 STUB(FF1594D4) 
    178 STUB(FF169D7C) 
    179 STUB(FF16CCD8) 
    180166STUB(FF17E248) 
    181167STUB(FF17E520) 
     
    204190STUB(FF18CE8C) 
    205191STUB(FF18D004) 
     192STUB(FF18D0C8) 
    206193STUB(FF18D14C) 
    207194STUB(FF18D17C) 
    208195STUB(FF18D468) 
     196STUB(FF18D53C) 
     197STUB(FF18D5D4) 
     198STUB(FF18D638) 
    209199STUB(FF18D790) 
    210200STUB(FF18D9B4) 
     
    214204STUB(FF18E1FC) 
    215205STUB(FF18E330) 
     206STUB(FF18E4F0) 
    216207STUB(FF18E6BC) 
    217208STUB(FF18E788) 
    218209STUB(FF18E7C0) 
     210STUB(FF24C69C) 
    219211STUB(FF2ADD10) 
    220212STUB(FF2ADDC0) 
     
    229221STUB(FF2FCDC4) 
    230222STUB(FF2FD458) 
     223STUB(FF305620) 
     224STUB(FF3056A0) 
     225STUB(FF305768) 
    231226STUB(FF3058B8) 
    232227STUB(FF305C78) 
     
    235230STUB(FF3AB8C0) 
    236231STUB(FF3ABAF8) 
    237 STUB(FF87C4C0) 
  • trunk/platform/sx220hs/sub/101a/stubs_entry_2.S

    r1230 r1251  
    22 
    33///SX220 HS 1.01A// 
    4  
    5 //beta3 
    6 NHSTUB(WriteSDCard,0xFF16C828)  //swaped with ReadSDCard 
    7 NHSTUB(ReadSDCard,0xFF16C62C) 
    8 NHSTUB(strtolx,0xFF0310F0)      // swapped with strtol 
    9 NHSTUB(strtol,0xFF0312EC)        
    10 NHSTUB(LEDDrive,0xff0557c0)     //corrected 
    11  
    12 //beta2 
    13 NHSTUB(GetImageFolder, 0xFF1598B8)  //doesn't work 
    144 
    155# Addresses for firmware task handlers (used in taskHook) 
     
    199DEF(task_MovieRecord,0xFF1882F0) 
    2010DEF(task_ExpDrv,0xFF0C3E54) 
    21  
    22 NHSTUB(write, 0xff00adb8)  //changed. was same as Write and worked. 
    23 NHSTUB(GetCurrentAvValue,0xFF17F15C) //changed was FF0B05D4 
    24  
    25 NHSTUB(MoveIrisWithAv, 0xFF303650)  //1.01A //should fix avbracketing, change in generic/shooting.c 
     11DEF(task_PhySw,0xff0244f0) 
     12 
     13NHSTUB(DebugAssert                             ,0xff00ec88) 
     14NHSTUB(ExpCtrlTool_StopContiAE                 ,0xff0380bc) 
     15NHSTUB(GetMemInfo                              ,0xff00a29c) 
     16NHSTUB(GiveSemaphore                           ,0xff02b23c) 
     17NHSTUB(MakeSDCardBootable                      ,0xff06b04c) 
     18NHSTUB(PT_MoveDigitalZoomToWide                ,0xff0746e8) 
     19NHSTUB(PT_MoveOpticalZoomAt                    ,0xff0746c0) 
     20NHSTUB(ScreenLock                              ,0xff0ab250) 
     21NHSTUB(ScreenUnlock                            ,0xff0ab2b4) 
     22NHSTUB(err_init_task                           ,0xff005fd4) 
     23NHSTUB(WriteSDCard,0xFF16C828) 
     24NHSTUB(ReadSDCard,0xFF16C62C) 
     25NHSTUB(strtolx,0xFF0310F0) 
     26NHSTUB(strtol,0xFF0312EC)        
     27NHSTUB(LEDDrive,0xff0557c0) 
     28NHSTUB(GetImageFolder, 0xFF1598B8) 
     29NHSTUB(write, 0xff00adb8) 
     30NHSTUB(GetCurrentAvValue,0xFF17F15C) 
     31NHSTUB(MoveIrisWithAv, 0xFF303650)  //1.01A 
    2632NHSTUB(_log10,0xFF3ACCD0)  //1.01A 
    2733NHSTUB(_log,0xFF3AC790)  //1.01A 
    28  
    29 ///beta1 
    30 NHSTUB(PutInNdFilter,0xFF36BDEC) //1.01A //testing NDfilter works 
    31 NHSTUB(PutOutNdFilter,0xFF36BE24) //1.01A //testing NDfilter works 
    32 NHSTUB(GetKbdState, 0xFF056474) //testing in kbd.c 
    33  
    34  
     34NHSTUB(PutInNdFilter,0xFF36BDEC) //1.01A 
     35NHSTUB(PutOutNdFilter,0xFF36BE24) //1.01A 
     36NHSTUB(GetKbdState, 0xFF056474) 
    3537NHSTUB(ufree,0xFF02B884) 
    36  
    37 //NEW - EXMEM testing 
    38 NHSTUB(exmem_alloc, 0xFF085434) //1st , 2nd FF08549C, AllocUncacheable FF085288 
    39 // 
    40  
    41 //4/2011 Funnel 
    42 /////////////////////SX220HS  START////////////////////// 
     38NHSTUB(exmem_alloc, 0xFF085434) 
    4339NHSTUB(CreateTask,0xFF00E9B0) 
    4440NHSTUB(LocalTime,0xFF08446C) 
     
    7470NHSTUB(TakeSemaphore,0xff02b16c) 
    7571NHSTUB(UnlockMainPower,0xff0917d8) 
    76 NHSTUB(_pow,0xFF3ACE48) //1.01A                 //Not sure 
     72NHSTUB(_pow,0xFF3ACE48)                         //1.01A 
    7773NHSTUB(add_ptp_handler,0xff28aa1c) 
    78 NHSTUB(localtime,0xFF08446C)  //2 times 
     74NHSTUB(localtime,0xFF08446C) 
    7975NHSTUB(memset,0xFF245BEC) 
    8076NHSTUB(memcpy,0xFF030FEC) 
     
    8480NHSTUB(time,0xff084a48) 
    8581NHSTUB(Lseek,0xFF0272A0) 
    86 NHSTUB(Close,0xFF027084)  //sx220 something different in code. Not sure. 
     82NHSTUB(Close,0xFF027084) 
    8783NHSTUB(EnterToCompensationEVF,0xFF028E74) 
    8884NHSTUB(ExitFromCompensationEVF,0xFF028EB8) 
     
    9692NHSTUB(readfastdir,0xFF2DD404) 
    9793NHSTUB(Rec2PB,0xFF0931FC) 
    98 NHSTUB(RefreshPhysicalScreen,0xFF0AA058)  //most probable, some differences in code 
     94NHSTUB(RefreshPhysicalScreen,0xFF0AA058) 
    9995NHSTUB(Remove,0xFF0271F8) 
    10096NHSTUB(SleepTask,0xFF02B4E8) 
     
    10298NHSTUB(TurnOnBackLight,0xFF0A21A0) 
    10399NHSTUB(UIFS_WriteFirmInfoToFile,0xFF1A4414) 
    104 NHSTUB(Write,0xFF0270D8)  //Probably. not sure!!!!!!!!!!! 
     100NHSTUB(Write,0xFF0270D8) 
    105101NHSTUB(closedir,0xFF2DD260) 
    106102NHSTUB(closefastdir,0xFF2DD260) 
     
    111107NHSTUB(openfastdir,0xFF2DD2B0) 
    112108NHSTUB(qsort,0xFF359490)  //1.01A 
    113 NHSTUB(rename,0xFF026908)    //small difference in code vs sx210 
    114 NHSTUB(RenameFile_Fut, 0xff026908)  //same as rename like in sx210 
     109NHSTUB(rename,0xFF026908) 
     110NHSTUB(RenameFile_Fut, 0xff026908) 
    115111NHSTUB(strrchr,0xFF0040DC) 
    116112NHSTUB(vsprintf,0xFF010858) 
    117  
    118  
    119 /////////////////AUTO FOUND CHECKED////////////////// 
    120113NHSTUB(AllocateMemory, 0xff3075E8) //1.01A 
    121114NHSTUB(AllocateUncacheableMemory, 0xff02b844) 
     
    129122NHSTUB(GetSystemTime, 0xff307640) //1.01A 
    130123NHSTUB(NewTaskShell, 0xff08a38c) 
    131 NHSTUB(Read, 0xff00ad58)  //fixed was adb8 
    132 NHSTUB(SetFileTimeStamp, 0xFF027410)   //auto stubs was wrong here. small differences in code from sx210 
     124NHSTUB(Read, 0xff00ad58) 
     125NHSTUB(SetFileTimeStamp, 0xFF027410) 
    133126NHSTUB(SetPropertyCase, 0xff08a828) 
    134127NHSTUB(VbattGet, 0xff023040) 
    135128NHSTUB(_sqrt, 0xff3aed2C)  //1.01A 
    136129NHSTUB(close, 0xff00abb4) 
    137 NHSTUB(lseek, 0xff0272a0)  //corrected auto stubs. same sa Lseek 
    138 NHSTUB(malloc, 0xFF0041EC)  //corrected auto stubs 
     130NHSTUB(lseek, 0xff0272a0) 
     131NHSTUB(malloc, 0xFF0041EC) 
    139132NHSTUB(memcmp, 0xff0108f4) 
    140133NHSTUB(mktime_ext, 0xff0ac0c8) 
    141134NHSTUB(open, 0xff00ab04) 
    142135NHSTUB(opendir, 0xff2dd2b0) 
    143 NHSTUB(read, 0xff00ad58)  //fixed was adb8 
     136NHSTUB(read, 0xff00ad58) 
    144137NHSTUB(reboot_fw_update, 0xff2e28a0) 
    145138NHSTUB(stat, 0xff0272e8) 
    146 NHSTUB(strcat, 0xFF0AB880)  //auto stubs error. 
     139NHSTUB(strcat, 0xFF0AB880) 
    147140NHSTUB(strchr, 0xff0040b8) 
    148141NHSTUB(strcmp, 0xff0108b0) 
    149142NHSTUB(strcpy, 0xff010898) 
    150 NHSTUB(strlen, 0xFF004104) //corrected auto stubs error 
     143NHSTUB(strlen, 0xFF004104) 
    151144NHSTUB(kbd_p1_f, 0xFF0249DC) 
    152145NHSTUB(kbd_p1_f_cont, 0xFF0249E8) 
     
    156149NHSTUB(GetDrive_FreeClusters,0xFF06AE14) 
    157150NHSTUB(GetDrive_TotalClusters,0xFF06ADEC) 
    158 NHSTUB(UnlockAndRefresh, 0xFF0AB2B4)   // maybe    //sx210 was FFA1EDDC 
    159 NHSTUB(LockAndRefresh, 0xFF0AB250)    // maybe // sx210 was FFA1ED98 
     151NHSTUB(UnlockAndRefresh, 0xFF0AB2B4) 
     152NHSTUB(LockAndRefresh, 0xFF0AB250) 
    160153NHSTUB(UnlockAF, 0xFF028C10) 
    161154NHSTUB(DoAFLock, 0xFF028BD8) 
    162 NHSTUB(MakeAFScan, 0xFF18B938)   //ok 
     155NHSTUB(MakeAFScan, 0xFF18B938) 
    163156NHSTUB(ExpCtrlTool_StartContiAE, 0xFF037FE4) 
    164157NHSTUB(apex2us, 0xFF246BEC) 
     
    169162NHSTUB(rand,0xFF245D2C) 
    170163NHSTUB(srand,0xFF245D20) 
    171 ///////////////SX220HS  END/////////////////// 
    172164 
    173165//Fixed errors in compiler 
    174 //STUB(FF000358) 
    175 //STUB(FF025F8C) 
    176 /* 
    177 STUB(FF000B28) 
    178 STUB(FF00A374) 
    179 STUB(FF005B18) 
    180 STUB(FF005C00) 
    181 */ 
    182166STUB(FF18669C) 
    183167STUB(FF187C10) 
    184168STUB(FF18D1CC) 
    185169 
    186 ////////////NOT FOUND//////////// 
    187170////All pointed to NULL (nullsub_10 -> 0xFF02D4BC)   // SX220 
    188  
    189171NHSTUB(UnsetZoomForMovie, 0xFF02D4BC)  
    190 //NHSTUB(ftell, 0xFF02D4BC)  
    191   
    192 NHSTUB(Unmount_FileSystem, 0xFF02D4BC)            //  ??????????????????? 
    193 NHSTUB(Mount_FileSystem, 0xFF02D4BC)              //  ??????????????????? 
    194 NHSTUB(SetZoomActuatorSpeedPercent, 0xFF02D4BC)   //  ???????????????????   
    195 NHSTUB(rewinddir, 0xFF02D4BC)                     //  ??????????????????? 
    196  
    197 ///////////////NEW///////////////// 
     172NHSTUB(Unmount_FileSystem, 0xFF02D4BC) 
     173NHSTUB(Mount_FileSystem, 0xFF02D4BC) 
     174NHSTUB(SetZoomActuatorSpeedPercent, 0xFF02D4BC) 
     175NHSTUB(rewinddir, 0xFF02D4BC) 
    198176NSTUB(DisableDispatch,0xFF02D4BC) 
    199177NSTUB(CreatePhysicalVram,0xFF02D4BC) 
Note: See TracChangeset for help on using the changeset viewer.