summaryrefslogtreecommitdiff
path: root/apps/plugins/rockboy/sys_rockbox.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/rockboy/sys_rockbox.c')
-rw-r--r--apps/plugins/rockboy/sys_rockbox.c101
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
28int frameskip;
29
30rcvar_t joy_exports[] = 28rcvar_t joy_exports[] =
31{ 29{
32 RCV_END 30 RCV_END
@@ -43,7 +41,7 @@ extern int debug_trace;
43 41
44void vid_settitle(char *title) 42void vid_settitle(char *title)
45{ 43{
46 rb->splash(HZ*2, true, title); 44 rb->splash(HZ/2, true, title);
47} 45}
48 46
49void joy_init(void) 47void 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
87unsigned int oldbuttonstate = 0, newbuttonstate,holdbutton; 55unsigned int oldbuttonstate = 0, newbuttonstate,holdbutton;
88 56
89int released, pressed; 57int 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
160void vid_begin(void) // This frameskip code is borrowed from the GNUboyCE project 128inline 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
167void vid_init(void) 141void 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
196fb_data *frameb; 171fb_data *frameb;
197void vid_update(int scanline) 172void 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
303void vid_end(void) 273void vid_end(void)
304{ 274{
@@ -307,19 +277,30 @@ void vid_end(void)
307long timerresult; 277long timerresult;
308 278
309void *sys_timer(void) 279void *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
316int sys_elapsed(long *oldtick) 287int 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
321void sys_sleep(int us) 299void 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}