This source file includes following definitions.
- hook_raw_image_addr
- hook_alt_raw_image_addr
- camera_jpeg_count_str
- vid_bitmap_refresh
- shutdown
- debug_led
- camera_set_led
- get_flash_params_count
- JogDial_CW
- JogDial_CCW
- vid_get_viewport_fb
- vid_get_viewport_live_fb
- vid_get_viewport_fb_d
- vid_get_bitmap_fb
- vid_get_viewport_width
- vid_get_viewport_display_xoffset
- vid_get_viewport_height
- vp_yoffset
- vid_get_viewport_yoffset
- vid_get_viewport_display_yoffset
- vid_get_viewport_display_xoffset_proper
- vid_get_viewport_height_proper
- vid_get_palette_type
- vid_get_palette_size
- vid_get_bitmap_active_buffer
- vid_get_bitmap_active_palette
- load_chdk_palette
1 #include "platform.h"
2 #include "platform_palette.h"
3 #include "lolevel.h"
4
5
6 extern int active_raw_buffer;
7 extern char* raw_buffers[];
8
9 char *hook_raw_image_addr()
10 {
11 return raw_buffers[active_raw_buffer*3];
12 }
13
14 char *hook_alt_raw_image_addr()
15 {
16 return raw_buffers[(active_raw_buffer^1)*3];
17 }
18
19
20 char *camera_jpeg_count_str()
21 {
22 extern char jpeg_count_str[];
23 return jpeg_count_str;
24 }
25
26
27 void vid_bitmap_refresh()
28 {
29 extern int full_screen_refresh;
30 extern void _ScreenUnlock();
31 extern void _ScreenLock();
32
33 full_screen_refresh |= 3;
34 _ScreenLock();
35 _ScreenUnlock();
36 }
37
38
39 void shutdown()
40 {
41 volatile long *p = (void*)0xC022001C;
42
43 asm(
44 "MRS R1, CPSR\n"
45 "AND R0, R1, #0x80\n"
46 "ORR R1, R1, #0x80\n"
47 "MSR CPSR_cf, R1\n"
48 :::"r1","r0");
49
50 *p = 0x44;
51
52 while(1);
53 }
54
55 #define LED_PR 0xC0220134
56
57
58 void debug_led(__attribute__ ((unused))int state)
59 {
60
61 }
62
63
64
65
66 void camera_set_led(int led, int state, __attribute__ ((unused))int bright) {
67 static char led_table[2]={3,9};
68 _LEDDrive(led_table[led%sizeof(led_table)], state<=1 ? !state : state);
69 }
70
71 int get_flash_params_count(void){
72 return 0x9a;
73 }
74
75 void JogDial_CW(void){
76 _PostLogicalEventForNotPowerType(0x86E, 1);
77 }
78
79 void JogDial_CCW(void){
80 _PostLogicalEventForNotPowerType(0x86F, 1);
81 }
82
83
84
85
86
87 extern char active_viewport_buffer;
88 extern void* viewport_buffers[];
89
90 void *vid_get_viewport_fb()
91 {
92
93 return viewport_buffers[0];
94 }
95
96 void *vid_get_viewport_live_fb()
97 {
98 if (camera_info.state.mode_video || (get_movie_status()==VIDEO_RECORD_IN_PROGRESS))
99 return viewport_buffers[0];
100
101
102 return viewport_buffers[(active_viewport_buffer-1)&3];
103 }
104
105 void *vid_get_viewport_fb_d()
106 {
107 extern char *viewport_fb_d;
108 return viewport_fb_d;
109 }
110
111
112 extern int active_bitmap_buffer;
113 extern char* bitmap_buffer[];
114
115 void *vid_get_bitmap_fb()
116 {
117
118 return bitmap_buffer[0];
119 }
120
121 int vid_get_viewport_width()
122 {
123 if (camera_info.state.mode_play)
124 {
125 return 360;
126 }
127 extern int _GetVRAMHPixelsSize();
128 return _GetVRAMHPixelsSize() >> 1;
129 }
130
131 int vid_get_viewport_display_xoffset()
132 {
133 if (camera_info.state.mode_play)
134 {
135 return 0;
136 }
137 else if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16908)
138 {
139 if (shooting_get_prop(PROPCASE_STITCH_DIRECTION) == 0)
140 if (shooting_get_prop(PROPCASE_STITCH_SEQUENCE) == 0)
141 return 40;
142 else
143 return 140;
144 else
145 if (shooting_get_prop(PROPCASE_STITCH_SEQUENCE) == 0)
146 return 140;
147 else
148 return 40;
149 }
150 else
151 {
152 return 0;
153 }
154 }
155
156 long vid_get_viewport_height()
157 {
158 if (camera_info.state.mode_play)
159 {
160 return 240;
161 }
162 extern int _GetVRAMVPixelsSize();
163 return _GetVRAMVPixelsSize();
164 }
165
166 static int vp_yoffset(int stitch)
167 {
168 if (camera_info.state.mode_play)
169 {
170 return 0;
171 }
172 else if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16908)
173 {
174 return stitch;
175 }
176 else if (camera_info.state.mode_video)
177 {
178 return 30;
179 }
180 else if (shooting_get_prop(PROPCASE_ASPECT_RATIO) == 1)
181 return 30;
182 return 0;
183 }
184
185 int vid_get_viewport_yoffset()
186 {
187 return vp_yoffset(0);
188 }
189
190 int vid_get_viewport_display_yoffset()
191 {
192 return vp_yoffset(72);
193 }
194
195
196
197 int vid_get_viewport_display_xoffset_proper() { return vid_get_viewport_display_xoffset() * 2; }
198 int vid_get_viewport_height_proper() { return vid_get_viewport_height(); }
199 int vid_get_palette_type() { return 3; }
200 int vid_get_palette_size() { return 256 * 4; }
201
202 void *vid_get_bitmap_active_buffer()
203 {
204 return bitmap_buffer[active_bitmap_buffer];
205 }
206
207 void *vid_get_bitmap_active_palette()
208 {
209 extern int active_palette_buffer;
210 extern char* palette_buffer[];
211 void* p = palette_buffer[active_palette_buffer];
212
213 if (p) p += 8;
214 return p;
215 }
216
217
218 void load_chdk_palette()
219 {
220 extern int active_palette_buffer;
221
222 if ((active_palette_buffer == 0) || (active_palette_buffer == 4) || (active_palette_buffer == 6))
223 {
224 int *pal = (int*)vid_get_bitmap_active_palette();
225 if (pal && pal[CHDK_COLOR_BASE+0] != 0x33ADF62)
226 {
227 pal[CHDK_COLOR_BASE+0] = 0x33ADF62;
228 pal[CHDK_COLOR_BASE+1] = 0x326EA40;
229 pal[CHDK_COLOR_BASE+2] = 0x34CD57F;
230 pal[CHDK_COLOR_BASE+3] = 0x373BFAE;
231 pal[CHDK_COLOR_BASE+4] = 0x34BD6CA;
232 pal[CHDK_COLOR_BASE+5] = 0x395AB95;
233 pal[CHDK_COLOR_BASE+6] = 0x34766F0;
234 pal[CHDK_COLOR_BASE+7] = 0x31250F3;
235 pal[CHDK_COLOR_BASE+8] = 0x37F408F;
236 pal[CHDK_COLOR_BASE+9] = 0x3512D5B;
237 pal[CHDK_COLOR_BASE+10] = 0x3A9A917;
238 pal[CHDK_COLOR_BASE+11] = 0x3819137;
239 pal[CHDK_COLOR_BASE+12] = 0x3DED115;
240 pal[CHDK_COLOR_BASE+13] = 0x0090000;
241
242 extern char palette_control;
243 palette_control = 1;
244 vid_bitmap_refresh();
245 }
246 }
247 }