summaryrefslogtreecommitdiff
path: root/apps/plugins/rockboy/rockboy.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/rockboy/rockboy.c')
-rw-r--r--apps/plugins/rockboy/rockboy.c54
1 files changed, 46 insertions, 8 deletions
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c
index a72a3a9e32..1cf4b7134b 100644
--- a/apps/plugins/rockboy/rockboy.c
+++ b/apps/plugins/rockboy/rockboy.c
@@ -19,6 +19,10 @@
19#include "plugin.h" 19#include "plugin.h"
20#include "loader.h" 20#include "loader.h"
21#include "rockmacros.h" 21#include "rockmacros.h"
22#include "input.h"
23#include "emu.h"
24#include "hw.h"
25#include "pcm.h"
22 26
23PLUGIN_HEADER 27PLUGIN_HEADER
24PLUGIN_IRAM_DECLARE 28PLUGIN_IRAM_DECLARE
@@ -29,8 +33,6 @@ PLUGIN_IRAM_DECLARE
29struct plugin_api* rb; 33struct plugin_api* rb;
30int shut,cleanshut; 34int shut,cleanshut;
31char *errormsg; 35char *errormsg;
32int gnuboy_main(char *rom);
33void pcm_close(void);
34 36
35#define optionname "options" 37#define optionname "options"
36 38
@@ -65,7 +67,7 @@ void* memcpy(void* dst, const void* src, size_t size)
65 return rb->memcpy(dst, src, size); 67 return rb->memcpy(dst, src, size);
66} 68}
67 69
68void setoptions (void) 70static void setoptions (void)
69{ 71{
70 int fd; 72 int fd;
71 DIR* dir; 73 DIR* dir;
@@ -85,7 +87,7 @@ void setoptions (void)
85 options.LEFT=BUTTON_LEFT; 87 options.LEFT=BUTTON_LEFT;
86 options.RIGHT=BUTTON_RIGHT; 88 options.RIGHT=BUTTON_RIGHT;
87 89
88#if (CONFIG_KEYPAD == IRIVER_H100_PAD) 90#if CONFIG_KEYPAD == IRIVER_H100_PAD
89 options.UP=BUTTON_UP; 91 options.UP=BUTTON_UP;
90 options.DOWN=BUTTON_DOWN; 92 options.DOWN=BUTTON_DOWN;
91 93
@@ -95,7 +97,7 @@ void setoptions (void)
95 options.SELECT=BUTTON_SELECT; 97 options.SELECT=BUTTON_SELECT;
96 options.MENU=BUTTON_MODE; 98 options.MENU=BUTTON_MODE;
97 99
98#elif (CONFIG_KEYPAD == IRIVER_H300_PAD) 100#elif CONFIG_KEYPAD == IRIVER_H300_PAD
99 options.UP=BUTTON_UP; 101 options.UP=BUTTON_UP;
100 options.DOWN=BUTTON_DOWN; 102 options.DOWN=BUTTON_DOWN;
101 103
@@ -190,9 +192,9 @@ void setoptions (void)
190 options.fps=0; 192 options.fps=0;
191 options.showstats=0; 193 options.showstats=0;
192#if (LCD_WIDTH>=160) && (LCD_HEIGHT>=144) 194#if (LCD_WIDTH>=160) && (LCD_HEIGHT>=144)
193 options.fullscreen=0; 195 options.scaling=0;
194#else 196#else
195 options.fullscreen=1; 197 options.scaling=1;
196#endif 198#endif
197 options.sound=1; 199 options.sound=1;
198 options.pal=0; 200 options.pal=0;
@@ -203,7 +205,7 @@ void setoptions (void)
203 close(fd); 205 close(fd);
204} 206}
205 207
206void savesettings(void) 208static void savesettings(void)
207{ 209{
208 int fd; 210 int fd;
209 char optionsave[sizeof(savedir)+sizeof(optionname)]; 211 char optionsave[sizeof(savedir)+sizeof(optionname)];
@@ -218,6 +220,42 @@ void savesettings(void)
218 } 220 }
219} 221}
220 222
223void doevents(void)
224{
225 event_t ev;
226 int st;
227
228 ev_poll();
229 while (ev_getevent(&ev))
230 {
231 if (ev.type != EV_PRESS && ev.type != EV_RELEASE)
232 continue;
233 st = (ev.type != EV_RELEASE);
234 pad_set(ev.code, st);
235 }
236}
237
238static int gnuboy_main(char *rom)
239{
240 rb->lcd_puts(0,0,"Init video");
241 vid_init();
242 rb->lcd_puts(0,1,"Init sound");
243 pcm_init();
244 rb->lcd_puts(0,2,"Loading rom");
245 loader_init(rom);
246 if(shut)
247 return PLUGIN_ERROR;
248 rb->lcd_puts(0,3,"Emu reset");
249 emu_reset();
250 rb->lcd_puts(0,4,"Emu run");
251 rb->lcd_clear_display();
252 rb->lcd_update();
253 emu_run();
254
255 /* never reached */
256 return PLUGIN_OK;
257}
258
221/* this is the plugin entry point */ 259/* this is the plugin entry point */
222enum plugin_status plugin_start(struct plugin_api* api, void* parameter) 260enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
223{ 261{