mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-15 12:24:39 +00:00
Implement define tables for objects, actors and effect soft sprites (#906)
* Implement a single Object Table for the enum and the segments * Implement a single Actor Table for the enum and the overlays * Implement a single Effect SS Table for the enum and the overlays * Remove initvars.h and move its content to relevant files * Update object 0 to use OBJECT_NONE and document it in the table * Rename OBJECT_NONE to OBJECT_INVALID to avoid confusion
This commit is contained in:
parent
ead672acc8
commit
f3c930917b
12 changed files with 1063 additions and 3164 deletions
|
@ -60,7 +60,7 @@ void Object_InitBank(GlobalContext* globalCtx, ObjectContext* objectCtx) {
|
|||
objectCtx->mainKeepIndex = objectCtx->subKeepIndex = 0;
|
||||
|
||||
for (i = 0; i < OBJECT_EXCHANGE_BANK_MAX; i++) {
|
||||
objectCtx->status[i].id = 0;
|
||||
objectCtx->status[i].id = OBJECT_INVALID;
|
||||
}
|
||||
|
||||
osSyncPrintf(VT_FGCOL(GREEN));
|
||||
|
@ -276,7 +276,7 @@ void func_8009899C(GlobalContext* globalCtx, SceneCmd* cmd) {
|
|||
if (status->id != *objectEntry) {
|
||||
status2 = &globalCtx->objectCtx.status[i];
|
||||
for (j = i; j < globalCtx->objectCtx.num; j++) {
|
||||
status2->id = 0;
|
||||
status2->id = OBJECT_INVALID;
|
||||
status2++;
|
||||
}
|
||||
globalCtx->objectCtx.num = i;
|
||||
|
@ -519,407 +519,26 @@ s16 gLinkObjectIds[] = { OBJECT_LINK_BOY, OBJECT_LINK_CHILD };
|
|||
|
||||
u32 gObjectTableSize = ARRAY_COUNT(gObjectTable);
|
||||
|
||||
// Object linker symbol declarations (used in the table below)
|
||||
#define DEFINE_OBJECT(name, _1) DECLARE_ROM_SEGMENT(name)
|
||||
#define DEFINE_OBJECT_NULL(_0, _1)
|
||||
#define DEFINE_OBJECT_UNSET(_0)
|
||||
|
||||
#include "tables/object_table.h"
|
||||
|
||||
#undef DEFINE_OBJECT
|
||||
#undef DEFINE_OBJECT_NULL
|
||||
#undef DEFINE_OBJECT_UNSET
|
||||
|
||||
// Object Table definition
|
||||
#define DEFINE_OBJECT(name, _1) ROM_FILE(name),
|
||||
#define DEFINE_OBJECT_NULL(name, _1) ROM_FILE_EMPTY(name),
|
||||
#define DEFINE_OBJECT_UNSET(_0) { 0 },
|
||||
|
||||
RomFile gObjectTable[] = {
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE(gameplay_keep),
|
||||
ROM_FILE(gameplay_field_keep),
|
||||
ROM_FILE(gameplay_dangeon_keep),
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE(object_human),
|
||||
ROM_FILE(object_okuta),
|
||||
ROM_FILE(object_crow),
|
||||
ROM_FILE(object_poh),
|
||||
ROM_FILE(object_dy_obj),
|
||||
ROM_FILE(object_wallmaster),
|
||||
ROM_FILE(object_dodongo),
|
||||
ROM_FILE(object_firefly),
|
||||
ROM_FILE(object_box),
|
||||
ROM_FILE(object_fire),
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE(object_bubble),
|
||||
ROM_FILE(object_niw),
|
||||
ROM_FILE(object_link_boy),
|
||||
ROM_FILE(object_link_child),
|
||||
ROM_FILE(object_tite),
|
||||
ROM_FILE(object_reeba),
|
||||
ROM_FILE(object_peehat),
|
||||
ROM_FILE(object_kingdodongo),
|
||||
ROM_FILE(object_horse),
|
||||
ROM_FILE(object_zf),
|
||||
ROM_FILE(object_goma),
|
||||
ROM_FILE(object_zl1),
|
||||
ROM_FILE(object_gol),
|
||||
ROM_FILE(object_dodojr),
|
||||
ROM_FILE(object_torch2),
|
||||
ROM_FILE(object_bl),
|
||||
ROM_FILE(object_tp),
|
||||
ROM_FILE(object_oA1),
|
||||
ROM_FILE(object_st),
|
||||
ROM_FILE(object_bw),
|
||||
ROM_FILE(object_ei),
|
||||
ROM_FILE(object_horse_normal),
|
||||
ROM_FILE(object_oB1),
|
||||
ROM_FILE(object_o_anime),
|
||||
ROM_FILE(object_spot04_objects),
|
||||
ROM_FILE(object_ddan_objects),
|
||||
ROM_FILE(object_hidan_objects),
|
||||
ROM_FILE(object_horse_ganon),
|
||||
ROM_FILE(object_oA2),
|
||||
ROM_FILE(object_spot00_objects),
|
||||
ROM_FILE(object_mb),
|
||||
ROM_FILE(object_bombf),
|
||||
ROM_FILE(object_sk2),
|
||||
ROM_FILE(object_oE1),
|
||||
ROM_FILE(object_oE_anime),
|
||||
ROM_FILE(object_oE2),
|
||||
ROM_FILE(object_ydan_objects),
|
||||
ROM_FILE(object_gnd),
|
||||
ROM_FILE(object_am),
|
||||
ROM_FILE(object_dekubaba),
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE(object_oA3),
|
||||
ROM_FILE(object_oA4),
|
||||
ROM_FILE(object_oA5),
|
||||
ROM_FILE(object_oA6),
|
||||
ROM_FILE(object_oA7),
|
||||
ROM_FILE(object_jj),
|
||||
ROM_FILE(object_oA8),
|
||||
ROM_FILE(object_oA9),
|
||||
ROM_FILE(object_oB2),
|
||||
ROM_FILE(object_oB3),
|
||||
ROM_FILE(object_oB4),
|
||||
ROM_FILE(object_horse_zelda),
|
||||
ROM_FILE(object_opening_demo1),
|
||||
ROM_FILE(object_warp1),
|
||||
ROM_FILE(object_b_heart),
|
||||
ROM_FILE(object_dekunuts),
|
||||
ROM_FILE(object_oE3),
|
||||
ROM_FILE(object_oE4),
|
||||
ROM_FILE(object_menkuri_objects),
|
||||
ROM_FILE(object_oE5),
|
||||
ROM_FILE(object_oE6),
|
||||
ROM_FILE(object_oE7),
|
||||
ROM_FILE(object_oE8),
|
||||
ROM_FILE(object_oE9),
|
||||
ROM_FILE(object_oE10),
|
||||
ROM_FILE(object_oE11),
|
||||
ROM_FILE(object_oE12),
|
||||
ROM_FILE(object_vali),
|
||||
ROM_FILE(object_oA10),
|
||||
ROM_FILE(object_oA11),
|
||||
ROM_FILE(object_mizu_objects),
|
||||
ROM_FILE(object_fhg),
|
||||
ROM_FILE(object_ossan),
|
||||
ROM_FILE(object_mori_hineri1),
|
||||
ROM_FILE(object_Bb),
|
||||
ROM_FILE(object_toki_objects),
|
||||
ROM_FILE(object_yukabyun),
|
||||
ROM_FILE(object_zl2),
|
||||
ROM_FILE(object_mjin),
|
||||
ROM_FILE(object_mjin_flash),
|
||||
ROM_FILE(object_mjin_dark),
|
||||
ROM_FILE(object_mjin_flame),
|
||||
ROM_FILE(object_mjin_ice),
|
||||
ROM_FILE(object_mjin_soul),
|
||||
ROM_FILE(object_mjin_wind),
|
||||
ROM_FILE(object_mjin_oka),
|
||||
ROM_FILE(object_haka_objects),
|
||||
ROM_FILE(object_spot06_objects),
|
||||
ROM_FILE(object_ice_objects),
|
||||
ROM_FILE(object_relay_objects),
|
||||
ROM_FILE(object_po_field),
|
||||
ROM_FILE(object_po_composer),
|
||||
ROM_FILE(object_mori_hineri1a),
|
||||
ROM_FILE(object_mori_hineri2),
|
||||
ROM_FILE(object_mori_hineri2a),
|
||||
ROM_FILE(object_mori_objects),
|
||||
ROM_FILE(object_mori_tex),
|
||||
ROM_FILE(object_spot08_obj),
|
||||
ROM_FILE(object_warp2),
|
||||
ROM_FILE(object_hata),
|
||||
ROM_FILE(object_bird),
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE(object_wood02),
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE(object_lightbox),
|
||||
ROM_FILE(object_pu_box),
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE(object_trap),
|
||||
ROM_FILE(object_vase),
|
||||
ROM_FILE(object_im),
|
||||
ROM_FILE(object_ta),
|
||||
ROM_FILE(object_tk),
|
||||
ROM_FILE(object_xc),
|
||||
ROM_FILE(object_vm),
|
||||
ROM_FILE(object_bv),
|
||||
ROM_FILE(object_hakach_objects),
|
||||
ROM_FILE(object_efc_crystal_light),
|
||||
ROM_FILE(object_efc_fire_ball),
|
||||
ROM_FILE(object_efc_flash),
|
||||
ROM_FILE(object_efc_lgt_shower),
|
||||
ROM_FILE(object_efc_star_field),
|
||||
ROM_FILE(object_god_lgt),
|
||||
ROM_FILE(object_light_ring),
|
||||
ROM_FILE(object_triforce_spot),
|
||||
ROM_FILE(object_bdan_objects),
|
||||
ROM_FILE(object_sd),
|
||||
ROM_FILE(object_rd),
|
||||
ROM_FILE(object_po_sisters),
|
||||
ROM_FILE(object_heavy_object),
|
||||
ROM_FILE(object_gndd),
|
||||
ROM_FILE(object_fd),
|
||||
ROM_FILE(object_du),
|
||||
ROM_FILE(object_fw),
|
||||
ROM_FILE(object_medal),
|
||||
ROM_FILE(object_horse_link_child),
|
||||
ROM_FILE(object_spot02_objects),
|
||||
ROM_FILE(object_haka),
|
||||
ROM_FILE(object_ru1),
|
||||
ROM_FILE(object_syokudai),
|
||||
ROM_FILE(object_fd2),
|
||||
ROM_FILE(object_dh),
|
||||
ROM_FILE(object_rl),
|
||||
ROM_FILE(object_efc_tw),
|
||||
ROM_FILE(object_demo_tre_lgt),
|
||||
ROM_FILE(object_gi_key),
|
||||
ROM_FILE(object_mir_ray),
|
||||
ROM_FILE(object_brob),
|
||||
ROM_FILE(object_gi_jewel),
|
||||
ROM_FILE(object_spot09_obj),
|
||||
ROM_FILE(object_spot18_obj),
|
||||
ROM_FILE(object_bdoor),
|
||||
ROM_FILE(object_spot17_obj),
|
||||
ROM_FILE(object_shop_dungen),
|
||||
ROM_FILE(object_nb),
|
||||
ROM_FILE(object_mo),
|
||||
ROM_FILE(object_sb),
|
||||
ROM_FILE(object_gi_melody),
|
||||
ROM_FILE(object_gi_heart),
|
||||
ROM_FILE(object_gi_compass),
|
||||
ROM_FILE(object_gi_bosskey),
|
||||
ROM_FILE(object_gi_medal),
|
||||
ROM_FILE(object_gi_nuts),
|
||||
ROM_FILE(object_sa),
|
||||
ROM_FILE(object_gi_hearts),
|
||||
ROM_FILE(object_gi_arrowcase),
|
||||
ROM_FILE(object_gi_bombpouch),
|
||||
ROM_FILE(object_in),
|
||||
ROM_FILE(object_tr),
|
||||
ROM_FILE(object_spot16_obj),
|
||||
ROM_FILE(object_oE1s),
|
||||
ROM_FILE(object_oE4s),
|
||||
ROM_FILE(object_os_anime),
|
||||
ROM_FILE(object_gi_bottle),
|
||||
ROM_FILE(object_gi_stick),
|
||||
ROM_FILE(object_gi_map),
|
||||
ROM_FILE(object_oF1d_map),
|
||||
ROM_FILE(object_ru2),
|
||||
ROM_FILE(object_gi_shield_1),
|
||||
ROM_FILE(object_dekujr),
|
||||
ROM_FILE(object_gi_magicpot),
|
||||
ROM_FILE(object_gi_bomb_1),
|
||||
ROM_FILE(object_oF1s),
|
||||
ROM_FILE(object_ma2),
|
||||
ROM_FILE(object_gi_purse),
|
||||
ROM_FILE(object_hni),
|
||||
ROM_FILE(object_tw),
|
||||
ROM_FILE(object_rr),
|
||||
ROM_FILE(object_bxa),
|
||||
ROM_FILE(object_anubice),
|
||||
ROM_FILE(object_gi_gerudo),
|
||||
ROM_FILE(object_gi_arrow),
|
||||
ROM_FILE(object_gi_bomb_2),
|
||||
ROM_FILE(object_gi_egg),
|
||||
ROM_FILE(object_gi_scale),
|
||||
ROM_FILE(object_gi_shield_2),
|
||||
ROM_FILE(object_gi_hookshot),
|
||||
ROM_FILE(object_gi_ocarina),
|
||||
ROM_FILE(object_gi_milk),
|
||||
ROM_FILE(object_ma1),
|
||||
ROM_FILE(object_ganon),
|
||||
ROM_FILE(object_sst),
|
||||
ROM_FILE_EMPTY(object_ny), // unused duplicate with size 0
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE(object_ny),
|
||||
ROM_FILE(object_fr),
|
||||
ROM_FILE(object_gi_pachinko),
|
||||
ROM_FILE(object_gi_boomerang),
|
||||
ROM_FILE(object_gi_bow),
|
||||
ROM_FILE(object_gi_glasses),
|
||||
ROM_FILE(object_gi_liquid),
|
||||
ROM_FILE(object_ani),
|
||||
ROM_FILE(object_demo_6k),
|
||||
ROM_FILE(object_gi_shield_3),
|
||||
ROM_FILE(object_gi_letter),
|
||||
ROM_FILE(object_spot15_obj),
|
||||
ROM_FILE(object_jya_obj),
|
||||
ROM_FILE(object_gi_clothes),
|
||||
ROM_FILE(object_gi_bean),
|
||||
ROM_FILE(object_gi_fish),
|
||||
ROM_FILE(object_gi_saw),
|
||||
ROM_FILE(object_gi_hammer),
|
||||
ROM_FILE(object_gi_grass),
|
||||
ROM_FILE(object_gi_longsword),
|
||||
ROM_FILE(object_spot01_objects),
|
||||
ROM_FILE_EMPTY(object_md), // unused duplicate with size 0
|
||||
ROM_FILE(object_md),
|
||||
ROM_FILE(object_km1),
|
||||
ROM_FILE(object_kw1),
|
||||
ROM_FILE(object_zo),
|
||||
ROM_FILE(object_kz),
|
||||
ROM_FILE(object_umajump),
|
||||
ROM_FILE(object_masterkokiri),
|
||||
ROM_FILE(object_masterkokirihead),
|
||||
ROM_FILE(object_mastergolon),
|
||||
ROM_FILE(object_masterzoora),
|
||||
ROM_FILE(object_aob),
|
||||
ROM_FILE(object_ik),
|
||||
ROM_FILE(object_ahg),
|
||||
ROM_FILE(object_cne),
|
||||
ROM_FILE(object_gi_niwatori),
|
||||
ROM_FILE(object_skj),
|
||||
ROM_FILE(object_gi_bottle_letter),
|
||||
ROM_FILE(object_bji),
|
||||
ROM_FILE(object_bba),
|
||||
ROM_FILE(object_gi_ocarina_0),
|
||||
ROM_FILE(object_ds),
|
||||
ROM_FILE(object_ane),
|
||||
ROM_FILE(object_boj),
|
||||
ROM_FILE(object_spot03_object),
|
||||
ROM_FILE(object_spot07_object),
|
||||
ROM_FILE(object_fz),
|
||||
ROM_FILE(object_bob),
|
||||
ROM_FILE(object_ge1),
|
||||
ROM_FILE(object_yabusame_point),
|
||||
ROM_FILE(object_gi_boots_2),
|
||||
ROM_FILE(object_gi_seed),
|
||||
ROM_FILE(object_gnd_magic),
|
||||
ROM_FILE(object_d_elevator),
|
||||
ROM_FILE(object_d_hsblock),
|
||||
ROM_FILE(object_d_lift),
|
||||
ROM_FILE(object_mamenoki),
|
||||
ROM_FILE(object_goroiwa),
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE(object_toryo),
|
||||
ROM_FILE(object_daiku),
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE(object_nwc),
|
||||
ROM_FILE(object_blkobj),
|
||||
ROM_FILE(object_gm),
|
||||
ROM_FILE(object_ms),
|
||||
ROM_FILE(object_hs),
|
||||
ROM_FILE(object_ingate),
|
||||
ROM_FILE(object_lightswitch),
|
||||
ROM_FILE(object_kusa),
|
||||
ROM_FILE(object_tsubo),
|
||||
ROM_FILE(object_gi_gloves),
|
||||
ROM_FILE(object_gi_coin),
|
||||
ROM_FILE(object_kanban),
|
||||
ROM_FILE(object_gjyo_objects),
|
||||
ROM_FILE(object_owl),
|
||||
ROM_FILE(object_mk),
|
||||
ROM_FILE(object_fu),
|
||||
ROM_FILE(object_gi_ki_tan_mask),
|
||||
ROM_FILE(object_gi_redead_mask),
|
||||
ROM_FILE(object_gi_skj_mask),
|
||||
ROM_FILE(object_gi_rabit_mask),
|
||||
ROM_FILE(object_gi_truth_mask),
|
||||
ROM_FILE(object_ganon_objects),
|
||||
ROM_FILE(object_siofuki),
|
||||
ROM_FILE(object_stream),
|
||||
ROM_FILE(object_mm),
|
||||
ROM_FILE(object_fa),
|
||||
ROM_FILE(object_os),
|
||||
ROM_FILE(object_gi_eye_lotion),
|
||||
ROM_FILE(object_gi_powder),
|
||||
ROM_FILE(object_gi_mushroom),
|
||||
ROM_FILE(object_gi_ticketstone),
|
||||
ROM_FILE(object_gi_brokensword),
|
||||
ROM_FILE(object_js),
|
||||
ROM_FILE(object_cs),
|
||||
ROM_FILE(object_gi_prescription),
|
||||
ROM_FILE(object_gi_bracelet),
|
||||
ROM_FILE(object_gi_soldout),
|
||||
ROM_FILE(object_gi_frog),
|
||||
ROM_FILE(object_mag),
|
||||
ROM_FILE(object_door_gerudo),
|
||||
ROM_FILE(object_gt),
|
||||
ROM_FILE(object_efc_erupc),
|
||||
ROM_FILE(object_zl2_anime1),
|
||||
ROM_FILE(object_zl2_anime2),
|
||||
ROM_FILE(object_gi_golonmask),
|
||||
ROM_FILE(object_gi_zoramask),
|
||||
ROM_FILE(object_gi_gerudomask),
|
||||
ROM_FILE(object_ganon2),
|
||||
ROM_FILE(object_ka),
|
||||
ROM_FILE(object_ts),
|
||||
ROM_FILE(object_zg),
|
||||
ROM_FILE(object_gi_hoverboots),
|
||||
ROM_FILE(object_gi_m_arrow),
|
||||
ROM_FILE(object_ds2),
|
||||
ROM_FILE(object_ec),
|
||||
ROM_FILE(object_fish),
|
||||
ROM_FILE(object_gi_sutaru),
|
||||
ROM_FILE(object_gi_goddess),
|
||||
ROM_FILE(object_ssh),
|
||||
ROM_FILE(object_bigokuta),
|
||||
ROM_FILE(object_bg),
|
||||
ROM_FILE(object_spot05_objects),
|
||||
ROM_FILE(object_spot12_obj),
|
||||
ROM_FILE(object_bombiwa),
|
||||
ROM_FILE(object_hintnuts),
|
||||
ROM_FILE(object_rs),
|
||||
ROM_FILE(object_spot00_break),
|
||||
ROM_FILE(object_gla),
|
||||
ROM_FILE(object_shopnuts),
|
||||
ROM_FILE(object_geldb),
|
||||
ROM_FILE(object_gr),
|
||||
ROM_FILE(object_dog),
|
||||
ROM_FILE(object_jya_iron),
|
||||
ROM_FILE(object_jya_door),
|
||||
ROM_FILE_UNSET,
|
||||
ROM_FILE(object_spot11_obj),
|
||||
ROM_FILE(object_kibako2),
|
||||
ROM_FILE(object_dns),
|
||||
ROM_FILE(object_dnk),
|
||||
ROM_FILE(object_gi_fire),
|
||||
ROM_FILE(object_gi_insect),
|
||||
ROM_FILE(object_gi_butterfly),
|
||||
ROM_FILE(object_gi_ghost),
|
||||
ROM_FILE(object_gi_soul),
|
||||
ROM_FILE(object_bowl),
|
||||
ROM_FILE(object_demo_kekkai),
|
||||
ROM_FILE(object_efc_doughnut),
|
||||
ROM_FILE(object_gi_dekupouch),
|
||||
ROM_FILE(object_ganon_anime1),
|
||||
ROM_FILE(object_ganon_anime2),
|
||||
ROM_FILE(object_ganon_anime3),
|
||||
ROM_FILE(object_gi_rupy),
|
||||
ROM_FILE(object_spot01_matoya),
|
||||
ROM_FILE(object_spot01_matoyab),
|
||||
ROM_FILE(object_mu),
|
||||
ROM_FILE(object_wf),
|
||||
ROM_FILE(object_skb),
|
||||
ROM_FILE(object_gj),
|
||||
ROM_FILE(object_geff),
|
||||
ROM_FILE(object_haka_door),
|
||||
ROM_FILE(object_gs),
|
||||
ROM_FILE(object_ps),
|
||||
ROM_FILE(object_bwall),
|
||||
ROM_FILE(object_cow),
|
||||
ROM_FILE(object_cob),
|
||||
ROM_FILE(object_gi_sword_1),
|
||||
ROM_FILE(object_door_killer),
|
||||
ROM_FILE(object_ouke_haka),
|
||||
ROM_FILE(object_timeblock),
|
||||
ROM_FILE(object_zl4),
|
||||
#include "tables/object_table.h"
|
||||
};
|
||||
|
||||
#undef DEFINE_OBJECT
|
||||
#undef DEFINE_OBJECT_NULL
|
||||
#undef DEFINE_OBJECT_UNSET
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue