diff options
Diffstat (limited to 'apps/plugins/rockboy/sys_rockbox.c')
-rw-r--r-- | apps/plugins/rockboy/sys_rockbox.c | 101 |
1 files changed, 41 insertions, 60 deletions
diff --git a/apps/plugins/rockboy/sys_rockbox.c b/apps/plugins/rockboy/sys_rockbox.c index 53fe19b199..578a864ca0 100644 --- a/apps/plugins/rockboy/sys_rockbox.c +++ b/apps/plugins/rockboy/sys_rockbox.c | |||
@@ -25,8 +25,6 @@ | |||
25 | #include "hw.h" | 25 | #include "hw.h" |
26 | #include "config.h" | 26 | #include "config.h" |
27 | 27 | ||
28 | int frameskip; | ||
29 | |||
30 | rcvar_t joy_exports[] = | 28 | rcvar_t joy_exports[] = |
31 | { | 29 | { |
32 | RCV_END | 30 | RCV_END |
@@ -43,7 +41,7 @@ extern int debug_trace; | |||
43 | 41 | ||
44 | void vid_settitle(char *title) | 42 | void vid_settitle(char *title) |
45 | { | 43 | { |
46 | rb->splash(HZ*2, true, title); | 44 | rb->splash(HZ/2, true, title); |
47 | } | 45 | } |
48 | 46 | ||
49 | void joy_init(void) | 47 | void joy_init(void) |
@@ -54,36 +52,6 @@ void joy_close(void) | |||
54 | { | 52 | { |
55 | } | 53 | } |
56 | 54 | ||
57 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) | ||
58 | #define ROCKBOY_PAD_A BUTTON_ON | ||
59 | #define ROCKBOY_PAD_B BUTTON_OFF | ||
60 | #define ROCKBOY_PAD_START BUTTON_REC | ||
61 | #define ROCKBOY_PAD_SELECT BUTTON_SELECT | ||
62 | #define ROCKBOY_MENU BUTTON_MODE | ||
63 | |||
64 | #elif (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
65 | #define ROCKBOY_PAD_A BUTTON_REC | ||
66 | #define ROCKBOY_PAD_B BUTTON_MODE | ||
67 | #define ROCKBOY_PAD_START BUTTON_ON | ||
68 | #define ROCKBOY_PAD_SELECT BUTTON_SELECT | ||
69 | #define ROCKBOY_MENU BUTTON_OFF | ||
70 | |||
71 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
72 | #define ROCKBOY_PAD_A BUTTON_F1 | ||
73 | #define ROCKBOY_PAD_B BUTTON_F2 | ||
74 | #define ROCKBOY_PAD_START BUTTON_F3 | ||
75 | #define ROCKBOY_PAD_SELECT BUTTON_PLAY | ||
76 | #define ROCKBOY_MENU BUTTON_OFF | ||
77 | |||
78 | #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD | ||
79 | #define ROCKBOY_PAD_A BUTTON_PLAY | ||
80 | #define ROCKBOY_PAD_B BUTTON_EQ | ||
81 | #define ROCKBOY_PAD_START BUTTON_MODE | ||
82 | #define ROCKBOY_PAD_SELECT (BUTTON_SELECT | BUTTON_REL) | ||
83 | #define ROCKBOY_MENU (BUTTON_SELECT | BUTTON_REPEAT) | ||
84 | |||
85 | #endif | ||
86 | |||
87 | unsigned int oldbuttonstate = 0, newbuttonstate,holdbutton; | 55 | unsigned int oldbuttonstate = 0, newbuttonstate,holdbutton; |
88 | 56 | ||
89 | int released, pressed; | 57 | int released, pressed; |
@@ -109,13 +77,13 @@ void ev_poll(void) | |||
109 | if(released & BUTTON_RIGHT) {ev.code=PAD_RIGHT; ev_postevent(&ev);} | 77 | if(released & BUTTON_RIGHT) {ev.code=PAD_RIGHT; ev_postevent(&ev);} |
110 | if(released & BUTTON_DOWN) { ev.code=PAD_DOWN; ev_postevent(&ev); } | 78 | if(released & BUTTON_DOWN) { ev.code=PAD_DOWN; ev_postevent(&ev); } |
111 | if(released & BUTTON_UP) { ev.code=PAD_UP; ev_postevent(&ev); } | 79 | if(released & BUTTON_UP) { ev.code=PAD_UP; ev_postevent(&ev); } |
112 | if(released & ROCKBOY_PAD_A) { ev.code=PAD_A; ev_postevent(&ev); } | 80 | if(released & options.A) { ev.code=PAD_A; ev_postevent(&ev); } |
113 | if(released & ROCKBOY_PAD_B) { ev.code=PAD_B; ev_postevent(&ev); } | 81 | if(released & options.B) { ev.code=PAD_B; ev_postevent(&ev); } |
114 | if(released & ROCKBOY_PAD_START) { | 82 | if(released & options.START) { |
115 | ev.code=PAD_START; | 83 | ev.code=PAD_START; |
116 | ev_postevent(&ev); | 84 | ev_postevent(&ev); |
117 | } | 85 | } |
118 | if(released & ROCKBOY_PAD_SELECT) { | 86 | if(released & options.SELECT) { |
119 | ev.code=PAD_SELECT; | 87 | ev.code=PAD_SELECT; |
120 | ev_postevent(&ev); | 88 | ev_postevent(&ev); |
121 | } | 89 | } |
@@ -126,17 +94,17 @@ void ev_poll(void) | |||
126 | if(pressed & BUTTON_RIGHT) { ev.code=PAD_RIGHT; ev_postevent(&ev);} | 94 | if(pressed & BUTTON_RIGHT) { ev.code=PAD_RIGHT; ev_postevent(&ev);} |
127 | if(pressed & BUTTON_DOWN) { ev.code=PAD_DOWN; ev_postevent(&ev); } | 95 | if(pressed & BUTTON_DOWN) { ev.code=PAD_DOWN; ev_postevent(&ev); } |
128 | if(pressed & BUTTON_UP) { ev.code=PAD_UP; ev_postevent(&ev); } | 96 | if(pressed & BUTTON_UP) { ev.code=PAD_UP; ev_postevent(&ev); } |
129 | if(pressed & ROCKBOY_PAD_A) { ev.code=PAD_A; ev_postevent(&ev); } | 97 | if(pressed & options.A) { ev.code=PAD_A; ev_postevent(&ev); } |
130 | if(pressed & ROCKBOY_PAD_B) { ev.code=PAD_B; ev_postevent(&ev); } | 98 | if(pressed & options.B) { ev.code=PAD_B; ev_postevent(&ev); } |
131 | if(pressed & ROCKBOY_PAD_START) { | 99 | if(pressed & options.START) { |
132 | ev.code=PAD_START; | 100 | ev.code=PAD_START; |
133 | ev_postevent(&ev); | 101 | ev_postevent(&ev); |
134 | } | 102 | } |
135 | if(pressed & ROCKBOY_PAD_SELECT) { | 103 | if(pressed & options.SELECT) { |
136 | ev.code=PAD_SELECT; | 104 | ev.code=PAD_SELECT; |
137 | ev_postevent(&ev); | 105 | ev_postevent(&ev); |
138 | } | 106 | } |
139 | if(pressed & ROCKBOY_MENU) { | 107 | if(pressed & options.MENU) { |
140 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) | 108 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) |
141 | if (do_user_menu() == USER_MENU_QUIT) | 109 | if (do_user_menu() == USER_MENU_QUIT) |
142 | #endif | 110 | #endif |
@@ -157,11 +125,17 @@ void vid_setpal(int i, int r, int g, int b) | |||
157 | (void)b; | 125 | (void)b; |
158 | } | 126 | } |
159 | 127 | ||
160 | void vid_begin(void) // This frameskip code is borrowed from the GNUboyCE project | 128 | inline void vid_begin(void) // New frameskip, makes more sense to me and performs as well |
161 | { | 129 | { |
162 | static int skip = 0; | 130 | static int skip = 0; |
163 | skip = (skip + 1) % (frameskip > 0 ? frameskip + 1 : 1); | 131 | if (skip<options.frameskip) { |
164 | fb.enabled = skip == 0; | 132 | skip++; |
133 | fb.enabled=0; | ||
134 | } | ||
135 | else { | ||
136 | skip=0; | ||
137 | fb.enabled=1; | ||
138 | } | ||
165 | } | 139 | } |
166 | 140 | ||
167 | void vid_init(void) | 141 | void vid_init(void) |
@@ -173,7 +147,7 @@ void vid_init(void) | |||
173 | fb.dirty=0; | 147 | fb.dirty=0; |
174 | fb.mode=3; | 148 | fb.mode=3; |
175 | 149 | ||
176 | frameskip=2; | 150 | fb.ptr=rb->lcd_framebuffer; |
177 | 151 | ||
178 | #if defined(HAVE_LCD_COLOR) | 152 | #if defined(HAVE_LCD_COLOR) |
179 | fb.pelsize=2; // 16 bit framebuffer | 153 | fb.pelsize=2; // 16 bit framebuffer |
@@ -193,13 +167,12 @@ void vid_init(void) | |||
193 | #endif | 167 | #endif |
194 | } | 168 | } |
195 | 169 | ||
170 | #if LCD_HEIGHT<144 | ||
196 | fb_data *frameb; | 171 | fb_data *frameb; |
197 | void vid_update(int scanline) | 172 | void vid_update(int scanline) |
198 | { | 173 | { |
199 | register int cnt=0; | 174 | register int cnt=0; |
200 | #if LCD_HEIGHT < 144 | ||
201 | int scanline_remapped; | 175 | int scanline_remapped; |
202 | #endif | ||
203 | #if (LCD_HEIGHT == 64) && (LCD_DEPTH == 1) /* Archos */ | 176 | #if (LCD_HEIGHT == 64) && (LCD_DEPTH == 1) /* Archos */ |
204 | int balance = 0; | 177 | int balance = 0; |
205 | if (fb.mode==1) | 178 | if (fb.mode==1) |
@@ -292,13 +265,10 @@ void vid_update(int scanline) | |||
292 | } | 265 | } |
293 | rb->lcd_update_rect(0, scanline & ~3, LCD_WIDTH, 4); | 266 | rb->lcd_update_rect(0, scanline & ~3, LCD_WIDTH, 4); |
294 | #elif (LCD_HEIGHT >= 144) && defined(HAVE_LCD_COLOR) /* iriver H3x0, colour iPod */ | 267 | #elif (LCD_HEIGHT >= 144) && defined(HAVE_LCD_COLOR) /* iriver H3x0, colour iPod */ |
295 | frameb = rb->lcd_framebuffer + (scanline + (LCD_HEIGHT-144)/2) * LCD_WIDTH + (LCD_WIDTH-160)/2;; | 268 | // handled in lcd.c now |
296 | while (cnt < 160) | ||
297 | *frameb++ = scan.pal2[scan.buf[cnt++]]; | ||
298 | if(scanline==143) | ||
299 | rb->lcd_update(); // this seems faster then doing individual scanlines | ||
300 | #endif /* LCD_HEIGHT */ | 269 | #endif /* LCD_HEIGHT */ |
301 | } | 270 | } |
271 | #endif | ||
302 | 272 | ||
303 | void vid_end(void) | 273 | void vid_end(void) |
304 | { | 274 | { |
@@ -307,19 +277,30 @@ void vid_end(void) | |||
307 | long timerresult; | 277 | long timerresult; |
308 | 278 | ||
309 | void *sys_timer(void) | 279 | void *sys_timer(void) |
310 | { | 280 | {/* |
311 | timerresult=*rb->current_tick; | 281 | timerresult=*rb->current_tick; |
312 | return &timerresult; | 282 | return &timerresult;*/ |
283 | return 0; | ||
313 | } | 284 | } |
314 | 285 | ||
315 | // returns microseconds passed since sys_timer | 286 | // returns microseconds passed since sys_timer |
316 | int sys_elapsed(long *oldtick) | 287 | int sys_elapsed(long *oldtick) |
317 | { | 288 | { |
318 | return ((*rb->current_tick-(*oldtick))*1000000)/HZ; | 289 | /* |
290 | int elap,mytime=microtick; | ||
291 | |||
292 | elap=mytime-*oldtick; | ||
293 | *oldtick=mytime; | ||
294 | return elap;*/ | ||
295 | // return ((*rb->current_tick-(*oldtick))*1000000)/HZ; | ||
296 | return *oldtick; | ||
319 | } | 297 | } |
320 | 298 | ||
321 | void sys_sleep(int us) | 299 | void sys_sleep(int us) |
322 | { | 300 | { |
323 | if (us <= 0) return; | 301 | if(us<=0) return; |
324 | // rb->sleep(HZ*us/1000000); | 302 | int i=0; |
303 | while(i< us*11) | ||
304 | i++; | ||
305 | // if (us <= 0) return; | ||
325 | } | 306 | } |