diff --git a/include/tables/actor_table.h b/include/tables/actor_table.h index 9019e2b806..38adcf6a7e 100644 --- a/include/tables/actor_table.h +++ b/include/tables/actor_table.h @@ -11,6 +11,7 @@ * * DEFINE_ACTOR_UNSET is needed to define empty entries from the original game */ +#include "versions.h" /* 0x000 */ DEFINE_ACTOR_INTERNAL(Player, ACTOR_PLAYER, ALLOCTYPE_NORMAL, "Player") /* 0x001 */ DEFINE_ACTOR(En_Test, ACTOR_EN_TEST, ALLOCTYPE_NORMAL, "En_Test") /* 0x002 */ DEFINE_ACTOR(En_GirlA, ACTOR_EN_GIRLA, ALLOCTYPE_NORMAL, "En_GirlA") @@ -89,7 +90,11 @@ /* 0x04B */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_4B) /* 0x04C */ DEFINE_ACTOR(En_Rd, ACTOR_EN_RD, ALLOCTYPE_NORMAL, "En_Rd") /* 0x04D */ DEFINE_ACTOR(Bg_F40_Flift, ACTOR_BG_F40_FLIFT, ALLOCTYPE_NORMAL, "Bg_F40_Flift") -/* 0x04E */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_4E) +#if MM_VERSION >= N64_US +/* 0x04E */ DEFINE_ACTOR_UNSET(ACTOR_BG_HEAVY_BLOCK) +#else +/* 0x04E */ DEFINE_ACTOR(Bg_Heavy_Block, ACTOR_BG_HEAVY_BLOCK, ALLOCTYPE_NORMAL, "Bg_Heavy_Block") +#endif /* 0x04F */ DEFINE_ACTOR(Obj_Mure, ACTOR_OBJ_MURE, ALLOCTYPE_NORMAL, "Obj_Mure") /* 0x050 */ DEFINE_ACTOR(En_Sw, ACTOR_EN_SW, ALLOCTYPE_NORMAL, "En_Sw") /* 0x051 */ DEFINE_ACTOR(Object_Kankyo, ACTOR_OBJECT_KANKYO, ALLOCTYPE_NORMAL, "Object_Kankyo") diff --git a/spec/spec b/spec/spec index d8e2b4559c..1bd5980deb 100644 --- a/spec/spec +++ b/spec/spec @@ -2,6 +2,8 @@ * ROM spec file */ +#include "include/versions.h" + beginseg name "framebuffer_lo" address 0x80000500 @@ -1257,6 +1259,15 @@ beginseg include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_F40_Flift/ovl_Bg_F40_Flift_reloc.o" endseg +#if MM_VERSION < N64_US +beginseg + name "ovl_Bg_Heavy_Block" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Heavy_Block/ovl_Bg_Heavy_Block_reloc.o" +endseg +#endif + beginseg name "ovl_Obj_Mure" compress diff --git a/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.c b/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.c new file mode 100644 index 0000000000..5f8c47a374 --- /dev/null +++ b/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.c @@ -0,0 +1,40 @@ +/* + * File: z_bg_heavy_block.c + * Overlay: ovl_Bg_Heavy_Block + * Description: Large block that can only be lifted with Golden Gauntlets + */ + +#include "z_bg_heavy_block.h" + +#include "versions.h" + +#define FLAGS 0 + +void BgHeavyBlock_Init(Actor* thisx, PlayState* play); +void BgHeavyBlock_Destroy(Actor* thisx, PlayState* play); +void BgHeavyBlock_Update(Actor* thisx, PlayState* play); +void BgHeavyBlock_Draw(Actor* thisx, PlayState* play); + +ActorProfile Bg_Heavy_Block_Profile = { + /**/ ACTOR_BG_HEAVY_BLOCK, + /**/ ACTORCAT_BG, + /**/ FLAGS, + /**/ OBJECT_HEAVY_OBJECT, + /**/ sizeof(BgHeavyBlock), + /**/ BgHeavyBlock_Init, + /**/ BgHeavyBlock_Destroy, + /**/ BgHeavyBlock_Update, + /**/ BgHeavyBlock_Draw, +}; + +void BgHeavyBlock_Init(Actor* thisx, PlayState* play) { +} + +void BgHeavyBlock_Destroy(Actor* thisx, PlayState* play) { +} + +void BgHeavyBlock_Update(Actor* thisx, PlayState* play) { +} + +void BgHeavyBlock_Draw(Actor* thisx, PlayState* play) { +} diff --git a/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.h b/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.h new file mode 100644 index 0000000000..9870296e4b --- /dev/null +++ b/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.h @@ -0,0 +1,16 @@ +#ifndef Z_BG_HEAVY_BLOCK_H +#define Z_BG_HEAVY_BLOCK_H + +#include "global.h" + +struct BgHeavyBlock; + +typedef void (*BgHeavyBlockActionFunc)(struct BgHeavyBlock*, PlayState*); + +typedef struct BgHeavyBlock { + /* 0x000 */ DynaPolyActor dyna; + /* 0x15C */ char unk_15C[0x16C - 0x15C]; + /* 0x16C */ BgHeavyBlockActionFunc actionFunc; +} BgHeavyBlock; // size = 0x170 + +#endif // Z_BG_HEAVY_BLOCK_H