// Author: Uberteg.  I got the o2 heater disable from falcon GSR.
// Andrew Shinn added some shit, so did ndogg, zer0daze and Civic TSI
num hKnock	= -1;
num hVTEC	= -1;
num hVVSS	= -1;
num hVECT	= -1;
num hPASN	= -1;
num hELDD	= -1;
num hHeater	= -1;
num hRemoveSpeed= -1;
num hInjector   = -1;
num hClosedloop   = -1;
num hVTP	= -1;

num hmap00;
num hmap01;
num hmap02;
num hmap03;
num hmap04;
num hmap05;
num hmap06;
num hmap07;
num hmap08;
num hmap09;
num hmap10;
num hmap11;
num hmap12;
num hmap13;
num hmap14;

void open()
{
	num x = 10;
	num y = 10;

	CreateBorder(x, y, 685, 85, 6, 0, "Misc");
	CreateStatic(x+5, y-5, 100, 20, 6, 0, "Misc Options");
	
	x = x + 20;
	y = y + 20;

	hKnock = CreateCheck(x, y, 150, 20, 6, 0, "Knock Sensor");
	if(readbyte(0x5467))
		setitem(hKnock, 1);
	else
		setitem(hKnock, 0);

	y = y + 20;
	hVTEC = CreateCheck(x, y, 150, 20, 6, 0, "VTEC");
	if(readbyte(0x5466))	
		setitem(hVTEC, 1);
	else
		setitem(hVTEC, 0);

	y = y + 20;
	hVVSS = CreateCheck(x, y, 150, 20, 6, 0, "VTEC < 20MPH");
	if(readbyte(0x547D))	
		setitem(hVVSS, 1);
	else
		setitem(hVVSS, 0);

	y = y + -40;
	hVECT = CreateCheck(x+170, y, 150, 20, 6, 0, "VTEC Coolant Check");
	if(readbyte(0x120E) == 0x44)
		setitem(hVECT, 1);
	else
		setitem(hVECT, 0);

	y = y + 20;
	hPASN = CreateCheck(x+170, y, 150, 20, 6, 0, "PA Sensor");
	if(readbyte(0x5469))
		setitem(hPASN, 1);
	else
		setitem(hPASN, 0);

	y = y + 20;
	hELDD = CreateCheck(x+170, y, 150, 20, 6, 0, "ELD");
	if(readbyte(0x5471))
		setitem(hELDD, 0);
	else
		setitem(hELDD, 1);

	y = y + -40;
	hHeater = CreateCheck(x+340, y, 150, 20, 6, 0, "O2 Heater Disable");
	if(readbyte(0x2315) == 0x03)
		setitem(hHeater, 1);
	else
		setitem(hHeater, 0);

	y = y + 20;
	hRemoveSpeed = CreateCheck(x+340, y, 150, 20, 6, 0, "Remove Speed Limiter");
	if(readbyte(0x18A5))	
		setitem(hRemoveSpeed, 0);
	else
		setitem(hRemoveSpeed, 1);

	y = y + 20;
	hInjector = CreateCheck(x+340, y, 150, 20, 6, 0, "Injector Test Disable");
	if(readbyte(0x0630) == 0x03)	
		setitem(hInjector, 1);
	else
		setitem(hInjector, 0);

	y = y + -40;
	hClosedLoop = CreateCheck(x+510, y, 150, 20, 6, 0, "Closed Loop Disable");
	if(readbyte(0x547E))
		setitem(hClosedLoop, 1);
	else
		setitem(hClosedLoop, 0);

	y = y + 20;
	hVTP = CreateCheck(x+510, y, 150, 20, 6, 0, "VTP Disable");
	if(readbyte(0x3BE1) == 0x03)	
		setitem(hVTP, 1);
	else
		setitem(hVTP, 0);
}

void save()
{
	if(getitem(hKnock))	
		writebyte(0x5467, 0xFF);
	else
		writebyte(0x5467, 0x00);

	if(getitem(hVTEC))	
		writebyte(0x5466, 0xFF);
	else
		writebyte(0x5466, 0x00);
	
	if(getitem(hVVSS))	
		writebyte(0x547D, 0xFF);
	else
		writebyte(0x547D, 0x00);
	
	if(getitem(hVECT))	
		writebyte(0x120E, 0x44);
	else
		writebyte(0x120E, 0xFF);

	if(getitem(hPASN))
		writebyte(0x5469, 0xFF);
	else
		writebyte(0x5469, 0x00);

	if(getitem(hELDD))	
		writebyte(0x5471, 0x00);
	else
		writebyte(0x5471, 0xFF);

	if(getitem(hHeater))
	{
		writebyte(0x2315, 0x03);
		writebyte(0x2316, 0x50);
		writebyte(0x2317, 0x23);
	}
	else
	{
		writebyte(0x2315, 0xF4);
		writebyte(0x2316, 0xBC);
		writebyte(0x2317, 0xCE);
	}

	if(getitem(hRemoveSpeed))
	{	writebyte(0x18A5, 0x00);
		writebyte(0x18A6, 0x00);
	}
	else
	{
		writebyte(0x18A5, 0xCD);
		writebyte(0x18A6, 0x0A);
	}

	if(getitem(hInjector))
	{
		writebyte(0x0630, 0x03);
		writeword(0x0631, 0x063D);
		writebyte(0x1520, 0x03);
		writeword(0x1521, 0x153A);
	}
	else
	{
		writebyte(0x0630, 0xC4);
		writebyte(0x0631, 0x2A);
		writebyte(0x0632, 0x08);
		writebyte(0x1520, 0x30);
		writebyte(0x1521, 0xFC);
		writebyte(0x1522, 0x32);
	}
	
	if(getitem(hClosedLoop))
	{
		writebyte(0x0BD5, 0x00);
		writebyte(0x0DC0, 0x00);
		writebyte(0x1645, 0xFF);
		writebyte(0x164A, 0xFD);
		writebyte(0x1653, 0x77);
		writebyte(0x1654, 0x02);
		writebyte(0x1655, 0x00);
		writebyte(0x1659, 0x77);
		writebyte(0x165A, 0x00);
		writebyte(0x165B, 0x00);
		writebyte(0x165C, 0x00);
		writebyte(0x165D, 0x00);
		writebyte(0x165E, 0x00);
		writebyte(0x3F90, 0x00);
		writebyte(0x44E8, 0x00);
		writebyte(0x547E, 0xFF);
	}
	else
	{
		writebyte(0x0BD5, 0x54);
		writebyte(0x0DC0, 0x34);
		writebyte(0x1645, 0x17);
		writebyte(0x164A, 0x14);
		writebyte(0x1653, 0x60);
		writebyte(0x1654, 0x32);
		writebyte(0x1655, 0x56);
		writebyte(0x1659, 0x60);
		writebyte(0x165A, 0x3E);
		writebyte(0x165B, 0x56);
		writebyte(0x165C, 0x32);
		writebyte(0x165D, 0x0C);
		writebyte(0x165E, 0x4D);
		writebyte(0x3F90, 0x44);
		writebyte(0x44E8, 0xC5);
		writebyte(0x547E, 0x00);
	}

if(getitem(hVTP))
	{
		writebyte(0x3BE1, 0x03);
		writeword(0x3BE2, 0x3BFF);
	}
	else
	{
		writebyte(0x3BE1, 0xDC);
		writeword(0x3BE2, 0x1516);
	}
}
