From f3c930917bca9bcc5a0c9e53a82d8e4ce8f7e6e9 Mon Sep 17 00:00:00 2001 From: Roman971 <32455037+Roman971@users.noreply.github.com> Date: Mon, 30 Aug 2021 03:24:32 +0200 Subject: 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 --- src/code/z_actor_dlftbls.c | 521 +++----------------------------- src/code/z_effect_soft_sprite_dlftbls.c | 80 ++--- src/code/z_scene.c | 427 ++------------------------ 3 files changed, 96 insertions(+), 932 deletions(-) (limited to 'src/code') diff --git a/src/code/z_actor_dlftbls.c b/src/code/z_actor_dlftbls.c index 7d26cb86a..bb70385d9 100644 --- a/src/code/z_actor_dlftbls.c +++ b/src/code/z_actor_dlftbls.c @@ -1,492 +1,51 @@ #include "global.h" -#include "initvars.h" -#define ACTOR_OVERLAY(name, allocType) \ - { \ - (u32) _ovl_##name##SegmentRomStart, (u32)_ovl_##name##SegmentRomEnd, _ovl_##name##SegmentStart, \ - _ovl_##name##SegmentEnd, NULL, &name##_InitVars, #name, allocType, 0 \ - } +// Linker symbol declarations (used in the table below) +#define DEFINE_ACTOR(name, _1, _2) DECLARE_OVERLAY_SEGMENT(name) +#define DEFINE_ACTOR_INTERNAL(_0, _1, _2) +#define DEFINE_ACTOR_UNSET(_0) + +#include "tables/actor_table.h" + +#undef DEFINE_ACTOR +#undef DEFINE_ACTOR_INTERNAL +#undef DEFINE_ACTOR_UNSET + +// Init Vars declarations (also used in the table below) +#define DEFINE_ACTOR(name, _1, _2) extern ActorInit name##_InitVars; +#define DEFINE_ACTOR_INTERNAL(name, _1, _2) extern ActorInit name##_InitVars; +#define DEFINE_ACTOR_UNSET(_0) -#define ACTOR_OVERLAY_INTERNAL(name, allocType) \ - { 0, 0, NULL, NULL, NULL, &name##_InitVars, #name, allocType, 0 } +#include "tables/actor_table.h" -#define ACTOR_OVERLAY_UNSET \ - { 0 } +#undef DEFINE_ACTOR +#undef DEFINE_ACTOR_INTERNAL +#undef DEFINE_ACTOR_UNSET + +// Actor Overlay Table definition +#define DEFINE_ACTOR(name, _1, allocType) \ + { (u32)_ovl_##name##SegmentRomStart, \ + (u32)_ovl_##name##SegmentRomEnd, \ + _ovl_##name##SegmentStart, \ + _ovl_##name##SegmentEnd, \ + NULL, \ + &name##_InitVars, \ + #name, \ + allocType, \ + 0 }, + +#define DEFINE_ACTOR_INTERNAL(name, _1, allocType) { 0, 0, NULL, NULL, NULL, &name##_InitVars, #name, allocType, 0 }, + +#define DEFINE_ACTOR_UNSET(_0) { 0 }, ActorOverlay gActorOverlayTable[] = { - ACTOR_OVERLAY_INTERNAL(Player, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Test, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_GirlA, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Part, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Light, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Door, ALLOCTYPE_PERMANENT), - ACTOR_OVERLAY(En_Box, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Dy_Yoseizo, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Hidan_Firewall, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Poh, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Okuta, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Ydan_Sp, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Bom, ALLOCTYPE_PERMANENT), - ACTOR_OVERLAY(En_Wallmas, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Dodongo, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Firefly, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Horse, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_INTERNAL(En_Item00, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Arrow, ALLOCTYPE_PERMANENT), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Elf, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Niw, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Tite, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Reeba, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Peehat, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Butte, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Insect, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Fish, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Holl, ALLOCTYPE_PERMANENT), - ACTOR_OVERLAY(En_Scene_Change, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Zf, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Hata, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Boss_Dodongo, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Boss_Goma, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Zl1, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Viewer, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Goma, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Pushbox, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Bubble, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Door_Shutter, ALLOCTYPE_PERMANENT), - ACTOR_OVERLAY(En_Dodojr, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Bdfire, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Boom, ALLOCTYPE_PERMANENT), - ACTOR_OVERLAY(En_Torch2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Bili, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Tp, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_St, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Bw, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_INTERNAL(En_A_Obj, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Eiyer, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_River_Sound, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Horse_Normal, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ossan, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Treemouth, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Dodoago, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Hidan_Dalm, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Hidan_Hrock, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Horse_Ganon, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Hidan_Rock, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Hidan_Rsekizou, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Hidan_Sekizou, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Hidan_Sima, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Hidan_Syoku, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Xc, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Hidan_Curtain, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot00_Hanebasi, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Mb, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Bombf, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Zl2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Hidan_Fslift, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_OE2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Ydan_Hasi, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Ydan_Maruta, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Boss_Ganondrof, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Am, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Dekubaba, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_M_Fire1, ALLOCTYPE_PERMANENT), - ACTOR_OVERLAY(En_M_Thunder, ALLOCTYPE_PERMANENT), - ACTOR_OVERLAY(Bg_Ddan_Jd, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Breakwall, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Jj, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Horse_Zelda, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Ddan_Kd, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Door_Warp1, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Syokudai, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Item_B_Heart, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Dekunuts, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Menkuri_Kaiten, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Menkuri_Eye, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Vali, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Mizu_Movebg, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Mizu_Water, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Arms_Hook, ALLOCTYPE_PERMANENT), - ACTOR_OVERLAY(En_fHG, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Mori_Hineri, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Bb, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Toki_Hikari, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Yukabyun, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Toki_Swd, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Fhg_Fire, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Mjin, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Hidan_Kousi, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Door_Toki, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Hidan_Hamstep, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Bird, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Wood02, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Lightbox, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Pu_box, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Trap, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Arow_Trap, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Vase, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Ta, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Tk, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Mori_Bigst, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Mori_Elevator, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Mori_Kaitenkabe, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Mori_Rakkatenjo, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Vm, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Demo_Effect, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Demo_Kankyo, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Hidan_Fwbig, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Floormas, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Heishi1, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Rd, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Po_Sisters, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Heavy_Block, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Po_Event, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Mure, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Sw, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Boss_Fd, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Object_Kankyo, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Du, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Fd, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Horse_Link_Child, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Door_Ana, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot02_Objects, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Haka, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Magic_Wind, ALLOCTYPE_ABSOLUTE), - ACTOR_OVERLAY(Magic_Fire, ALLOCTYPE_ABSOLUTE), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Ru1, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Boss_Fd2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Fd_Fire, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Dh, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Dha, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Rl, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Encount1, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Demo_Du, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Demo_Im, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Demo_Tre_Lgt, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Fw, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Vb_Sima, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Vb_Ball, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Haka_Megane, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Haka_MeganeBG, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Haka_Ship, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Haka_Sgami, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Heishi2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Encount2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Fire_Rock, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Brob, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Mir_Ray, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot09_Obj, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot18_Obj, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Boss_Va, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Haka_Tubo, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Haka_Trap, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Haka_Huta, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Haka_Zou, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot17_Funen, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Syateki_Itm, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Syateki_Man, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Tana, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Nb, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Boss_Mo, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Sb, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Bigokuta, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Karebaba, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Bdan_Objects, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Demo_Sa, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Demo_Go, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_In, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Tr, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot16_Bombstone, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(Bg_Hidan_Kowarerukabe, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Bombwall, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot08_Iceblock, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ru2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Dekujr, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Mizu_Uzu, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot06_Objects, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Ice_Objects, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Haka_Water, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Ma2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Bom_Chu, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Horse_Game_Check, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Boss_Tw, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Rr, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ba, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Bx, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Anubice, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Anubice_Fire, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Mori_Hashigo, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Mori_Hashira4, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Mori_Idomizu, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot16_Doughnut, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Bdan_Switch, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ma1, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Boss_Ganon, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Boss_Sst, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Ny, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Fr, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Item_Shield, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Ice_Shelter, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ice_Hono, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Item_Ocarina, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(Magic_Dark, ALLOCTYPE_ABSOLUTE), - ACTOR_OVERLAY(Demo_6K, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Anubice_Tag, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Haka_Gate, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot15_Saku, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Jya_Goroiwa, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Jya_Zurerukabe, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(Bg_Jya_Cobra, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Jya_Kanaami, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Fishing, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Oshihiki, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Gate_Shutter, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Eff_Dust, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot01_Fusya, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot01_Idohashira, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot01_Idomizu, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Po_Syokudai, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Ganon_Otyuka, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot15_Rrbox, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Umajump, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(Arrow_Fire, ALLOCTYPE_ABSOLUTE), - ACTOR_OVERLAY(Arrow_Ice, ALLOCTYPE_ABSOLUTE), - ACTOR_OVERLAY(Arrow_Light, ALLOCTYPE_ABSOLUTE), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(Item_Etcetera, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Kibako, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Tsubo, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Wonder_Item, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ik, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Demo_Ik, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Skj, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Skjneedle, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_G_Switch, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Demo_Ext, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Demo_Shd, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Dns, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Elf_Msg, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Honotrap, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Tubo_Trap, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Ice_Poly, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot03_Taki, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot07_Taki, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Fz, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Po_Relay, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Relay_Objects, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Diving_Game, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Kusa, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Bean, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Bombiwa, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(Obj_Switch, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Elevator, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Lift, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Hsblock, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Okarina_Tag, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Yabusame_Mark, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Goroiwa, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ex_Ruppy, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Toryo, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Daiku, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Nwc, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Blkobj, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Item_Inbox, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ge1, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Blockstop, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Sda, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Clear_Tag, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Niw_Lady, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Gm, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ms, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Hs, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Ingate, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Kanban, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Heishi3, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Syateki_Niw, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Attack_Niw, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot01_Idosoko, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Sa, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Wonder_Talk, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Gjyo_Bridge, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ds, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Mk, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Bom_Bowl_Man, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Bom_Bowl_Pit, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Owl, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ishi, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Hana, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Lightswitch, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Mure2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Go, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Fu, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Changer, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Jya_Megami, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Jya_Lift, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Jya_Bigmirror, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Jya_Bombchuiwa, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Jya_Amishutter, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Jya_Bombiwa, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot18_Basket, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Ganon_Organ, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Siofuki, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Stream, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Mm, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ko, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Kz, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Weather_Tag, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Sst_Floor, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ani, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ex_Item, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Jya_Ironobj, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Js, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Jsjutan, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Cs, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Md, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Hy, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ganon_Mant, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Okarina_Effect, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Mag, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Door_Gerudo, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Elf_Msg2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Demo_Gt, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Po_Field, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Efc_Erupc, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Zg, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Heishi4, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Zl3, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Boss_Ganon2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Kakasi, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Takara_Man, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Makeoshihiki, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Oceff_Spot, ALLOCTYPE_ABSOLUTE), - ACTOR_OVERLAY(End_Title, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(En_Torch, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Demo_Ec, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Shot_Sun, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Dy_Extra, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Wonder_Talk2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ge2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Roomtimer, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ssh, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Sth, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Oceff_Wipe, ALLOCTYPE_ABSOLUTE), - ACTOR_OVERLAY(Oceff_Storm, ALLOCTYPE_ABSOLUTE), - ACTOR_OVERLAY(En_Weiyer, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot05_Soko, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Jya_1flift, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Jya_Haheniron, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot12_Gate, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot12_Saku, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Hintnuts, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Nutsball, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot00_Break, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Shopnuts, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_It, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_GeldB, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Oceff_Wipe2, ALLOCTYPE_ABSOLUTE), - ACTOR_OVERLAY(Oceff_Wipe3, ALLOCTYPE_ABSOLUTE), - ACTOR_OVERLAY(En_Niw_Girl, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Dog, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Si, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot01_Objects2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Comb, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot11_Bakudankabe, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Kibako2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Dnt_Demo, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Dnt_Jiji, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Dnt_Nomal, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Guest, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Bom_Guard, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Hs2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Demo_Kekkai, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot08_Bakudankabe, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot17_Bakudankabe, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY_UNSET, - ACTOR_OVERLAY(Obj_Mure3, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Tg, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Mu, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Go2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Wf, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Skb, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Demo_Gj, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Demo_Geff, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Gnd_Firemeiro, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Gnd_Darkmeiro, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Gnd_Soulmeiro, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Gnd_Nisekabe, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Gnd_Iceblock, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Gb, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Gs, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Mizu_Bwall, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Mizu_Shutter, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Daiku_Kakariko, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Bowl_Wall, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Wall_Tubo, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Po_Desert, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Crow, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Door_Killer, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot11_Oasis, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot18_Futa, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Spot18_Shutter, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ma3, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Cow, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Ice_Turara, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Ice_Shutter, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Kakasi2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Kakasi3, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Oceff_Wipe4, ALLOCTYPE_ABSOLUTE), - ACTOR_OVERLAY(En_Eg, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Menkuri_Nisekabe, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Zo, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Makekinsuta, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Ge3, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Timeblock, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Hamishi, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Zl4, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(En_Mm2, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Bg_Jya_Block, ALLOCTYPE_NORMAL), - ACTOR_OVERLAY(Obj_Warp2block, ALLOCTYPE_NORMAL), +#include "tables/actor_table.h" }; +#undef DEFINE_ACTOR +#undef DEFINE_ACTOR_INTERNAL +#undef DEFINE_ACTOR_UNSET + s32 gMaxActorId = 0; static FaultClient sFaultClient; diff --git a/src/code/z_effect_soft_sprite_dlftbls.c b/src/code/z_effect_soft_sprite_dlftbls.c index bc7ec83b9..236893183 100644 --- a/src/code/z_effect_soft_sprite_dlftbls.c +++ b/src/code/z_effect_soft_sprite_dlftbls.c @@ -1,54 +1,40 @@ #include "global.h" -#include "initvars.h" -#define EFFECT_SS_OVERLAY(name) \ - { \ - (u32) _ovl_##name##SegmentRomStart, (u32)_ovl_##name##SegmentRomEnd, _ovl_##name##SegmentStart, \ - _ovl_##name##SegmentEnd, NULL, &name##_InitVars, 1, \ - } +// Linker symbol declarations (used in the table below) +#define DEFINE_EFFECT_SS(name, _1) DECLARE_OVERLAY_SEGMENT(name) +#define DEFINE_EFFECT_SS_UNSET(_0) -#define EFFECT_SS_OVERLAY_INTERNAL(name) \ - { 0, 0, NULL, NULL, NULL, &name##_InitVars, 1 } +#include "tables/effect_ss_table.h" -#define EFFECT_SS_OVERLAY_UNSET \ - { 0 } +#undef DEFINE_EFFECT_SS +#undef DEFINE_EFFECT_SS_UNSET + +// Init Vars declarations (also used in the table below) +#define DEFINE_EFFECT_SS(name, _1) extern EffectSsInit name##_InitVars; +#define DEFINE_EFFECT_SS_UNSET(_0) + +#include "tables/effect_ss_table.h" + +#undef DEFINE_EFFECT_SS +#undef DEFINE_EFFECT_SS_UNSET + +// Effect SS Overlay Table definition +#define DEFINE_EFFECT_SS(name, _1) \ + { \ + (u32)_ovl_##name##SegmentRomStart, \ + (u32)_ovl_##name##SegmentRomEnd, \ + _ovl_##name##SegmentStart, \ + _ovl_##name##SegmentEnd, \ + NULL, \ + &name##_InitVars, \ + 1, \ + }, + +#define DEFINE_EFFECT_SS_UNSET(_0) { 0 }, EffectSsOverlay gEffectSsOverlayTable[] = { - EFFECT_SS_OVERLAY(Effect_Ss_Dust), - EFFECT_SS_OVERLAY(Effect_Ss_KiraKira), - EFFECT_SS_OVERLAY(Effect_Ss_Bomb), - EFFECT_SS_OVERLAY(Effect_Ss_Bomb2), - EFFECT_SS_OVERLAY(Effect_Ss_Blast), - EFFECT_SS_OVERLAY(Effect_Ss_G_Spk), - EFFECT_SS_OVERLAY(Effect_Ss_D_Fire), - EFFECT_SS_OVERLAY(Effect_Ss_Bubble), - EFFECT_SS_OVERLAY_UNSET, - EFFECT_SS_OVERLAY(Effect_Ss_G_Ripple), - EFFECT_SS_OVERLAY(Effect_Ss_G_Splash), - EFFECT_SS_OVERLAY(Effect_Ss_G_Magma), - EFFECT_SS_OVERLAY(Effect_Ss_G_Fire), - EFFECT_SS_OVERLAY(Effect_Ss_Lightning), - EFFECT_SS_OVERLAY(Effect_Ss_Dt_Bubble), - EFFECT_SS_OVERLAY(Effect_Ss_Hahen), - EFFECT_SS_OVERLAY(Effect_Ss_Stick), - EFFECT_SS_OVERLAY(Effect_Ss_Sibuki), - EFFECT_SS_OVERLAY(Effect_Ss_Sibuki2), - EFFECT_SS_OVERLAY(Effect_Ss_G_Magma2), - EFFECT_SS_OVERLAY(Effect_Ss_Stone1), - EFFECT_SS_OVERLAY(Effect_Ss_HitMark), - EFFECT_SS_OVERLAY(Effect_Ss_Fhg_Flash), - EFFECT_SS_OVERLAY(Effect_Ss_K_Fire), - EFFECT_SS_OVERLAY(Effect_Ss_Solder_Srch_Ball), - EFFECT_SS_OVERLAY(Effect_Ss_Kakera), - EFFECT_SS_OVERLAY(Effect_Ss_Ice_Piece), - EFFECT_SS_OVERLAY(Effect_Ss_En_Ice), - EFFECT_SS_OVERLAY(Effect_Ss_Fire_Tail), - EFFECT_SS_OVERLAY(Effect_Ss_En_Fire), - EFFECT_SS_OVERLAY(Effect_Ss_Extra), - EFFECT_SS_OVERLAY(Effect_Ss_Fcircle), - EFFECT_SS_OVERLAY(Effect_Ss_Dead_Db), - EFFECT_SS_OVERLAY(Effect_Ss_Dead_Dd), - EFFECT_SS_OVERLAY(Effect_Ss_Dead_Ds), - EFFECT_SS_OVERLAY(Effect_Ss_Dead_Sound), - EFFECT_SS_OVERLAY(Effect_Ss_Ice_Smoke), +#include "tables/effect_ss_table.h" }; + +#undef DEFINE_EFFECT_SS +#undef DEFINE_EFFECT_SS_UNSET diff --git a/src/code/z_scene.c b/src/code/z_scene.c index 7cd3d8c39..9920a27c0 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -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 -- cgit v1.2.3