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