Advertisement
Guest User

Novex

a guest
Apr 30th, 2008
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.25 KB | None | 0 0
  1. #include "lolevel.h"
  2. #include "platform.h"
  3. #include "core.h"
  4.  
  5. #define RAWDATA_AVAILABLE (1)
  6. #define RAWDATA_SAVED (2)
  7.  
  8. #define NR_ON (2)
  9. #define NR_OFF (1)
  10.  
  11. static long raw_save_stage;
  12.  
  13. void capt_seq_hook_raw_here()
  14. {
  15.     raw_save_stage = RAWDATA_AVAILABLE;
  16.     core_rawdata_available();
  17.     while (raw_save_stage != RAWDATA_SAVED){
  18.     _SleepTask(10);
  19.     }
  20. }
  21.  
  22. void hook_raw_save_complete()
  23. {
  24.     raw_save_stage = RAWDATA_SAVED;
  25. }
  26.  
  27.  
  28. void capt_seq_hook_set_nr()
  29. {
  30.     long *nrflag = (long*)0x61B8;   // found at 0xFF962C18
  31.  
  32.     switch (core_get_noise_reduction_value()){
  33.     case NOISE_REDUCTION_AUTO_CANON:
  34.     // leave it alone
  35.     break;
  36.     case NOISE_REDUCTION_OFF:
  37.     *nrflag = 1;
  38.     break;
  39.     case NOISE_REDUCTION_ON:
  40.     *nrflag = 2;
  41.     break;
  42.     };
  43. }
  44.  
  45. void __attribute__((naked,noinline)) sub_FF962C30_my(long p)
  46. {
  47. #if 1
  48.     asm volatile (
  49.                 "STMFD   SP!, {R4-R6,LR}\n"
  50.                 "LDR     R3, =0x6F204\n"
  51.                 "LDR     R5, =0x61B4\n"
  52.                 "SUB     SP, SP, #4\n"
  53.                 "MVN     R1, #0\n"          // MOVL    R1, 0xFFFFFFFF
  54.                 "STR     R0, [R5]\n"
  55.                 "LDR     R0, [R3]\n"
  56.                 "BL      sub_FF81FE80\n"    // ClearEventFlag
  57.                 "LDR     R3, =0x99CC0\n"
  58.                 "LDR     R0, [R3,#0x7C]\n"
  59.                 "BL      sub_FF89E17C\n"    // IsEmptyWriteCache_42
  60.                 "BL      sub_FF962B84\n"
  61.             "BL      capt_seq_hook_set_nr\n"
  62.                 "LDR     R3, =0x61BC\n"
  63.                 "LDR     R0, [R3]\n"
  64.                 "BL      sub_FF89E63C\n"
  65.  
  66.         "B   sub_FF962C6C\n"    // ---> finish original function
  67.     );
  68. #endif
  69. }
  70.  
  71. void __attribute__((naked,noinline)) sub_FF95F788_my(long p)
  72. {
  73.     asm volatile (
  74.                  "STMFD   SP!, {R4,LR}\n"
  75.                  "LDR     R4, [R0,#0xC]\n"
  76.                  "BL      sub_FF967F2C\n"
  77.                  "CMP     R0, #0\n"
  78.                  "BNE     loc_FF95F7A0\n"
  79.                  "BL      sub_FF967F38\n"  
  80.  "loc_FF95F7A0:\n"
  81.                  "LDR     R3, =0x99CC0\n"
  82.                  "LDR     R2, [R3,#0x24]\n"
  83.                  "CMP     R2, #0\n"
  84.                  "BNE     loc_FF95F7D4\n"
  85.                  "MOV     R0, #0xC\n"
  86.                  "BL      sub_FF967F4C\n"
  87.                  "TST     R0, #1\n"
  88.                  "BEQ     loc_FF95F7D4\n"
  89.                  "MOV     R0, #1\n"        
  90.  "loc_FF95F7C4:\n"
  91.                  "MOV     R2, R4\n"
  92.                  "MOV     R1, #1\n"
  93.                  "LDMFD   SP!, {R4,LR}\n"
  94.                  "B       sub_FF95DE70\n"  
  95.  "loc_FF95F7D4:\n"
  96.                  "LDR     R3, =0x99CC0\n"
  97.                  "LDR     R2, [R3,#0x24]\n"
  98.                  "CMP     R2, #0\n"
  99.                  "BNE     loc_FF95F824\n"
  100.                  "MOV     R0, R4\n"
  101.                  "BL      sub_FF9619E8\n"
  102.                  "TST     R0, #1\n"
  103.                  "BNE     loc_FF95F7C4\n"
  104.                  "BL      sub_FF9A0B80\n"
  105.                  "BL      sub_FF824A78\n"
  106.                  "LDR     R2, =0x99C04\n"
  107.                  "ADD     R3, R4, R4,LSL#1\n"
  108.                  "STR     R0, [R2,R3,LSL#5]\n"
  109.                  "MOV     R0, R4\n"
  110.                  "BL      sub_FF96339C\n"
  111.                  "BL      sub_FF961EEC\n"
  112.                  "BL      sub_FF961E88\n"
  113.                  "MOV     R0, R4\n"
  114.                  "BL      sub_FF962C30_my\n"  //------------->
  115.  
  116.                  "BL      capt_seq_hook_raw_here\n"
  117.  
  118.                  "B       loc_FF95F838\n"      
  119.  "loc_FF95F824:\n"
  120.                  "LDR     R3, =0x61A4\n"
  121.                  "LDR     R2, [R3]\n"
  122.                  "CMP     R2, #0\n"
  123.                  "MOVNE   R0, #0x1D\n"
  124.                  "MOVEQ   R0, #0\n"
  125.  "loc_FF95F838:\n"
  126.                  "MOV     R2, R4\n"
  127.                  "MOV     R1, #1\n"
  128.                  "BL      sub_FF95DE70\n"
  129.                  "LDMFD   SP!, {R4,LR}\n"
  130.                  "B       sub_FF962E28\n"
  131.     );
  132. }
  133.  
  134. void __attribute__((naked,noinline)) capt_seq_task()    // task_CaptSeqTask
  135. {
  136.  asm volatile(
  137.                  "STMFD   SP!, {R4,LR}\n"
  138.                  "SUB     SP, SP, #4\n"
  139.                  "MOV     R4, SP\n"
  140.                  "B       loc_FF95FD74\n"  
  141.  "loc_FF95FC0C:\n"
  142.                  "LDR     R2, [SP]\n"      
  143.                  "LDR     R3, [R2]\n"
  144.                  "MOV     R0, R2\n"
  145.                  "CMP     R3, #0x14\n"
  146.                  "LDRLS   PC, [PC,R3,LSL#2]\n"
  147.                  "B       loc_FF95FD48\n"  
  148.                  ".long loc_FF95FC78\n"
  149.                  ".long loc_FF95FC98\n"
  150.                  ".long loc_FF95FCAC\n"
  151.                  ".long loc_FF95FCBC\n"
  152.                  ".long loc_FF95FCB4\n"
  153.                  ".long loc_FF95FCC4\n"
  154.                  ".long loc_FF95FCCC\n"
  155.                  ".long loc_FF95FCD8\n"
  156.                  ".long loc_FF95FCE0\n"
  157.                  ".long loc_FF95FCEC\n"
  158.                  ".long loc_FF95FCF4\n"
  159.                  ".long loc_FF95FCFC\n"
  160.                  ".long loc_FF95FD04\n"
  161.                  ".long loc_FF95FD0C\n"
  162.                  ".long loc_FF95FD14\n"
  163.                  ".long loc_FF95FD20\n"
  164.                  ".long loc_FF95FD28\n"
  165.                  ".long loc_FF95FD30\n"
  166.                  ".long loc_FF95FD38\n"
  167.                  ".long loc_FF95FD40\n"
  168.                  ".long loc_FF95FD5C\n"    
  169.  "loc_FF95FC78:\n"
  170.                  "BL      sub_FF961648\n"
  171.                  "BL      shooting_expo_param_override\n"   // +
  172.                  "BL      sub_FF95D990\n"  
  173.                  "LDR     R3, =0x99CC0\n"        
  174.                  "LDR     R2, [R3,#0x24]\n"
  175.                  "CMP     R2, #0\n"
  176.                  "BEQ     loc_FF95FD58\n"
  177.                  "BL      sub_FF95F858\n"
  178.                  "B       loc_FF95FD58\n"  
  179.  "loc_FF95FC98:\n"
  180.                  "BL      sub_FF95F788_my\n" //------------->
  181.  "loc_FF95FC9C:\n"
  182.                  "LDR     R2, =0x99CC0\n"
  183.                  "MOV     R3, #0\n"
  184.                  "STR     R3, [R2,#0x24]\n"
  185.                  "B       loc_FF95FD58\n"  
  186.  "loc_FF95FCAC:\n"
  187.                  "BL      sub_FF9619D8\n"
  188.                  "B       loc_FF95FD58\n"  
  189.  "loc_FF95FCB4:\n"
  190.                  "BL      sub_FF960848\n"
  191.                  "B       loc_FF95FC9C\n"  
  192.  "loc_FF95FCBC:\n"
  193.                  "BL      sub_FF960BE4\n"   //BackLightDrv_LcdBackLightOff_3
  194.                  "B       loc_FF95FC9C\n"  
  195.  "loc_FF95FCC4:\n"
  196.                  "BL      sub_FF960BF4\n"
  197.                  "B       loc_FF95FD58\n"  
  198.  "loc_FF95FCCC:\n"
  199.                  "BL      sub_FF96172C\n"
  200.                  "BL      sub_FF95D990\n"
  201.                  "B       loc_FF95FD58\n"  
  202.  "loc_FF95FCD8:\n"
  203.                  "BL      sub_FF95F92C\n"
  204.                  "B       loc_FF95FD58\n"  
  205.  "loc_FF95FCE0:\n"
  206.                  "BL      sub_FF961794\n"
  207.                  "BL      sub_FF95D990\n"
  208.                  "B       loc_FF95FD58\n"  
  209.  "loc_FF95FCEC:\n"
  210.                  "BL      sub_FF960BE4\n"
  211.                  "B       loc_FF95FD58\n"  
  212.  "loc_FF95FCF4:\n"
  213.                  "BL      sub_FF961F2C\n"
  214.                  "B       loc_FF95FD58\n"  
  215.  "loc_FF95FCFC:\n"
  216.                  "BL      sub_FF962278\n"  
  217.                  "B       loc_FF95FD58\n"  
  218.  "loc_FF95FD04:\n"
  219.                  "BL      sub_FF9622FC\n"
  220.                  "B       loc_FF95FD58\n"  
  221.  "loc_FF95FD0C:\n"
  222.                  "BL      sub_FF9623E8\n"
  223.                  "B       loc_FF95FD58\n"  
  224.  "loc_FF95FD14:\n"
  225.                  "MOV     R0, #0\n"
  226.                  "BL      sub_FF9624B0\n"
  227.                  "B       loc_FF95FD58\n"  
  228.  "loc_FF95FD20:\n"
  229.                  "BL      sub_FF96261C\n"
  230.                  "B       loc_FF95FD58\n"  
  231.  "loc_FF95FD28:\n"
  232.                  "BL      sub_FF9626B0\n"
  233.                  "B       loc_FF95FD58\n"  
  234.  "loc_FF95FD30:\n"
  235.                  "BL      sub_FF96276C\n"
  236.                  "B       loc_FF95FD58\n"  
  237.  "loc_FF95FD38:\n"
  238.                  "BL      sub_FF962858\n"
  239.                  "B       loc_FF95FD58\n"  
  240.  "loc_FF95FD40:\n"
  241.                  "BL      sub_FF9628AC\n"
  242.                  "B       loc_FF95FD58\n"  
  243.  "loc_FF95FD48:\n"
  244.                  "MOV     R1, #0x36C\n"
  245.                  "LDR     R0, =0xFF95F514\n"
  246.                  "ADD     R1, R1, #1\n"
  247.                  "BL      sub_FF813AFC\n"   // DebugAssert
  248.  "loc_FF95FD58:\n"
  249.                  "LDR     R2, [SP]\n"
  250.  "loc_FF95FD5C:\n"
  251.                  "LDR     R3, =0x6F18C\n"
  252.                  "LDR     R1, [R2,#4]\n"
  253.                  "LDR     R0, [R3]\n"
  254.                  "BL      sub_FF81FCE4\n"   // SetEventFlag
  255.                  "LDR     R0, [SP]\n"
  256.                  "BL      sub_FF95F590\n"
  257.  "loc_FF95FD74:\n"
  258.                  "LDR     R3, =0x6F190\n"
  259.                  "MOV     R1, R4\n"
  260.                  "LDR     R0, [R3]\n"
  261.                  "MOV     R2, #0\n"
  262.                  "BL      sub_FF8203FC\n"   // ReceiveMessageQueue
  263.                  "TST     R0, #1\n"
  264.                  "BEQ     loc_FF95FC0C\n"
  265.                  "MOV     R1, #0x2A4\n"
  266.                  "LDR     R0, =0xFF95F514\n"
  267.                  "ADD     R1, R1, #3\n"
  268.                  "BL      sub_FF813AFC\n"   // DebugAssert
  269.                  "BL      sub_FF821958\n"   // ExitTask
  270.                  "ADD     SP, SP, #4\n"
  271.                  "LDMFD   SP!, {R4,PC}\n"
  272.  );
  273. }
  274.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement