// BEYBLADE: LET IT RIP! AUTO-SPLITTER AND LOAD REMOVER v0.3.1 - by MrMonsh state("ePSXe", "v1.9.0") { byte outOfLoading : "ePSXe.exe", 0x6A46C8; byte playerPoints : "ePSXe.exe", 0x714C3D; short playerBroken : "ePSXe.exe", 0x845D65; byte opponentPoints : "ePSXe.exe", 0x714C95; short opponentBroken : "ePSXe.exe", 0x6CC3B4; } state("ePSXe", "v1.7.0") { byte outOfLoading : "ePSXe.exe", 0x59B230; byte playerPoints : "ePSXe.exe", 0x6092BD; short playerBroken : "ePSXe.exe", 0x73A3E5; byte opponentPoints : "ePSXe.exe", 0x609315; short opponentBroken : "ePSXe.exe", 0x5C0A34; } startup { // Add setting group 'reset_group' settings.Add("reset_group", true, "Resetting"); settings.SetToolTip("reset_group", "Choose how you want the timer to reset. You can choose more than one option."); // Add setting 'resetOnGameClosed', with 'reset_group' as parent settings.Add("resetOnGameClosed", true, "Reset when closing the emulator", "reset_group"); settings.SetToolTip("resetOnGameClosed", "The timer will reset as soon as the emulator is closed."); // Add setting 'resetOnMatchLoss', with 'reset_group' as parent settings.Add("resetOnMatchLoss", true, "Reset on Match Loss", "reset_group"); settings.SetToolTip("resetOnMatchLoss", "The timer will reset as soon as you lose a match (either by points or by running out of usable beyblades)."); vars.timerModel = new TimerModel { CurrentState = timer }; } init { var firstModuleMemorySize = modules.First().ModuleMemorySize; var processName = memory.ProcessName.ToLower(); if (processName.Contains("epsxe")) // ePSXe { if (firstModuleMemorySize == 9138176) version = "v1.7.0"; if (firstModuleMemorySize == 10301440) version = "v1.9.0"; } print("Current ModuleMemorySize is: " + firstModuleMemorySize.ToString()); print("CurrentProcess is: " + processName); print("CurrentVersion is: " + version); } update { if (version == "") return false; } split { return old.playerPoints < 4 && (current.playerPoints >= 4 || (old.opponentBroken == 0 && current.opponentBroken == 1)); } reset { return settings["resetOnMatchLoss"] && old.opponentPoints < 4 && (current.opponentPoints >= 4 || (old.playerBroken == 0 && current.playerBroken == 1)); } isLoading { return current.outOfLoading == 0; } exit { print("Emulator Closed"); if (settings["resetOnGameClosed"]) vars.timerModel.Reset(); }