Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Majora's Mask Warp Script
- -- BizHawk 1.11.1
- -- This displays some simple information on the screen.
- -- This allows you to warp to set locations.
- -- Press Page Up/Down to scroll through the list.
- -- Press Home to Warp.
- -- This script works for the following versions so far:
- -- english
- -- english (kiosk)
- -- english (gamecube)
- -- japanese 1.0
- -- japanese 1.1
- -- european 1.0
- -- european 1.1
- -- Game Hash:
- -- english D6133ACE5AFAA0882CF214CF88DABA39E266C078
- -- english kiosk 2F0744F2422B0421697A74B305CB1EF27041AB11
- -- english gamecube 9743AA026E9269B339EB0E3044CD5830A440C1FD
- -- japanese 1.0 5FB2301AACBF85278AF30DCA3E4194AD48599E36
- -- japanese 1.1 41FDB879AB422EC158B4EAFEA69087F255EA8589
- -- japanese gamecube ????????????????????????????????????????
- -- european 1.0 C04599CDAFEE1C84A7AF9A71DF68F139179ADA84
- -- european 1.1 BB4E4757D10727C7584C59C1F2E5F44196E9C293
- -- european gamecube ????????????????????????????????????????
- -- european debug B38B71D2961DFFB523020A67F4807A4B704E347A
- -- Version Detection
- local version = ""
- if (gameinfo.getromhash() == "D6133ACE5AFAA0882CF214CF88DABA39E266C078") then
- version = "english"
- elseif (gameinfo.getromhash() == "2F0744F2422B0421697A74B305CB1EF27041AB11") then
- version = "englishK"
- elseif (gameinfo.getromhash() == "9743AA026E9269B339EB0E3044CD5830A440C1FD") then
- version = "englishGCN"
- elseif (gameinfo.getromhash() == "5FB2301AACBF85278AF30DCA3E4194AD48599E36") then
- version = "japanese"
- elseif (gameinfo.getromhash() == "41FDB879AB422EC158B4EAFEA69087F255EA8589") then
- version = "japaneseA"
- elseif (gameinfo.getromhash() == "C04599CDAFEE1C84A7AF9A71DF68F139179ADA84") then
- version = "european"
- elseif (gameinfo.getromhash() == "BB4E4757D10727C7584C59C1F2E5F44196E9C293") then
- version = "europeanA"
- end
- local scene = {
- ["english"] = 0x3E6BC4,
- ["englishK"] = 0x3E6454,
- ["englishGCN"] = 0x381304,
- ["japanese"] = 0x3E6D94,
- ["japaneseA"] = 0x3E7054,
- ["japaneseGCN"] = 0x000000,
- ["european"] = 0x3DE064,
- ["europeanA"] = 0x3DE404,
- ["europeanGCN"] = 0x000000,
- ["europeanD"] = 0x000000
- }
- local entranceLast = {
- ["english"] = 0x1EF670,
- ["englishK"] = 0x1EEE80,
- ["englishGCN"] = 0x1ED830,
- ["japanese"] = 0x1EF460,
- ["japaneseA"] = 0x1EF710,
- ["japaneseGCN"] = 0x000000,
- ["european"] = 0x1E6B50,
- ["europeanA"] = 0x1E6EF0,
- ["europeanGCN"] = 0x000000,
- ["europeanD"] = 0x000000
- }
- local entranceSetter = {
- ["english"] = 0x3FF398,
- ["englishK"] = 0x3FEC28,
- ["englishGCN"] = 0x399AD8,
- ["japanese"] = 0x3FF548,
- ["japaneseA"] = 0x3FF808,
- ["japaneseGCN"] = 0x000000,
- ["european"] = 0x3F6838,
- ["europeanA"] = 0x3F6BD8,
- ["europeanGCN"] = 0x000000,
- ["europeanD"] = 0x000000
- }
- local loadFlag = {
- ["english"] = 0x3FF395,
- ["englishK"] = 0x3FEC25,
- ["englishGCN"] = 0x399AD5,
- ["japanese"] = 0x3FF545,
- ["japaneseA"] = 0x3FF805,
- ["japaneseGCN"] = 0x000000,
- ["european"] = 0x3F6835,
- ["europeanA"] = 0x3F6BD5,
- ["europeanGCN"] = 0x000000,
- ["europeanD"] = 0x000000
- }
- local facingAngle = {
- ["english"] = 0x3FFE6E,
- ["englishK"] = 0x3FF73E,
- ["englishGCN"] = 0x39A5AE,
- ["japanese"] = 0x40005E,
- ["japaneseA"] = 0x40031E,
- ["japaneseGCN"] = 0x000000,
- ["european"] = 0x3F730E,
- ["europeanA"] = 0x3F76AE,
- ["europeanGCN"] = 0x000000,
- ["europeanD"] = 0x000000
- }
- local xCoordinate = {
- ["english"] = 0x3FFDD4,
- ["englishK"] = 0x3FF6A4,
- ["englishGCN"] = 0x39A514,
- ["japanese"] = 0x3FFFC4,
- ["japaneseA"] = 0x400284,
- ["japaneseGCN"] = 0x000000,
- ["european"] = 0x3F7274,
- ["europeanA"] = 0x3F7614,
- ["europeanGCN"] = 0x000000,
- ["europeanD"] = 0x000000
- }
- local yCoordinate = {
- ["english"] = 0x3FFDD8,
- ["englishK"] = 0x3FF6A8,
- ["englishGCN"] = 0x39A518,
- ["japanese"] = 0x3FFFC8,
- ["japaneseA"] = 0x400288,
- ["japaneseGCN"] = 0x000000,
- ["european"] = 0x3F7278,
- ["europeanA"] = 0x3F7618,
- ["europeanGCN"] = 0x000000,
- ["europeanD"] = 0x000000
- }
- local zCoordinate = {
- ["english"] = 0x3FFDDC,
- ["englishK"] = 0x3FF6AC,
- ["englishGCN"] = 0x39A51C,
- ["japanese"] = 0x3FFFCC,
- ["japaneseA"] = 0x40028C,
- ["japaneseGCN"] = 0x000000,
- ["european"] = 0x3F727C,
- ["europeanA"] = 0x3F761C,
- ["europeanGCN"] = 0x000000,
- ["europeanD"] = 0x000000
- }
- local xVelocity = {
- ["english"] = 0x400880,
- ["englishK"] = 0x400150,
- ["englishGCN"] = 0x39AFC0,
- ["japanese"] = 0x400A70,
- ["japaneseA"] = 0x400D30,
- ["japaneseGCN"] = 0x000000,
- ["european"] = 0x3F7D20,
- ["europeanA"] = 0x3F80C0,
- ["europeanGCN"] = 0x000000,
- ["europeanD"] = 0x000000
- }
- local yVelocity = {
- ["english"] = 0x3FFE18,
- ["englishK"] = 0x3FF6E8,
- ["englishGCN"] = 0x39A558,
- ["japanese"] = 0x400008,
- ["japaneseA"] = 0x4002C8,
- ["japaneseGCN"] = 0x000000,
- ["european"] = 0x3F72B8,
- ["europeanA"] = 0x3F7658,
- ["europeanGCN"] = 0x000000,
- ["europeanD"] = 0x000000
- }
- local isPressed = false
- local location = 1
- local scenes = {
- [1] = 54816,
- ["1"] = "North Clock Town",
- [2] = 55296,
- ["2"] = "South Clock Town",
- [3] = 53808,
- ["3"] = "East Clock Town",
- [4] = 54304,
- ["4"] = "West Clock Town",
- [5] = 33792,
- ["5"] = "Southern Swamp",
- [6] = 49664,
- ["6"] = "Woods of Mystery",
- [7] = 20480,
- ["7"] = "Deku Palace (Swamp)",
- [8] = 20592,
- ["8"] = "Deku Palace (Grotto)",
- [9] = 39520,
- ["9"] = "Mountain Village",
- [10] = 37888,
- ["10"] = "Goron Village",
- [11] = 15872,
- ["11"] = "Milk Road",
- [12] = 25600,
- ["12"] = "Romani Ranch",
- [13] = 26624,
- ["13"] = "Great Bay Coast",
- [14] = 22528,
- ["14"] = "Marine Research Lab",
- [15] = 28672,
- ["15"] = "Pirate's Fortress (Exterior)",
- [16] = 16528,
- ["16"] = "Pirate's Fortress (Sewers)",
- [17] = 8704,
- ["17"] = "Pirate's Fortress (Interior)",
- [18] = 16384,
- ["18"] = "Pirate's Fortress (Hookshot)",
- [19] = 17408,
- ["19"] = "Pinnacle Rock",
- [20] = 27136,
- ["20"] = "Zora Cape",
- [21] = 27168,
- ["21"] = "Zora Cape (Turtle)",
- [22] = 24576,
- ["22"] = "Zora Hall",
- [23] = 36352,
- ["23"] = "Waterfall Rapids",
- [24] = 32768,
- ["24"] = "Ikana Graveyard",
- [25] = 2576,
- ["25"] = "Grave (Day 1)",
- [26] = 2560,
- ["26"] = "Grave (Day 2)",
- [27] = 23056,
- ["27"] = "Dampe's House",
- [28] = 8256,
- ["28"] = "Ikana Canyon",
- [29] = 36864,
- ["29"] = "Beneath the Well",
- [30] = 38912,
- ["30"] = "Sakon's Hideout",
- [31] = 47616,
- ["31"] = "Secret Shrine",
- [32] = 43568,
- ["32"] = "Stone Tower",
- [33] = 13328,
- ["33"] = "Ancient Castle of Ikana",
- [34] = 12288,
- ["34"] = "Woodfall Temple",
- [35] = 15360,
- ["35"] = "Snowhead Temple",
- [36] = 35840,
- ["36"] = "Great Bay Temple",
- [37] = 9728,
- ["37"] = "Stone Tower Temple",
- [38] = 10752,
- ["38"] = "Inverted Stone Tower Temple",
- [39] = 14336,
- ["39"] = "Odolwa's Room",
- [40] = 33280,
- ["40"] = "Goht's Room",
- [41] = 47104,
- ["41"] = "Gyorg's Room",
- [42] = 26112,
- ["42"] = "Twinmold's Room",
- [43] = 42496,
- ["43"] = "Igo's Du Ikana Room",
- [44] = 512,
- ["44"] = "Majora's Room",
- [45] = 18432,
- ["45"] = "Swamp Spider House",
- [46] = 18944,
- ["46"] = "Ocean Spider House",
- [47] = 51200,
- ["47"] = "Moon",
- [48] = 19968,
- ["48"] = "Woodfall Trial",
- [49] = 30720,
- ["49"] = "Snowhead Trial",
- [50] = 34816,
- ["50"] = "Great Bay Trial",
- [51] = 50688,
- ["51"] = "Stone Tower Trial",
- }
- -- Anchor for Text Display
- local x = 1
- local y = 65
- function setLocation(i)
- isPressed = true
- location = location + i
- if (location < 1) then
- location = table.getn(scenes)
- elseif (location > table.getn(scenes)) then
- location = 1
- end
- end
- function warp(i)
- memory.write_u32_be(entranceSetter[version], scenes[i])
- memory.write_u8(loadFlag[version], 20)
- end
- function textDisplay()
- -- Text Display
- gui.drawText(x + 1, y + 1, string.format("Scene:"), "BLACK")
- gui.drawText(x, y, string.format("Scene:"))
- gui.drawText(x + 101, y + 1, string.format("%04s", bizstring.hex(memory.read_u16_be(scene[version]))), "BLACK")
- gui.drawText(x + 100, y, string.format("%04s", bizstring.hex(memory.read_u16_be(scene[version]))))
- gui.drawText(x + 1, y + 13, string.format("Entrance:"), "BLACK")
- gui.drawText(x, y + 12, string.format("Entrance:"))
- gui.drawText(x + 101, y + 13, string.format("%04s", bizstring.hex(memory.read_u32_be(entranceLast[version]))), "BLACK")
- gui.drawText(x + 100, y + 12, string.format("%04s", bizstring.hex(memory.read_u32_be(entranceLast[version]))))
- gui.drawText(x + 1, y + 25, string.format("Setter:"), "BLACK")
- gui.drawText(x, y + 24, string.format("Setter:"))
- gui.drawText(x + 101, y + 25, string.format("%04s", bizstring.hex(memory.read_u32_be(entranceSetter[version]))), "BLACK")
- gui.drawText(x + 100, y + 24, string.format("%04s", bizstring.hex(memory.read_u32_be(entranceSetter[version]))))
- gui.drawText(x + 1, y + 43, string.format("X:"), "BLACK")
- gui.drawText(x, y + 42, string.format("X:"))
- gui.drawText(x + 78, y + 43, string.format("% 7.1f", memory.readfloat(xCoordinate[version], true)), "BLACK")
- gui.drawText(x + 77, y + 42, string.format("% 7.1f", memory.readfloat(xCoordinate[version], true)))
- gui.drawText(x + 1, y + 55, string.format("Y:"), "BLACK")
- gui.drawText(x, y + 54, string.format("Y:"))
- gui.drawText(x + 78, y + 55, string.format("% 7.1f", memory.readfloat(yCoordinate[version], true)), "BLACK")
- gui.drawText(x + 77, y + 54, string.format("% 7.1f", memory.readfloat(yCoordinate[version], true)))
- gui.drawText(x + 1, y + 67, string.format("Z:"), "BLACK")
- gui.drawText(x, y + 66, string.format("Z:"))
- gui.drawText(x + 78, y + 67, string.format("% 7.1f", memory.readfloat(zCoordinate[version], true)), "BLACK")
- gui.drawText(x + 77, y + 66, string.format("% 7.1f", memory.readfloat(zCoordinate[version], true)))
- gui.drawText(x + 1, y + 79, string.format("V (X):"), "BLACK")
- gui.drawText(x, y + 78, string.format("V (X):"))
- gui.drawText(x + 93, y + 79, string.format("% 5.1f", memory.readfloat(xVelocity[version], true)), "BLACK")
- gui.drawText(x + 92, y + 78, string.format("% 5.1f", memory.readfloat(xVelocity[version], true)))
- gui.drawText(x + 1, y + 91, string.format("V (Y):"), "BLACK")
- gui.drawText(x, y + 90, string.format("V (Y):"))
- gui.drawText(x + 93, y + 91, string.format("% 5.1f", memory.readfloat(yVelocity[version], true)), "BLACK")
- gui.drawText(x + 92, y + 90, string.format("% 5.1f", memory.readfloat(yVelocity[version], true)))
- gui.drawText(x + 1, y + 109, string.format("Angle:"), "BLACK")
- gui.drawText(x, y + 108, string.format("Angle:"))
- gui.drawText(x + 93, y + 109, string.format("%05d", memory.read_u16_be(facingAngle[version])), "BLACK")
- gui.drawText(x + 92, y + 108, string.format("%05d", memory.read_u16_be(facingAngle[version])))
- gui.drawText(x + 1, y + 127, string.format("Warp Destination:"), "BLACK")
- gui.drawText(x, y + 126, string.format("Warp Destination:"))
- gui.drawText(x + 1, y + 139, string.format("%s", scenes["" .. location]), "BLACK")
- gui.drawText(x, y + 138, string.format("%s", scenes["" .. location]))
- end
- while true do
- -- Warping
- if input.get().PageUp == true and isPressed == false then
- setLocation(-1)
- elseif input.get().PageDown == true and isPressed == false then
- setLocation(1)
- elseif input.get().Home == true and isPressed == false then
- warp(location)
- elseif input.get().PageUp == null and input.get().PageDown == null and input.get().Home == null then
- isPressed = false
- end
- textDisplay()
- emu.frameadvance()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement