This source file includes following definitions.
- shutdown
- debug_led
- camera_set_led
- vid_get_viewport_width
- vid_get_viewport_height
- vid_bitmap_refresh
- vid_get_bitmap_active_palette
- load_chdk_palette
- vid_get_palette_type
- vid_get_palette_size
- vid_get_bitmap_active_buffer
- _MakeAFScan
- state_check_for_movie_af
1 #include "platform.h"
2 #include "platform_palette.h"
3 #include "lolevel.h"
4
5 #define LED_PR 0xC0220120
6
7 void shutdown()
8 {
9 volatile long *p = (void*)LED_PR;
10
11 asm(
12 "MRS R1, CPSR\n"
13 "AND R0, R1, #0x80\n"
14 "ORR R1, R1, #0x80\n"
15 "MSR CPSR_cf, R1\n"
16 :::"r1","r0");
17
18 *p = 0x44;
19
20 while(1);
21 }
22
23 void debug_led(int state)
24 {
25
26
27 *(int*)LED_PR=state ? 0x46 : 0x44;
28 }
29
30
31
32
33
34
35
36
37
38
39 void camera_set_led(int led, int state, __attribute__ ((unused))int bright) {
40 static char led_table[2]={0,4};
41 _LEDDrive(led_table[led%sizeof(led_table)], state<=1 ? !state : state);
42 }
43
44 int vid_get_viewport_width()
45 {
46 return 360;
47 }
48
49 long vid_get_viewport_height()
50 {
51 return 240;
52 }
53
54 void vid_bitmap_refresh() {
55
56 extern int full_screen_refresh;
57 extern void _ScreenLock();
58 extern void _ScreenUnlock();
59
60 full_screen_refresh |= 3;
61 _ScreenLock();
62 _ScreenUnlock();
63 }
64
65 void *vid_get_bitmap_active_palette() {
66 extern int active_palette_buffer;
67 extern char* palette_buffer[];
68 return (palette_buffer[active_palette_buffer]+4);
69 }
70
71 #ifdef CAM_LOAD_CUSTOM_COLORS
72
73
74 void load_chdk_palette() {
75
76 extern int active_palette_buffer;
77
78 if ((active_palette_buffer == 0) || (active_palette_buffer == 5))
79 {
80 int *pal = (int*)vid_get_bitmap_active_palette();
81 if (pal[CHDK_COLOR_BASE+0] != 0x33ADF62)
82 {
83 pal[CHDK_COLOR_BASE+0] = 0x33ADF62;
84 pal[CHDK_COLOR_BASE+1] = 0x326EA40;
85 pal[CHDK_COLOR_BASE+2] = 0x34CD57F;
86 pal[CHDK_COLOR_BASE+3] = 0x373BFAE;
87 pal[CHDK_COLOR_BASE+4] = 0x34BD6CA;
88 pal[CHDK_COLOR_BASE+5] = 0x395AB95;
89 pal[CHDK_COLOR_BASE+6] = 0x34766F0;
90 pal[CHDK_COLOR_BASE+7] = 0x31250F3;
91 pal[CHDK_COLOR_BASE+8] = 0x37F408F;
92 pal[CHDK_COLOR_BASE+9] = 0x3512D5B;
93 pal[CHDK_COLOR_BASE+10] = 0x3A9A917;
94 pal[CHDK_COLOR_BASE+11] = 0x3819137;
95 pal[CHDK_COLOR_BASE+12] = 0x3DED115;
96 pal[CHDK_COLOR_BASE+13] = 0x0090000;
97
98 extern char palette_control;
99 palette_control = 1;
100 vid_bitmap_refresh();
101 }
102 }
103 }
104 #endif
105
106
107
108 int vid_get_palette_type() { return 3; }
109 int vid_get_palette_size() { return 256 * 4; }
110
111 void *vid_get_bitmap_active_buffer()
112 {
113 return (void*)(*(int*)(0x5400+0x18));
114 }
115
116
117
118 static int af_locked_in_movierec = 0;
119
120 void _MakeAFScan(__attribute__ ((unused))int *a, __attribute__ ((unused))int b) {
121 _DoAFLock();
122 af_locked_in_movierec = 1;
123 }
124
125 void state_check_for_movie_af() {
126 if ((get_movie_status() != VIDEO_RECORD_IN_PROGRESS) && af_locked_in_movierec) {
127 af_locked_in_movierec = 0;
128 _UnlockAF();
129 }
130 }