Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- state("GSR") { }
- state("GSE") { }
- state("gambatte_speedrun") { }
- startup
- {
- //-------------------------------------------------------------//
- settings.Add("split_end", true, "Splits");
- settings.Add("subsplits", true, "Subsplits");
- settings.CurrentDefaultParent = "split_end";
- settings.Add("nidoran", true, "Catch Nido");
- settings.Add("gym1", true, "Pewter Gym (Brock)");
- settings.Add("enterMtMoon", true, "Enter Mt. Moon");
- settings.Add("exitMtMoon", true, "Exit Mt. Moon");
- settings.Add("nuggetBridge", true, "Nugget Bridge (Rocket)");
- settings.Add("gym2", true, "Cerulean Gym (Misty)");
- settings.Add("gym3", true, "Vermilion Gym (Lt. Surge)");
- settings.Add("hm02", true, "Obtain HM02");
- settings.Add("flute", true, "Obtain Poké Flute");
- settings.Add("gym5", true, "Fuchsia Gym (Koga)");
- settings.Add("gym4", true, "Celadon Gym (Erika)");
- settings.Add("gym7", true, "Cinnabar Gym (Blaine)");
- settings.Add("gym6", true, "Saffron Gym (Sabrina)");
- settings.Add("gym8", true, "Viridian Gym (Giovanni)");
- settings.Add("elite4_1", true, "Lorelei");
- settings.Add("elite4_2", true, "Bruno");
- settings.Add("elite4_3", true, "Agatha");
- settings.Add("elite4_4", true, "Lance");
- settings.Add("elite4_5", true, "Champion");
- settings.Add("hof", true, "HoF Fade Out");
- settings.CurrentDefaultParent = "subsplits";
- settings.Add("intro_subsplits", true, "Early Game Subsplits");
- settings.Add("fly_subsplits", true, "Fly Subsplits");
- settings.Add("flute_subsplits", true, "Flute Subsplits");
- settings.Add("koga_subsplits", true, "Koga Subsplits");
- settings.Add("gym_rush_subsplits", true, "Gym Rush Subsplits");
- settings.Add("late_game_subsplits", true, "Late Game Subsplits");
- settings.Add("intro_tile", true, "Intro Tile", "intro_subsplits");
- settings.Add("enter_lab", false, "Enter Lab", "intro_subsplits");
- settings.Add("rival_one_start", true, "Rival 1 Tile", "intro_subsplits");
- settings.Add("rival", true, "Leave Oak's Lab", "intro_subsplits");
- settings.Add("route1_pass", true, "Route 1 Pass 1", "intro_subsplits");
- settings.Add("deliver_parcel", true, "Deliver Parcel", "intro_subsplits");
- settings.Add("route1_pass_2", true, "Route 1 Pass 2", "intro_subsplits");
- settings.Add("pidgey", true, "Catch Bird", "intro_subsplits");
- settings.Add("forest_bc", true, "Forest Bug Catcher", "intro_subsplits");
- settings.Add("pewter_enter", true, "Enter Pewter", "intro_subsplits");
- settings.Add("enter_gym_1", true, "Enter Brock's Gym", "intro_subsplits");
- settings.Add("pewter_exit", true, "Exit Pewter", "intro_subsplits");
- settings.Add("beat_shorts_guy", true, "Beat Shorts Guy", "intro_subsplits");
- settings.Add("route3", true, "Route 3 Last Bug Catcher", "intro_subsplits");
- settings.Add("moon_rocket", true, "Moon Rocket", "intro_subsplits");
- settings.Add("fossil", true, "Get Fossil", "intro_subsplits");
- settings.Add("paras_catch", true, "Paras Catch", "intro_subsplits");
- settings.Add("bridge_rival", true, "Beat Bridge Rival", "intro_subsplits");
- settings.Add("bridge_youngster", true, "bridge_youngster", "intro_subsplits");
- settings.Add("bill_house", true, "Bill's House", "intro_subsplits");
- settings.Add("enter_gym_2", true, "Enter Misty's Gym", "intro_subsplits");
- settings.Add("boat_rival", true, "Beat Boat Rival", "intro_subsplits");
- settings.Add("route_6", true, "Route 6 Grass", "intro_subsplits");
- settings.Add("enter_gym_3", true, "Enter Surge's Gym", "intro_subsplits");
- settings.Add("enter_rock_tunnel", true, "Enter Rock Tunnel", "fly_subsplits");
- settings.Add("exit_rock_tunnel", true, "Exit Rock Tunnel", "fly_subsplits");
- settings.Add("enter_celadon_mart", true, "Enter Celadon Mart", "fly_subsplits");
- settings.Add("enter_pkmn_tower", true, "Enter Pokemon Tower", "flute_subsplits");
- settings.Add("tower_rival", true, "Beat Tower Rival", "flute_subsplits");
- settings.Add("channeler_3", true, "Beat Channeler 3", "flute_subsplits");
- settings.Add("tippy", true, "Tippy", "flute_subsplits");
- settings.Add("silph_rival", true, "Beat Silph Rival", "koga_subsplits");
- settings.Add("silph_gio", true, "Beat Silph Gio", "koga_subsplits");
- settings.Add("enter_safari", true, "Enter Safari Zone", "koga_subsplits");
- settings.Add("enter_koga_gym", true, "Enter Koga's Gym", "koga_subsplits");
- settings.Add("enter_mansion", true, "Enter Pokemon Mansion", "gym_rush_subsplits");
- settings.Add("enter_erika_gym", true, "Enter Erika's Gym", "gym_rush_subsplits");
- settings.Add("enter_blaine_gym", true, "Enter Blaine's Gym", "gym_rush_subsplits");
- settings.Add("q1", true, "1st Question", "gym_rush_subsplits");
- settings.Add("q2", true, "2nd Question", "gym_rush_subsplits");
- settings.Add("q3", true, "3rd Question", "gym_rush_subsplits");
- settings.Add("q4", true, "4th Question", "gym_rush_subsplits");
- settings.Add("q5", true, "5th Question", "gym_rush_subsplits");
- settings.Add("q6", true, "6th Question", "gym_rush_subsplits");
- settings.Add("enter_sabrina_gym", true, "Enter Sabrina's Gym", "gym_rush_subsplits");
- settings.Add("enter_giovanni_gym", true, "Enter Giovanni's Gym", "late_game_subsplits");
- settings.Add("blackbelt", true, "Blackbelt", "late_game_subsplits");
- settings.Add("viridian_rival", true, "Beat Viridian Rival", "late_game_subsplits");
- settings.Add("exit_victory_road", true, "Exit Victory Road", "late_game_subsplits");
- //-------------------------------------------------------------//
- refreshRate = 0.5;
- Assembly.Load(File.ReadAllBytes("Components/emu-help-v2")).CreateInstance("GBC");
- vars.Helper.Load = (Func<dynamic, bool>)(emu =>
- {
- emu.Make<byte>("wSoundID", 0x0001);
- emu.Make<byte>("hofTile", 0x0490);
- emu.Make<byte>("wCurrentMenuItem", 0x0C26);
- emu.Make<uint>("wHoFMonOrPlayer", 0x0D40);
- emu.Make<byte>("wEnemyMonSpecies2", 0x0FD8);
- emu.Make<uint>("wEnemyMonNick", 0x0FDA);
- emu.Make<byte>("wBattleMonHP", 0x1016);
- emu.Make<uint>("wTrainerName", 0x104A);
- emu.Make<byte>("wTrainerNo", 0x105D);
- emu.Make<byte>("wPartyCount", 0x1163);
- emu.Make<ushort>("wPartyMon1Exp", 0x117A);
- emu.Make<ushort>("wPlayerID", 0x1359);
- emu.Make<byte>("wCurMap", 0x135E);
- emu.Make<byte>("wYCoord", 0x1361);
- emu.Make<byte>("wXCoord", 0x1362);
- emu.Make<ushort>("wStack", 0x1FFD);
- // iohram starts 0xff00
- emu.Make<byte>("rBGP", 0xFF47);
- emu.Make<byte>("hJoyHeld", 0xFFB4);
- emu.Make<ushort>("wTextDest", 0x0C3A);
- return true;
- });
- vars.Current = (Func<string, uint, bool>)((name, value) =>
- {
- return vars.Helper[name].Current == value;
- });
- vars.IsOnTile = (Func<byte, byte, byte, bool>)((MapID, YCoord, XCoord) =>
- {
- return vars.Current("wCurMap", MapID) && vars.Current("wYCoord", YCoord) && vars.Current("wXCoord", XCoord);
- });
- var enterMapBreakpoint = 0xAE03u;
- var itemJingleID = 0x94u;
- vars.GetSplitList = (Func<Dictionary<string, bool>>)(() =>
- {
- bool battleOver = vars.Current("wEnemyMonSpecies2", 0) && vars.Current("wStack", enterMapBreakpoint);
- bool fadeWhite = vars.Current("rBGP", 0);
- return new Dictionary<string, bool> {
- {"nidoran", vars.Current("wCurMap", 0x21) && vars.Current("wPartyCount", 2) && vars.Current("wStack", enterMapBreakpoint)},
- {"gym1", vars.Current("wTrainerName", 0x81918E82) && battleOver},
- {"enterMtMoon", vars.IsOnTile(0x3B, 0x05, 0x12)},
- {"exitMtMoon", vars.IsOnTile(0x0F, 0x03, 0x1B)},
- {"nuggetBridge", vars.Current("wTrainerName", 0x918E828A) && vars.Current("wCurMap", 0x23) && battleOver},
- {"gym2", vars.Current("wTrainerName", 0x8C889293) && battleOver},
- {"gym3", vars.Current("wTrainerName", 0x8B93E892) && battleOver},
- {"hm02", vars.Current("wSoundID", itemJingleID) && vars.Current("wCurMap", 0xBC)},
- {"flute", vars.Current("wSoundID", itemJingleID) && vars.Current("wCurMap", 0x95)},
- {"gym5", vars.Current("wTrainerName", 0x8A8E8680) && battleOver},
- {"gym4", vars.Current("wTrainerName", 0x8491888A) && battleOver},
- {"gym7", vars.Current("wTrainerName", 0x818B8088) && battleOver},
- {"gym6", vars.Current("wTrainerName", 0x92808191) && battleOver},
- {"gym8", vars.Current("wTrainerName", 0x86888E95) && vars.Current("wCurMap", 0x2D) && battleOver},
- {"elite4_1", vars.Current("wTrainerName", 0x8B8E9184) && battleOver},
- {"elite4_2", vars.Current("wTrainerName", 0x8191948D) && battleOver},
- {"elite4_3", vars.Current("wTrainerName", 0x80868093) && battleOver},
- {"elite4_4", vars.Current("wTrainerName", 0x8B808D82) && battleOver},
- {"elite4_5", vars.Current("wEnemyMonNick", 0x95848D94) && vars.Current("wCurMap", 0x78) && battleOver},
- {"hof", vars.Current("wCurMap", 0x76) && vars.Current("wHoFMonOrPlayer", 0x01000000) && vars.Current("hofTile", 0x79) && fadeWhite},
- {"intro_tile", vars.IsOnTile(0x25, 0x1, 0x7)},
- {"enter_lab", vars.IsOnTile(0x28, 0xB, 0xC)},
- {"rival_one_start", vars.IsOnTile(0x28, 0x06, 0x05) && vars.Current("wPartyCount", 1)},
- {"rival", vars.Current("wCurMap", 0) && vars.Current("wPartyCount", 1)},
- {"route1_pass", vars.IsOnTile(0xC, 0x2, 0xE)},
- {"deliver_parcel", vars.IsOnTile(0x28, 0x02, 0x04) && vars.Current("wSoundID", itemJingleID)},
- {"route1_pass_2", vars.IsOnTile(0xC, 0x4, 0xC)},
- {"pidgey", vars.Current("wCurMap", 0x0D) && vars.Current("wPartyCount", 3) && vars.Current("wStack", enterMapBreakpoint)},
- {"forest_bc", vars.Current("wTrainerName", 0x8194867F) && vars.Current("wTrainerNo", 3) && battleOver},
- {"pewter_enter", vars.IsOnTile(0x02, 0x22, 0x12)},
- {"enter_gym_1", vars.IsOnTile(0x36, 0x11, 0x10)},
- {"pewter_exit", vars.IsOnTile(0x0E, 0x08, 0x0B)},
- {"beat_shorts_guy", vars.IsOnTile(0x0E, 0x04, 0x0D) && vars.Current("wStack", enterMapBreakpoint)},
- {"route3", vars.Current("wTrainerName", 0x8194867F) && vars.Current("wTrainerNo", 6) && battleOver},
- {"paras_catch", vars.Current("wCurMap", 0x3D) && vars.Current("wPartyCount", 4) && vars.Current("wStack", enterMapBreakpoint)},
- {"moon_rocket", vars.IsOnTile(0x3D, 0x11, 0x0B) && vars.Current("wStack", enterMapBreakpoint)},
- {"fossil", vars.IsOnTile(0x3D, 0x07, 0x0D) && vars.Current("wSoundID", itemJingleID)},
- {"bridge_rival", vars.Current("wEnemyMonNick", 0x81948B81) && vars.Current("wCurMap", 0x03) && battleOver},
- {"bridge_youngster", vars.IsOnTile(0x23, 0x1A, 0x0B) && vars.Current("wStack", enterMapBreakpoint)},
- {"bill_house", vars.IsOnTile(0x58, 0x03, 0x2D)},
- {"enter_gym_2", vars.IsOnTile(0x41, 0x13, 0x1E)},
- {"route_6", vars.IsOnTile(0x11, 0x1C, 0x0F)},
- {"boat_rival", vars.Current("wEnemyMonNick", 0x88959892) && vars.Current("wCurMap", 0x60) && battleOver},
- {"enter_gym_3", vars.IsOnTile(0x5C, 0x13, 0x0C)},
- {"enter_rock_tunnel", vars.IsOnTile(0x52, 0x11, 0x08)},
- {"exit_rock_tunnel", vars.IsOnTile(0x15, 0x21, 0x0F)},
- {"enter_celadon_mart", vars.IsOnTile(0x7A, 0x0D, 0x0A)},
- {"enter_pkmn_tower", vars.IsOnTile(0x8E, 0x05, 0x0E)},
- {"tower_rival", vars.Current("wEnemyMonNick", 0x88959892) && vars.Current("wCurMap", 0x8F) && battleOver},
- {"channeler_3", vars.Current("wTrainerName", 0x8287808D) && vars.IsOnTile(0x93, 0x05, 0x0A) && battleOver},
- {"tippy", vars.IsOnTile(0x94, 0x10, 0x09)},
- {"silph_rival", vars.Current("wEnemyMonNick", 0x95848D94) && vars.IsOnTile(0xD4, 0x02, 0x03) && battleOver},
- {"silph_gio", vars.Current("wTrainerName", 0x86888E95) && vars.Current("wCurMap", 0xEB) && battleOver},
- {"enter_safari", vars.IsOnTile(0xDC, 0x00, 0x04)},
- {"enter_koga_gym", vars.IsOnTile(0x9D, 0x1B, 0x05)},
- {"enter_mansion", vars.IsOnTile(0xA5, 0x03, 0x06)},
- {"enter_erika_gym", vars.IsOnTile(0x86, 0x1B, 0x0C)},
- {"enter_blaine_gym", vars.IsOnTile(0xA6, 0x03, 0x12)},
- {"q1", vars.IsOnTile(0xA6, 0x06, 0x12)},
- {"q2", vars.IsOnTile(0xA6, 0x06, 0x0C)},
- {"q3", vars.IsOnTile(0xA6, 0x0C, 0x0C)},
- {"q4", vars.IsOnTile(0xA6, 0x10, 0x06)},
- {"q5", vars.IsOnTile(0xA6, 0x0C, 0x04)},
- {"q6", vars.IsOnTile(0xA6, 0x06, 0x04)},
- {"enter_sabrina_gym", vars.IsOnTile(0xB2, 0x03, 0x22)},
- {"enter_giovanni_gym", vars.IsOnTile(0x0B, 0x07, 0x20)},
- {"blackbelt", vars.IsOnTile(0x2D, 0x04, 0x0A) && vars.Current("wStack", enterMapBreakpoint)},
- {"viridian_rival", vars.Current("wEnemyMonNick", 0x95848D94) && vars.IsOnTile(0x21, 0x05, 0x1D) && battleOver},
- {"exit_victory_road", vars.IsOnTile(0x22, 0x1F, 0x0E)},
- };
- });
- vars.PrintVar = (Func<string, Action>)(name =>
- {
- print(vars.Helper[name].Current.ToString());
- return;
- });
- vars.PrintHex = (Func<string, Action>)(name =>
- {
- print(vars.Helper[name].Current.ToString("X"));
- return;
- });
- }
- init {
- vars.pastSplits = new HashSet<string>();
- refreshRate = 200 / 3.0;
- }
- update
- {
- if(timer.CurrentPhase == TimerPhase.NotRunning && vars.pastSplits.Count > 0) {
- vars.pastSplits.Clear();
- }
- }
- start {
- return current.wCurrentMenuItem == 0 && current.wPlayerID == 0 && current.wStack == 0x915B && (current.hJoyHeld & 0x80) == 0;
- }
- reset {
- var isRaceRun = timer.CurrentTime.ToString().StartsWith("-");
- return current.wCurrentMenuItem == 1 && current.wPlayerID == 0 && current.wStack == 0x915B && !isRaceRun;
- }
- split {
- var splits = vars.GetSplitList();
- foreach(var split in splits) {
- if (settings[split.Key] && split.Value && !vars.pastSplits.Contains(split.Key)) {
- vars.pastSplits.Add(split.Key);
- print("[AutoSplitter] Split: " + split.Key);
- return true;
- }
- }
- }
- exit {
- refreshRate = 0.5;
- }
Advertisement
Add Comment
Please, Sign In to add comment