rockbox/apps/plugins/rockboy/main.c

98 lines
1.7 KiB
C
Raw Normal View History

#include <stdio.h>
#include <string.h>
#include "rockmacros.h"
#include "input.h"
#include "rc.h"
#include "exports.h"
#include "emu.h"
#include "loader.h"
#include "hw.h"
//#include "Version"
static char *defaultconfig[] =
{
"bind up +up",
"bind down +down",
"bind left +left",
"bind right +right",
"bind joy0 +b",
"bind joy1 +a",
"bind joy2 +select",
"bind joy3 +start",
"bind ins savestate",
"bind del loadstate",
NULL
};
void doevents()
{
event_t ev;
int st;
ev_poll();
while (ev_getevent(&ev))
{
if (ev.type != EV_PRESS && ev.type != EV_RELEASE)
continue;
st = (ev.type != EV_RELEASE);
pad_set(ev.code, st);
}
}
/* convenience macro for printing loading state */
#define PUTS(str) do { \
rb->lcd_putsxy(1, y, (unsigned char *)str); \
rb->lcd_getstringsize((unsigned char *)str, &w, &h); \
y += h + 1; \
} while (0)
int gnuboy_main(char *rom)
{
int i, w, h, y;
y = 1;
// Avoid initializing video if we don't have to
// If we have special perms, drop them ASAP!
PUTS("Init exports");
init_exports();
PUTS("Loading default config");
for (i = 0; defaultconfig[i]; i++)
rc_command(defaultconfig[i]);
// sprintf(cmd, "source %s", rom);
// s = strchr(cmd, '.');
// if (s) *s = 0;
// strcat(cmd, ".rc");
// rc_command(cmd);
// FIXME - make interface modules responsible for atexit()
PUTS("Init video");
vid_init();
PUTS("Init sound");
pcm_init();
PUTS("Loading rom");
loader_init(rom);
if(shut)
return PLUGIN_ERROR;
PUTS("Emu reset");
emu_reset();
PUTS("Emu run");
#if (LCD_HEIGHT > 144) || (LCD_WIDTH > 160)
rb->lcd_clear_display();
rb->lcd_drawrect((LCD_WIDTH-160)/2-1, (LCD_HEIGHT-144)/2-1, 162, 146);
rb->lcd_update();
#endif
emu_run();
// never reached
return PLUGIN_OK;
}
#undef PUTS