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