| 1 | #include "platform.h" |
|---|
| 2 | #include "keyboard.h" |
|---|
| 3 | |
|---|
| 4 | /*********** |
|---|
| 5 | ROM:FF8EBD04 loc_FF8EBD04 ; CODE XREF: sub_FF8EBA14+288j |
|---|
| 6 | ROM:FF8EBD04 ; sub_FF8EBA14+2A8j |
|---|
| 7 | ROM:FF8EBD04 LDR R5, =unk_4BB44 |
|---|
| 8 | ROM:FF8EBD08 MOV R2, #0 |
|---|
| 9 | ROM:FF8EBD0C MOV R1, #0x220000 |
|---|
| 10 | ROM:FF8EBD10 LDR R0, [R5] |
|---|
| 11 | ROM:FF8EBD14 BL unknown_libname_21 ; "Canon A-Series Firmware" |
|---|
| 12 | ROM:FF8EBD18 MOV R1, #0x220000 |
|---|
| 13 | ROM:FF8EBD1C LDR R0, [R5] |
|---|
| 14 | ROM:FF8EBD20 BL ClearEventFlag |
|---|
| 15 | ROM:FF8EBD24 LDR R3, =unk_4BB5C |
|---|
| 16 | ROM:FF8EBD28 LDR R2, =0x4BB58 <-- hook_raw_fptr |
|---|
| 17 | ROM:FF8EBD2C LDR R0, [R3] |
|---|
| 18 | ROM:FF8EBD30 MOV LR, PC |
|---|
| 19 | ROM:FF8EBD34 LDR PC, [R2] |
|---|
| 20 | ROM:FF8EBD38 BL nullsub_46 <-- hook_raw_ret_addr points here |
|---|
| 21 | ROM:FF8EBD3C LDR R3, =unk_5840 |
|---|
| 22 | ***********/ |
|---|
| 23 | |
|---|
| 24 | void *hook_raw_fptr() |
|---|
| 25 | { |
|---|
| 26 | return (void*)0x4BB58; // find on "taskcreate_ImageSensorTask" |
|---|
| 27 | } |
|---|
| 28 | |
|---|
| 29 | void *hook_raw_ret_addr() |
|---|
| 30 | { |
|---|
| 31 | return (void*)0xFF9B8524; // BL nullsub_46 |
|---|
| 32 | } |
|---|
| 33 | |
|---|
| 34 | /*********** |
|---|
| 35 | ROM:FF8E5128 MOVL R7, 0x10F00000 ; This plus the 0x600 from below is raw_img_addr |
|---|
| 36 | ROM:FF8E5130 MOV R3, #0x8C0000 |
|---|
| 37 | ROM:FF8E5134 ADD R7, R7, #0x600 |
|---|
| 38 | ROM:FF8E5138 ADD R3, R3, #0xAE00 |
|---|
| 39 | ROM:FF8E513C ADD R8, SP, #0x16C+var_168 |
|---|
| 40 | ... |
|---|
| 41 | ROM:FF8E5148 MOV R2, R7 ; raw_image_addr = 0x10F00600 |
|---|
| 42 | ROM:FF8E514C ADD R3, R3, #0x10 ; raw_size = 0x8CAE10 |
|---|
| 43 | ***********/ |
|---|
| 44 | |
|---|
| 45 | char *hook_raw_image_addr() |
|---|
| 46 | { |
|---|
| 47 | return (char*)(0x10F00600); // 0x10F00000 + 0x600 (find on "A/%08.CRW") |
|---|
| 48 | } |
|---|
| 49 | |
|---|
| 50 | long hook_raw_size() |
|---|
| 51 | { |
|---|
| 52 | return 0x8CAE10; //7mpx (0x8C0000 + 0xAE00 + 0x10)(find on "A/%08x.CRW") |
|---|
| 53 | } |
|---|
| 54 | |
|---|
| 55 | /*************** |
|---|
| 56 | ROM:FFB19720 loc_FFB19720 ; CODE XREF: sub_FFB196D4+34j |
|---|
| 57 | ROM:FFB19720 BL sub_FF8BF204 |
|---|
| 58 | ROM:FFB19724 LDR R2, =0x106571F0 |
|---|
| 59 | ROM:FFB19728 MOVL R3, 0x7E900 |
|---|
| 60 | ROM:FFB19730 MOV R1, R2 |
|---|
| 61 | ROM:FFB19734 STMIA R4, {R2,R3} |
|---|
| 62 | ROM:FFB19738 LDR R0, =aVramAddressP |
|---|
| 63 | ROM:FFB1973C BL sub_FFB0F1E8 |
|---|
| 64 | ROM:FFB19740 LDR R1, [R4,#4] |
|---|
| 65 | ROM:FFB19744 LDR R0, =aVramSize0xX |
|---|
| 66 | ROM:FFB19748 BL sub_FFB0F1E8 |
|---|
| 67 | ROM:FFB1974C MOV R0, #0 |
|---|
| 68 | ROM:FFB19750 LDMFD SP!, {R4-R7,PC} |
|---|
| 69 | ROM:FFB19750 ; End of function sub_FFB196D4 |
|---|
| 70 | ROM:FFB19750 |
|---|
| 71 | ROM:FFB19750 ; --------------------------------------------------------------------------- |
|---|
| 72 | ROM:FFB19754 viewport_fb DCD 0x106571F0 ; DATA XREF: sub_FFB196D4+50r |
|---|
| 73 | ROM:FFB19758 off_FFB19758 DCD aVramAddressP ; DATA XREF: sub_FFB196D4+64r |
|---|
| 74 | ROM:FFB19758 ; "VRAM Address : %p\r" |
|---|
| 75 | ROM:FFB1975C off_FFB1975C DCD aVramSize0xX ; DATA XREF: sub_FFB196D4+70r |
|---|
| 76 | ROM:FFB1975C ; "VRAM Size : 0x%x\r" |
|---|
| 77 | |
|---|
| 78 | ***************/ |
|---|
| 79 | |
|---|
| 80 | void *vid_get_viewport_live_fb() |
|---|
| 81 | { |
|---|
| 82 | // return (void*)0; // 0x106571F0 + 0x7E900 |
|---|
| 83 | void **fb=(void **)0x5564; |
|---|
| 84 | unsigned char buff = *((unsigned char*)0x5574); |
|---|
| 85 | if (buff == 0) { |
|---|
| 86 | buff = 2; |
|---|
| 87 | } |
|---|
| 88 | else { |
|---|
| 89 | buff--; |
|---|
| 90 | } |
|---|
| 91 | return fb[buff]; |
|---|
| 92 | } |
|---|
| 93 | |
|---|
| 94 | /*********** |
|---|
| 95 | ROM:FF960DC0 MOVL R3, 0x10360000 |
|---|
| 96 | ROM:FF960DC8 LDR LR, =unk_67E0 |
|---|
| 97 | ROM:FF960DCC MOV R12, #0x2D0 |
|---|
| 98 | ROM:FF960DD0 MOV R2, #0xF0 ; '=' |
|---|
| 99 | ROM:FF960DD4 ADD R3, R3, #0x1000 |
|---|
| 100 | ***********/ |
|---|
| 101 | |
|---|
| 102 | void *vid_get_bitmap_fb() |
|---|
| 103 | { |
|---|
| 104 | return (void*)0x10361000; // 0x10360000 + 0x1000, see after "BmpDDev.c" in sub_FF960E00 |
|---|
| 105 | } |
|---|
| 106 | |
|---|
| 107 | /*********** |
|---|
| 108 | ROM:FFB19720 BL sub_FF8BF204 |
|---|
| 109 | ROM:FFB19724 LDR R2, =0x106571F0 |
|---|
| 110 | ROM:FFB19728 MOVL R3, 0x7E900 |
|---|
| 111 | ROM:FFB19730 MOV R1, R2 |
|---|
| 112 | ***********/ |
|---|
| 113 | |
|---|
| 114 | void *vid_get_viewport_fb() |
|---|
| 115 | { |
|---|
| 116 | return (void*)0x106571F0; // see after "VRAM Address : %p" in loc_FFB19720 |
|---|
| 117 | } |
|---|
| 118 | |
|---|
| 119 | /*********** |
|---|
| 120 | ROM:FF962874 LDR R1, =0x89818 |
|---|
| 121 | ROM:FF962878 ADD R3, R3, R3,LSL#2 |
|---|
| 122 | ***********/ |
|---|
| 123 | |
|---|
| 124 | void *vid_get_viewport_fb_d() |
|---|
| 125 | { |
|---|
| 126 | return (void*)(*(int*)0x89818); // see before "ImagePlayer.c" at loc_FF962874 |
|---|
| 127 | } |
|---|
| 128 | |
|---|
| 129 | long vid_get_bitmap_screen_width() |
|---|
| 130 | { |
|---|
| 131 | return 360; |
|---|
| 132 | } |
|---|
| 133 | |
|---|
| 134 | long vid_get_bitmap_screen_height() |
|---|
| 135 | { |
|---|
| 136 | return 240; |
|---|
| 137 | } |
|---|
| 138 | |
|---|
| 139 | long vid_get_viewport_height() |
|---|
| 140 | { |
|---|
| 141 | return ((mode_get()&MODE_MASK) == MODE_PLAY)?240:230; |
|---|
| 142 | } |
|---|
| 143 | |
|---|
| 144 | /***************** |
|---|
| 145 | ROM:FFAA77B4 a9999 DCB "9999",0 ; DATA XREF: ROM:off_FFAA7824o |
|---|
| 146 | ROM:FFAA77B9 DCB 0 |
|---|
| 147 | ROM:FFAA77BA DCB 0 |
|---|
| 148 | ROM:FFAA77BB DCB 0 |
|---|
| 149 | ROM:FFAA77BC aD_0 DCB "%d",0 ; DATA XREF: ROM:off_FFAA7828o |
|---|
| 150 | ROM:FFAA77BF DCB 0 |
|---|
| 151 | ROM:FFAA77C0 |
|---|
| 152 | ROM:FFAA77C0 ; =============== S U B R O U T I N E ======================================= |
|---|
| 153 | ROM:FFAA77C0 |
|---|
| 154 | ROM:FFAA77C0 |
|---|
| 155 | ROM:FFAA77C0 sub_FFAA77C0 ; CODE XREF: sub_FFAA79F0+D4p |
|---|
| 156 | ROM:FFAA77C0 MOV R3, #0x2700 |
|---|
| 157 | ROM:FFAA77C4 MOV R2, R0 |
|---|
| 158 | ROM:FFAA77C8 STMFD SP!, {R4,LR} |
|---|
| 159 | ROM:FFAA77CC ADD R3, R3, #0xE |
|---|
| 160 | ROM:FFAA77D0 LDR R4, =unk_96F80 |
|---|
| 161 | ROM:FFAA77D4 CMP R2, R3 |
|---|
| 162 | ROM:FFAA77D8 LDR R1, =a9999 |
|---|
| 163 | ROM:FFAA77DC MOV R0, R4 |
|---|
| 164 | ROM:FFAA77E0 BLS loc_FFAA77EC |
|---|
| 165 | *****************/ |
|---|
| 166 | |
|---|
| 167 | char *camera_jpeg_count_str() |
|---|
| 168 | { |
|---|
| 169 | return (char*)0x96F80; |
|---|
| 170 | } |
|---|
| 171 | |
|---|
| 172 | |
|---|
| 173 | long vid_get_bitmap_buffer_width() { return 360; } |
|---|
| 174 | |
|---|
| 175 | long vid_get_bitmap_buffer_height() { return 240; } |
|---|