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