1
0
Fork 0
mirror of https://github.com/notwa/mm synced 2024-05-18 05:23:22 -07:00
mm/Lua/lib/addrs/M/common.lua
2016-01-12 16:05:31 -08:00

421 lines
15 KiB
Lua
Executable File

-- version-agnostic addresses
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), -- -1 = always loaded
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), -- verify somehow?
y_rot_init = AA(0x16, 2),
z_rot_init = AA(0x18, 2),
unk_1A = AA(0x1A, 2), -- padding?
var = AA(0x1C, 2),
unk_1E = AA(0x1E, 1), -- actor type? set to -1 to unload actor
unk_1F = AA(0x1F, 1), -- link: 0x03
unk_20 = AA(0x20, 4), -- link: 0x03FF
unk_22 = AA(0x22, 2),
x = AA(0x24, 'f'),
y = AA(0x28, 'f'),
z = AA(0x2C, 'f'),
unnamed_x_rot = AA(0x30, 2), -- LERPed model facing angle?
unnamed_y_rot = AA(0x32, 2),
unnamed_z_rot = AA(0x34, 2), -- unused?
unk_36 = AA(0x36, 2), -- padding?
unk_38 = AA(0x38, 1), -- enum? whether owls can be hit?
unk_39 = AA(0x39, 1),
unk_3A = AA(0x3A, 2),
target_x = AA(0x3C, 'f'), -- for z-targeting
target_y = AA(0x40, 'f'),
target_z = AA(0x44, 'f'),
fps_vert_angle = AA(0x48, 2),
fps_horiz_angle = AA(0x4A, 2),
fps_unk_angle = AA(0x4C, 2),
unk_4E = AA(0x4E, 2), -- padding?
unk_50 = AA(0x50, 2), -- automatically resets to 0?
unk_52 = AA(0x52, 2),
unk_54 = AA(0x54, 'f'), -- link: 500.0
x_scale = AA(0x58, 'f'),
y_scale = AA(0x5C, 'f'),
z_scale = AA(0x60, 'f'),
x_vel = AA(0x64, 'f'),
y_vel = AA(0x68, 'f'),
z_vel = AA(0x6C, 'f'),
lin_vel_old = AA(0x70, 'f'),
unk_74 = AA(0x74, 'f'), -- an offset perhaps?
unk_78 = AA(0x78, 'f'),
unk_7C = AA(0x7C, 4),
unk_80 = AA(0x80, 4), -- pointer to ground?
unk_84 = AA(0x84, 4),
ground_y = AA(0x88, 'f'),
unk_8C = AA(0x8C, 4),
unk_90 = AA(0x90, 4), -- collision flags?
unk_94 = AA(0x94, 4),
unk_98 = AA(0x98, 4),
unk_9C = AA(0x9C, 4),
damage_table = AA(0xA0, 4),
unk_A4 = AA(0xA4, 4),
unk_A8 = AA(0xA8, 4),
unk_AC = AA(0xAC, 4),
unk_B0 = AA(0xB0, 4),
unk_B4 = AA(0xB4, 1),
unk_B5 = AA(0xB5, 1),
unk_B6 = AA(0xB6, 1),
hp = AA(0xB7, 1),
unk_B8 = AA(0xB8, 4),
unk_BC = AA(0xBC, 2),
angle = AA(0xBE, 2), -- part of rotation struct?
unk_C0 = AA(0xC0, 4), -- enum?
unk_C4 = AA(0xC4, 'f'), -- float?
unk_C8 = AA(0xC8, 4), -- pointer?
unk_CC = AA(0xCC, 'f'), -- float?
unk_D0 = AA(0xD0, 1), -- single byte?
unk_D1 = AA(0xD1, 1), -- single byte?
unk_D2 = AA(0xD2, 1), -- single byte?
unk_D3 = AA(0xD3, 1), -- single byte?
foot_left_x = AA(0xD4, 'f'), -- tested on Link, may be other things
foot_left_y = AA(0xD8, 'f'),
foot_left_z = AA(0xDC, 'f'),
foot_right_x = AA(0xE0, 'f'), -- tested on Link, may be other things
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'),
unk_FC = AA(0xFC, 4),
unk_100 = AA(0x100, 4),
unk_104 = AA(0x104, 4),
x_old = AA(0x108, 'f'),
y_old = AA(0x10C, 'f'),
z_old = AA(0x110, 'f'),
-- somewhere in here is u8 runActor?
prev = AA(0x128, 4),
next = AA(0x12C, 4),
}
end
return {
link = AL(0x00, 0x3CA0),
exit_value = AL(0x02, 2),
mask_worn = AL(0x04, 1),
intro_completed = AL(0x05, 1),
anti_mash_timer = AL(0x06, 1),
cutscene_status = AL(0x0A, 2),
time = AL(0x0C, 2),
owl_id = AL(0x0E, 2),
day_night = AL(0x10, 4),
time_speed = AL(0x14, 4),
day = AL(0x18, 4),
days_elapsed = AL(0x1C, 4),
transformation = AL(0x20, 1),
have_tatl = AL(0x22, 1),
owl_save = AL(0x23, 1), -- "zeroth day" effect
ZELDA3 = AL(0x24, 6),
sot_count = AL(0x2A, 2),
name = AL(0x2C, 8),
max_hearts = AL(0x34, 2),
hearts = AL(0x36, 2),
magic_level = AL(0x38, 1),
magic = AL(0x39, 1),
rupees = AL(0x3A, 2),
navi_timer = AL(0x3C, 4), -- ?
has_normal_magic = AL(0x40, 1),
has_double_magic = AL(0x41, 1),
owls_hit = AL(0x46, 2),
tunic_boots = AL(0x6C, 1),
sword_shield = AL(0x6D, 1),
inventory_items = AL(0x70, 24),
inventory_masks = AL(0x88, 24),
inventory_quantities= AL(0xA0, 24),
upgrades = AL(0xB8, 4),
quest_items = AL(0xBC, 4),
items_wft = AL(0xC0, 1),
items_sht = AL(0xC1, 1),
items_gbt = AL(0xC2, 1),
items_stt = AL(0xC3, 1),
keys_wft = AL(0xCA, 1),
keys_sht = AL(0xCB, 1),
keys_gbt = AL(0xCC, 1),
keys_stt = AL(0xCD, 1),
doubled_hearts = AL(0xD3, 1), -- set to 20 by the game
fairies_wft = AL(0xD4, 1),
fairies_sht = AL(0xD5, 1),
fairies_gbt = AL(0xD6, 1),
fairies_stt = AL(0xD7, 1),
strange_string = AL(0xDE, 6),
scene_flags_save = AL(0x470, 0x960),
--clock_town_map = AL(0xEB2, 1),
slulltula_count_wf = AL(0xEC0, 2),
slulltula_count_gb = AL(0xEC2, 2),
banked_rupees = AL(0xEDE, 2),
week_event_reg = AL(0xEF8, 100),
archery = AL(0xF00, 1),
chateau_romani = AL(0xF06, 1), -- 8
disable_c_buttons = AL(0xF4A, 1), -- 8
sword_disable_c = AL(0xF52, 1), -- 32
map_visited = AL(0xF5E, 2),
map_visible = AL(0xF62, 2),
bombers_caught = AL(0xFE6, 1),
bombers_order = {
AL(0xFE7, 1),
AL(0xFE8, 1),
AL(0xFE9, 1),
AL(0xFEA, 1),
AL(0xFEB, 1),
},
lottery_numbers = {
{
AL(0xFEC, 1),
AL(0xFED, 1),
AL(0xFEE, 1),
}, {
AL(0xFEF, 1),
AL(0xFF0, 1),
AL(0xFF1, 1),
}, {
AL(0xFF2, 1),
AL(0xFF3, 1),
AL(0xFF4, 1),
},
},
spider_mask_order = {
AL(0xFF5, 1), -- 0: red; 1: blue; 2: green; 3: yellow
AL(0xFF6, 1),
AL(0xFF7, 1),
AL(0xFF8, 1),
AL(0xFF9, 1),
AL(0xFFA, 1),
},
bombers_code = {
AL(0xFFB, 1),
AL(0xFFC, 1),
AL(0xFFD, 1),
AL(0xFFE, 1),
AL(0xFFF, 1),
},
-- note: these addresses are invalid for JP10, JP11.
epona_scene = AL(0x1000, 2), -- this is where you left epona
epona_x = AL(0x1002, 2), -- NOT where she currently is
epona_y = AL(0x1004, 2),
epona_z = AL(0x1006, 2),
epona_angle = AL(0x1008, 2),
checksum = AL(0x100A, 2),
event_inf = AL(0x100C, 8),
disable_pause = AL(0x100D, 1),
hookshot_ba = AL(0x100E, 1),
disable_c_buttons_2 = AL(0x100F, 1),
disable_items = AL(0x1010, 1),
rock_sirloin = AL(0x1014, 1),
b_button_disabler = AL(0x1015, 1), -- ?
bubble_timer = AL(0x1016, 2),
rupee_accumulator = AL(0x1018, 2),
spring_water_timers = AL(0x1020, 0xC0),
pictograph_picture = AL(0x10E0, 0x2BC0),
current_save = AL(0x3CA0, 4),
title_screen_mod = AL(0x3CA8, 4),
entrance_mod = AL(0x3CAC, 4),
voidout_type = AL(0x3CB0, 4),
voidout_x = AL(0x3CB4, 'f'),
voidout_y = AL(0x3CB8, 'f'),
voidout_z = AL(0x3CBC, 'f'),
voidout_angle = AL(0x3CC0, 2),
voidout_var = AL(0x3CC2, 2),
voidout_entrance = AL(0x3CC4, 2),
voidout_room_number = AL(0x3CC6, 2),
dog_spawner = AL(0x3DBC, 2),
timer_crap = AL(0x3DD0, 4),
postman_timer = AL(0x3DE4, 4), -- minigame
majora_timer = AL(0x3DFC, 4), -- atop clock tower?
minigame_timer = AL(0x3E04, 4),
drown_timer = AL(0x3E0C, 4),
timer_x = AL(0x3EFA, 2),
timer_y = AL(0x3F08, 2),
buttons_enabled = AL(0x3F18, 4),
magic_modifier = AL(0x3F28, 4),
magic_max = AL(0x3F2E, 2),
weird_a_graphic = AL(0x3F42, 1),
target_style = AL(0x3F45, 1),
music_mod = AL(0x3F46, 2),
entrance_mod_setter = AL(0x3F4A, 2),
title_screen_thing = AL(0x3F4C, 1),
transition_mod = AL(0x3F55, 2),
suns_song_effect = AL(0x3F58, 2),
health_mod = AL(0x3F5A, 2),
screen_scale_enable = AL(0x3F60, 1),
screen_scale = AL(0x3F64, 'f'),
scene_flags_ingame = AL(0x3F68, 0x960),
inventory = {
b_button_item = AL(0x4C, 1),
c_left_item = AL(0x4D, 1),
c_down_item = AL(0x4E, 1),
c_right_item = AL(0x4F, 1),
b_button_goron = AL(0x50, 1),
b_button_zora = AL(0x54, 1),
b_button_deku = AL(0x58, 1),
b_button_slot = AL(0x5C, 1), -- unused?
c_left_slot = AL(0x5D, 1),
c_down_slot = AL(0x5E, 1),
c_right_slot = AL(0x5F, 1),
ocarina = AL(0x70, 1),
bow = AL(0x71, 1),
fire_arrows = AL(0x72, 1),
ice_arrows = AL(0x73, 1),
light_arrows = AL(0x74, 1),
event_1 = AL(0x75, 1),
bombs = AL(0x76, 1),
bombchu = AL(0x77, 1),
deku_stick = AL(0x78, 1),
deku_nut = AL(0x79, 1),
magic_beans = AL(0x7A, 1),
event_2 = AL(0x7B, 1),
powder_keg = AL(0x7C, 1),
pictograph = AL(0x7D, 1),
lens_of_truth = AL(0x7E, 1),
hookshot = AL(0x7F, 1),
fairy_sword = AL(0x80, 1),
event_3 = AL(0x81, 1),
bottle_1 = AL(0x82, 1),
bottle_2 = AL(0x83, 1),
bottle_3 = AL(0x84, 1),
bottle_4 = AL(0x85, 1),
bottle_5 = AL(0x86, 1),
bottle_6 = AL(0x87, 1),
},
masks = {
postman = AL(0x88, 1),
all_night = AL(0x89, 1),
blast = AL(0x8A, 1),
stone = AL(0x8B, 1),
great_fairy = AL(0x8C, 1),
deku = AL(0x8D, 1),
keaton = AL(0x8E, 1),
bremen = AL(0x8F, 1),
bunny = AL(0x90, 1),
don_gero = AL(0x91, 1),
scents = AL(0x92, 1),
goron = AL(0x93, 1),
romani = AL(0x94, 1),
troupe_leader = AL(0x95, 1),
kafei = AL(0x96, 1),
couples = AL(0x97, 1),
truth = AL(0x98, 1),
zora = AL(0x99, 1),
kamaro = AL(0x9A, 1),
gibdo = AL(0x9B, 1),
garos = AL(0x9C, 1),
captains = AL(0x9D, 1),
giants = AL(0x9E, 1),
fierce_deity = AL(0x9F, 1),
},
quantities = {
arrows = AL(0xA1, 1),
bombs = AL(0xA6, 1),
bombchu = AL(0xA7, 1),
sticks = AL(0xA8, 1),
nuts = AL(0xA9, 1),
beans = AL(0xAA, 1),
kegs = AL(0xAC, 1),
},
buttons = AG(0x1A, 2),
framerate_limiter = AG(0xA2, 1),
scene_number = AG(0xA4, 2),
screen_T = AG(0xC0, 4),
screen_B = AG(0xC4, 4),
screen_L = AG(0xC8, 4),
screen_R = AG(0xCC, 4),
camera_fov = AG(0xD0, 'f'),
camera_e_x = AG(0xE0, 'f'),
camera_e_y = AG(0xE4, 'f'),
camera_e_z = AG(0xE8, 'f'),
camera_c_x = AG(0xEC, 'f'),
camera_c_y = AG(0xF0, 'f'),
camera_c_z = AG(0xF4, 'f'),
--camera_rot_x = AG(0xF8, 'f'),
--camera_rot_y = AG(0xFC, 'f'),
--camera_rot_z = AG(0x100, 'f'),
camera_target = AG(0x2B0, 4),
camera_mode = AG(0x362, 2),
unk_lens = AG(0x1CA0, 4),
lens_radius = AG(0x1CA4, 1),
actor_count = AG(0x1CAE, 1),
actor_counts = {
[0]=AG(0x1CB0, 4),
AG(0x1CBC, 4),
AG(0x1CC8, 4),
AG(0x1CD4, 4),
AG(0x1CE0, 4),
AG(0x1CEC, 4),
AG(0x1CF8, 4),
AG(0x1D04, 4),
AG(0x1D10, 4),
AG(0x1D1C, 4),
AG(0x1D28, 4),
AG(0x1D34, 4),
},
actor_firsts = {
[0]=AG(0x1CB4, 4),
AG(0x1CC0, 4),
AG(0x1CCC, 4),
AG(0x1CD8, 4),
AG(0x1CE4, 4),
AG(0x1CF0, 4),
AG(0x1CFC, 4),
AG(0x1D08, 4),
AG(0x1D14, 4),
AG(0x1D20, 4),
AG(0x1D2C, 4),
AG(0x1D38, 4),
},
bomb_counter = AG(0x1CD4, 1),
z_cursor_actor = AG(0x1DF8, 4),
z_target_actor = AG(0x1DFC, 4),
current_scene_flags_2 = AG(0x1E58, 4), -- note: I use SRAM ordering here
current_scene_flags_3 = AG(0x1E5C, 4),
current_scene_flags_1 = AG(0x1E68, 4),
current_scene_flags_4 = AG(0x1E6C, 4),
current_scene_flags_5 = AG(0x1E74, 4),
cutscene_pointer = AG(0x1F28, 4),
cutscene_status_2 = AG(0x1F2C, 1), -- needs a rename
text_active = AG(0x1681B, 1),
text_status = AG(0x1682A, 1),
-- offset by -0x20 on JP10/JP11
wind_x = AG(0x170B0, 2),
wind_y = AG(0x170B2, 2),
wind_z = AG(0x170B4, 2),
wind_power = AG(0x170B8, 'f'),
room_number = AG(0x186E0, 1),
room_pointer = AG(0x186EC, 4),
frames_in_scene = AG(0x18840, 4),
actor_disable = AG(0x18846, 2),
warp_begin = AG(0x18875, 1),
screen_dim = AG(0x18877, 1),
warp_destination = AG(0x18878, 4),
fade_type = AG(0x1887F, 1),
entrance_entered = AG(0x18B48, 1),
link_actor = setmetatable({
item_in_hand = AA(0x148, 1),
animation_id = AA(0x24A, 2),
unk_collision = AA(0xA68, 4), -- pointer
link_flags = AA(0xA6C, 0xC),
misc_actions = AA(0xAA5, 1),
lin_vel = AA(0xAD0, 'f'),
movement_angle = AA(0xAD4, 2),
sword_active = AA(0xADB, 1),
sword_succession= AA(0xADD, 1),
blast_mask_timer= AA(0xB60, 2),
}, {__index = Actor(AA(0,0).addr)}),
}