// Author: Uberteg
;

num	hOldInj = -1;
num	hNewInj = -1;
num	hOldFp = -1;
num	hNewFp = -1;
num	nInjSave = 0x7A13;
num	nFpSave = 0x7A15;

void open()
{
	num x = 220;
	num y = 110;

	CreateBorder(x, y, 250, 150, 6, 0, "Injector Calc");
	CreateStatic(x+5, y-5, 100, 20, 6, 0, "Injector Calc");
	
	x = x + 20;
	y = y + 20;
	hNewInj = CreateEdit(x, y, 40, 20, 6, 0, "");
	CreateStatic(x+50, y, 120, 20, 6, 0, "New Injector Size");
	setitem(hTPSFuel, readword(nTpsFuel) / 0x8000 / 100);

	y = y + 20;
	hOldInj = CreateEdit(x, y, 40, 20, 6, 0, "");
	CreateStatic(x+50, y, 120, 20, 6, 0, "Old Injector Size");
	setitem(hColdFuel, readword(nColdFuel) / 0x8000 / 100);

	y = y + 20;
	hNewFp = CreateEdit(x, y, 40, 20, 6, 0, "");
	CreateStatic(x+50, y, 120, 20, 6, 0, "New fuel pressure");
	setitem(hMainFuel, readword(nMainFuel) / 0x8000 / 100);

	y = y + 20;
	hOldFp = CreateEdit(x, y, 40, 20, 6, 0, "");
	CreateStatic(x+50, y, 120, 20, 6, 0, "Old fuel pressure");
	setitem(hMainFuel, readword(nMainFuel) / 0x8000 / 100);

	y = y + 20;
	CreateBtn(x+150, y, 50, 20, 6, "inj_apply", "Apply");

	setitem(hOldInj, readword(nInjSave));
	setitem(hOldFp, readword(nFpSave));
	setitem(hNewInj, readword(nInjSave));
	setitem(hNewFp, readword(nFpSave));
}

void DisableCRC()
{
	writeword(nInjSave, 240);
	writeword(nFpSave, 42);
}

void inj_apply()
{
	num x;
	num y;
	num fScale = GetItem(hOldInj) / GetItem(hNewInj);
	num fp = (GetItem(hOldFp) / GetItem(hNewFp)) ^ 0.5;
	fScale = fScale * fp;
	x = 0;
	while( x < NEW_TABLELO_x)
	{
		y = 0;
		while(y < NEW_TABLELO_y)
		{
			settablevalue(x, y, 0, gettablevalue(x, y, 0) * fScale);
			settablevalue(x, y, 1, gettablevalue(x, y, 1) * fScale);
			y = y + 1;
		}
		x = x + 1;
	}
	setitem(hOldInj, getitem(hNewInj));
	writeword(nInjSave, getitem(hNewInj));

	setitem(hOldFp, getitem(hNewFp));
	writeword(nFpSave, getitem(hNewFp));
}