Seperate and document ba/carriedobj

PAL: sync ba/carriedobj.
This commit is contained in:
Banjo Kazooie
2024-09-26 20:40:42 -05:00
parent 5fd7e7f3cc
commit 86b22d6d09
10 changed files with 126 additions and 104 deletions

View File

@@ -513,8 +513,9 @@ segments:
- [0xF7C650, c, snackerctl] - [0xF7C650, c, snackerctl]
- [0xF7CBA0, c, code_39D0] - [0xF7CBA0, c, code_39D0]
- [0xF7D990, c, ba/marker] - [0xF7D990, c, ba/marker]
- [0xF7FD00, bin, core2_untouched_text] - [0xF7FD00, c, code_6B30]
# - [0xF5C490, c, code_6B30] #DONE - [0xF7FFA0, c, ba/carriedobj]
- [0xF80230, bin, core2_untouched_text]
# - [0xF5C9C0, c, code_7060] #DONE # - [0xF5C9C0, c, code_7060] #DONE
# - [0xF5E700, c, code_8DA0] #DONE # - [0xF5E700, c, code_8DA0] #DONE
# - [0xF5EA40, c, code_90E0] #DONE # - [0xF5EA40, c, code_90E0] #DONE
@@ -1127,8 +1128,8 @@ segments:
- [0x1066860, .rodata, snackerctl] - [0x1066860, .rodata, snackerctl]
- [0x1066870, .rodata, code_39D0] - [0x1066870, .rodata, code_39D0]
- [0x1066910, .rodata, ba/marker] - [0x1066910, .rodata, ba/marker]
- [0x1066D40, bin, core2_untouched_rodata] - [0x1066D40, .rodata, code_6B30]
# - [0x1042D70, .rodata, code_6B30] - [0x1066E30, bin, core2_untouched_rodata]
# - [0x1042E60, .rodata, code_7060] # - [0x1042E60, .rodata, code_7060]
# - [0x1042F90, .rodata, code_9450] # - [0x1042F90, .rodata, code_9450]
# - [0x1042FC0, .rodata, code_9900] # - [0x1042FC0, .rodata, code_9900]
@@ -1380,7 +1381,7 @@ segments:
- [0x0106C980, .bss, snackerctl] - [0x0106C980, .bss, snackerctl]
- [0x0106C980, .bss, code_39D0] - [0x0106C980, .bss, code_39D0]
- [0x0106C980, .bss, ba/marker] - [0x0106C980, .bss, ba/marker]
# - [0x0106C980, .bss, code_6B30] - [0x0106C980, .bss, code_6B30]
# - [0x0106C980, .bss, code_7060] # - [0x0106C980, .bss, code_7060]
# - [0x0106C980, .bss, code_8DA0] # - [0x0106C980, .bss, code_8DA0]
# - [0x0106C980, .bss, code_90E0] # - [0x0106C980, .bss, code_90E0]

View File

@@ -515,6 +515,7 @@ segments:
- [0xF59330, c, code_39D0] #DONE - [0xF59330, c, code_39D0] #DONE
- [0xF5A120, c, ba/marker] #DONE - [0xF5A120, c, ba/marker] #DONE
- [0xF5C490, c, code_6B30] #DONE - [0xF5C490, c, code_6B30] #DONE
- [0xF5C730, c, ba/carriedobj] #DONE
- [0xF5C9C0, c, code_7060] #DONE - [0xF5C9C0, c, code_7060] #DONE
- [0xF5E700, c, code_8DA0] #DONE - [0xF5E700, c, code_8DA0] #DONE
- [0xF5EA40, c, code_90E0] #DONE - [0xF5EA40, c, code_90E0] #DONE

View File

@@ -60,6 +60,7 @@ func_80291634 = 0x80291454;
stateTimer_isActive = 0x802914b8; stateTimer_isActive = 0x802914b8;
baModel_80291AAC = 0x802918cc; baModel_80291AAC = 0x802918cc;
baModel_80292284 = 0x802920a4; baModel_80292284 = 0x802920a4;
baModel_getPosition = 0x80292288;
bafalldamage_get_damage = 0x80292ffc; bafalldamage_get_damage = 0x80292ffc;
miscFlag_isTrue = 0x802931e0; miscFlag_isTrue = 0x802931e0;
miscFlag_isFalse = 0x802931f0; miscFlag_isFalse = 0x802931f0;
@@ -71,7 +72,11 @@ func_80294500 = 0x80294320;
func_80294548 = 0x80294368; func_80294548 = 0x80294368;
func_80294554 = 0x80294374; func_80294554 = 0x80294374;
func_80294610 = 0x80294430; func_80294610 = 0x80294430;
bacarry_reset_marker = 0x80294700;
bacarry_get_marker = 0x8029470c;
bacarry_set_marker = 0x80294718;
get_slope_timer = 0x802947f4; get_slope_timer = 0x802947f4;
set_throw_target_position = 0x802948e0;
set_turbo_duration = 0x80294908; set_turbo_duration = 0x80294908;
ability_hasLearned = 0x80295618; ability_hasLearned = 0x80295618;
@@ -90,6 +95,7 @@ yaw_setIdeal = 0x80298ff4;
yaw_get = 0x8029905c; yaw_get = 0x8029905c;
yaw_getIdeal = 0x80299068; yaw_getIdeal = 0x80299068;
func_8029957C = 0x802993bc; func_8029957C = 0x802993bc;
bs_setState = 0x8029a56c;
bs_getState = 0x8029a608; bs_getState = 0x8029a608;
bs_checkInterrupt = 0x8029a65c; bs_checkInterrupt = 0x8029a65c;
bsStoredState_getTransformation = 0x8029a734; bsStoredState_getTransformation = 0x8029a734;
@@ -99,22 +105,24 @@ func_8029CDA0 = 0x8029cbe0;
func_8029CF20 = 0x8029cd60; func_8029CF20 = 0x8029cd60;
func_8029D66C = 0x8029d4ac; func_8029D66C = 0x8029d4ac;
bsant_inSet = 0x8029e3d8; bsant_inSet = 0x8029e3d8;
bsbbarge_hitboxActive = 0x8029f484;
bsbbuster_hitboxActive = 0x8029fa98;
func_8028F66C = 0x8028f48c;
func_802A02B4 = 0x802a00f4; func_802A02B4 = 0x802a00f4;
bsbfly_bombHitboxActive = 0x802a3dd0;
func_802A6388 = 0x802a61c8; func_802A6388 = 0x802a61c8;
bsbpeck_hitboxActive = 0x802a6350;
__spawnQueue_add_1 = 0x802c3b08; bsclaw_hitboxActive = 0x802ab0c0;
chtrainers_canUse = 0x802ca8c8; bscroc_hitboxActive = 0x802acd8c;
chtrainers_getDuration = 0x802ca908;
chtrainers_pickup = 0x802ca910;
bspumpkin_inSet = 0x802b2154; bspumpkin_inSet = 0x802b2154;
bstwirl_hitboxActive = 0x802b68b0;
func_802BAFE4 = 0x802bae54; func_802BAFE4 = 0x802bae54;
func_802BB360 = 0x802bb1d0; func_802BB360 = 0x802bb1d0;
func_802BB378 = 0x802bb1e8; func_802BB378 = 0x802bb1e8;
func_802BB3AC = 0x802bb21c; func_802BB3AC = 0x802bb21c;
func_802BB3C4 = 0x802bb234; func_802BB3C4 = 0x802bb234;
func_802BB3DC = 0x802bb24c; func_802BB3DC = 0x802bb24c;
ncFirstPersonCamera_getZoomedInRotation = 0x802c295c; ncFirstPersonCamera_getZoomedInRotation = 0x802c295c;
ncFirstPersonCamera_getState = 0x802c2980; ncFirstPersonCamera_getState = 0x802c2980;
@@ -127,6 +135,10 @@ chjiggy_getJiggyId = 0x802c8248;
func_802C9C14 = 0x802c9dd4; func_802C9C14 = 0x802c9dd4;
func_802CA1C4 = 0x802ca384; func_802CA1C4 = 0x802ca384;
func_802CA1CC = 0x802ca38c; func_802CA1CC = 0x802ca38c;
__spawnQueue_add_1 = 0x802c3b08;
chtrainers_canUse = 0x802ca8c8;
chtrainers_getDuration = 0x802ca908;
chtrainers_pickup = 0x802ca910;
mapSpecificFlags_get = 0x802caeb8; mapSpecificFlags_get = 0x802caeb8;
mapSpecificFlags_set = 0x802caf80; mapSpecificFlags_set = 0x802caf80;
mapSpecificFlags_validateCRC1 = 0x802cb1cc; mapSpecificFlags_validateCRC1 = 0x802cb1cc;
@@ -189,7 +201,9 @@ func_802F9FD0 = 0x802fa1b0;
func_802FA060 = 0x802fa240; func_802FA060 = 0x802fa240;
func_802FADD4 = 0x802fafb4; func_802FADD4 = 0x802fafb4;
cubeList_findNodePropByActorId = 0x80304b6c; cubeList_findNodePropByActorId = 0x80304b6c;
func_80304C38 = 0x80304dd8;
nodeprop_getPosition_s32 = 0x80304eec; nodeprop_getPosition_s32 = 0x80304eec;
nodeprop_getPosition = 0x80304f08;
func_80309B48 = 0x80309ce8; func_80309B48 = 0x80309ce8;
func_80309D58 = 0x80309ef8; func_80309D58 = 0x80309ef8;
func_8030A850 = 0x8030a9f0; func_8030A850 = 0x8030a9f0;
@@ -252,6 +266,7 @@ timedFunc_set_1 = 0x80325334;
timedFunc_set_2 = 0x80325370; timedFunc_set_2 = 0x80325370;
timedFunc_set_3 = 0x803253b4; timedFunc_set_3 = 0x803253b4;
actor_spawnWithYaw_s32 = 0x80328574; actor_spawnWithYaw_s32 = 0x80328574;
actor_spawnWithYaw_f32 = 0x80328594;
marker_despawn = 0x8032874c; marker_despawn = 0x8032874c;
marker_getActor = 0x80329db0; marker_getActor = 0x80329db0;
func_8032AD7C = 0x8032b1d4; func_8032AD7C = 0x8032b1d4;
@@ -300,9 +315,12 @@ allocUnusedBlock = 0x8033f3a8;
func_8033EFB0 = 0x8033f400; func_8033EFB0 = 0x8033f400;
func_8033F000 = 0x8033f450; func_8033F000 = 0x8033f450;
item_inc = 0x80346374; item_inc = 0x80346374;
item_dec = 0x80346394;
item_empty = 0x803463c4;
item_getCount = 0x803463f0; item_getCount = 0x803463f0;
item_adjustByDiffWithHud = 0x80346824; item_adjustByDiffWithHud = 0x80346824;
item_adjustByDiffWithoutHud = 0x80346844; item_adjustByDiffWithoutHud = 0x80346844;
carriedobj_actorId2ItemId = 0x80347144;
demo_readInput = 0x8034a334; demo_readInput = 0x8034a334;
randf = 0x8034a7e0; randf = 0x8034a7e0;
func_8034B9BC = 0x8034be20; func_8034B9BC = 0x8034be20;

83
src/core2/ba/carriedobj.c Normal file
View File

@@ -0,0 +1,83 @@
#include <ultra64.h>
#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);
}

View File

@@ -20,7 +20,7 @@ u8 D_8037D376;
u8 D_8037D377; u8 D_8037D377;
/* .code */ /* .code */
s32 func_802A6510(void){ s32 bsbpeck_hitboxActive(void){
return D_8037D376; return D_8037D376;
} }

View File

@@ -101,7 +101,7 @@ void bscarry_interrupt(void){
bs_setState(BS_3C_TALK); bs_setState(BS_3C_TALK);
break; break;
case 0x12: case 0x12:
func_8028DE6C(baMarker_getCarriedObjectActorId()); bacarriedobj_spawn(baMarker_getCarriedObjectActorId());
break; break;
case BS_INTR_16_THROW_CARRIED_OBJ: case BS_INTR_16_THROW_CARRIED_OBJ:
if(stateTimer_isDone(STATE_TIMER_1_THROW)){ if(stateTimer_isDone(STATE_TIMER_1_THROW)){

View File

@@ -324,7 +324,7 @@ void func_802B5350(void){
else if(sp1C == 0x12){//L802B53D0 else if(sp1C == 0x12){//L802B53D0
func_8029A86C(1); func_8029A86C(1);
if( bsStoredState_getTransformation() == TRANSFORM_1_BANJO && !miscFlag_isTrue(MISC_FLAG_F) && stateTimer_isDone(STATE_TIMER_0_UNKNOWN)){ 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); func_8029A86C(2);
} }
} }

View File

@@ -67,7 +67,7 @@ void bsthrow_end(void){
void bsthrow_interrupt(void){ void bsthrow_interrupt(void){
if(bs_getInterruptType() == BS_INTR_12){ if(bs_getInterruptType() == BS_INTR_12){
if(D_8037D580 == 0){ if(D_8037D580 == 0){
func_8028DE6C(baMarker_getCarriedObjectActorId()); bacarriedobj_spawn(baMarker_getCarriedObjectActorId());
} }
else{ else{
func_8029A86C(1); func_8029A86C(1);

View File

@@ -1,7 +1,6 @@
#include <ultra64.h> #include <ultra64.h>
#include "functions.h" #include "functions.h"
#include "variables.h" #include "variables.h"
#include "core2/ba/carry.h"
#include "core2/ba/physics.h" #include "core2/ba/physics.h"
extern Actor *actor_spawnWithYaw_f32(enum actor_e, f32[3], s32); 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 case BS_11_BPECK://8028DC50
if(arg0 && !func_8028AED4(marker_getActor(arg0)->position, 60.0f)) if(arg0 && !func_8028AED4(marker_getActor(arg0)->position, 60.0f))
return HITBOX_0_NONE; return HITBOX_0_NONE;
return __maybe(func_802A6510(),HITBOX_5_PECK); return __maybe(bsbpeck_hitboxActive(),HITBOX_5_PECK);
break; break;
case BS_1A_WONDERWING_ENTER: case BS_1A_WONDERWING_ENTER:
case BS_1B_WONDERWING_IDLE: case BS_1B_WONDERWING_IDLE:
@@ -87,83 +86,3 @@ enum hitbox_e hitbox_getHitboxForActor(ActorMarker *arg0){
break; 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);
}

View File

@@ -559,15 +559,15 @@ bool func_8028EFEC(void){
} }
void func_8028F010(enum actor_e actor_id){ void func_8028F010(enum actor_e actor_id){
func_8028DF48(actor_id); bacarriedobj_dec(actor_id);
} }
void func_8028F030(enum actor_e 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){ void func_8028F050(enum actor_e actor_id){
func_8028DFB8(actor_id); bacarriedobj_displayOnHud(actor_id);
} }
bool func_8028F070(void){ bool func_8028F070(void){