root/platform/ixus900_sd900/sub/100c/lib.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. hook_raw_image_addr
  2. vid_get_bitmap_fb
  3. vid_get_viewport_live_fb
  4. vid_get_viewport_fb
  5. vid_get_viewport_fb_d
  6. vid_get_viewport_height
  7. camera_jpeg_count_str

   1 #include "platform.h"
   2 //#include "keyboard.h"
   3 
   4 /********** hook_raw_fptr() & hook_raw_ret_addr()
   5 ROM:FF8EB058 loc_FF8EB058
   6 ROM:FF8EB058                 LDR     R5, =0x36344
   7 ROM:FF8EB05C                 MOV     R2, #0
   8 ROM:FF8EB060                 MOV     R1, #0x220000
   9 ROM:FF8EB064                 LDR     R0, [R5]
  10 ROM:FF8EB068                 BL      unknown_libname_21
  11 ROM:FF8EB06C                 MOV     R1, #0x220000
  12 ROM:FF8EB070                 LDR     R0, [R5]
  13 ROM:FF8EB074                 BL      ClearEventFlag
  14 ROM:FF8EB078                 LDR     R3, =0x3635C
  15 ROM:FF8EB07C                 LDR     R2, =0x36358      ; <--- hook_raw_fptr()
  16 ROM:FF8EB080                 LDR     R0, [R3]
  17 ROM:FF8EB084                 MOV     LR, PC
  18 ROM:FF8EB088                 LDR     PC, [R2]
  19 ROM:FF8EB08C                 BL      sub_FF8EABF0      ; <--- hook_raw_ret_addr() points here
  20 ROM:FF8EB090                 LDR     R3, =0x58A4
  21 ***********/
  22 // obsolete
  23 /*
  24 void *hook_raw_fptr() {
  25     return (void*)0x36358;   // ROM:FF8EB07C
  26 }
  27 void *hook_raw_ret_addr() {
  28     return (void*)0xFF8EB08C;   // ROM:FF8EB08C
  29 }
  30 */
  31 
  32 
  33 /*********** hook_raw_image_addr()
  34 search for string "ImgPrcssBuf.c:156", raw buffer table is right above sub
  35 
  36 ROM:FF99865C                 LDR     LR, =0xFF9985B8   ; <--- raw buffer table
  37 ROM:FF998660                 LDR     R3, =0x6BC0
  38 ROM:FF998664                 LDR     R2, =0x6BC4       ; <---
  39 
  40 ROM:FF9985B8 raw_buffer_table
  41 ...
  42 ROM:FF9985D8                 DCD 0x113D38D2
  43 ROM:FF9985DC                 DCD 0x1082C320            ; <---
  44 ROM:FF9985E0                 DCD 0x1088B440
  45 ROM:FF9985E4                 DCD 0x1278AE32
  46 ROM:FF9985E8                 DCD 0x11BE3880            ; <---
  47 ROM:FF9985EC                 DCD 0x114D36C0
  48 ***********/
  49 char *hook_raw_image_addr() {
  50     // return (char*)(0x1082C320);   // 0x1082C000 + 0x320 does not work
  51     return (char*)(*(int*)0x6BC4 ? 0x11BE3880 : 0x1082C320);    // looks like SD900 has volatile RAW buffer like G7 / G9 / A650
  52 }
  53 
  54 /*********** vid_get_bitmap_fb()
  55 look near string "BmpDDev.c"
  56 
  57 ROM:FF95A884                 MOV     R3, #0x10000000   ; <---
  58 ROM:FF95A888                 ADD     R3, R3, #0x360000   ; <---
  59 ROM:FF95A88C                 ADD     R3, R3, #0x1000   ; <---
  60 ROM:FF95A890                 CMP     R0, R3
  61 ROM:FF95A894                 STR     LR, [SP,#-4]!
  62 ROM:FF95A898                 MOV     R2, #0
  63 ROM:FF95A89C                 MOV     R1, #0xF6
  64 ROM:FF95A8A0                 LDR     R0, =aBmpddev_c
  65 ***********/
  66 void *vid_get_bitmap_fb() {
  67     return (void*)0x10361000;   // 0x10000000 + 0x360000 + 0x1000 , same as SD800 / SD1000
  68 }
  69 
  70 /*********** vid_get_viewport_live_fb()
  71 OLD !!!
  72 
  73 ROM:FFB133D8 loc_FFB133D8
  74 ROM:FFB133D8                 BL      sub_FF8BE30C
  75 ROM:FFB133DC                 LDR     R2, =0x1065B130   ; <--- this plus below
  76 ROM:FFB133E0                 MOVL    R3, 0x8B380       ; <---
  77 ROM:FFB133E8                 MOV     R1, R2
  78 ROM:FFB133EC                 STMIA   R4, {R2,R3}
  79 ROM:FFB133F0                 LDR     R0, =aVramAddressP
  80 ROM:FFB133F4                 BL      sub_FFB08E8C
  81 ROM:FFB133F8                 LDR     R1, [R4,#4]
  82 ROM:FFB133FC                 LDR     R0, =aVramSize0xX
  83 ROM:FFB13400                 BL      sub_FFB08E8C
  84 ROM:FFB13404                 MOV     R0, #0
  85 ROM:FFB13408                 LDMFD   SP!, {R4-R7,PC}
  86 ***********/
  87 /*
  88 void *vid_get_viewport_live_fb() {   // live picture buffer (shoot not pressed)
  89     return (void*)0x106E64B0;   // 0x1065B130 + 0x8B380
  90 }
  91 */
  92 
  93 /*********** vid_get_viewport_live_fb()
  94 ROM:FF8BB124 loc_FF8BB124
  95 ROM:FF8BB124                 LDR     R3, =0x55D4   ; <---
  96 ROM:FF8BB128                 LDR     R2, =0x55BC   ; <---
  97 ROM:FF8BB12C                 LDRB    R0, [R3]
  98 ROM:FF8BB130                 LDR     R1, [R2,R0,LSL#2]
  99 ROM:FF8BB134                 MOV     R0, #0
 100 ROM:FF8BB138                 BL      loc_FF88E5D4
 101 ***********/
 102 void *vid_get_viewport_live_fb() {   // live picture buffer (shoot not pressed)
 103     //return (void*)0x106E64B0;   // 0x1065B130 + 0x8B380
 104     void **fb = (void **)0x55BC;
 105     unsigned char buff = *((unsigned char*)0x55D4);
 106     if(buff == 0) {
 107         buff = 2;
 108     } else {
 109         buff--;
 110     }
 111     return fb[buff];
 112 }
 113 
 114 /*********** vid_get_viewport_fb
 115 look near string "VRAM Address  : %p"
 116 
 117 ROM:FFB133D8 loc_FFB133D8
 118 ROM:FFB133D8                 BL      sub_FF8BE30C
 119 ROM:FFB133DC                 LDR     R2, =0x1065B130   ; <---
 120 ROM:FFB133E0                 MOVL    R3, 0x8B380
 121 ROM:FFB133E8                 MOV     R1, R2
 122 ROM:FFB133EC                 STMIA   R4, {R2,R3}
 123 ROM:FFB133F0                 LDR     R0, =aVramAddressP
 124 ROM:FFB133F4                 BL      sub_FFB08E8C
 125 ROM:FFB133F8                 LDR     R1, [R4,#4]
 126 ROM:FFB133FC                 LDR     R0, =aVramSize0xX
 127 ROM:FFB13400                 BL      sub_FFB08E8C
 128 ROM:FFB13404                 MOV     R0, #0
 129 ROM:FFB13408                 LDMFD   SP!, {R4-R7,PC}
 130 ***********/
 131 void *vid_get_viewport_fb() {   // live picture buffer (shoot half-pressed)
 132     return (void*)0x1065B130;   // ROM:FFB133DC
 133 }
 134 
 135 /*********** vid_get_viewport_fb_d()
 136 look near string "ImagePlayer.c"
 137 
 138 ROM:FF95C314                 LDR     R1, =0x74028    ; <---
 139 ROM:FF95C318                 ADD     R3, R3, R3,LSL#2
 140 ***********/
 141 void *vid_get_viewport_fb_d() {   // picture buffer (play mode)
 142     return (void*)(*(int*)0x74028);   // ROM:FF95C354
 143 }
 144 
 145 long vid_get_viewport_height() {
 146     return ((mode_get()&MODE_MASK) == MODE_PLAY)?240:230;
 147 }
 148 
 149 /*********** camera_jpeg_count_str()
 150 search for DCB "9999",0
 151 
 152 ROM:FFAA77B0 dword_FFAA77B0  DCD 0x98E0
 153 ROM:FFAA7130 a9999           DCB "9999",0
 154 ROM:FFAA7135                 DCB    0
 155 ROM:FFAA7136                 DCB    0
 156 ROM:FFAA7137                 DCB    0
 157 ROM:FFAA7138 aD_0            DCB "%d",0
 158 ROM:FFAA713B                 DCB    0
 159 ROM:FFAA713C sub_FFAA713C
 160 ROM:FFAA713C                 MOV     R3, #0x2700
 161 ROM:FFAA7140                 MOV     R2, R0
 162 ROM:FFAA7144                 STMFD   SP!, {R4,LR}
 163 ROM:FFAA7148                 ADD     R3, R3, #0xE
 164 ROM:FFAA714C                 LDR     R4, =0x818C8      ; <---
 165 ROM:FFAA7150                 CMP     R2, R3
 166 ROM:FFAA7154                 LDR     R1, =a9999
 167 ROM:FFAA7158                 MOV     R0, R4
 168 ROM:FFAA715C                 BLS     loc_FFAA7168
 169 ROM:FFAA7160                 BL      sprintf
 170 ROM:FFAA7164                 B       loc_FFAA7178
 171 ***********/
 172 char *camera_jpeg_count_str() {
 173     return (char*)0x818C8;   // ROM:FFAA714C
 174 }

/* [<][>][^][v][top][bottom][index][help] */