mirror of
https://github.com/notwa/mm
synced 2024-11-05 02:49:02 -08:00
preliminary OoT support
This commit is contained in:
parent
9dd16c892d
commit
6fe4a58056
4 changed files with 727 additions and 30 deletions
188
Lua/A O US10.lua
Normal file
188
Lua/A O US10.lua
Normal file
|
@ -0,0 +1,188 @@
|
|||
A = require "boilerplate"
|
||||
|
||||
local link = 0x11A5D0
|
||||
local global = 0x1C84A0
|
||||
local actor = 0x1DAA30
|
||||
|
||||
function AL(a, s) return A(link+a, s) end
|
||||
function AG(a, s) return A(global+a, s) end
|
||||
function AA(a, s) return A(actor+a, s) end
|
||||
|
||||
function merge(t1, t2)
|
||||
for k, v in pairs(t1) do
|
||||
t2[k] = v
|
||||
end
|
||||
return t2
|
||||
end
|
||||
|
||||
function Actor(addr)
|
||||
local function AA(a, s) return A(addr+a, s) end
|
||||
return {
|
||||
num = AA(0x0, 2),
|
||||
type = AA(0x2, 1),
|
||||
room_number = AA(0x3, 1),
|
||||
flags = AA(0x4, 4),
|
||||
x_copy = AA(0x8, 'f'),
|
||||
y_copy = AA(0xC, 'f'),
|
||||
z_copy = AA(0x10, 'f'),
|
||||
x_rot_init = AA(0x14, 2),
|
||||
y_rot_init = AA(0x16, 2),
|
||||
z_rot_init = AA(0x18, 2),
|
||||
var = AA(0x1C, 2),
|
||||
x = AA(0x24, 'f'),
|
||||
y = AA(0x28, 'f'),
|
||||
z = AA(0x2C, 'f'),
|
||||
--x_rot_init = AA(0x30, 2),
|
||||
--y_rot_init = AA(0x32, 2),
|
||||
--z_rot_init = AA(0x34, 2),
|
||||
--x_rot_init = AA(0x44, 2),
|
||||
--y_rot_init = AA(0x46, 2),
|
||||
--z_rot_init = AA(0x48, 2),
|
||||
angle_old = AA(0x4A, 2), -- TODO: verify
|
||||
x_scale = AA(0x50, 'f'),
|
||||
y_scale = AA(0x54, 'f'),
|
||||
z_scale = AA(0x58, 'f'),
|
||||
x_vel = AA(0x5C, 'f'),
|
||||
y_vel = AA(0x60, 'f'),
|
||||
z_vel = AA(0x64, 'f'),
|
||||
--lin_vel_old = AA(0x70, 'f'),
|
||||
--ground_y = AA(0x88, 'f'),
|
||||
damage_table = AA(0xA0, 4), -- FIXME
|
||||
--hp = AA(0xB7, 1), -- FIXME
|
||||
--angle = AA(0xBA, 2),
|
||||
--foot_left_x = AA(0xD4, 'f'),
|
||||
--foot_left_y = AA(0xD8, 'f'),
|
||||
--foot_left_z = AA(0xDC, 'f'),
|
||||
--foot_right_x = AA(0xE0, 'f'),
|
||||
--foot_right_y = AA(0xE4, 'f'),
|
||||
--foot_right_z = AA(0xE8, 'f'),
|
||||
--camera_rel_x = AA(0xEC, 'f'),
|
||||
--camera_rel_y = AA(0xF0, 'f'),
|
||||
--camera_rel_z = AA(0xF4, 'f'),
|
||||
--unknown_z = AA(0xF8, 'f'),
|
||||
--x_old = AA(0x108, 'f'),
|
||||
--y_old = AA(0x10C, 'f'),
|
||||
--z_old = AA(0x108, 'f'),
|
||||
prev = AA(0x120, 4),
|
||||
next = AA(0x124, 4),
|
||||
}
|
||||
end
|
||||
|
||||
local common = {
|
||||
exit_value = AL(0x02, 2),
|
||||
age_modifier = AL(0x04, 4),
|
||||
--cutscene_status = AL(0x0A, 2),
|
||||
time = AL(0x0C, 2),
|
||||
day_night = AL(0x10, 4),
|
||||
--time_speed = AL(0x14, 4),
|
||||
ZELDA3 = AL(0x1C, 6), -- actually ZELDAZ in OoT
|
||||
death_count = AL(0x22, 2),
|
||||
name = AL(0x24, 8),
|
||||
max_hearts = AL(0x2E, 2),
|
||||
hearts = AL(0x30, 2),
|
||||
--has_magic = AL(0x38, 1), -- ?
|
||||
magic = AL(0x33, 1),
|
||||
rupees = AL(0x34, 2),
|
||||
--has_normal_magic = AL(0x40, 1),
|
||||
--has_double_magic = AL(0x41, 1),
|
||||
equip_tunic_boots = AL(0x70, 1),
|
||||
equip_sword_shield = AL(0x71, 1),
|
||||
inventory_items = AL(0x74, 24),
|
||||
inventory_counts = AL(0x8C, 24),
|
||||
--magic_beans_avail = AL(0x9B, 1),
|
||||
--tunic_boots = AL(0x9C, 1), -- FIXME
|
||||
--sword_shield = AL(0x9C, 1), -- FIXME
|
||||
deku_upgrades = AL(0xA1, 1),
|
||||
wallet_size = AL(0xA2, 1), -- also bullet bag & dive meter in OoT
|
||||
quiver_bag = AL(0xA3, 1), -- also strength in OoT
|
||||
--quest_items = AL(0xBC, 4),
|
||||
--items_wft = AL(0xC0, 1),
|
||||
--keys_wft = AL(0xCA, 1),
|
||||
--doubled_hearts = AL(0xD3, 1), -- set to 20 by the game
|
||||
--strange_string = AL(0xDE, 6),
|
||||
--scene_flags_save = AL(0x470, 0x960),
|
||||
--slulltula_count_wf = AL(0xEC0, 2),
|
||||
--archery = AL(0xF00, 1),
|
||||
--disable_c_buttons = AL(0xF4A, 1), -- 8
|
||||
--sword_disable_c = AL(0xF52, 1), -- 32
|
||||
--map_visited = AL(0xF5E, 2),
|
||||
--map_visible = AL(0xF62, 2),
|
||||
|
||||
inventory = {
|
||||
b_button = AL(0x68, 1),
|
||||
c_left_item = AL(0x69, 1),
|
||||
c_down_item = AL(0x6A, 1),
|
||||
c_right_item = AL(0x6B, 1),
|
||||
c_left_slot = AL(0x6C, 1),
|
||||
c_down_slot = AL(0x6D, 1),
|
||||
c_right_slot = AL(0x6E, 1),
|
||||
b_button_slot = AL(0x6F, 1), -- unused?
|
||||
|
||||
ocarina = AL(0x74, 1),
|
||||
bow = AL(0x75, 1), -- FIXME
|
||||
fire_arrows = AL(0x76, 1),
|
||||
ice_arrows = AL(0x77, 1),
|
||||
light_arrows = AL(0x78, 1),
|
||||
event_1 = AL(0x79, 1),
|
||||
bombs = AL(0x7A, 1),
|
||||
bombchu = AL(0x7B, 1),
|
||||
deku_stick = AL(0x7C, 1),
|
||||
deku_nut = AL(0x7D, 1),
|
||||
magic_beans = AL(0x7E, 1),
|
||||
event_2 = AL(0x7F, 1),
|
||||
powder_keg = AL(0x80, 1),
|
||||
pictograph = AL(0x81, 1),
|
||||
lens_of_truth = AL(0x82, 1),
|
||||
hookshot = AL(0x83, 1),
|
||||
fairy_sword = AL(0x84, 1),
|
||||
event_3 = AL(0x85, 1),
|
||||
bottle_1 = AL(0x85, 1),
|
||||
bottle_2 = AL(0x86, 1),
|
||||
bottle_3 = AL(0x87, 1),
|
||||
bottle_4 = AL(0x88, 1),
|
||||
bottle_5 = AL(0x89, 1),
|
||||
bottle_6 = AL(0x8A, 1),
|
||||
},
|
||||
quantities = {
|
||||
arrows = AL(0xA1, 1), -- FIXME
|
||||
bombs = AL(0xA6, 1),
|
||||
bombchu = AL(0xA7, 1),
|
||||
sticks = AL(0xA8, 1),
|
||||
nuts = AL(0xA9, 1),
|
||||
beans = AL(0xAA, 1),
|
||||
kegs = AL(0xAC, 1),
|
||||
},
|
||||
|
||||
camera_target = AG(0x270, 4),
|
||||
actor_count = AG(0x1C2C, 1),
|
||||
actor_count_0 = AG(0x1C30, 4),
|
||||
actor_first_0 = AG(0x1C34, 4),
|
||||
actor_count_1 = AG(0x1C38, 4),
|
||||
actor_first_1 = AG(0x1C3C, 4),
|
||||
actor_count_2 = AG(0x1C40, 4),
|
||||
actor_first_2 = AG(0x1C44, 4),
|
||||
actor_count_3 = AG(0x1C48, 4),
|
||||
actor_first_3 = AG(0x1C4C, 4),
|
||||
actor_count_4 = AG(0x1C50, 4),
|
||||
actor_first_4 = AG(0x1C54, 4),
|
||||
actor_count_5 = AG(0x1C58, 4),
|
||||
actor_first_5 = AG(0x1C5C, 4),
|
||||
actor_count_6 = AG(0x1C60, 4),
|
||||
actor_first_6 = AG(0x1C64, 4),
|
||||
actor_count_7 = AG(0x1C68, 4),
|
||||
actor_first_7 = AG(0x1C6C, 4),
|
||||
actor_count_8 = AG(0x1C70, 4),
|
||||
actor_first_8 = AG(0x1C74, 4),
|
||||
actor_count_9 = AG(0x1C78, 4),
|
||||
actor_first_9 = AG(0x1C7C, 4),
|
||||
actor_count_10 = AG(0x1C80, 4),
|
||||
actor_first_10 = AG(0x1C84, 4),
|
||||
actor_count_11 = AG(0x1C88, 4),
|
||||
actor_first_11 = AG(0x1C8C, 4),
|
||||
z_cursor_actor = AG(0x1CC8, 4),
|
||||
z_target_actor = AG(0x1CCC, 4),
|
||||
}
|
||||
|
||||
return merge(common, {
|
||||
|
||||
})
|
|
@ -1,18 +1,27 @@
|
|||
require "boilerplate"
|
||||
local addrs = require "addrs"
|
||||
local actor_names = require "actor names"
|
||||
|
||||
-- bizhawk lua has some nasty memory leaks at the moment,
|
||||
-- so instead of creating an object every time,
|
||||
-- using a template to offset from will do for now.
|
||||
local actor_t = Actor(0)
|
||||
|
||||
local oot = version:sub(1, 2) == "O "
|
||||
local al_next = addrs.actor_count_1.addr - addrs.actor_count_0.addr
|
||||
|
||||
local actor_names
|
||||
if oot then
|
||||
actor_names = require "actor names oot"
|
||||
else
|
||||
actor_names = require "actor names"
|
||||
end
|
||||
|
||||
function get_actor_count(i)
|
||||
return R4(addrs.actor_count_0.addr + i*0xC)
|
||||
return R4(addrs.actor_count_0.addr + i*al_next)
|
||||
end
|
||||
|
||||
function get_first_actor(i)
|
||||
return bit.band(R4(addrs.actor_first_0.addr + i*0xC), 0x7FFFFFFF)
|
||||
return bit.band(R4(addrs.actor_first_0.addr + i*al_next), 0x7FFFFFFF)
|
||||
end
|
||||
|
||||
function get_next_actor(addr)
|
||||
|
@ -30,6 +39,8 @@ local seen_strs = {}
|
|||
local seen_strs_sorted = {}
|
||||
local last_any = 0
|
||||
|
||||
local stupid = addrs.actor_count_0.addr - 0x8
|
||||
|
||||
while true do
|
||||
local any = 0
|
||||
for i = 0, 11 do
|
||||
|
@ -38,6 +49,14 @@ while true do
|
|||
any = any + count
|
||||
end
|
||||
T(0, 1, ("sum:%3i"):format(any), nil, "bottomright")
|
||||
if addrs.actor_count then
|
||||
T(10, 1, ("sum:%3i"):format(R1(addrs.actor_count.addr)), 'cyan', "bottomright")
|
||||
end
|
||||
|
||||
if R4(stupid) ~= 0 then
|
||||
T(0, 14, "stupid", "red", "bottomright")
|
||||
any = 0
|
||||
end
|
||||
|
||||
if any == 0 then
|
||||
seen = {}
|
||||
|
@ -55,9 +74,11 @@ while true do
|
|||
local actor_type = 2
|
||||
local actor_index = 0
|
||||
local once = false
|
||||
local i = 0
|
||||
local j = 0
|
||||
while any > 0 and last_any ~= any do
|
||||
if once and actor_type == 2 and actor_index == 0 then break end
|
||||
if once and actor_type == 2 and actor_index == 0 then
|
||||
break
|
||||
end
|
||||
actor_index = actor_index + 1
|
||||
|
||||
local actor_count = get_actor_count(actor_type)
|
||||
|
@ -85,6 +106,25 @@ while true do
|
|||
local num = R2(addr)
|
||||
local name = actor_names[num]
|
||||
|
||||
if name == nil and num < 0x300 then
|
||||
name = "NEW"
|
||||
actor_names[num] = name
|
||||
print(("\t[0x%03X]=\"NEW\","):format(num))
|
||||
|
||||
if actor_t.damage_table and actor_t.hp then
|
||||
local dmg = bit.band(addr + actor_t.damage_table.addr, 0x7FFFFFFF)
|
||||
if dmg == 0 then
|
||||
print("(no damage table)")
|
||||
else
|
||||
local hp = R1(addr + actor_t.hp.addr)
|
||||
s = ("%04X\t%02X\t%02X"):format(num, actor_type, hp)
|
||||
for i = 0, 31 do
|
||||
s = s..("\t%02X"):format(R1(dmg + i))
|
||||
end
|
||||
print(s)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if num > 0x300 then
|
||||
print(("BAD %06X %04X (%2i:%2i)"):format(addr, num, actor_type, actor_index))
|
||||
|
@ -101,27 +141,14 @@ while true do
|
|||
seen_strs[num] = str
|
||||
print(str)
|
||||
end
|
||||
|
||||
if name == nil and num < 0x300 then
|
||||
actor_names[num] = "NEW"
|
||||
print(("\t[0x%03X]=\"NEW\","):format(num))
|
||||
|
||||
local dmg = bit.band(addr + actor_t.damage_table.addr, 0x7FFFFFFF)
|
||||
if dmg == 0 then
|
||||
print("(no damage table)")
|
||||
else
|
||||
local hp = R1(addr + actor_t.hp.addr)
|
||||
s = ("%04X\t%02X\t%02X"):format(num, actor_type, hp)
|
||||
for i = 0, 31 do
|
||||
s = s..("\t%02X"):format(R1(dmg + i))
|
||||
end
|
||||
print(s)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
i = i + 1
|
||||
j = j + 1
|
||||
once = true
|
||||
if j > 255 then
|
||||
print("something went terribly wrong")
|
||||
do return end
|
||||
end
|
||||
end
|
||||
|
||||
last_any = any
|
||||
|
@ -146,13 +173,15 @@ while true do
|
|||
|
||||
T(0, 0, ("unique:%3i"):format(#seen_strs_sorted), nil, "bottomright")
|
||||
|
||||
local cursor = bit.band(addrs.z_cursor_actor(), 0x7FFFFFFF)
|
||||
local target = bit.band(addrs.z_target_actor(), 0x7FFFFFFF)
|
||||
local z = target or cursor
|
||||
if z then
|
||||
local num = R2(z)
|
||||
T(0, 0, seen_strs[num], nil, "topright")
|
||||
if once then
|
||||
local cursor = bit.band(addrs.z_cursor_actor(), 0x7FFFFFFF)
|
||||
local target = bit.band(addrs.z_target_actor(), 0x7FFFFFFF)
|
||||
local z = target or cursor
|
||||
if z then
|
||||
local num = R2(z)
|
||||
T(0, 0, seen_strs[num], nil, "topright")
|
||||
end
|
||||
end
|
||||
|
||||
emu.yield()
|
||||
emu.frameadvance()
|
||||
end
|
||||
|
|
474
Lua/actor names oot.lua
Normal file
474
Lua/actor names oot.lua
Normal file
|
@ -0,0 +1,474 @@
|
|||
local unset="unset"
|
||||
return {
|
||||
[0x000]="Link",
|
||||
[0x001]=unset,
|
||||
[0x002]="Stalfos",
|
||||
[0x003]=unset,
|
||||
[0x004]="Shop Data",
|
||||
[0x005]=unset,
|
||||
[0x006]=unset,
|
||||
[0x007]="???",
|
||||
[0x008]="Flame",
|
||||
[0x009]="Wooden Door",
|
||||
[0x00A]="Treasure Chest",
|
||||
[0x00B]="Great Fairy",
|
||||
[0x00C]="Proximity-Activated Firewall",
|
||||
[0x00D]="Graveyard Poe",
|
||||
[0x00E]="Octorok",
|
||||
[0x00F]="Spiderweb",
|
||||
[0x010]="Bomb Placed by Link",
|
||||
[0x011]="Wallmaster",
|
||||
[0x012]="Dodongo",
|
||||
[0x013]="Keese",
|
||||
[0x014]="Epona",
|
||||
[0x015]="Collectable Field & Dungeon Items",
|
||||
[0x016]="Small Orange Flame (Fades Away)",
|
||||
[0x017]=unset,
|
||||
[0x018]="Navi & Healing Fairy",
|
||||
[0x019]="Cucco",
|
||||
[0x01A]=unset,
|
||||
[0x01B]="Tektite",
|
||||
[0x01C]="Leever",
|
||||
[0x01D]="Peahat",
|
||||
[0x01E]="Butterfly",
|
||||
[0x01F]=unset,
|
||||
[0x020]="Bug",
|
||||
[0x021]="Fish",
|
||||
[0x022]=unset,
|
||||
[0x023]="Room Transition Plane",
|
||||
[0x024]="???",
|
||||
[0x025]="Lizalfos & Dinalfos",
|
||||
[0x026]="Flagpole",
|
||||
[0x027]="King Dodongo",
|
||||
[0x028]="Gohma",
|
||||
[0x029]="Child Zelda (Cutscene 05 & 06)",
|
||||
[0x02A]="???",
|
||||
[0x02B]="Gohma Larva",
|
||||
[0x02C]="???",
|
||||
[0x02D]="Shabom",
|
||||
[0x02E]="Dungeon Door",
|
||||
[0x02F]="Baby Dodongo",
|
||||
[0x030]="King Dodongo's Fire",
|
||||
[0x031]=unset,
|
||||
[0x032]="Boomerang Thrown by Link",
|
||||
[0x033]="Dark Link",
|
||||
[0x034]="Biri",
|
||||
[0x035]="Tailpasaran",
|
||||
[0x036]=unset,
|
||||
[0x037]="Skulltula",
|
||||
[0x038]="Torch Slug",
|
||||
[0x039]="Directional Signposts",
|
||||
[0x03A]="Stinger (Land)",
|
||||
[0x03B]="Environmental Sound Effects",
|
||||
[0x03C]="Generic Horse",
|
||||
[0x03D]="Shopkeeper",
|
||||
[0x03E]="Deku Tree's Jaw",
|
||||
[0x03F]="Dead Dodongo's Jaw",
|
||||
[0x040]="Breakable Hammer Block",
|
||||
[0x041]="??? Beige Face Block",
|
||||
[0x042]="Ganondorf's Horse",
|
||||
[0x043]="Fire-Powered Elevator Block",
|
||||
[0x044]="Flame-Shooting Statue (Rotates)",
|
||||
[0x045]="Flame-Shooting Statue (Spews Fire Intermittantly)",
|
||||
[0x046]="Sinking Stone Platform (Fire Temple)",
|
||||
[0x047]="Face Elevator ???",
|
||||
[0x048]="Sheik",
|
||||
[0x049]="Circle of Flames",
|
||||
[0x04A]="Drawbridge",
|
||||
[0x04B]="Moblin",
|
||||
[0x04C]="Bomb Flower",
|
||||
[0x04D]="Adult Zelda (Cutscenes)",
|
||||
[0x04E]="???",
|
||||
[0x04F]="Kokiri Girl (Early)",
|
||||
[0x050]="Floating Square Platform (Deku Tree)",
|
||||
[0x051]="Spiked Log & Dropdown Ladder",
|
||||
[0x052]="Phantom Ganon",
|
||||
[0x053]=unset,
|
||||
[0x054]="Armos",
|
||||
[0x055]="Deku Baba",
|
||||
[0x056]="???",
|
||||
[0x057]="???",
|
||||
[0x058]="Elevator Platform (Dodongo's Cavern)",
|
||||
[0x059]="Bombable Wall",
|
||||
[0x05A]="Jabu-Jabu",
|
||||
[0x05B]="Zelda's Horse",
|
||||
[0x05C]="Bombable Stairs",
|
||||
[0x05D]="Blue Warp & Rupee-Shaped Prism",
|
||||
[0x05E]="Torch",
|
||||
[0x05F]="Heart Container & Heart Piece???",
|
||||
[0x060]="Mad Scrub",
|
||||
[0x061]="Rotating Ring",
|
||||
[0x062]="Statue Eye Targets",
|
||||
[0x063]="Bari",
|
||||
[0x064]="???",
|
||||
[0x065]="Water (Water Temple)",
|
||||
[0x066]="Link's Hookshot",
|
||||
[0x067]="Phantom Ganon's Horse",
|
||||
[0x068]="Twisting Corridor",
|
||||
[0x069]="Bubble",
|
||||
[0x06A]="Light Streaming From Windows",
|
||||
[0x06B]="Flying Floor Tile",
|
||||
[0x06C]="Master Sword",
|
||||
[0x06D]="Phantom Ganon's Lightning",
|
||||
[0x06E]="Blank Warp Pad & Ocarina Pedestal",
|
||||
[0x06F]="Goron Prison Bars",
|
||||
[0x070]="Door of Time Collision Model",
|
||||
[0x071]="???",
|
||||
[0x072]="Brown Bird",
|
||||
[0x073]=unset,
|
||||
[0x074]=unset,
|
||||
[0x075]=unset,
|
||||
[0x076]=unset,
|
||||
[0x077]="Grass & Trees",
|
||||
[0x078]=unset,
|
||||
[0x079]=unset,
|
||||
[0x07A]=unset,
|
||||
[0x07B]=unset,
|
||||
[0x07C]="Grey Rectangular Block",
|
||||
[0x07D]="Grey Rectangular Stone Block",
|
||||
[0x07E]=unset,
|
||||
[0x07F]=unset,
|
||||
[0x080]="Sliding Blade Trap",
|
||||
[0x081]="Arrow-Reflecting Trap",
|
||||
[0x082]="Orange Pot",
|
||||
[0x083]=unset,
|
||||
[0x084]="Talon",
|
||||
[0x085]="Dampé",
|
||||
[0x086]="Bow Room Platform",
|
||||
[0x087]="Sun Elevator",
|
||||
[0x088]="Rotating Pre-Boss Room",
|
||||
[0x089]="Collapsing Checkerboard Ceiling",
|
||||
[0x08A]="Beamos",
|
||||
[0x08B]="??? Swallowable by Jabu-Jabu?",
|
||||
[0x08C]="???",
|
||||
[0x08D]="???",
|
||||
[0x08E]="Floormaster",
|
||||
[0x08F]="Hylian Soldier (Castle Hedge Maze)",
|
||||
[0x090]="Redead & Gibdo",
|
||||
[0x091]="Poe Sisters",
|
||||
[0x092]="Golden Gauntlets Rock",
|
||||
[0x093]="???",
|
||||
[0x094]="Group of Fish/Bugs/Butterflies",
|
||||
[0x095]="Skullwalltula",
|
||||
[0x096]="Volvagia (Flying)",
|
||||
[0x097]="Weather Effects",
|
||||
[0x098]="Darunia",
|
||||
[0x099]="Flare Dancer",
|
||||
[0x09A]="Child Epona",
|
||||
[0x09B]="Grotto Hole",
|
||||
[0x09C]="Graveyard Objects",
|
||||
[0x09D]="Gravestone",
|
||||
[0x09E]="Farore's Wind Effect",
|
||||
[0x09F]="Din's Fire Effect",
|
||||
[0x0A0]=unset,
|
||||
[0x0A1]="Child Ruto",
|
||||
[0x0A2]="Volvagia (Whack-a-Mole)",
|
||||
[0x0A3]="Flare Dancer Fireball",
|
||||
[0x0A4]="Dead Hand",
|
||||
[0x0A5]="Dead Hand's Hands",
|
||||
[0x0A6]="Rauru",
|
||||
[0x0A7]="Enemy Spawner",
|
||||
[0x0A8]="Darunia",
|
||||
[0x0A9]="Impa",
|
||||
[0x0AA]="Treasure Chest Light",
|
||||
[0x0AB]="Flare Dancer Core",
|
||||
[0x0AC]="???",
|
||||
[0x0AD]="Volvagia's Rocks",
|
||||
[0x0AE]="???",
|
||||
[0x0AF]="Invisible Wall",
|
||||
[0x0B0]="Charon's Boat",
|
||||
[0x0B1]="Spinning Scythes",
|
||||
[0x0B2]=unset,
|
||||
[0x0B3]="Hylian Soldier (Castle Gate Guard/Castle Courtyard/Kakariko Village)",
|
||||
[0x0B4]="Falling Boulder Spawner",
|
||||
[0x0B5]="Flaming Debris",
|
||||
[0x0B6]="Stunnable Jelly Platform",
|
||||
[0x0B7]="Reflected Ray of Light",
|
||||
[0x0B8]="Gerudo Valley Objects",
|
||||
[0x0B9]="Goron City Objects",
|
||||
[0x0BA]="Barinade",
|
||||
[0x0BB]="Flaming Skull Vase",
|
||||
[0x0BC]="Guillotine",
|
||||
[0x0BD]="Coffin Lid",
|
||||
[0x0BE]="???",
|
||||
[0x0BF]="Smoke Plume",
|
||||
[0x0C0]="Shooting Gallery Items",
|
||||
[0x0C1]="Shooting Gallery Owner",
|
||||
[0x0C2]="Shop Shelves",
|
||||
[0x0C3]="Nabooru",
|
||||
[0x0C4]="Morpha",
|
||||
[0x0C5]="Shellblade",
|
||||
[0x0C6]="Big Octorok",
|
||||
[0x0C7]="Wilted Deku Baba",
|
||||
[0x0C8]="Inside Jabu-Jabu's Belly Objects",
|
||||
[0x0C9]="Saria (Cutscenes)",
|
||||
[0x0CA]="Goron (Cutscenes)",
|
||||
[0x0CB]="Ingo",
|
||||
[0x0CC]="Kotake & Koume",
|
||||
[0x0CD]="Boulder Blocking Dodongo's Cavern",
|
||||
[0x0CE]=unset,
|
||||
[0x0CF]="Bombable Wall (Fire Temple)",
|
||||
[0x0D0]="Bombable Wall (Death Mountain Trail)",
|
||||
[0x0D1]="Floating Ice Platform",
|
||||
[0x0D2]="Adult Ruto",
|
||||
[0x0D3]="Deku Tree Sprout",
|
||||
[0x0D4]="Water Current",
|
||||
[0x0D5]="Lake Hylia Objects",
|
||||
[0x0D6]="Ice Cavern Objects",
|
||||
[0x0D7]="Moat Water (Bottom of the Well)",
|
||||
[0x0D8]=unset,
|
||||
[0x0D9]="Adult Malon (Stable & Lon Lon Ranch - Ingo Ousted)",
|
||||
[0x0DA]="Bombchu Placed by Link",
|
||||
[0x0DB]="???",
|
||||
[0x0DC]="Twinrova",
|
||||
[0x0DD]="Like Like",
|
||||
[0x0DE]="Parasitic Tentacle",
|
||||
[0x0DF]="Tentacle Obstruction",
|
||||
[0x0E0]="Anubis",
|
||||
[0x0E1]="Anubis-Killing Fire Trap",
|
||||
[0x0E2]="Dropdown Ladder",
|
||||
[0x0E3]="Rotating Lava Room Platforms",
|
||||
[0x0E4]="Well Path Water",
|
||||
[0x0E5]="Death Mountain Cloud Ring",
|
||||
[0x0E6]="Inside Jabu-Jabu's Belly Switch",
|
||||
[0x0E7]="Child Malon",
|
||||
[0x0E8]="Ganondorf (Boss)",
|
||||
[0x0E9]="Bongo Bongo",
|
||||
[0x0EA]=unset,
|
||||
[0x0EB]=unset,
|
||||
[0x0EC]="Spike Trap",
|
||||
[0x0ED]="Frog",
|
||||
[0x0EE]="Collectable Deku Shield",
|
||||
[0x0EF]="Meltable Ice Covering",
|
||||
[0x0F0]="Blue Fire",
|
||||
[0x0F1]="Collectable Ocarina of Time",
|
||||
[0x0F2]=unset,
|
||||
[0x0F3]=unset,
|
||||
[0x0F4]="Nayru's Love Effect",
|
||||
[0x0F5]="Light Orbs Representing the Sages",
|
||||
[0x0F6]="Anubis Spawner",
|
||||
[0x0F7]="???",
|
||||
[0x0F8]="Hyrule Castle Gate",
|
||||
[0x0F9]="Rolling Boulder (Spirit Temple)",
|
||||
[0x0FA]="Shifting Wall (Spirit Temple)",
|
||||
[0x0FB]=unset,
|
||||
[0x0FC]="Snake Statue",
|
||||
[0x0FD]="Mesh Bridge",
|
||||
[0x0FE]="Fishing Pond Objects",
|
||||
[0x0FF]="Pushblock",
|
||||
[0x100]="Gate to Death Mountain Trail",
|
||||
[0x101]="Particles Inhaled by Jabu-Jabu",
|
||||
[0x102]="Windmill Blades",
|
||||
[0x103]="Wooden Well Beams",
|
||||
[0x104]="Well Water (Kakariko Village)",
|
||||
[0x105]="Torch (Poe Sisters)",
|
||||
[0x106]="Ganondorf's Lair Floor Tile",
|
||||
[0x107]="Lon Lon Milk Crate",
|
||||
[0x108]="Horse Jumping Fence",
|
||||
[0x109]=unset,
|
||||
[0x10A]="Collectable Fire Arrows",
|
||||
[0x10B]="Collectable Ice Arrows",
|
||||
[0x10C]="Collectable Light Arrows",
|
||||
[0x10D]=unset,
|
||||
[0x10E]=unset,
|
||||
[0x10F]="Collectable Quest Items",
|
||||
[0x110]="Small Wooden Crate",
|
||||
[0x111]="Pot",
|
||||
[0x112]="Invisible Collectable Items",
|
||||
[0x113]="Iron Knuckle",
|
||||
[0x114]="Iron Knuckle (Cutscenes)",
|
||||
[0x115]="Skullkid",
|
||||
[0x116]="Skullkid's Needle",
|
||||
[0x117]="Silver Rupee",
|
||||
[0x118]="Kotake & Koume's Portal",
|
||||
[0x119]="Bongo Bongo's Shadow",
|
||||
[0x11A]="Business Scrub (After Surrender)",
|
||||
[0x11B]="Navi Message (Automatically Triggered)",
|
||||
[0x11C]="Eye Switch (Shoots Flames)",
|
||||
[0x11D]="Flying Pot",
|
||||
[0x11E]="???",
|
||||
[0x11F]="Waterfall (Zora's River)",
|
||||
[0x120]="Waterfall (Zora's Domain)",
|
||||
[0x121]="Freezard",
|
||||
[0x122]="Dampé's Ghost",
|
||||
[0x123]="Dampé's Relay Objects",
|
||||
[0x124]="Diving Game Zora",
|
||||
[0x125]="Grass Clump",
|
||||
[0x126]="Bean Planting Spot",
|
||||
[0x127]="Bombable Boulder",
|
||||
[0x128]=unset,
|
||||
[0x129]=unset,
|
||||
[0x12A]="Bronze Switch/Diamond Switch/Eye Switch",
|
||||
[0x12B]="Stone Elevator",
|
||||
[0x12C]="Deku Tree Elevator",
|
||||
[0x12D]="Hookshot Target Pillar",
|
||||
[0x12E]="Ocarina Spot",
|
||||
[0x12F]="???",
|
||||
[0x130]="Rolling Boulder",
|
||||
[0x131]="Rupee (Deku Target Game)",
|
||||
[0x132]="Carpenter Boss",
|
||||
[0x133]="Carpenter (Thieves' Hideout & Carpenters' Tent)",
|
||||
[0x134]=unset,
|
||||
[0x135]="Cucco Chick",
|
||||
[0x136]="Dark Link's Illusion Room",
|
||||
[0x137]="???",
|
||||
[0x138]="Gerudo in White",
|
||||
[0x139]="???",
|
||||
[0x13A]="Realistic Shadow",
|
||||
[0x13B]="Arwing",
|
||||
[0x13C]="Chicken Lady",
|
||||
[0x13D]="Medigoron",
|
||||
[0x13E]="Bean Seller",
|
||||
[0x13F]="Carpenter Boss's Son (Lost Woods)",
|
||||
[0x140]="Gate to Ingo's Ranch",
|
||||
[0x141]="Square Sign",
|
||||
[0x142]="Hylian Soldier (Hyrule Castle)",
|
||||
[0x143]="???",
|
||||
[0x144]="Cucco (Attacking)",
|
||||
[0x145]="Rocks Blocking the Bottom of the Well",
|
||||
[0x146]="Saria",
|
||||
[0x147]="???",
|
||||
[0x148]="Rainbow Bridge",
|
||||
[0x149]="Potion Shop Granny",
|
||||
[0x14A]="Lake Scientist",
|
||||
[0x14B]="Bombchu Bowling Alley Employee",
|
||||
[0x14C]="???",
|
||||
[0x14D]="Kaepora Gaebora",
|
||||
[0x14E]="Silver Gauntlets Boulder",
|
||||
[0x14F]="Graveyard Flower",
|
||||
[0x150]="Sun Switch",
|
||||
[0x151]="Groups of Rocks & Bushes",
|
||||
[0x152]="Goron (Early)",
|
||||
[0x153]="Windmill Man",
|
||||
[0x154]=unset,
|
||||
[0x155]="Treasure Chest (Treasure Chest Shop)",
|
||||
[0x156]="Goddess Statue",
|
||||
[0x157]="Ceiling Elevator",
|
||||
[0x158]="Ceiling Mirror",
|
||||
[0x159]="Bombable Bombchu Boulder",
|
||||
[0x15A]="Hookshottable Grate",
|
||||
[0x15B]="???",
|
||||
[0x15C]="Spinning Goron Vase",
|
||||
[0x15D]=unset,
|
||||
[0x15E]="Ganondorf's Organ",
|
||||
[0x15F]="Small Water Spout",
|
||||
[0x160]="Big Water Spout",
|
||||
[0x161]=unset,
|
||||
[0x162]="Running Man (Hyrule Field & Ending)",
|
||||
[0x163]="Kokiri Spawner",
|
||||
[0x164]="King Zora",
|
||||
[0x165]="Weather-Changing Tag",
|
||||
[0x166]="Bongo Bongo's Drum Head",
|
||||
[0x167]="Kakariko Rooftop Man",
|
||||
[0x168]="Bombchu Bowling Prizes???",
|
||||
[0x169]="Iron Knuckle Throne & Columns",
|
||||
[0x16A]="Carpet Merchant",
|
||||
[0x16B]="Carpet Merchant's Magic Carpet",
|
||||
[0x16C]="Graveyard Boy",
|
||||
[0x16D]="Mido",
|
||||
[0x16E]="Hylian Spawner",
|
||||
[0x16F]="Ganondorf's Cape",
|
||||
[0x170]="Song of Storms Effect",
|
||||
[0x171]="Title Screen Overlay",
|
||||
[0x172]="Thieves' Hideout Jail Cell Door",
|
||||
[0x173]="Navi Message (Targetable)",
|
||||
[0x174]="???",
|
||||
[0x175]="Big Poe",
|
||||
[0x176]="???",
|
||||
[0x177]="Gate Barring Escape From Ganon's Tower",
|
||||
[0x178]="Hylian Soldier (Hyrule Castle Town/Kakariko Village)",
|
||||
[0x179]="Adult Zelda (Normal Gameplay)",
|
||||
[0x17A]="Ganon",
|
||||
[0x17B]="Pierre (Lake Hylia)",
|
||||
[0x17C]="Treasure Chest Shop Owner",
|
||||
[0x17D]="Make Pushblock",
|
||||
[0x17E]="Sun's Song Effect",
|
||||
[0x17F]="Ending Overlays",
|
||||
[0x180]=unset,
|
||||
[0x181]="Grotto Treasure Chest",
|
||||
[0x182]="Ending Cutscene NPCs",
|
||||
[0x183]="???",
|
||||
[0x184]="Great Fairy's Healing Beam",
|
||||
[0x185]="Checkable Spot",
|
||||
[0x186]="Patrolling Gerudo in Purple",
|
||||
[0x187]="???",
|
||||
[0x188]="Skulltula House Resident (Cursed)",
|
||||
[0x189]="Skulltula House Resident (Curse Lifted)",
|
||||
[0x18A]="Song of Time Effect",
|
||||
[0x18B]="Song of Storms Effect",
|
||||
[0x18C]="Stinger (Water)",
|
||||
[0x18D]="Sacred Forest Meadow Pond Bottom",
|
||||
[0x18E]="Spirit Temple Entrance Room Elevator",
|
||||
[0x18F]="Iron Knuckle Debris",
|
||||
[0x190]="Gate to the Haunted Wasteland",
|
||||
[0x191]="Gate to the Gerudo Training Ground",
|
||||
[0x192]="Hint-Giving Deku Scrubs",
|
||||
[0x193]="Deku Scrub Projectile",
|
||||
[0x194]="Broken Drawbridge",
|
||||
[0x195]="Business Scrub (Attacking)",
|
||||
[0x196]="Collectable Grave-Digging Game Items",
|
||||
[0x197]="Gerudo Fighter",
|
||||
[0x198]="Epona's Song Effect",
|
||||
[0x199]="Saria's Song Effect",
|
||||
[0x19A]="Girl Chasing Cucco",
|
||||
[0x19B]="Dog",
|
||||
[0x19C]="Gold Skulltula Token",
|
||||
[0x19D]="Kakariko Village Objects",
|
||||
[0x19E]="Beehive",
|
||||
[0x19F]="Bombable Wall (Desert Colossus)",
|
||||
[0x1A0]="Wooden Crate",
|
||||
[0x1A1]="Deku Stage Actor Spawner",
|
||||
[0x1A2]="Deku Stage Judge",
|
||||
[0x1A3]="Deku Scrub (Deku Target Game)",
|
||||
[0x1A4]="Happy Mask Shop Customer",
|
||||
[0x1A5]="Bombchu Bowling Alley Walls",
|
||||
[0x1A6]="Carpenter Boss's Son (Kakariko Village)",
|
||||
[0x1A7]="Ganon's Castle Barrier",
|
||||
[0x1A8]="Bombable Wall (Zora's Fountain)",
|
||||
[0x1A9]="Bombable Wall (Death Mountain Crater)",
|
||||
[0x1AA]=unset,
|
||||
[0x1AB]="Group of Rupees",
|
||||
[0x1AC]="Honey & Darling",
|
||||
[0x1AD]="Haggling Shoppers",
|
||||
[0x1AE]="Goron & Biggoron",
|
||||
[0x1AF]="Wolfos",
|
||||
[0x1B0]="Stalchild",
|
||||
[0x1B1]="???",
|
||||
[0x1B2]="???",
|
||||
[0x1B3]="Sinking Zig-Zag Platform (Fire Medallion Minidungeon)",
|
||||
[0x1B4]="Invisible Path (Shadow Medallion Minidungeon)",
|
||||
[0x1B5]="???",
|
||||
[0x1B6]="Invisible Wall (Inside Ganon's Castle)",
|
||||
[0x1B7]="Ice Pushblock (Water Medallion Minidungeon)",
|
||||
[0x1B8]="Poe Collector",
|
||||
[0x1B9]="Gossip Stone",
|
||||
[0x1BA]="Bombable Wall (Water Temple)",
|
||||
[0x1BB]="Water Temple Gate",
|
||||
[0x1BC]="Kakariko Village - Carpenter",
|
||||
[0x1BD]="Bombchu Bowling Alley Walls",
|
||||
[0x1BE]="???",
|
||||
[0x1BF]="Guiding Poe (Haunted Wasteland)",
|
||||
[0x1C0]="Guay",
|
||||
[0x1C1]="Door Mimic",
|
||||
[0x1C2]="Oasis Water",
|
||||
[0x1C3]="Spinning Goron Vase Lid",
|
||||
[0x1C4]="Door to Darunia's Room",
|
||||
[0x1C5]="Adult Malon (Day)",
|
||||
[0x1C6]="Cow",
|
||||
[0x1C7]="Icicle",
|
||||
[0x1C8]="Ice Cavern Bars",
|
||||
[0x1C9]="Pierre (Wandering)",
|
||||
[0x1CA]="Bonooru",
|
||||
[0x1CB]="Scarecrow's Song Effect",
|
||||
[0x1CC]="???",
|
||||
[0x1CD]="Fake Wall (Gerudo Training Ground)",
|
||||
[0x1CE]="Zora",
|
||||
[0x1CF]="Gold Skulltula Spawner",
|
||||
[0x1D0]="Nabooru's Second-in-Command",
|
||||
[0x1D1]="Time Block",
|
||||
[0x1D2]="Bronze Boulder (Breakable Using Hammer)",
|
||||
[0x1D3]="Child Zelda (Normal Gameplay & Cutscene 04)",
|
||||
[0x1D4]="Carpenters' Tent & Race - Running Man",
|
||||
[0x1D5]="???",
|
||||
[0x1D6]="Time Block",
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
versions = { -- sha1 hashes of .z64s
|
||||
-- Majora's Mask
|
||||
['D6133ACE5AFAA0882CF214CF88DABA39E266C078'] = "US10",
|
||||
['2F0744F2422B0421697A74B305CB1EF27041AB11'] = "USDE",
|
||||
['9743AA026E9269B339EB0E3044CD5830A440C1FD'] = "USGC",
|
||||
|
@ -9,6 +10,11 @@ versions = { -- sha1 hashes of .z64s
|
|||
['5FB2301AACBF85278AF30DCA3E4194AD48599E36'] = "JP10",
|
||||
['41FDB879AB422EC158B4EAFEA69087F255EA8589'] = "JP11",
|
||||
['1438FD501E3E5B25461770AF88C02AB1E41D3A7E'] = "JPGC",
|
||||
|
||||
-- Ocarina of Time
|
||||
['AD69C91157F6705E8AB06C79FE08AAD47BB57BA7'] = "O US10",
|
||||
-- this is supposedly the same ROM, but i don't have it offhand to verify
|
||||
['79A4F053D34018E59279E6D4B83C7DACCD985C87'] = "O US10",
|
||||
}
|
||||
|
||||
--while version == nil do
|
||||
|
|
Loading…
Reference in a new issue