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