state("LiveSplit") {} startup { Assembly.Load(File.ReadAllBytes("Components/emu-help-v2")).CreateInstance("PS1"); } init { vars.Helper.Load = (Func)(emu => { emu.Make("Start", 0x8019B4F8); emu.Make("Challenge", 0x80163278); emu.Make("MapNo", 0x80164774); emu.Make("Win", 0x80181170); return true; }); vars.AmazonianWinCount = 0; vars.HongKongWinCount = 0; } start { return old.Start == 0 && current.Start == 8; } update { if (old.Start != current.Start) print("Start: " + current.Start.ToString()); if (old.MapNo != current.MapNo) print("MapNo: " + current.MapNo.ToString()); if (old.Win != current.Win) print("Win: " + current.Win.ToString()); if (current.MapNo == 4 && old.Win == 3 && current.Win == 0) { vars.AmazonianWinCount++; print(vars.AmazonianWinCount.ToString()); } if (current.MapNo == 8 && old.Win == 3 && current.Win == 0) { vars.HongKongWinCount++; print(vars.HongKongWinCount.ToString()); } } split { // Normal Splits if (current.MapNo != 4 && current.MapNo != 8 && old.Win == 3 && current.Win == 0) { return true; } // Amazonian Split if (current.MapNo == 4 && vars.AmazonianWinCount == 2 && old.Win == 3 && current.Win == 0) { return true; } // HongKong Split if (current.MapNo == 8 && vars.HongKongWinCount == 3 && old.Win == 3 && current.Win == 0) { return true; } } onReset { vars.AmazonianWinCount = 0; vars.HongKongWinCount = 0; }