state("KINGDOM HEARTS Dream Drop Distance", "EG Global") // 1.0.0.10 { byte in_game : 0xA9966C; byte reset : 0xAC9098; byte world : 0x9CF720; byte room : 0x9CF721; byte scene : 0x9CF722; byte fightend : 0x9E96E1; byte loading : 0x14C89B68; } // This is not verified as I do not own the Epic Version for JP // state("KINGDOM HEARTS Dream Drop Distance", "EG JP") // { // byte in_game : 0xA9962C; // byte reset : 0xAC9058; // byte world : 0x9CF720; // byte room : 0x9CF721; // byte scene : 0x9CF722; // byte fightend : 0x9E66E1; // byte loading : 0x14C89B28; // } state("KINGDOM HEARTS Dream Drop Distance", "Steam Global") // 1.0.0.2 { byte in_game : 0xA99DEC; byte reset : 0xAC9818; byte world : 0x9CF730; byte room : 0x9CF731; byte scene : 0x9CF732; byte fightend : 0x9E96F1; byte loading : 0x14C8A2E8; } state("KINGDOM HEARTS Dream Drop Distance", "Steam JP") // 1.0.0.2 { byte in_game : 0xA99DEC; byte reset : 0xAC9818; byte world : 0x9CF730; byte room : 0x9CF731; byte scene : 0x9CF732; byte fightend : 0x9E96F1; byte loading : 0x14C8A2E8; } startup { settings.Add("shared", false, "Shared and Standalone splits"); settings.Add("urs", false, "Ursula Tutorial Boss", "shared"); settings.Add("boss", false, "Boss Fight splits"); settings.Add("sora_boss", false, "Sora Bosses", "boss"); settings.Add("shm", false, "Hockomonkey", "sora_boss"); settings.Add("swg", false, "Wargoyle", "sora_boss"); settings.Add("scc", false, "Chill Clawbster", "sora_boss"); settings.Add("rin", false, "Rinzler", "sora_boss"); settings.Add("sbr", false, "Spellican Boss Rush", "sora_boss"); settings.Add("sbb", false, "Beagle Boys", "sora_boss"); settings.Add("pete", false, "Pete", "sora_boss"); settings.Add("spl", false, "Spellican", "sora_boss"); settings.Add("xemnas", false, "Xemnas", "sora_boss"); settings.Add("riku_boss", false, "Riku Bosses", "boss"); settings.Add("rhm", false, "Hockomonkey", "riku_boss"); settings.Add("rwg", false, "Wargoyle", "riku_boss"); settings.Add("com", false, "Commantis", "riku_boss"); settings.Add("rcc", false, "Char Clawbster", "riku_boss"); settings.Add("rbb", false, "Beagle Boys", "riku_boss"); settings.Add("rmol", false, "Holey Moley", "riku_boss"); settings.Add("chr", false, "Chernabog", "riku_boss"); settings.Add("black", false, "Anti Black Coat", "riku_boss"); settings.Add("ansem_1", false, "Ansem I", "riku_boss"); settings.Add("ansem_2", false, "Ansem II", "riku_boss"); settings.Add("yxeh", false, "Young Xehanort", "riku_boss"); settings.Add("ff", false, "Forced Fight splits"); settings.Add("sora_ff", false, "Sora Fights", "ff"); settings.Add("ssd", false, "Second District", "sora_ff"); settings.Add("square", false, "Square", "sora_ff"); settings.Add("town", false, "Town", "sora_ff"); settings.Add("ap", false, "Amusement Park", "sora_ff"); settings.Add("circ", false, "Circus", "sora_ff"); settings.Add("fount", false, "Fountain Square", "sora_ff"); settings.Add("ty", false, "Training Yard", "sora_ff"); settings.Add("dino", false, "Carriage Defense", "sora_ff"); settings.Add("msm", false, "Dungeon", "sora_ff"); settings.Add("riku_ff", false, "Riku Fights", "ff"); settings.Add("rsd", false, "Second District", "riku_ff"); settings.Add("rfd", false, "First District", "riku_ff"); settings.Add("bike", false, "Light Cycle Commantis", "riku_ff"); settings.Add("rcity", false, "City", "riku_ff"); settings.Add("back", false, "Back Streets", "riku_ff"); settings.Add("drop", false, "Drop Boss splits"); settings.Add("sora_drop", false, "Sora Drops", "drop"); settings.Add("sbrawl", false, "Brawlamari", "sora_drop"); settings.Add("sqb", false, "Queen Buzzerfly", "sora_drop"); settings.Add("riku_drop", false, "Riku Drops", "drop"); settings.Add("rqb", false, "Queen Buzzerfly", "riku_drop"); settings.Add("rbrawl", false, "Brawlamari", "riku_drop"); } start { return current.in_game == 1 && old.in_game != 1 && current.reset == 0; } split { int world = current.world; bool fight_complete = current.fightend == 1 && old.fightend == 0; if (fight_complete) { switch (world) { // Initial/Atlantica/Merlins Tower case 1: return settings["urs"]; break; // Station of Awakening case 2: return true; // final fight - Armored Ventus Nightmare 2-4-10 // Traverse Town case 3: if (current.room == 1 && current.scene == 11) { return settings["rfd"]; } if (current.room == 2 && current.scene == 0) { return settings["ssd"]; } if (current.room == 2 && current.scene == 10) { return settings["rsd"]; } if (current.room == 3 && current.scene == 0) { return settings["sbr"]; } if (current.room == 8 && current.scene == 10) { return settings["back"]; } if (current.room == 9 && current.scene == 10) { return settings["fount"]; } if (current.room == 10 && current.scene == 0) { return settings["shm"]; } if (current.room == 11 && current.scene == 0) { return settings["rhm"]; } break; // Country of the Musketeers case 4: if (current.room == 3 && current.scene == 0) { return settings["pete"]; } if (current.room == 6 && current.scene == 10) { return settings["sbb"]; } if (current.room == 7 && current.scene == 10) { return settings["msm"]; } if (current.room == 8 && current.scene == 0) { return settings["ty"]; } if (current.room == 10 && current.scene == 1) { return settings["rbb"]; } if (current.room == 12 && current.scene == 10) { return settings["rmol"]; } if (current.room == 14 && current.scene == 0) { return settings["dino"]; } break; // Symphony of Sorcery case 5: if (current.room == 11 && current.scene == 0) { return settings["spl"]; } if (current.room == 62 && current.scene == 0) { return settings["chr"]; } break; // Prankster's Paradise case 6: if (current.room == 1 && current.scene == 10) { return settings["ap"]; } if (current.room == 10 && current.scene == 10) { return settings["rcc"]; } if (current.room == 12 && current.scene == 10) { return settings["circ"]; } if (current.room == 13 && current.scene == 0) { return settings["scc"]; } break; // Hollow Bastion/Radient Garden? case 7: break; // La Cite des Cloches case 8: if (current.room == 1 && current.scene == 10) { return settings["square"]; } if (current.room == 10 && current.scene == 11) { return settings["town"]; } if (current.room == 19 && current.scene == 10) { return settings["swg"]; } if (current.room == 14 && current.scene == 0) { return settings["rwg"]; } break; // The Grid case 9: if (current.room == 1 && current.scene == 10) { return settings["com"]; } if (current.room == 8 && current.scene == 11) { return settings["rcity"]; } if (current.room == 11 && current.scene == 0) { return settings["bike"]; } if (current.room == 12 && current.scene == 10) { return settings["rin"]; } break; // The World That Never Was case 10: if (current.room == 7 && current.scene == 10) { return settings["black"]; } if (current.room == 8 && current.scene == 10) { return settings["yxeh"]; } if (current.room == 9 && current.scene == 10) { return settings["ansem_1"]; } if (current.room == 10 && current.scene == 0) { return settings["ansem_2"]; } if (current.room == 12 && current.scene == 0) { return settings["xemnas"]; } break; } } else { if (current.world == 4 && old.room == 61 && old.scene == 1 && current.room != old.room && current.scene != old.scene) { return vars.completed_splits.Add("riku_brawlamari") && settings["rbrawl"]; } if (current.world == 8 && old.room == 61 && old.scene == 1 && current.room != old.room && current.scene != old.scene) { return vars.completed_splits.Add("riku_queen_buzzerfly") && settings["rqb"]; } if (current.world == 9 && old.room == 61 && old.scene == 1 && current.room != old.room && current.scene != old.scene) { return vars.completed_splits.Add("sora_brawlamari") && settings["sbrawl"]; } if (current.world == 10 && old.room == 61 && old.scene == 1 && current.room != old.room && current.scene != old.scene) { return vars.completed_splits.Add("sora_queen_buzzerfly") && settings["sqb"]; } } } exit { timer.IsGameTimePaused = true; } init { var gb = modules.First().BaseAddress; int epic_gl = memory.ReadValue<byte>(gb + 0x8A90A6); // This is not verified as I do not own the Epic Version for JP // int epic_jp = memory.ReadValue<byte>(gb + 0x8A90A6); int steam_gl = memory.ReadValue<byte>(gb + 0x8A9103); int steam_jp = memory.ReadValue<byte>(gb + 0x8A90A3); // if (epic_gl == 106 || epic_jp == 106) { if (epic_gl == 106) { if (epic_gl == 106) { version = "EG Global"; // } else { // version = "EG JP"; // character_address = 0xD1802D; } } else if (steam_gl == 106 || steam_jp == 106) { if (steam_gl == 106) { version = "Steam Global"; } else { version = "Steam JP"; } } vars.completed_splits = new HashSet<string>(); timer.IsGameTimePaused = false; } reset { return current.reset > 0 && old.reset == 0; } update { } isLoading { return current.loading == 1 && current.in_game == 1; }