diff --git a/config/splat.us.borbo3.yaml b/config/splat.us.borbo3.yaml index 9799436fe..01d346736 100644 --- a/config/splat.us.borbo3.yaml +++ b/config/splat.us.borbo3.yaml @@ -43,11 +43,12 @@ segments: - [0x390, data] #e_init - [0x510, .data, st_debug] - [0x590, data] # e_breakable - - [0x5F0, data] + - [0x5F0, .data, d_prize_drops] + - [0x5FC, data] - [0x750, .data, st_update] - [0x77C, .data, collision] - [0xB3C, .data, e_red_door] # e_red_door - - [0xB54, data] # st_common + - [0xB54, .data, st_common] # st_common - [0xD54, data] # e_collect - [0x1044, data, e_misc] - [0x1160, .data, e_particles] diff --git a/config/symbols.us.borbo3.txt b/config/symbols.us.borbo3.txt index 95b15ac1a..afad0e13b 100644 --- a/config/symbols.us.borbo3.txt +++ b/config/symbols.us.borbo3.txt @@ -1,3 +1,6 @@ +RBO3_pStObjLayoutHorizontal = 0x801801EC; +RBO3_pStObjLayoutVertical = 0x801802C0; +RBO3_EntityUpdates = 0x80180390; g_EInitBreakable = 0x80180414; g_EInitObtainable = 0x80180420; g_EInitParticle = 0x8018042C; @@ -12,6 +15,7 @@ g_eBreakableHitboxes = 0x801805C0; g_eBreakableExplosionTypes = 0x801805C8; g_eBreakableanimSets = 0x801805D0; g_eBreakableDrawModes = 0x801805E0; +RBO3_PrizeDrops = 0x801805F0; g_SineTable = 0x80180B54; c_GoldPrizes = 0x80180EF0; c_HeartPrizes = 0x80180F80; diff --git a/src/boss/rbo3/d_prize_drops.c b/src/boss/rbo3/d_prize_drops.c new file mode 100644 index 000000000..8e3ad410f --- /dev/null +++ b/src/boss/rbo3/d_prize_drops.c @@ -0,0 +1,4 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +#include "rbo3.h" + +u16 OVL_EXPORT(PrizeDrops)[] = {0x010F, 0x020C, 0x0307, 0x0404, 0x0520, 0x00FF}; diff --git a/src/boss/rbo3/rbo3.c b/src/boss/rbo3/rbo3.c index d95c413ef..00e0a3bde 100644 --- a/src/boss/rbo3/rbo3.c +++ b/src/boss/rbo3/rbo3.c @@ -141,7 +141,7 @@ void func_us_80191438(Entity* self) { extern Entity D_8007A958; extern Entity D_8007C0D8; extern EInit D_us_80180480; -extern u8 D_us_801805F0[]; +extern u8 RBO3_PrizeDrops[]; extern u8 D_us_801805FC[]; extern u8 D_us_8018060C[]; extern u8 D_us_80180618[]; @@ -184,7 +184,7 @@ void EntityMedusa(Entity* self) { case 2: // n.b.! AnimateEntity is not declared - if (!AnimateEntity(D_us_801805F0, self)) { + if (!AnimateEntity(RBO3_PrizeDrops, self)) { self->hitboxState = 3; SetStep(3); } diff --git a/src/boss/rbo3/rbo3.h b/src/boss/rbo3/rbo3.h index 02214ddc8..18bbc04d9 100644 --- a/src/boss/rbo3/rbo3.h +++ b/src/boss/rbo3/rbo3.h @@ -15,6 +15,8 @@ typedef enum { /* 0x0A */ E_EQUIP_ITEM_DROP = 0xA, /* 0x0B */ E_RELIC_ORB, /* 0x11 */ E_MEDUSA, + /* 0x14 */ E_ID_14 = 0x14, + /* 0x15 */ E_GREY_PUFF, /* 0x18 */ UNK_ENTITY_24 = 24, /* 0x19 */ UNK_ENTITY_25, /* 0x1A */ UNK_ENTITY_26, diff --git a/src/boss/rbo3/st_common.c b/src/boss/rbo3/st_common.c index 740c8ea3c..5574245d6 100644 --- a/src/boss/rbo3/st_common.c +++ b/src/boss/rbo3/st_common.c @@ -1,70 +1,3 @@ // SPDX-License-Identifier: AGPL-3.0-or-later -#include "common.h" - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", DestroyEntity); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", DestroyEntitiesFromIndex); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", PreventEntityFromRespawning); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", AnimateEntity); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", UnkAnimFunc); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", GetDistanceToPlayerX); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", GetDistanceToPlayerY); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", GetSideToPlayer); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", MoveEntity); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", FallEntity); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", UnkCollisionFunc3); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", UnkCollisionFunc2); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", AllocEntity); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", GetSineScaled); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", GetSine); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", SetEntityVelocityFromAngle); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", Ratan2Shifted); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", GetAngleBetweenEntitiesShifted); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", GetAnglePointToEntity); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", AdjustValueWithinThreshold); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", UnkEntityFunc0); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", Ratan2); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", GetAngleBetweenEntities); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", func_us_80197148); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", GetNormalizedAngle); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", SetStep); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", SetSubStep); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", EntityExplosionSpawn); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", InitializeEntity); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", EntityDummy); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", UnkCollisionFunc); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", CheckFieldCollision); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", GetPlayerCollisionWith); - -INCLUDE_ASM("boss/rbo3/nonmatchings/st_common", ReplaceBreakableWithItemDrop); +#include "rbo3.h" +#include "../../st/st_common.h"