state("fceux")
{
	byte status: 		0x003B1388, 0x5F;
	byte level: 		0x003B1388, 0x34;
	byte end_of_level: 	0x003B1388, 0x8b;
	byte timer: 		0x003B1388, 0x44;
}

state("nestopia")
{
    	// base 0x0000 address of ROM : "nestopia.exe", 0x1b2bcc, 0, 8, 0xc, 0xc, 0x68;
	byte status: 		"nestopia.exe", 0x1b2bcc, 0, 8, 0xc, 0xc, 0xc7; // 0x5F;
	byte level: 		"nestopia.exe", 0x1b2bcc, 0, 8, 0xc, 0xc, 0x9c; // 0x34;
	byte end_of_level: 	"nestopia.exe", 0x1b2bcc, 0, 8, 0xc, 0xc, 0xf3; // 0x8b;
	byte timer: 		"nestopia.exe", 0x1b2bcc, 0, 8, 0xc, 0xc, 0xac; // 0x44;
}
split
{
	// split on goal line
	if(settings["opt_split"] && current.level < 5 && current.level != old.level)
	   return(true);
	else if(settings["opt_split"] && current.level == 5 && old.level == 4)
	   return(true);
	// on load level except for ultimate which is on goal line crossed
	else if(settings["opt_split"] && current.level == 5 && current.end_of_level == 0 && current.end_of_level != old.end_of_level)
		return(true);
	// if runner wants splits on goal line
	else if(!settings["opt_split"] && current.end_of_level == 0 && current.end_of_level != old.end_of_level) 
		return(true);
	else
	   return(false);
}

start
{ 
	return(current.level == 0 && old.end_of_level != current.end_of_level && current.end_of_level == 1);
}

reset
{
	//	1) reload nes or savestate to menu
	if(current.timer == 0 && current.level == 0 && current.end_of_level == 0 && current.status != 255)
		return(true);
	//	2) load a previous level
	else if(current.level < old.level)
		return(true);
	//	3) skip a level
	else if(current.level > (old.level + 1))
		return(true);
	//	4) time up!
	else if(current.end_of_level == 0 && current.status == 255 && current.timer == 0)	
		return(true);
	else
		return(false);
}

startup
{
	refreshRate = 70;
	
	settings.Add("main", false, "Marble Madness AutoSplitter 0.14");
	settings.Add("main3", false, "--https://github.com/saturnin55/MarbleMadnessAutoSplitter", "main");
	settings.Add("main2", false, "--Don't forget to set 'Start Timer at' to '-6.606' in 'Edit Splits...'", "main");
	settings.Add("main1", false, "--Supports FCEUX and Nestopia emulators", "main");
	settings.Add("options", true, "Options");
	settings.Add("opt_split", true, "Split at level load (checked) or at goal line (unchecked)", "options");
}