~rabbits/uxn-playdate

eba9ba2cee5bd165bcc4730c3c20e2fd03d670cc — neauoire 5 months ago 84f94bb
Merged emu_start/emu_reset
1 files changed, 10 insertions(+), 24 deletions(-)

M src/main.c
M src/main.c => src/main.c +10 -24
@@ 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;