state("RDR", "v40_PC-49078035") //1516099072 


{
    int loading: "RDR.exe", 0x02C36700, 0x68;
    string100 RDRautosave: "RDR.exe", 0x022F3030, 0x1542;
    //string100 UNautosave: "RDR.exe", 0x02B02FB0, 0x3262;
    byte otherload: "RDR.exe", 0x02AB3A18, 0x3071;
    int duel: "RDR.exe", 0x02AB38A0, 0x6748;
    int firstcutscene: "RDR.exe", 0x02AFE170, 0x215D4;
    int failed: "RDR.exe", 0x02AFE170, 0x11CCC;
    int onmission: "RDR.exe", 0x02AB38A0, 0x677C;
}

startup
{
    refreshRate = 120;
}


init
{	
    print(modules.First().ModuleMemorySize.ToString());
	switch (modules.First().ModuleMemorySize)
	{
        case (1516099072):
		version = "v40_PC-49078035";
		break;
	}
}


start
{
    return current.firstcutscene == 0 && old.firstcutscene == 1 && current.loading == 1 && current.onmission == 1;
}


split
{
   return (
          (current.onmission == 0 && old.onmission == 1 && current.failed == 0) ||
          (current.duel == 0 && old.duel == 1 && current.onmission == 0)
          );
}


isLoading
{
    return current.loading == 1 || current.otherload == 1;
}