@@ 178,41 178,24 @@ emu_deo(Uxn *u, Uint8 addr, Uint8 v)
}
static int
-emu_start(void)
+emu_start(Uxn*u, char *filename)
{
- if(!uxn_boot(&u, (Uint8 *)calloc(0x10300, sizeof(Uint8)), emu_dei, emu_deo))
+ free(u->ram);
+ if(!uxn_boot(u, (Uint8 *)calloc(0x10300, sizeof(Uint8)), emu_dei, emu_deo))
return emu_error("Boot", "Failed");
if(!emu_load(rom))
return emu_error("Load", "Failed");
- memset(&ppu, 0, sizeof(ppu));
- if(!ppu_init(&ppu, (uint32_t *)pd->graphics->getFrame()))
- return 0;
- if(!uxn_eval(&u, PAGE_PROGRAM))
+ if(!uxn_eval(u, PAGE_PROGRAM))
return emu_error("Boot", "Failed to start rom.");
return 1;
}
/* Lua */
-
-static int
-reset(Uxn *u, char *filepath)
-{
- free(u->ram);
- if(!uxn_boot(u, (Uint8 *)calloc(0x10300, sizeof(Uint8)), emu_dei, emu_deo))
- return emu_error("Boot", "Failed");
- memset(&ppu, 0, sizeof(ppu));
- /* memset(&apu, 0, sizeof(apu)); */
- if(!emu_load(rom))
- return 0;
- uxn_eval(u, PAGE_PROGRAM);
- return 1;
-}
-
static int
menu_reset(lua_State *L)
{
- if(!reset(&u, BOOT_ROM_FILENAME))
+ if(!emu_start(&u, BOOT_ROM_FILENAME))
pd->system->error("Failed to reset Uxn.");
return 0;
}
@@ 292,8 275,11 @@ eventHandler(PlaydateAPI *playdate, PDSystemEvent event, uint32_t arg)
pd = playdate;
pd->display->setRefreshRate(60);
pd->graphics->clear(kColorBlack);
- if(!emu_start())
- emu_error("Varvara", "Start failed.");
+ memset(&ppu, 0, sizeof(ppu));
+ if(!ppu_init(&ppu, (uint32_t *)pd->graphics->getFrame()))
+ return emu_error("Screen", "Start failed.");
+ if(!emu_start(&u, BOOT_ROM_FILENAME))
+ return emu_error("Emulator", "Start failed.");
} else if(event == kEventInitLua) {
const char *err;
int i;