From 86b22d6d097a2286a125cdad06d23208610f4aff Mon Sep 17 00:00:00 2001 From: Banjo Kazooie Date: Thu, 26 Sep 2024 20:40:42 -0500 Subject: [PATCH] Seperate and document `ba/carriedobj` PAL: sync ba/carriedobj. --- decompressed.pal.yaml | 11 +++--- decompressed.us.v10.yaml | 1 + manual_syms.pal.txt | 38 +++++++++++++----- src/core2/ba/carriedobj.c | 83 +++++++++++++++++++++++++++++++++++++++ src/core2/bs/bPeck.c | 2 +- src/core2/bs/carry.c | 2 +- src/core2/bs/stand.c | 2 +- src/core2/bs/throw.c | 2 +- src/core2/code_6B30.c | 83 +-------------------------------------- src/core2/code_7060.c | 6 +-- 10 files changed, 126 insertions(+), 104 deletions(-) create mode 100644 src/core2/ba/carriedobj.c diff --git a/decompressed.pal.yaml b/decompressed.pal.yaml index 2c16348e..ff98a162 100644 --- a/decompressed.pal.yaml +++ b/decompressed.pal.yaml @@ -513,8 +513,9 @@ segments: - [0xF7C650, c, snackerctl] - [0xF7CBA0, c, code_39D0] - [0xF7D990, c, ba/marker] - - [0xF7FD00, bin, core2_untouched_text] - # - [0xF5C490, c, code_6B30] #DONE + - [0xF7FD00, c, code_6B30] + - [0xF7FFA0, c, ba/carriedobj] + - [0xF80230, bin, core2_untouched_text] # - [0xF5C9C0, c, code_7060] #DONE # - [0xF5E700, c, code_8DA0] #DONE # - [0xF5EA40, c, code_90E0] #DONE @@ -1127,8 +1128,8 @@ segments: - [0x1066860, .rodata, snackerctl] - [0x1066870, .rodata, code_39D0] - [0x1066910, .rodata, ba/marker] - - [0x1066D40, bin, core2_untouched_rodata] - # - [0x1042D70, .rodata, code_6B30] + - [0x1066D40, .rodata, code_6B30] + - [0x1066E30, bin, core2_untouched_rodata] # - [0x1042E60, .rodata, code_7060] # - [0x1042F90, .rodata, code_9450] # - [0x1042FC0, .rodata, code_9900] @@ -1380,7 +1381,7 @@ segments: - [0x0106C980, .bss, snackerctl] - [0x0106C980, .bss, code_39D0] - [0x0106C980, .bss, ba/marker] - # - [0x0106C980, .bss, code_6B30] + - [0x0106C980, .bss, code_6B30] # - [0x0106C980, .bss, code_7060] # - [0x0106C980, .bss, code_8DA0] # - [0x0106C980, .bss, code_90E0] diff --git a/decompressed.us.v10.yaml b/decompressed.us.v10.yaml index c5f3c8b4..b3f871c0 100644 --- a/decompressed.us.v10.yaml +++ b/decompressed.us.v10.yaml @@ -515,6 +515,7 @@ segments: - [0xF59330, c, code_39D0] #DONE - [0xF5A120, c, ba/marker] #DONE - [0xF5C490, c, code_6B30] #DONE + - [0xF5C730, c, ba/carriedobj] #DONE - [0xF5C9C0, c, code_7060] #DONE - [0xF5E700, c, code_8DA0] #DONE - [0xF5EA40, c, code_90E0] #DONE diff --git a/manual_syms.pal.txt b/manual_syms.pal.txt index 4deca541..09228322 100644 --- a/manual_syms.pal.txt +++ b/manual_syms.pal.txt @@ -60,6 +60,7 @@ func_80291634 = 0x80291454; stateTimer_isActive = 0x802914b8; baModel_80291AAC = 0x802918cc; baModel_80292284 = 0x802920a4; +baModel_getPosition = 0x80292288; bafalldamage_get_damage = 0x80292ffc; miscFlag_isTrue = 0x802931e0; miscFlag_isFalse = 0x802931f0; @@ -71,7 +72,11 @@ func_80294500 = 0x80294320; func_80294548 = 0x80294368; func_80294554 = 0x80294374; func_80294610 = 0x80294430; +bacarry_reset_marker = 0x80294700; +bacarry_get_marker = 0x8029470c; +bacarry_set_marker = 0x80294718; get_slope_timer = 0x802947f4; +set_throw_target_position = 0x802948e0; set_turbo_duration = 0x80294908; ability_hasLearned = 0x80295618; @@ -90,8 +95,9 @@ yaw_setIdeal = 0x80298ff4; yaw_get = 0x8029905c; yaw_getIdeal = 0x80299068; func_8029957C = 0x802993bc; -bs_getState = 0x8029a608; -bs_checkInterrupt = 0x8029a65c; +bs_setState = 0x8029a56c; +bs_getState = 0x8029a608; +bs_checkInterrupt = 0x8029a65c; bsStoredState_getTransformation = 0x8029a734; func_8029B41C = 0x8029b25c; func_8029C0D0 = 0x8029bf10; @@ -99,22 +105,24 @@ func_8029CDA0 = 0x8029cbe0; func_8029CF20 = 0x8029cd60; func_8029D66C = 0x8029d4ac; bsant_inSet = 0x8029e3d8; - +bsbbarge_hitboxActive = 0x8029f484; +bsbbuster_hitboxActive = 0x8029fa98; +func_8028F66C = 0x8028f48c; func_802A02B4 = 0x802a00f4; +bsbfly_bombHitboxActive = 0x802a3dd0; func_802A6388 = 0x802a61c8; - -__spawnQueue_add_1 = 0x802c3b08; -chtrainers_canUse = 0x802ca8c8; -chtrainers_getDuration = 0x802ca908; -chtrainers_pickup = 0x802ca910; - +bsbpeck_hitboxActive = 0x802a6350; +bsclaw_hitboxActive = 0x802ab0c0; +bscroc_hitboxActive = 0x802acd8c; bspumpkin_inSet = 0x802b2154; +bstwirl_hitboxActive = 0x802b68b0; func_802BAFE4 = 0x802bae54; func_802BB360 = 0x802bb1d0; func_802BB378 = 0x802bb1e8; func_802BB3AC = 0x802bb21c; func_802BB3C4 = 0x802bb234; func_802BB3DC = 0x802bb24c; + ncFirstPersonCamera_getZoomedInRotation = 0x802c295c; ncFirstPersonCamera_getState = 0x802c2980; @@ -127,6 +135,10 @@ chjiggy_getJiggyId = 0x802c8248; func_802C9C14 = 0x802c9dd4; func_802CA1C4 = 0x802ca384; func_802CA1CC = 0x802ca38c; +__spawnQueue_add_1 = 0x802c3b08; +chtrainers_canUse = 0x802ca8c8; +chtrainers_getDuration = 0x802ca908; +chtrainers_pickup = 0x802ca910; mapSpecificFlags_get = 0x802caeb8; mapSpecificFlags_set = 0x802caf80; mapSpecificFlags_validateCRC1 = 0x802cb1cc; @@ -189,7 +201,9 @@ func_802F9FD0 = 0x802fa1b0; func_802FA060 = 0x802fa240; func_802FADD4 = 0x802fafb4; cubeList_findNodePropByActorId = 0x80304b6c; +func_80304C38 = 0x80304dd8; nodeprop_getPosition_s32 = 0x80304eec; +nodeprop_getPosition = 0x80304f08; func_80309B48 = 0x80309ce8; func_80309D58 = 0x80309ef8; func_8030A850 = 0x8030a9f0; @@ -251,7 +265,8 @@ func_80324DBC = 0x8032520c; timedFunc_set_1 = 0x80325334; timedFunc_set_2 = 0x80325370; timedFunc_set_3 = 0x803253b4; -actor_spawnWithYaw_s32 = 0x80328574; +actor_spawnWithYaw_s32 = 0x80328574; +actor_spawnWithYaw_f32 = 0x80328594; marker_despawn = 0x8032874c; marker_getActor = 0x80329db0; func_8032AD7C = 0x8032b1d4; @@ -300,9 +315,12 @@ allocUnusedBlock = 0x8033f3a8; func_8033EFB0 = 0x8033f400; func_8033F000 = 0x8033f450; item_inc = 0x80346374; +item_dec = 0x80346394; +item_empty = 0x803463c4; item_getCount = 0x803463f0; item_adjustByDiffWithHud = 0x80346824; item_adjustByDiffWithoutHud = 0x80346844; +carriedobj_actorId2ItemId = 0x80347144; demo_readInput = 0x8034a334; randf = 0x8034a7e0; func_8034B9BC = 0x8034be20; diff --git a/src/core2/ba/carriedobj.c b/src/core2/ba/carriedobj.c new file mode 100644 index 00000000..94ed884f --- /dev/null +++ b/src/core2/ba/carriedobj.c @@ -0,0 +1,83 @@ +#include +#include "functions.h" +#include "variables.h" +#include "core2/ba/carry.h" + +bool player_setCarryObjectPose(enum actor_e actor_id, Actor **arg1){ + ActorMarker *m1; + ActorMarker *m2; + Actor *actor; + + m1 = (*arg1)->marker; + m2 = bacarry_get_marker(); + if(m2){ + actor = marker_getActor(m2); + } + + if(m2 && actor->modelCacheIndex != actor_id) + return 0; + + baMarker_setCarriedObject(actor_id); + if(!item_empty(carriedobj_actorId2ItemId(actor_id))){ + func_8028F66C(BS_INTR_12); + } + *arg1 = marker_getActor(m1); + return 1; +} + +void __bscarriedobj_spawnMethod(enum actor_e actor_id){ + Actor *actor; + f32 sp20[3]; + + baModel_getPosition(sp20); + actor = actor_spawnWithYaw_f32(actor_id, sp20, (s32) yaw_get()); + actor->unk138_22 = TRUE; + bacarry_set_marker(actor->marker); + bs_setState(BS_3A_CARRY_IDLE); +} + +void bacarriedobj_spawn(enum actor_e actor_id){ + ActorMarker *marker; + Actor *actor; + + marker = bacarry_get_marker(); + if(marker){ + actor = marker_getActor(marker); + } + + if(marker && actor->modelCacheIndex == actor_id){ + bacarry_set_marker(marker); + } + else{ + __spawnQueue_add_1((GenFunction_1)__bscarriedobj_spawnMethod, baMarker_getCarriedObjectActorId()); + } +} + +void func_8028DEEC(enum actor_e actor_id, Actor *actor){ + f32 sp1C[3]; + + nodeprop_getPosition(func_80304C38(actor_id, actor), sp1C); + set_throw_target_position(sp1C); +} + +void bacarriedobj_inc(enum actor_e actor_id){ + item_inc(carriedobj_actorId2ItemId(actor_id)); +} + +void bacarriedobj_dec(enum actor_e actor_id){ + ActorMarker *marker; + Actor* actor; + + marker = bacarry_get_marker(); + if(marker) + actor = marker_getActor(marker); + + if(marker && actor->modelCacheIndex == actor_id){ + bacarry_reset_marker(); + } + item_dec(carriedobj_actorId2ItemId(actor_id)); +} + +void bacarriedobj_displayOnHud(enum actor_e actor_id){ + item_adjustByDiffWithHud(carriedobj_actorId2ItemId(actor_id), 0); +} diff --git a/src/core2/bs/bPeck.c b/src/core2/bs/bPeck.c index 36c517a9..7de0cb00 100644 --- a/src/core2/bs/bPeck.c +++ b/src/core2/bs/bPeck.c @@ -20,7 +20,7 @@ u8 D_8037D376; u8 D_8037D377; /* .code */ -s32 func_802A6510(void){ +s32 bsbpeck_hitboxActive(void){ return D_8037D376; } diff --git a/src/core2/bs/carry.c b/src/core2/bs/carry.c index 1afceec4..b40fcaca 100644 --- a/src/core2/bs/carry.c +++ b/src/core2/bs/carry.c @@ -101,7 +101,7 @@ void bscarry_interrupt(void){ bs_setState(BS_3C_TALK); break; case 0x12: - func_8028DE6C(baMarker_getCarriedObjectActorId()); + bacarriedobj_spawn(baMarker_getCarriedObjectActorId()); break; case BS_INTR_16_THROW_CARRIED_OBJ: if(stateTimer_isDone(STATE_TIMER_1_THROW)){ diff --git a/src/core2/bs/stand.c b/src/core2/bs/stand.c index ee60057a..36576fe1 100644 --- a/src/core2/bs/stand.c +++ b/src/core2/bs/stand.c @@ -324,7 +324,7 @@ void func_802B5350(void){ else if(sp1C == 0x12){//L802B53D0 func_8029A86C(1); if( bsStoredState_getTransformation() == TRANSFORM_1_BANJO && !miscFlag_isTrue(MISC_FLAG_F) && stateTimer_isDone(STATE_TIMER_0_UNKNOWN)){ - func_8028DE6C(baMarker_getCarriedObjectActorId()); + bacarriedobj_spawn(baMarker_getCarriedObjectActorId()); func_8029A86C(2); } } diff --git a/src/core2/bs/throw.c b/src/core2/bs/throw.c index 34e28950..48197db5 100644 --- a/src/core2/bs/throw.c +++ b/src/core2/bs/throw.c @@ -67,7 +67,7 @@ void bsthrow_end(void){ void bsthrow_interrupt(void){ if(bs_getInterruptType() == BS_INTR_12){ if(D_8037D580 == 0){ - func_8028DE6C(baMarker_getCarriedObjectActorId()); + bacarriedobj_spawn(baMarker_getCarriedObjectActorId()); } else{ func_8029A86C(1); diff --git a/src/core2/code_6B30.c b/src/core2/code_6B30.c index 67737985..56c0c35a 100644 --- a/src/core2/code_6B30.c +++ b/src/core2/code_6B30.c @@ -1,7 +1,6 @@ #include #include "functions.h" #include "variables.h" -#include "core2/ba/carry.h" #include "core2/ba/physics.h" extern Actor *actor_spawnWithYaw_f32(enum actor_e, f32[3], s32); @@ -57,7 +56,7 @@ enum hitbox_e hitbox_getHitboxForActor(ActorMarker *arg0){ case BS_11_BPECK://8028DC50 if(arg0 && !func_8028AED4(marker_getActor(arg0)->position, 60.0f)) return HITBOX_0_NONE; - return __maybe(func_802A6510(),HITBOX_5_PECK); + return __maybe(bsbpeck_hitboxActive(),HITBOX_5_PECK); break; case BS_1A_WONDERWING_ENTER: case BS_1B_WONDERWING_IDLE: @@ -87,83 +86,3 @@ enum hitbox_e hitbox_getHitboxForActor(ActorMarker *arg0){ break; } } - -// break ?? // -bool player_setCarryObjectPose(enum actor_e actor_id, Actor **arg1){ - ActorMarker *m1; - ActorMarker *m2; - Actor *actor; - - m1 = (*arg1)->marker; - m2 = bacarry_get_marker(); - if(m2){ - actor = marker_getActor(m2); - } - - if(m2 && actor->modelCacheIndex != actor_id) - return 0; - - baMarker_setCarriedObject(actor_id); - if(!item_empty(carriedobj_actorId2ItemId(actor_id))){ - func_8028F66C(BS_INTR_12); - } - *arg1 = marker_getActor(m1); - return 1; -} - -void func_8028DE0C(enum actor_e actor_id){ - Actor *actor; - f32 sp20[3]; - - baModel_getPosition(sp20); - actor = actor_spawnWithYaw_f32(actor_id, sp20, (s32) yaw_get()); - actor->unk138_22 = TRUE; - bacarry_set_marker(actor->marker); - bs_setState(BS_3A_CARRY_IDLE); -} - -void func_8028DE6C(enum actor_e actor_id){ - ActorMarker *marker; - Actor *actor; - - marker = bacarry_get_marker(); - if(marker){ - actor = marker_getActor(marker); - } - - if(marker && actor->modelCacheIndex == actor_id){ - bacarry_set_marker(marker); - } - else{ - __spawnQueue_add_1((GenFunction_1)func_8028DE0C, baMarker_getCarriedObjectActorId()); - } -} - -void func_8028DEEC(enum actor_e actor_id, Actor *actor){ - f32 sp1C[3]; - - nodeprop_getPosition(func_80304C38(actor_id, actor), sp1C); - set_throw_target_position(sp1C); -} - -void func_8028DF20(enum actor_e actor_id){ - item_inc(carriedobj_actorId2ItemId(actor_id)); -} - -void func_8028DF48(enum actor_e actor_id){ - ActorMarker *marker; - Actor* actor; - - marker = bacarry_get_marker(); - if(marker) - actor = marker_getActor(marker); - - if(marker && actor->modelCacheIndex == actor_id){ - bacarry_reset_marker(); - } - item_dec(carriedobj_actorId2ItemId(actor_id)); -} - -void func_8028DFB8(enum actor_e actor_id){ - item_adjustByDiffWithHud(carriedobj_actorId2ItemId(actor_id), 0); -} diff --git a/src/core2/code_7060.c b/src/core2/code_7060.c index 8c5c7f0d..1577f749 100644 --- a/src/core2/code_7060.c +++ b/src/core2/code_7060.c @@ -559,15 +559,15 @@ bool func_8028EFEC(void){ } void func_8028F010(enum actor_e actor_id){ - func_8028DF48(actor_id); + bacarriedobj_dec(actor_id); } void func_8028F030(enum actor_e actor_id){ - func_8028DF20(actor_id); + bacarriedobj_inc(actor_id); } void func_8028F050(enum actor_e actor_id){ - func_8028DFB8(actor_id); + bacarriedobj_displayOnHud(actor_id); } bool func_8028F070(void){