From 897be1f3f4728bfcdd9c584116c4883058f3453b Mon Sep 17 00:00:00 2001 From: Connor Olding Date: Sun, 17 Jan 2016 12:54:37 -0800 Subject: [PATCH] preliminary OoT warp support this is bad and i hate it --- Lua/cheat menu.lua | 4 +- Lua/data/entrance names oot.lua | 806 ++++++++++++++++++++++++++++++++ Lua/data/scene names oot.lua | 113 +++++ Lua/data/scene to entrance.lua | 113 +++++ Lua/menus/warp oot.lua | 65 +++ Lua/menus/warp.lua | 135 +----- 6 files changed, 1106 insertions(+), 130 deletions(-) create mode 100644 Lua/data/entrance names oot.lua create mode 100644 Lua/data/scene names oot.lua create mode 100644 Lua/data/scene to entrance.lua create mode 100644 Lua/menus/warp oot.lua diff --git a/Lua/cheat menu.lua b/Lua/cheat menu.lua index b8efefc..687af74 100755 --- a/Lua/cheat menu.lua +++ b/Lua/cheat menu.lua @@ -258,7 +258,7 @@ globalize{ Passive = Passive, reload_scene = reload_scene, } -local warp_menu = require "menus.warp" +local warp_menu = require(mm and "menus.warp" or "menus.warp oot") local progress_menu = require "menus.progress" local playas_menu = require "menus.playas" @@ -276,7 +276,7 @@ local main_menu = Menu{ Oneshot("Escape Cutscene", Setter{[addrs.cutscene_status_2]=3}), Text(""), LinkTo("Play as...", playas_menu), - Oneshot("Store Epona", Setter{[addrs.stored_epona]=1}), + --Oneshot("Store Epona", Setter{[addrs.stored_epona]=1}), Oneshot("Kill Link", Setter{[addrs.hearts]=0}), Text(""), Back(), diff --git a/Lua/data/entrance names oot.lua b/Lua/data/entrance names oot.lua new file mode 100644 index 0000000..9e07c65 --- /dev/null +++ b/Lua/data/entrance names oot.lua @@ -0,0 +1,806 @@ +return {[0]= + {[0]= + {"from Kokiri Forest", 0x0000}, + {"from Deku Tree Boss", 0x0252}, + }, + + {[0]= + {"from Death Mountain Trail", 0x0004}, + {"from Dodongo's Cavern Boss", 0x00C5}, + }, + + {[0]= + {"from Zora's Fountain", 0x0028}, + {"Map 14, from Inside Jabu Jabu's Belly Boss", 0x0407}, + }, + + {[0]= + {"from Sacred Forest Meadow", 0x0169}, + {"Outside Boss Door, from Forest Temple Boss, Secret Map #0", 0x024E}, + {"Ceiling Crush room", 0x0584}, + }, + + {[0]= + {"from Death Mountain Crater", 0x0165}, + {"Outside Boss Door, from Fire Temple Boss, Secret Map #0", 0x0175}, + }, + + {[0]= + {"from Lake Hylia", 0x0010}, + {"Main Entrance, from Water Temple Boss", 0x0423}, + }, + + {[0]= + {"from Desert Colossus", 0x0082}, + {"Boss Room Entrance, from Spirit Temple Boss", 0x02F5}, + {"from Desert Colossus, Silver Gauntlets Chest", 0x03F0}, + {"from Desert Colossus, Mirror Shield Chest", 0x03F4}, + {"Crashes (Bad Map)", 0x03F8}, + }, + + {[0]= + {"from Graveyard", 0x0037}, + {"Outside Boss Door", 0x02B2}, + {"from Shadow Temple Boss, Secret Map #0", 0x02B6}, + {"?", 0x04EA}, + }, + + {[0]= + {"from Kakariko Village", 0x0098}, + {"???", 0x05CC}, + }, + + {[0]= + {"from Zora's Fountain", 0x0088}, + {"?", 0x05D8}, + }, + + {[0]= + {"from Inside Ganon's Castle", 0x041B}, + {"from Outside Boss Door", 0x0427}, + {"Facing Boss Key Door", 0x042B}, + }, + + {[0]= + {"from Gerudo Fortress", 0x0008}, + }, + + {[0]= + {"from Gerudo Fortress", 0x0486}, + {"from Gerudo Fortress", 0x048A}, + {"from Gerudo Fortress", 0x048E}, + {"from Gerudo Fortress", 0x0492}, + {"from Gerudo Fortress", 0x0496}, + {"from Gerudo Fortress", 0x049A}, + {"from Gerudo Fortress", 0x049E}, + {"from Gerudo Fortress", 0x04A2}, + {"from Gerudo Fortress", 0x04A6}, + {"from Gerudo Fortress", 0x04AA}, + {"from Gerudo Fortress", 0x04AE}, + {"from Gerudo Fortress", 0x04B2}, + {"from Gerudo Fortress", 0x0570}, + }, + + {[0]= + {"from Castle", 0x0467}, + {"from Ganon's Tower Climb", 0x0534}, + {"Clear Forest Trial, from Inside Ganon's Castle", 0x0538}, + {"Clear Water Trial, from Inside Ganon's Castle", 0x053C}, + {"Clear Shadow Trial, from Inside Ganon's Castle", 0x0540}, + {"Clear Fire Trial, from Inside Ganon's Castle", 0x0544}, + {"Clear Light Trial, from Inside Ganon's Castle", 0x0548}, + {"Clear Spirit Trial, from Inside Ganon's Castle", 0x054C}, + }, + + {[0]= + {"Bottom of Boss Room, from Tower Collapse Exterior, (Higher)", 0x0179}, + {"Bottom of Boss Room, from Tower Collapse Exterior, (Lower)", 0x0134}, + {"Burning Rocks, from Tower Collapse Exterior, (Higher)", 0x01B5}, + {"Burning Rocks, from Tower Collapse Exterior, (Lower)", 0x0256}, + {"Stalfos Fight Room, from Tower Collapse Exterior, (Higher)", 0x03DC}, + {"Stalfos Fight Room, from Tower Collapse Exterior, (Lower)", 0x03E0}, + {"Staircase Down, from Tower Collapse Exterior, (Higher)", 0x03E4}, + {"Staircase Down, from Tower Collapse Interior Exit", 0x04B6}, + }, + + {[0]= + {"from Tower Collapse Interior, Stairs", 0x056C}, + }, + + {[0]= + {"from Market", 0x0063}, + }, + + {[0]= + {"from Deku Tree", 0x040F}, + }, + + {[0]= + {"from Dodongo's Cavern", 0x040B}, + }, + + {[0]= + {"from Inside Jabu Jabu's Belly", 0x0301}, + }, + + {[0]= + {"from Forest Temple", 0x000C}, + }, + + {[0]= + {"from Fire Temple", 0x0305}, + }, + + {[0]= + {"from Water Temple", 0x0417}, + }, + + {[0]= + {"from Spirit Temple", 0x008D}, + {}, + {"Inside Boss Map", 0x05EC}, + -- [0]={"from Spirit Temple", 0x0091}, + }, + + {[0]= + {"from Shadow Temple", 0x0413}, + }, + + {[0]= + {"from Ganon's Tower Climb", 0x041F}, + }, + + {[0]= + {"Death Cutscene, from Ganondorf Boss Room", 0x043F}, + {"from Tower Collapse Interior, Boss Room Floor (Higher)", 0x04BA}, + {"from Tower Collapse Interior, Boss Room Floor (Lower)", 0x032C}, + {"from Tower Collapse Interior, Burning Rocks (Higher)", 0x0330}, + {"from Tower Collapse Interior, Burning Rocks (Lower)", 0x0334}, + {"from Tower Collapse Interior, Stalfos Room (Higher)", 0x01C9}, + {"from Tower Collapse Interior, Stalfos Fight (Lower)", 0x051C}, + {"from Tower Collapse Interior, Stairs", 0x0524}, + }, + + {[0]= + {"from Market", 0x0033}, + {"from Hyrule Field", 0x0276}, + {"from Lots 'o Pots", 0x026E}, + }, + + {[0]= + {"from Market", 0x0034}, + {"from Hyrule Field", 0x0277}, + {"from Lots 'o Pots", 0x026F}, + }, + + {[0]= + {"from Market", 0x0035}, + {"from Hyrule Field", 0x0278}, + {"from Lots 'o Pots", 0x0270}, + }, + + {[0]= + {"Right Entrance, from Market", 0x00AD}, + {"Left Entrance, from Market", 0x029A}, + {"from Bombchu Shop", 0x03C0}, + {"Right side of alley, from door, from Back Alley Village House", 0x0067}, + {"from Puppy Woman's House", 0x038C}, + -- [0]={"Right Entrance, from Market", 0x00AF}, + -- [1]={"Left Entrance, from Market", 0x029C}, + -- [2]={"from Bombchu Shop", 0x03C2}, + -- [3]={"Right side of alley, from door, from Back Alley Village House", 0x0069}, + -- [4]={"from Puppy Woman's House", 0x038E}, + }, + + {[0]= + {"Right Entrance, from Market", 0x00AE}, + {"Left Entrance, from Market", 0x029B}, + {"from Bombchu Shop", 0x03C1}, + {"Right side of alley, from door, from Back Alley Village House", 0x0068}, + {"from Puppy Woman's House", 0x038D}, + -- [0]={"Right Entrance, from Market", 0x00B0}, + -- [1]={"Left Entrance, from Market", 0x029D}, + -- [2]={"from Bombchu Shop", 0x03C3}, + -- [3]={"Right side of alley, from door, from Back Alley Village House", 0x006A}, + -- [4]={"from Puppy Woman's House", 0x038F}, + }, + + {[0]= + {"from Market Entrance", 0x00B1}, + {"from Castle", 0x025A}, + {"from Temple of Time", 0x025E}, + {"from Back Alley, (Right)", 0x0262}, + {"from Back Alley, (Left)", 0x029E}, + {"from Market Potion Shop", 0x02A2}, + {"from Bazaar", 0x03B8}, + {"from Bombchu Bowling Alley", 0x03BC}, + {"from Shooting Gallery", 0x01CD}, + {"from Happy Mask Shop", 0x01D1}, + {"from Treasure Box Shop", 0x01D5}, + -- [0]={"from Market Entrance", 0x00B5}, + }, + + {[0]= + {"from Market Entrance", 0x00B2}, + {"from Castle", 0x025B}, + {"from Temple of Time", 0x025F}, + {"from Back Alley, (Right)", 0x0263}, + {"from Back Alley, (Left)", 0x029F}, + {"from Potion Shop", 0x02A3}, + {"from Bazaar", 0x03B9}, + {"from Bombchu Bowling Alley", 0x03BD}, + {"from Shooting Gallery", 0x01CE}, + {"from Happy Mask Shop", 0x01D2}, + {"from Treasure Box Shop", 0x01D6}, + }, + + {[0]= + {"from Market Entrance", 0x00B3}, + {"from Ganon's Castle", 0x025C}, + {"from Temple of Time", 0x0260}, + {"from Back Alley, (Right)", 0x0264}, + {"from Back Alley, (Left)", 0x02A0}, + {"from Potion Shop", 0x02A4}, + {"from Bazaar", 0x03BA}, + {"from Bombchu Bowling Alley", 0x03BE}, + {"from Shooting Gallery", 0x01CF}, + {"from Happy Mask Shop", 0x01D3}, + {"from Treasure Box Shop", 0x01D7}, + }, + + {[0]= + {"from Market Entrance", 0x0171}, + {"from Temple of Time", 0x0472}, + }, + + {[0]= + {"from Market Entrance", 0x0172}, + {"from Temple of Time", 0x0473}, + }, + + {[0]= + {"from Market Entrance", 0x0173}, + {"from Temple of Time", 0x0474}, + }, + + {[0]= + {"from Kokiri Forest", 0x00C9}, + }, + + {[0]= + {"from Kokiri Forest", 0x009C}, + }, + + {[0]= + {"from Kokiri Forest", 0x0433}, + }, + + {[0]= + {"from Kokiri Forest", 0x0437}, + }, + + {[0]= + {"Boss's House, from Kakariko Village", 0x02FD}, + }, + + {[0]= + {"Back Alley Guy's House, from Back Alley, (Right)", 0x043B}, + }, + + {[0]= + {"from Kakariko Village", 0x00B7}, + {"from Market", 0x052C}, + }, + + {[0]= + {"from Kokiri Forest", 0x00C1}, + }, + + {[0]= + {"from Goron City", 0x037C}, + }, + + {[0]= + {"from Zora's Domain", 0x0380}, + }, + + {[0]= + {"from Kakariko Village", 0x0384}, + {"Unused", 0x03E8}, + {"Back Door, from Kakariko Village", 0x03EC}, + -- [0]={"from Kakariko Village", 0x0386}, + -- [1]={"Unused", 0x03EA}, + -- [2]={"Back Door, from Kakariko Village", 0x03EE}, + }, + + {[0]= + {"from Market", 0x0388}, + }, + + {[0]= + {"??? (Back Alley)", 0x0390}, + {"from Back Alley, (Left)", 0x0528}, + }, + + {[0]= + {"from Market", 0x0530}, + }, + + {[0]= + {"Bed Entrance, from Savewarp", 0x00BB}, + {"from Kokiri Forest", 0x0272}, + -- [0]={"Bed Entrance, from Savewarp", 0x00C0}, + }, + + {[0]= + {"from Back Alley, (Left)", 0x0398}, + }, + + {[0]= + {"from Lon Lon Ranch", 0x02F9}, + }, + + {[0]= + {"from Kakariko Village", 0x039C}, + {"Roof entrance, from Kakariko Village", 0x05C8}, + }, + + {[0]= + {"from Lake Hylia", 0x0043}, + {"Possibly Eyedrops Timeout", 0x01C5}, + }, + + {[0]= + {"from Gerudo Valley", 0x03A0}, + }, + + {[0]= + {"from Graveyard", 0x030D}, + }, + + {[0]= + {"from Death Mountain Trail", 0x0315}, + {"from Death Mountain Crater", 0x04BE}, + {"from Castle", 0x04C2}, + {"Leaving puts you at 044B", 0x04F2}, + }, + + {[0]= + {"from Grotto spot", 0x036D}, + }, + + {[0]= + {"from Zora's Fountain", 0x0371}, + {"from Castle", 0x0578}, + {"from Desert Colossus", 0x0588}, + }, + + {[0]= + {"Default", 0x003F}, + {"Big Skulltula", 0x0598}, + {"Heart Piece Scrub", 0x059C}, + {"Two Redeads", 0x05A0}, + {"Three Deku Salescrubs", 0x05A4}, + {"Webbed", 0x05A8}, + {"Octoroc", 0x05AC}, + {"Two Deku Salescrubs, Closest sells Deku Nut Upgrade", 0x05B0}, + {"Two Wolfos", 0x05B4}, + {"Bombable Wall", 0x05B8}, + {"Two Deku Salescrubs, Closest sells Green Pot", 0x05BC}, + {"Tektite", 0x05C0}, + {"Forest Stage", 0x05C4}, + {"Cow", 0x05FC}, + }, + + {[0]= + {"from Graveyard", 0x031C}, + }, + + {[0]= + {"Hylian Shield Chest, from Graveyard", 0x004B}, + }, + + {[0]= + {"from Graveyard", 0x002D}, + {"Sun Song Cutscene", 0x0574}, + }, + + {[0]= + {"from Kakariko Village", 0x003B}, + {"from Market Entrance", 0x016D}, + -- [0]={"from Kakariko Village", 0x02EA}, + -- [0]={"from Kakariko Village", 0x02F0}, + }, + + {[0]= + {"from Outside Temple of Time", 0x0053}, + {}, + {"Pull or Place Master Sword", 0x02CA}, + {"Standing facing away from SoT spot", 0x0320}, + {"After pulling the MS for first time", 0x0324}, + {"from Temple of Time, Light Arrow Cutscene", 0x058C}, + {"Front of Pedestal", 0x0590}, + {"Prelude Entrance", 0x05F4}, + -- [0]={"from Outside Temple of Time", 0x005E}, + -- [0]={"from Outside Temple of Time", 0x005F}, + }, + + {[0]= + {"?", 0x006F}, + {"??? (Forest Medallion?)", 0x02CE}, + -- [0]={"?", 0x0071}, + }, + + {[0]= + {"from Castle, Crawlspace", 0x007A}, + {"from Zelda's Courtyard", 0x0296}, + -- [0]={"from Castle, Crawlspace", 0x007C}, + -- [1]={"from Zelda's Courtyard", 0x0298}, + }, + + {[0]= + {"from Castle, Crawlspace", 0x007B}, + {"from Zelda's Courtyard", 0x0297}, + -- [0]={"from Castle, Crawlspace", 0x007D}, + -- [1]={"from Zelda's Courtyard", 0x0299}, + }, + + {[0]= + {"?", 0x00A4}, + -- [0]={"?", 0x00A5}, + -- [0]={"?", 0x00A6}, + -- [0]={"?", 0x00A7}, + -- [0]={"?", 0x00A8}, + -- [0]={"?", 0x02EF}, + }, + + {[0]= + {"Dampe's Grave, from Graveyard", 0x044F}, + {"Windmill, from Kakariko Village", 0x0453}, + {"Windmill After Song of Storms?", 0x0503}, + }, + + {[0]= + {"from Lake Hylia", 0x045F}, + }, + + {[0]= + {"from Castle Courtyard", 0x0400}, + {"from Triforce Legend Cutscene", 0x05F0}, + }, + + {[0]= + {"from Market", 0x0507}, + }, + + {[0]= + {"Talon's House, from Lon Lon Ranch", 0x004F}, + {"Back Tower, from Lon Lon Ranch", 0x05D0}, + {"Talon's House, from Lose/Win Cucco Game", 0x05E4}, + }, + + {[0]= + {"from Market Entrance", 0x007E}, + }, + + {[0]= + {"from Kakariko Village", 0x0072}, + }, + + {[0]= + {"from Tower Collapse Interior Exit", 0x0517}, + }, + + {[0]= + {"from Kakariko Village", 0x0550}, + }, + + {[0]= + {"from After Zelda Escape, 2nd+ Impa Escort", 0x00CD}, + {"from Kakariko Village", 0x017D}, + {"from Zora River, Land", 0x0181}, + {"from Lost Woods", 0x0185}, + {"from Lake Hylia", 0x0189}, + {"from Gerudo Valley", 0x018D}, + {"from Lon Lon Ranch", 0x01F9}, + {"from Market Entrance", 0x01FD}, + {"Positioned near Lake Hylia", 0x027A}, + {"Owl Drop Spot, from Lake Hylia", 0x027E}, + {"Unused Location", 0x0282}, + {"from Lon Lon Ranch, Southern Fence Jump", 0x028A}, + {"from Lon Lon Ranch, Western Fence Jump", 0x028E}, + {"from Lon Lon Ranch, Eastern Fence Jump", 0x0292}, + {"from Zora River, Water", 0x0311}, + {"from Lon Lon Ranch, Front Gate Jump", 0x0476}, + {"Get Ocarina of Time", 0x050F}, + {"After Impa Escort Cutscene", 0x0594}, + -- [0]={"from After Zelda Escape, 2nd+ Impa Escort", 0x00D1}, + -- [0]={"from After Zelda Escape, 2nd+ Impa Escort", 0x00D2}, + -- [0]={"from After Zelda Escape, 2nd+ Impa Escort", 0x00D4}, + -- [0]={"from After Zelda Escape, 2nd+ Impa Escort", 0x00D5}, + -- [0]={"from After Zelda Escape, 2nd+ Impa Escort", 0x00D6}, + -- [0]={"from After Zelda Escape, 2nd+ Impa Escort", 0x00D7}, + -- [0]={"from After Zelda Escape, 2nd+ Impa Escort", 0x00D8}, + -- [0]={"from After Zelda Escape, 2nd+ Impa Escort", 0x00D9}, + -- [0]={"from After Zelda Escape, 2nd+ Impa Escort", 0x00DA}, + }, + + {[0]= + {"from Hyrule Field", 0x00DB}, + {"from Death Mountain Trail", 0x0191}, + {"from Graveyard", 0x0195}, + {"from Bazaar", 0x0201}, + {"from Bottom of the Well", 0x02A6}, + {"from Cow Heartpiece House (Door)", 0x0345}, + {"from Kakariko Village House, Boss's House", 0x0349}, + {"from Granny's Potion Shop", 0x034D}, + {"from ?, Windmill", 0x0351}, + {"from Kakariko Potion Shop", 0x044B}, + {"from Shooting Gallery", 0x0463}, + {"from House of Skulltula", 0x04EE}, + {"from Kakariko Potion Shop, Back Entrance", 0x04FF}, + {"from Nocturne Cutscene", 0x0513}, + {"Owl Drop Spot, from Death Mountain Crater, Owl Teleport", 0x0554}, + {"from Impa's House, Cow Exit", 0x05DC}, + -- [0]={"from Hyrule Field", 0x00DF}, + -- [0]={"from Hyrule Field", 0x00E0}, + -- [0]={"from Hyrule Field", 0x00E1}, + -- [0]={"from Hyrule Field", 0x00E2}, + -- [0]={"from Hyrule Field", 0x00E3}, + }, + + {[0]= + {"from Kakariko Village", 0x00E4}, + {"from Shadow Temple", 0x0205}, + {"from Gravekeeper's Hut", 0x0355}, + {"from ?, Dampe's Grave", 0x0359}, + {"from Grave with Shield", 0x035D}, + {"from Grave with Redead", 0x0361}, + {"from Royal Family's Tomb", 0x050B}, + {"Nocturne Warp", 0x0568}, + {"from Shadow Temple Boss, Blue Warp", 0x0580}, + -- [0]={"from Kakariko Village", 0x00E8}, + -- [0]={"from Kakariko Village", 0x00E9}, + }, + + {[0]= + {"Land Entrance, from Hyrule Field", 0x00EA}, + {"Dropped from top of Waterfall", 0x0199}, + {"from Zora's Domain", 0x019D}, + {"Water Entrance, from Hyrule Field", 0x01D9}, + {"from Lost Woods", 0x01DD}, + }, + + {[0]= + {"from After Forest Medallion Cutscene", 0x00EE}, + {"from Deku Tree", 0x0209}, + {"from Lost Woods, Hyrule Bridge", 0x020D}, + {"from Link's House", 0x0211}, + {"from Kokiri Shop", 0x0266}, + {"from Know-it-all Brothers", 0x026A}, + {"from Lost Woods", 0x0286}, + {"Spawn on Link's House", 0x0338}, + {"from House of Twins", 0x033C}, + {"from Mido's House", 0x0443}, + {"from Saria's House", 0x0447}, + {"After Deku Tree Death Cutscene, from Kokiri Forest", 0x0457}, + {"Deku Sprout Cutscene", 0x05E8}, + -- [0]={"from After Forest Medallion Cutscene", 0x00F2}, + -- [0]={"from After Forest Medallion Cutscene", 0x00F3}, + -- [0]={"from After Forest Medallion Cutscene", 0x00F4}, + -- [0]={"from After Forest Medallion Cutscene", 0x00F5}, + -- [0]={"from After Forest Medallion Cutscene", 0x00F6}, + -- [0]={"from After Forest Medallion Cutscene", 0x00F8}, + }, + + {[0]= + {"from Lost Woods", 0x00FC}, + {"from Forest Temple", 0x0215}, + {"Minuet Warp", 0x0600}, + {"from Forest Temple Boss, Blue Warp", 0x0608}, + -- [0]={"from Lost Woods", 0x0100}, + -- [0]={"from Lost Woods", 0x0101}, + -- [0]={"from Lost Woods", 0x02EE}, + -- [1]={"from Forest Temple", 0x0216}, + -- [1]={"from Forest Temple", 0x0217}, + -- [1]={"from Forest Temple", 0x0218}, + -- [2]={"Minuet Warp", 0x0601}, + -- [2]={"Minuet Warp", 0x0602}, + -- [2]={"Minuet Warp", 0x0603}, + }, + + {[0]= + {"from Hyrule Field", 0x0102}, + {"from Gerudo Valley", 0x0219}, + {"from Water Temple", 0x021D}, + {"Hyrule Field Entrance", 0x03C8}, + {"from Lakeside Laboratory", 0x03CC}, + {"Serenade Entrance", 0x04E6}, + {"from Fishing Pond", 0x0309}, + {"from Zora's Domain", 0x0560}, + {"Serenade Warp", 0x0604}, + {"from Water Temple Boss, Blue Warp", 0x060C}, + -- [0]={"from Hyrule Field", 0x0106}, + -- [0]={"from Hyrule Field", 0x0107}, + -- [2]={"from Water Temple", 0x021E}, + -- [2]={"from Water Temple", 0x021F}, + -- [2]={"from Water Temple", 0x0220}, + }, + + {[0]= + {"from Zora River", 0x0108}, + {"from Zora's Fountain", 0x01A1}, + {"from Zora Shop", 0x03C4}, + {"Eyeball Frog Timeout", 0x0153}, + {"from Lake Hylia", 0x0328}, + -- [0]={"from Zora River", 0x010C}, + }, + + {[0]= + {"Sapphire Cutscene Entrance", 0x010E}, + {"from Inside Jabu Jabu's Belly", 0x0221}, + {"from Zora's Domain", 0x0225}, + {"from Ice Cavern", 0x03D4}, + {"SE corner facing fallen tree", 0x03D8}, + {"from Great Fairy's Fountain (Spells)", 0x0394}, + -- [0]={"Sapphire Cutscene Entrance", 0x0112}, + -- [0]={"Sapphire Cutscene Entrance", 0x0113}, + -- [0]={"Sapphire Cutscene Entrance", 0x0114}, + -- [0]={"Sapphire Cutscene Entrance", 0x0115}, + -- [0]={"Sapphire Cutscene Entrance", 0x0116}, + }, + + {[0]= + {"from Hyrule Field", 0x0117}, + {"Thrown out of Gerudo Fortress, from Caught without usable hookshot", 0x01A5}, + {"Triggers Fortress Loading Zone", 0x0229}, + {"from Gerudo Fortress", 0x022D}, + {"from Carpenter's Tent", 0x03D0}, + -- [0]={"from Hyrule Field", 0x011B}, + -- [0]={"from Hyrule Field", 0x011C}, + -- [0]={"from Hyrule Field", 0x011D}, + }, + + {[0]= + {"from Kokiri Forest", 0x011E}, + {"from Sacred Forest Meadow", 0x01A9}, + {"Mushroom Timeout (Adult)", 0x01AD}, + {"start from the tree opposite of the main entrance", 0x01B1}, + {"??? placed west of Cojiro Guy map", 0x04C6}, + {"Exit point clockwise from SFM exit", 0x04D2}, + {"from Goron City", 0x04D6}, + {"from Zora River", 0x04DA}, + {"from Hyrule Field", 0x04DE}, + {"from Kokiri Forest, Hyrule Exit", 0x05E0}, + }, + + {[0]= + {"from Haunted Wasteland", 0x0123}, + {"from Spirit Temple", 0x01E1}, + {"from Spirit Temple, Gauntlets Entrance", 0x01E5}, + {"from Spirit Temple, Mirror Shield Entrance", 0x01E9}, + {"After Requiem Cutscene", 0x01ED}, + {"Requiem Entrance", 0x01F1}, + {"Nabooru Capture Cutscene Entrance", 0x01F5}, + {"from Great Fairy's Fountain (Spells)", 0x057C}, + {"from Spirit Temple Boss, Blue Warp", 0x0610}, + -- [0]={"from Haunted Wasteland", 0x0127}, + -- [0]={"from Haunted Wasteland", 0x0128}, + }, + + {[0]= + {"from Gerudo Valley", 0x0129}, + {"from Thieves' Hideout", 0x0231}, + {"from Thieves' Hideout", 0x0235}, + {"from Thieves' Hideout", 0x0239}, + {"from Thieves' Hideout", 0x02AA}, + {"from Thieves' Hideout", 0x02BA}, + {"from Thieves' Hideout", 0x02BE}, + {"from Thieves' Hideout", 0x02C2}, + {"from Thieves' Hideout", 0x02C6}, + {"from Thieves' Hideout", 0x02D2}, + {"from Thieves' Hideout", 0x02D6}, + {"from Thieves' Hideout", 0x02DA}, + {"from Thieves' Hideout", 0x02DE}, + {"from Thieves' Hideout", 0x03A4}, + {"from Thieves' Hideout", 0x03A8}, + {"from Haunted Wasteland", 0x03AC}, + {"After Horseback Archery, from Gerudo Fortress", 0x03B0}, + {"Captured First Time with Hookshot", 0x03B4}, + {"Captured Second Time", 0x05F8}, + {"from Gerudo Valley", 0x012D}, + {"from Gerudo Valley", 0x012E}, + }, + + {[0]= + {"from Gerudo Fortress", 0x0130}, + {"from Desert Colossus", 0x0365}, + {"Crashes (Bad Map)", 0x0369}, + }, + + {[0]= + {"from Market Entrance", 0x0138}, + {"from Castle Courtyard", 0x023D}, + {"from Great Fairy's Fountain (Spells)", 0x0340}, + {"from Castle Courtyard, Caught by guard", 0x04FA}, + {"Guard Capture (Outside)", 0x047E}, + -- [1]={"from Castle Courtyard", 0x0241}, + -- [2]={"from Great Fairy's Fountain (Spells)", 0x0344}, + -- [3]={"from Castle Courtyard, Caught by guard", 0x04FE}, + }, + + {[0]= + {"from Kakariko Village", 0x013D}, + {"from Goron City", 0x01B9}, + {"from Death Mountain Crater", 0x01BD}, + {"from Dodongo's Cavern", 0x0242}, + {"from Great Fairy's Fountain (Upgrades)", 0x045B}, + {"Goron Ruby Cutscene", 0x047A}, + -- [0]={"from Kakariko Village", 0x0141}, + -- [0]={"from Kakariko Village", 0x0142}, + -- [0]={"from Kakariko Village", 0x0144}, + }, + + {[0]= + {"from Death Mountain Trail", 0x0147}, + {"from Goron City", 0x0246}, + {"from Fire Temple", 0x024A}, + {"from Great Fairy's Fountain (Upgrades)", 0x0482}, + {"Bolero Entrance", 0x04F6}, + {"from Fire Temple Boss, Blue Warp", 0x0564}, + }, + + {[0]= + {"from Death Mountain Trail", 0x014D}, + {"from Death Mountain Crater", 0x01C1}, + {"from Goron Shop", 0x03FC}, + {"from Lost Woods", 0x04E2}, + -- [0]={"from Death Mountain Trail", 0x0152}, + }, + + {[0]= + {"from Hyrule Field", 0x0157}, + {"Epona's Song Cutscene", 0x02AE}, + {"Near South Gate", 0x02E2}, + {"Near West Gate", 0x02E6}, + {"from Ranch House, Talon's House", 0x0378}, + {"from Stables", 0x042F}, + {"Pay Ingo to Ride", 0x04CA}, + {"Beat Ingo Both Times", 0x04CE}, + {"You're too slow!", 0x0558}, + {"??? (Near Ingo/Malon)", 0x055C}, + {"from Ranch Buildings, Back Tower", 0x05D4}, + -- [0]={"from Hyrule Field", 0x015B}, + -- [0]={"from Hyrule Field", 0x015C}, + -- [0]={"from Hyrule Field", 0x015D}, + }, + + {[0]= + {"from Market Entrance", 0x013A}, + {"from Inside Ganon's Castle", 0x023F}, + {"from Great Fairy's Fountain (Upgrades)", 0x0342}, + {"Crashes (Bad Map)", 0x0480}, + {"from Castle Courtyard, Caught by guard", 0x04FC}, + -- [0]={"from Market Entrance", 0x013C}, + }, + + {}, + + {}, + + {}, + + {}, + + {}, + + {}, + + {}, + + {}, + + {}, + + {}, +} diff --git a/Lua/data/scene names oot.lua b/Lua/data/scene names oot.lua new file mode 100644 index 0000000..d89f08b --- /dev/null +++ b/Lua/data/scene names oot.lua @@ -0,0 +1,113 @@ +-- scene order -- there is no entrance order in OoT...? +return { + [0]="Inside the Deku Tree", + "Dodongo's Cavern", + "Inside Jabu-Jabu's Belly", + "Forest Temple", + "Fire Temple", + "Water Temple", + "Spirit Temple", + "Shadow Temple", + "Bottom of the Well", + "Ice Cavern", + "Ganon's Tower", + "Gerudo Training Ground", + "Thieves' Hideout", + "Inside Ganon's Castle", + "Ganon's Tower (Collapsing)", + "Inside Ganon's Castle (Collapsing)", + "Treasure Chest Shop", + "Gohma's Lair", + "King Dodongo's Lair", + "Barinade's Lair", + "Phantom Ganon's Lair", + "Volvagia's Lair", + "Morpha's Lair", + "Twinrova's Lair & Iron Knuckle Mini-Boss Room", + "Bongo Bongo's Lair", + "Ganondorf's Lair", + "Ganondorf's Death Scene (Tower Escape Exterior)", + "Market Entrance (Day)", + "Market Entrance (Night)", + "Market Entrance (Ruins)", + "Back Alley (Day)", + "Back Alley (Night)", + "Market (Day)", + "Market (Night)", + "Market (Ruins)", + "Temple of Time Exterior (Day)", + "Temple of Time Exterior (Night)", + "Temple of Time Exterior (Ruins)", + "Know-It-All Brothers' House", + "Twins' House", + "Mido's House", + "Saria's House", + "Carpenter Boss's House", + "Back Alley House (Man in Green)", + "Bazaar", + "Kokiri Shop", + "Goron Shop", + "Zora Shop", + "Kakariko Potion Shop", + "Market Potion Shop", + "Bombchu Shop", + "Happy Mask Shop", + "Link's House", + "Back Alley House (Dog Lady)", + "Stable", + "Impa's House", + "Lakeside Laboratory", + "Carpenters' Tent", + "Gravekeeper's Hut", + "Great Fairy's Fountain (Upgrades)", + "Fairy's Fountain (Healing Fairies)", + "Great Fairy's Fountain (Spells)", + "Grottos", + "Grave (Redead)", + "Grave (Fairy's Fountain)", + "Royal Family's Tomb", + "Shooting Gallery", + "Temple of Time", + "Chamber of the Sages", + "Castle Hedge Maze (Day)", + "Castle Hedge Maze (Night)", + "Cutscene Map", + "Dampé's Grave & Windmill", + "Fishing Pond", + "Castle Courtyard", + "Bombchu Bowling Alley", + "Lon Lon Ranch House & Tower", + "Guard House", + "Granny's Potion Shop", + "Ganon's Tower Collapse & Battle Arena", + "House of Skulltula", + "Hyrule Field", + "Kakariko Village", + "Graveyard", + "Zora's River", + "Kokiri Forest", + "Sacred Forest Meadow", + "Lake Hylia", + "Zora's Domain", + "Zora's Fountain", + "Gerudo Valley", + "Lost Woods", + "Desert Colossus", + "Gerudo's Fortress", + "Haunted Wasteland", + "Hyrule Castle", + "Death Mountain Trail", + "Death Mountain Crater", + "Goron City", + "Lon Lon Ranch", + "Ganon's Castle Exterior", + "Room 118 - Jungle Gym", + "Room 116 - Ganondorf Test Room", + "Room 124 - Depth Test", + "Room 120 - Stalfos Mini-Boss Room", + "Room 121 - Stalfos Boss Room", + "Room 122 - Sutaru", + "Room 125 - Castle Hedge Maze (Early)", + "Room 117 - Sasa Test", + "Room 119 - Treasure Chest Room", +} diff --git a/Lua/data/scene to entrance.lua b/Lua/data/scene to entrance.lua new file mode 100644 index 0000000..de7051e --- /dev/null +++ b/Lua/data/scene to entrance.lua @@ -0,0 +1,113 @@ +-- maybe we could figure this out in code, but hardcoding will do for now. +return { + [0]=0x12, + 0x0B, + 0x0A, + 0x10, + 0x11, + 0x0C, + 0x00, + 0x0D, + nil, + nil, + 0x07, + nil, + nil, + nil, + 0x08, + nil, + 0x13, + 0x14, + 0x15, + 0x16, + 0x17, + 0x18, + 0x19, + 0x1A, + 0x1B, + 0x1C, + 0x1D, + 0x1E, + 0x1F, + 0x20, + 0x21, + 0x22, + 0x23, + 0x24, + 0x25, + 0x26, + 0x27, + 0x28, + 0x29, + 0x2A, + 0x2B, + 0x2C, + 0x2D, + 0x2E, + 0x2F, + 0x30, + nil, + 0x32, + 0x33, + 0x34, + 0x35, + nil, + 0x37, + 0x38, + 0x39, + nil, + 0x3B, + 0x3C, + 0x3D, + 0x3E, + 0x3F, + 0x40, + 0x41, + 0x42, + 0x43, + 0x44, + 0x45, + 0x46, + 0x47, + 0x48, + 0x49, + 0x4A, + 0x4B, + 0x4C, + 0x4D, + 0x4E, + 0x4F, + 0x50, + 0x51, + 0x52, + 0x53, + 0x54, + 0x55, + 0x56, + 0x57, + 0x58, + 0x59, + 0x5A, + 0x5B, + 0x5C, + 0x5D, + 0x5E, + 0x5F, + 0x60, + 0x61, + 0x62, + 0x63, + 0x64, + 0x65, + 0x66, + 0x67, + 0x68, + 0x69, + 0x6A, + 0x6B, + 0x6C, + 0x6D, + 0x6E, + 0x6F, + 0x70, +} diff --git a/Lua/menus/warp oot.lua b/Lua/menus/warp oot.lua new file mode 100644 index 0000000..acbe01d --- /dev/null +++ b/Lua/menus/warp oot.lua @@ -0,0 +1,65 @@ +local ins = table.insert +local scene_names = require "data.scene names oot" +local entrance_names = require "data.entrance names oot" +local maxscene = 109 + +local per_page = 16 +local pagecount = math.ceil((maxscene + 1)/per_page) + +local scenes_pages = {} +for si=0, maxscene do + local i = si + local page = math.floor(si/per_page) + 1 + + if si % per_page == 0 then + scenes_pages[page] = {} + local s = ("Warp to Scene #%i/%i"):format(page, pagecount) + ins(scenes_pages[page], Text(s)) + end + + local entrance_items = {} + local entrances = entrance_names[i] + local scene_name = scene_names[i] + + ins(entrance_items, Text( ("Warp to %s"):format(scene_name) )) + + for j=0,24 do + local e = entrances[j] + local ename = "n/a" + local edest = 0 + if e == nil then + if j ~= 0 then break end + ename = "n/a" + edest = 0 + else + ename = e[1] + edest = e[2] + if ename == nil then + if j ~= 0 then break end + ename = "n/a" + edest = 0 + end + end + local callback = function() + addrs.warp_destination(edest) + addrs.warp_begin(0x14) + end + ins(entrance_items, Oneshot(ename, callback)) + end + + ins(entrance_items, Text("")) + ins(entrance_items, Text("Cutscenes... (TODO)")) + ins(entrance_items, Text("")) + ins(entrance_items, Back()) + local entrance_menu = Menu{Screen(entrance_items)} + ins(scenes_pages[page], LinkTo(scene_name, entrance_menu)) +end + +local menu = Menu{} +for i, v in ipairs(scenes_pages) do + ins(v, Text("")) + ins(v, Back()) + ins(menu.screens, Screen(v)) +end + +return menu diff --git a/Lua/menus/warp.lua b/Lua/menus/warp.lua index 81ae2e6..3bb377f 100644 --- a/Lua/menus/warp.lua +++ b/Lua/menus/warp.lua @@ -1,141 +1,20 @@ -if not mm then - return Menu{ - Screen{ - Text("Sorry, no warping for you!"), - Back(), - }, - } -end - +local ins = table.insert local scene_names = require "data.scene names" local entrance_names = require "data.entrance names" -local ins = table.insert - --- we should really figure this out in code, --- but hardcoding will do for now. -local scene_id_to_entrance_id = { - [0]=0x12, - 0x0B, - 0x0A, - 0x10, - 0x11, - 0x0C, - 0x00, - 0x0D, - nil, - nil, - 0x07, - nil, - nil, - nil, - 0x08, - nil, - 0x13, - 0x14, - 0x15, - 0x16, - 0x17, - 0x18, - 0x19, - 0x1A, - 0x1B, - 0x1C, - 0x1D, - 0x1E, - 0x1F, - 0x20, - 0x21, - 0x22, - 0x23, - 0x24, - 0x25, - 0x26, - 0x27, - 0x28, - 0x29, - 0x2A, - 0x2B, - 0x2C, - 0x2D, - 0x2E, - 0x2F, - 0x30, - nil, - 0x32, - 0x33, - 0x34, - 0x35, - nil, - 0x37, - 0x38, - 0x39, - nil, - 0x3B, - 0x3C, - 0x3D, - 0x3E, - 0x3F, - 0x40, - 0x41, - 0x42, - 0x43, - 0x44, - 0x45, - 0x46, - 0x47, - 0x48, - 0x49, - 0x4A, - 0x4B, - 0x4C, - 0x4D, - 0x4E, - 0x4F, - 0x50, - 0x51, - 0x52, - 0x53, - 0x54, - 0x55, - 0x56, - 0x57, - 0x58, - 0x59, - 0x5A, - 0x5B, - 0x5C, - 0x5D, - 0x5E, - 0x5F, - 0x60, - 0x61, - 0x62, - 0x63, - 0x64, - 0x65, - 0x66, - 0x67, - 0x68, - 0x69, - 0x6A, - 0x6B, - 0x6C, - 0x6D, - 0x6E, - 0x6F, - 0x70, -} +local scene_id_to_entrance_id = require "data.scene to entrance" local function make_exit_value(s, e, c) return bit.lshift(s, 9) + bit.lshift(e, 4) + c end +local per_page = 16 + local scenes_pages = {} for si=0x00,0x7F do local i = scene_id_to_entrance_id[si] - local page = math.floor(si/16) + 1 + local page = math.floor(si/per_page) + 1 - if si % 16 == 0 then + if si % per_page == 0 then scenes_pages[page] = {} local s = ("Warp to Scene #%i/8"):format(page) ins(scenes_pages[page], Text(s)) @@ -171,7 +50,7 @@ for si=0x00,0x7F do local entrance_menu = Menu{Screen(entrance_items)} ins(scenes_pages[page], LinkTo(scene_name, entrance_menu)) - if si % 16 == 15 then + if si % per_page == per_page - 1 then ins(scenes_pages[page], Text("")) ins(scenes_pages[page], Back()) end