diff --git a/decompressed.pal.yaml b/decompressed.pal.yaml index 5dabd06e..aa9f4f2a 100644 --- a/decompressed.pal.yaml +++ b/decompressed.pal.yaml @@ -565,7 +565,7 @@ segments: # - [0xF6B880, c, code_15F20] #DONE # - [0xF6B970, c, code_16010] #DONE # - [0xF6C5C0, c, code_16C60] #DONE - # - [0xF6CB50, c, code_171F0] #DONE + # - [0xF6CB50, c, batimer] #DONE # - [0xF6CDB0, c, bs/ant] #DONE # - [0xF6DEB0, c, bs/bBarge] #DONE # - [0xF6E4F0, c, bs/bbuster] #DONE @@ -1429,7 +1429,7 @@ segments: # - [0x0106C980, .bss, code_15F20] # - [0x0106C980, .bss, code_16010] # - [0x0106C980, .bss, code_16C60] - # - [0x0106C980, .bss, code_171F0] + # - [0x0106C980, .bss, batimer] # - [0x0106C980, .bss, bs/ant] # - [0x0106C980, .bss, bs/bBarge] # - [0x0106C980, .bss, bs/bbuster] diff --git a/decompressed.us.v10.yaml b/decompressed.us.v10.yaml index e39d9bb0..6050490a 100644 --- a/decompressed.us.v10.yaml +++ b/decompressed.us.v10.yaml @@ -565,7 +565,7 @@ segments: - [0xF6B880, c, code_15F20] - [0xF6B970, c, code_16010] - [0xF6C5C0, c, code_16C60] - - [0xF6CB50, c, code_171F0] + - [0xF6CB50, c, batimer] - [0xF6CDB0, c, bs/ant] - [0xF6DEB0, c, bs/bBarge] - [0xF6E4F0, c, bs/bbuster] @@ -1427,7 +1427,7 @@ segments: - [0x1048560, .bss, code_15F20] - [0x1048560, .bss, code_16010] - [0x1048560, .bss, code_16C60] - - [0x1048560, .bss, code_171F0] + - [0x1048560, .bss, batimer] - [0x1048560, .bss, bs/ant] - [0x1048560, .bss, bs/bBarge] - [0x1048560, .bss, bs/bbuster] diff --git a/include/core2/ba/timer.h b/include/core2/ba/timer.h new file mode 100644 index 00000000..186cf9ab --- /dev/null +++ b/include/core2/ba/timer.h @@ -0,0 +1,16 @@ +#ifndef __BA_TIMER_H__ +#define __BA_TIMER_H__ + +#include + +void batimer_incrementBy(s32 id, f32 inc_value_sec); +int batimer_decrement(s32 id); +void batimer_increment(s32 id); +f32 batimer_get(s32 id); +int batimer_isAt(s32 id, f32 value_sec); +int batimer_isLessThan(s32 id, f32 value_sec); +int batimer_isGreaterThan(s32 id, f32 value_sec); +int batimer_isNonzero(s32 id); +int batimer_isZero(s32 id); +void batimer_set(s32 id, f32 value_sec); +#endif diff --git a/include/functions.h b/include/functions.h index 4c9feb4e..6f8acaa8 100644 --- a/include/functions.h +++ b/include/functions.h @@ -21,6 +21,8 @@ #include "enums.h" +#include "core2/ba/timer.h" + extern f32 fabsf(f32); #pragma intrinsic (fabsf) @@ -297,9 +299,6 @@ f32 func_8029DFD4(void); void func_8029E090(bool, f32); void func_8029E0C4(f32); void func_8029E0D0(f32); -void func_8029E180(s32, f32); -void func_8029E3C0(s32, f32); -f32 func_8029E270(s32); void func_802BD8A4(f32, f32, f32); f32 func_802BD8D4(void); void func_802BE244(f32, f32); diff --git a/src/core2/batimer.c b/src/core2/batimer.c new file mode 100644 index 00000000..eec24316 --- /dev/null +++ b/src/core2/batimer.c @@ -0,0 +1,60 @@ +#include +#include "functions.h" +#include "variables.h" + +/* .bss */ + +struct { + f32 value[0x8]; + f32 last[0x8]; +} s_batimer; + +/* .code*/ +void batimer_incrementBy(s32 id, f32 inc_value_sec){ + s_batimer.last[id] = s_batimer.value[id]; + s_batimer.value[id] += inc_value_sec; +} + +int batimer_decrement(s32 id){ + s_batimer.last[id] = s_batimer.value[id]; + if(0.0f == s_batimer.value[id]){ + return 0; + } + s_batimer.value[id] = ml_max_f(0.0f, s_batimer.value[id] - time_getDelta()); + return s_batimer.value[id] == 0.0f; +} + +void batimer_increment(s32 id){ + s_batimer.last[id] = s_batimer.value[id]; + s_batimer.value[id] += time_getDelta(); +} + +f32 batimer_get(s32 id){ + return s_batimer.value[id]; +} + +int batimer_isAt(s32 id, f32 value_sec){ + return s_batimer.last[id] <= value_sec + && value_sec < s_batimer.value[id]; +} + +int batimer_isLessThan(s32 id, f32 value_sec){ + return s_batimer.value[id] < value_sec; +} + +int batimer_isGreaterThan(s32 id, f32 value_sec){ + return value_sec < s_batimer.value[id]; +} + +int batimer_isNonzero(s32 id){ + return (0.0 != s_batimer.value[id]); +} + +int batimer_isZero(s32 id){ + return (0.0 == s_batimer.value[id]); +} + +void batimer_set(s32 id, f32 value_sec){ + s_batimer.last[id] = value_sec; + s_batimer.value[id] = value_sec; +} diff --git a/src/core2/bs/ant.c b/src/core2/bs/ant.c index 157e963b..2ddc38ea 100644 --- a/src/core2/bs/ant.c +++ b/src/core2/bs/ant.c @@ -4,6 +4,7 @@ #include "core2/yaw.h" #include "core2/ba/anim.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" void func_80293D48(f32,f32); @@ -401,7 +402,7 @@ void bsant_die_init(void){ bsant_substate = 0; baMarker_collisionOff(); func_80292E48(); - func_8029E3C0(0, 2.9f); + batimer_set(0, 2.9f); } void bsant_die_update(void){ @@ -433,7 +434,7 @@ void bsant_die_update(void){ break; } - if(func_8029E1A8(0)) + if(batimer_decrement(0)) func_8029B890(); bs_setState(0); diff --git a/src/core2/bs/bBarge.c b/src/core2/bs/bBarge.c index d459aea6..9f87577c 100644 --- a/src/core2/bs/bBarge.c +++ b/src/core2/bs/bBarge.c @@ -2,11 +2,10 @@ #include "functions.h" #include "variables.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" -s32 func_8029E2E0(s32, f32); void func_80292864(f32, f32); -void func_8029E3C0(s32, f32); /* .bss */ @@ -23,9 +22,9 @@ s32 func_8029F4E0(Actor * arg0){ void func_8029F4F0(void){ u8 val; f32 tmp_f; - if(func_8029E1A8(2)){ + if(batimer_decrement(2)){ func_8029AE74(0); - func_8029E3C0(2, 0.12f); + batimer_set(2, 0.12f); } if( (++D_8037D2A4) >= 3) D_8037D2A4 = 0; @@ -79,7 +78,7 @@ void bsbarge_init(void){ miscFlag_clear(MISC_FLAG_A); miscFlag_clear(MISC_FLAG_B); miscFlag_clear(MISC_FLAG_C); - func_8029E3C0(2, 0.01f); + batimer_set(2, 0.01f); } @@ -105,12 +104,12 @@ void bsbarge_update(void){ }else{ D_8037D2A0 = 500.0f; } - func_8029E3C0(1, 0.01f); + batimer_set(1, 0.01f); D_8037D2A5 = 1; break; case 1: - func_8029E1A8(1); - if(miscFlag_isFalse(MISC_FLAG_B) && func_8029E2E0(1, 0.1f)){ + batimer_decrement(1); + if(miscFlag_isFalse(MISC_FLAG_B) && batimer_isLessThan(1, 0.1f)){ if(miscFlag_isTrue(MISC_FLAG_C)){ func_8030E560(SFX_4_KAZOOIE_RUUUUUH, 30000); }else{ @@ -118,7 +117,7 @@ void bsbarge_update(void){ } miscFlag_set(MISC_FLAG_B); } - if(!func_8029E384(1)) + if(!batimer_isZero(1)) break; animctrl_setDuration(plyrMvmnt, 1.0f); @@ -135,14 +134,14 @@ void bsbarge_update(void){ if(animctrl_isStopped(plyrMvmnt)){ animctrl_setDuration(plyrMvmnt, 2.0f); baanim_setEnd(0.6f); - func_8029E3C0(0, 0.1f); + batimer_set(0, 0.1f); D_8037D2A5 = 3; } func_8029F4F0(); break; case 3: - func_8029E1A8(0); - if(miscFlag_isFalse(MISC_FLAG_C) || func_8029E384(0)){ + batimer_decrement(0); + if(miscFlag_isFalse(MISC_FLAG_C) || batimer_isZero(0)){ D_8037D2A0 -= 80.0f; } baphysics_set_target_horizontal_velocity(D_8037D2A0); diff --git a/src/core2/bs/bFlap.c b/src/core2/bs/bFlap.c index 29720a32..785bf0b6 100644 --- a/src/core2/bs/bFlap.c +++ b/src/core2/bs/bFlap.c @@ -3,6 +3,7 @@ #include "variables.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" f32 func_802A2858(void); @@ -31,7 +32,7 @@ void bsbflap_init(void) { baphysics_set_gravity(D_80364A14); func_8029E070(1); miscFlag_set(MISC_FLAG_12_HAS_FLAPPED); - func_8029E3C0(0, 2.5f); + batimer_set(0, 2.5f); D_8037D30C = sfxsource_createSfxsourceAndReturnIndex(); func_80299BD4(); D_8037D301 = 0; @@ -173,8 +174,8 @@ void bsbflap_update(void){ sp1c = BS_3D_FALL_TUMBLING; break; }//L802A2C94 - func_8029E1A8(0); - if(func_8029E384(0)) + batimer_decrement(0); + if(batimer_isZero(0)) sp1c = BS_2F_FALL; if(should_beak_bust()) diff --git a/src/core2/bs/bFly.c b/src/core2/bs/bFly.c index 14d9e529..d13789a7 100644 --- a/src/core2/bs/bFly.c +++ b/src/core2/bs/bFly.c @@ -4,6 +4,7 @@ #include "variables.h" #include "core2/ba/physics.h" #include "core2/ba/flap.h" +#include "core2/ba/timer.h" extern void baModel_setYDisplacement(f32); extern f32 func_8029B2D0(void); @@ -577,7 +578,7 @@ void func_802A48B4(void) { func_8029151C(0xD); ncDynamicCamD_func_802BF2C0(30.0f); func_8029B930(); - func_8029E3C0(0, 2.5f); + batimer_set(0, 2.5f); D_8037D344 = 2; } } else if (animctrl_isAt(sp18, 0.92f)) { @@ -601,7 +602,7 @@ void func_802A48B4(void) { break; case 2: func_802A47E0(); - if (func_8029E1A8(0)) { + if (batimer_decrement(0)) { func_8029B890(); } break; diff --git a/src/core2/bs/bLongLeg.c b/src/core2/bs/bLongLeg.c index c80ff853..ac23a10b 100644 --- a/src/core2/bs/bLongLeg.c +++ b/src/core2/bs/bLongLeg.c @@ -5,6 +5,7 @@ #include "core2/statetimer.h" #include "core2/ba/anim.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" /* .data */ @@ -88,7 +89,7 @@ void func_802A5404(void){ stateTimer_clear(STATE_TIMER_2_LONGLEG); func_803219F4(1); miscFlag_clear(MISC_FLAG_3); - func_8029E180(4, 0.5f); + batimer_incrementBy(4, 0.5f); func_802A531C(); } diff --git a/src/core2/bs/bSwim.c b/src/core2/bs/bSwim.c index aa7f1b42..499736b7 100644 --- a/src/core2/bs/bSwim.c +++ b/src/core2/bs/bSwim.c @@ -4,12 +4,11 @@ #include "core2/ba/model.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" extern f32 func_8029494C(void); extern f32 func_8029B2D0(void); -extern bool func_8029E284(s32, f32); -extern bool func_8029E314(s32, f32); /* .bss */ f32 D_8037D390; @@ -360,12 +359,12 @@ void func_802A7E2C(void) { sp30 = yaw_get(); func_80256E24(sp24, sp34, sp30, 0.0f, 0.0f, 800.0f); baphysics_set_velocity(sp24); - func_8029E3C0(1, 0.8f); + batimer_set(1, 0.8f); D_8037D396 = TRUE; } break; case 1: - if (func_8029E1A8(1)) { + if (batimer_decrement(1)) { next_state = BS_2B_DIVE_IDLE; } break; @@ -403,8 +402,8 @@ void func_802A7F6C(void) { roll_setIdeal(0.0f); D_8037D396 = 0; baMarker_collisionOff(); - func_8029E3C0(0, 0.0f); - func_8029E3C0(1, 0.0f); + batimer_set(0, 0.0f); + batimer_set(1, 0.0f); func_802906A4(3); func_80299CF4(SFX_CA_BANJO_DROWNING_1, 1.0f, 24000); } @@ -419,10 +418,10 @@ void func_802A8098(void) { func_80256E24(sp40, -90.0f, 0.0f, 0.0f, 0.0f, 100.0f); baphysics_set_target_velocity(sp40); baphysics_set_velocity(sp40); - func_8029E22C(1); - if( func_8029E284(1, 0.2f) - || func_8029E284(1, 0.8f) - || func_8029E284(1, 1.4f) + batimer_increment(1); + if( batimer_isAt(1, 0.2f) + || batimer_isAt(1, 0.8f) + || batimer_isAt(1, 1.4f) ) { func_80299CF4(SFX_CB_BANJO_DROWNING_2, 1.0f, 24000); } @@ -435,27 +434,27 @@ void func_802A8098(void) { particleEmitter_setParticleVelocityRange(p_ctrl, -60.0f, -50.0f, -60.0f, 60.0f, 100.0f, 60.0f); particleEmitter_emitN(p_ctrl, 1); } - if (func_8029E270(1) < 1.8 && func_802A73BC() && D_8037D395) { + if (batimer_get(1) < 1.8 && func_802A73BC() && D_8037D395) { next_state = BS_2D_SWIM_IDLE; } - if (func_8029E314(1, 1.55f)) { + if (batimer_isGreaterThan(1, 1.55f)) { baphysics_set_vertical_velocity(-50.0f); } - if (func_8029E284(1, 1.9f)) { + if (batimer_isAt(1, 1.9f)) { func_802914CC(0xD); ncDynamicCamD_func_802BF2C0(80.0f); if (D_8037D394) { - func_8029E3C0(0, 0.5f); + batimer_set(0, 0.5f); } else { func_8029C984(); - func_8029E3C0(0, 2.75f); + batimer_set(0, 2.75f); } } break; case 1: break; } - if (func_8029E1A8(0)) { + if (batimer_decrement(0)) { func_8029B890(); } bs_setState(next_state); diff --git a/src/core2/bs/beeMain.c b/src/core2/bs/beeMain.c index ba6082c2..5fd3a032 100644 --- a/src/core2/bs/beeMain.c +++ b/src/core2/bs/beeMain.c @@ -3,9 +3,9 @@ #include "variables.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" f32 func_8029B41C(void); -void func_8029E3C0(s32, f32); void func_80299628(s32); void yaw_applyIdeal(void); void ncDynamicCamD_func_802BF2C0(f32); @@ -426,7 +426,7 @@ void bsbeemain_die_init(void){ ncDynamicCamD_func_802BF2C0(30.0f); func_8029C984(); func_8030E58C(SFX_36_BANJO_DOH, 1.8f); - func_8029E3C0(0, 2.9f); + batimer_set(0, 2.9f); D_8037D2D4 = 0; } @@ -460,7 +460,7 @@ void func_802A1DD8(void){ } break; }//L802A1EFC - if(func_8029E1A8(0)) + if(batimer_decrement(0)) func_8029B890(); bs_setState(0); @@ -523,12 +523,12 @@ void func_802A2098(void){ func_8025A6EC(COMUSIC_42_NOTEDOOR_OPENING_FANFARE, -1); func_8029151C(0xC); baMarker_collisionOff(); - func_8029E3C0(0, 3.0f); + batimer_set(0, 3.0f); } void func_802A2130(void){ s32 next = 0; - if(func_8029E1A8(0)){ + if(batimer_decrement(0)){ next = BS_85_BEE_IDLE; } bs_setState(next); diff --git a/src/core2/bs/croc.c b/src/core2/bs/croc.c index df29eaeb..692872d9 100644 --- a/src/core2/bs/croc.c +++ b/src/core2/bs/croc.c @@ -4,6 +4,7 @@ #include "core2/statetimer.h" #include "core2/ba/anim.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" int bscroc_inSet(enum bs_e state); @@ -447,7 +448,7 @@ void bscroc_die_init(void){ ncDynamicCamD_func_802BF2C0(30.0f); func_8029C984(); func_8030E58C(SFX_36_BANJO_DOH, 1.8f); - func_8029E3C0(0, 2.9f); + batimer_set(0, 2.9f); D_8037D3EC = 0; } @@ -483,7 +484,7 @@ void bscroc_die_update(void){ break; }//L802ACECC - if(func_8029E1A8(0)) + if(batimer_decrement(0)) func_8029B890(); bs_setState(next_state); diff --git a/src/core2/bs/crouch.c b/src/core2/bs/crouch.c index c3bc89e3..652bcf64 100644 --- a/src/core2/bs/crouch.c +++ b/src/core2/bs/crouch.c @@ -3,6 +3,7 @@ #include "variables.h" #include "core2/ba/anim.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" /* .bss */ f32 D_8037D400; @@ -23,7 +24,7 @@ void func_802AD6FC(void){ void func_802AD728(void){ baanim_playForDuration_onceStartingAt(ASSET_10C_ANIM_BSCROUCH_IDLE, 0.5f, 0.9999f); - func_8029E3C0(2, 2.0f); + batimer_set(2, 2.0f); D_8037D404 = 1; } @@ -64,8 +65,8 @@ void bscrouch_init(void){ func_8029957C(7); func_8029932C(8.0f); baphysics_set_type(BA_PHYSICS_LOCKED_ROTATION); - func_8029E3C0(0, 0.7f); - func_8029E3C0(1, 0.2f); + batimer_set(0, 0.7f); + batimer_set(1, 0.2f); baphysics_get_velocity(sp28); D_8037D400 = gu_sqrtf(sp28[0]*sp28[0] + sp28[2]*sp28[2]); if(140.0f < D_8037D400) @@ -85,10 +86,10 @@ void bscrouch_update(void){ f32 pad; f32 sp20; - func_8029E1A8(0); - func_8029E1A8(1); + batimer_decrement(0); + batimer_decrement(1); - sp30 = ml_map_f(func_8029E270(0), 0.0f, 0.3f, 0.0f, D_8037D400); + sp30 = ml_map_f(batimer_get(0), 0.0f, 0.3f, 0.0f, D_8037D400); baphysics_set_target_horizontal_velocity(sp30); if(220.0f < sp30) func_802929F8(); @@ -101,7 +102,7 @@ void bscrouch_update(void){ case 0://802ADA64 if(sp30 != 0.0f) break; - func_8029E3C0(2, 2.0f); + batimer_set(2, 2.0f); D_8037D404 = 1; break; @@ -110,8 +111,8 @@ void bscrouch_update(void){ func_802AD6D0(); } else{ - func_8029E1A8(2); - if(func_8029E384(2)) + batimer_decrement(2); + if(batimer_isZero(2)) func_802AD6FC(); } break; @@ -164,7 +165,7 @@ void bscrouch_update(void){ sp34 = BS_2F_FALL; sp34 = func_802ADCD4(sp34); - if(sp34 == BS_1_IDLE && func_8029E348(1)) + if(sp34 == BS_1_IDLE && batimer_isNonzero(1)) sp34 = 0; if(player_inWater()) diff --git a/src/core2/bs/die.c b/src/core2/bs/die.c index 8ea676c6..11ff719b 100644 --- a/src/core2/bs/die.c +++ b/src/core2/bs/die.c @@ -3,6 +3,7 @@ #include "variables.h" #include "core2/ba/anim.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" /* .bss */ f32 D_8037D410; @@ -56,7 +57,7 @@ void bsdie_init(void){ func_8029151C(0xd); ncDynamicCamD_func_802BF2C0(30.0f); func_8029C984(); - func_8029E3C0(0,2.9f); + batimer_set(0,2.9f); D_8037D414 = 0; baMarker_collisionOff(); func_80292E48(); @@ -104,10 +105,10 @@ void bsdie_update(void){ case 3: break; }//L802AE218 - if(func_8029E1A8(0)) + if(batimer_decrement(0)) func_8029B890(); - if( func_8029E270(0) != 0.0f + if( batimer_get(0) != 0.0f && func_80294574() && ( D_8037D414 || ( animctrl_isStopped(aCtrl) diff --git a/src/core2/bs/droneenter.c b/src/core2/bs/droneenter.c index 39980e8c..c87191f3 100644 --- a/src/core2/bs/droneenter.c +++ b/src/core2/bs/droneenter.c @@ -2,6 +2,7 @@ #include "functions.h" #include "variables.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" enum bsdroneenter_state_e{ @@ -26,18 +27,18 @@ u8 bsDroneEnterSubstate; void __bsDroneEnter_setSubstate(enum bsdroneenter_state_e arg0) { switch (arg0) { case 1: - func_8029E3C0(0, 0.2f); + batimer_set(0, 0.2f); break; case 2: func_8025A6CC(COMUSIC_43_ENTER_LEVEL_GLITTER, 32000); func_8025AABC(COMUSIC_43_ENTER_LEVEL_GLITTER); - func_8029E3C0(0, 0.4f); + batimer_set(0, 0.4f); baModel_setEnvAlpha(0); baModel_updateModel(); break; case 3: comusic_8025AB44(COMUSIC_43_ENTER_LEVEL_GLITTER, 0, 2000); - func_8029E3C0(0, 0.55f); + batimer_set(0, 0.55f); break; } bsDroneEnterSubstate = arg0; @@ -126,20 +127,20 @@ void bsDroneEnter_update(void) { switch (bsDroneEnterSubstate) { case BSDRONEENTER_SUBSTATE_1: func_802AE914(); - if (func_8029E1A8(0)) { + if (batimer_decrement(0)) { __bsDroneEnter_setSubstate(BSDRONEENTER_SUBSTATE_2); } break; case BSDRONEENTER_SUBSTATE_2: func_802AE914(); - sp20 = func_8029E1A8(0); - baModel_setEnvAlpha((s32) ml_map_f(func_8029E270(0), 0.0f, 0.4f, 255.0f, 0.0f)); + sp20 = batimer_decrement(0); + baModel_setEnvAlpha((s32) ml_map_f(batimer_get(0), 0.0f, 0.4f, 255.0f, 0.0f)); if (sp20) { __bsDroneEnter_setSubstate(BSDRONEENTER_SUBSTATE_3); } break; case BSDRONEENTER_SUBSTATE_3: - if (func_8029E1A8(0)) { + if (batimer_decrement(0)) { next_state = bs_getIdleState(); } break; diff --git a/src/core2/bs/dronevanish.c b/src/core2/bs/dronevanish.c index 70baca01..58c6d238 100644 --- a/src/core2/bs/dronevanish.c +++ b/src/core2/bs/dronevanish.c @@ -3,6 +3,7 @@ #include "variables.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" /* .bss */ struct { @@ -19,18 +20,18 @@ u8 D_8037D468; void __bsDroneVanish_setSubstate(s32 next_state) { switch (next_state) { case 1: - func_8029E3C0(0, 0.3f); + batimer_set(0, 0.3f); break; case 2: func_8025A6CC(COMUSIC_43_ENTER_LEVEL_GLITTER, 32000); func_8025AABC(COMUSIC_43_ENTER_LEVEL_GLITTER); - func_8029E3C0(0, 0.4f); + batimer_set(0, 0.4f); break; case 3: gcpausemenu_returnToLair(); baModel_setVisible(FALSE); comusic_8025AB44(COMUSIC_43_ENTER_LEVEL_GLITTER, 0, 2000); - func_8029E3C0(0, 2.0f); + batimer_set(0, 2.0f); break; } D_8037D468 = next_state; @@ -111,20 +112,20 @@ void bsDroneVanish_update(void) { switch (D_8037D468) { case 1: __bsDroneVanish_update(); - if (func_8029E1A8(0)) { + if (batimer_decrement(0)) { __bsDroneVanish_setSubstate(2); } break; case 2: __bsDroneVanish_update(); - sp20 = func_8029E1A8(0); - baModel_setEnvAlpha((s32) ml_map_f(func_8029E270(0), 0.0f, 0.4f, 0.0f, 255.0f)); + sp20 = batimer_decrement(0); + baModel_setEnvAlpha((s32) ml_map_f(batimer_get(0), 0.0f, 0.4f, 0.0f, 255.0f)); if (sp20) { __bsDroneVanish_setSubstate(3); } break; case 3: - if (func_8029E1A8(0)) { + if (batimer_decrement(0)) { next_state = bs_getIdleState(); } break; diff --git a/src/core2/bs/dronexform.c b/src/core2/bs/dronexform.c index 2e3219c0..f6dda774 100644 --- a/src/core2/bs/dronexform.c +++ b/src/core2/bs/dronexform.c @@ -3,6 +3,7 @@ #include "functions.h" #include "variables.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" extern void player_setYPosition(f32); @@ -260,21 +261,21 @@ static void __bsdronexform_setState(int next_state){ func_802AFBAC(0.04f); func_802B01B0(0.05f); baphysics_set_type(BA_PHYSICS_FREEZE); - func_8029E3C0(0, 2.8f); + batimer_set(0, 2.8f); FUNC_8030E624(SFX_17E_MUMBO_TRANSFORMATION_01, 1.0f, 15000); break; case 2:// 802B02A8 - func_8029E3C0(0, 0.5f); + batimer_set(0, 0.5f); baphysics_set_type(BA_PHYSICS_TRANSFORM); break; case 3:// 802B02C4 - func_8029E3C0(0, 0.05f); + batimer_set(0, 0.05f); break; case 4:// 802B02DC - func_8029E3C0(0, 0.8f); + batimer_set(0, 0.8f); break; case 5:// 802B02F4 @@ -282,7 +283,7 @@ static void __bsdronexform_setState(int next_state){ sp24[1] += 30.0f; viewport_adjustPointDistance(sp24, 80.0f); func_802AFBB8(sp24); - func_8029E3C0(0, 0.1f); + batimer_set(0, 0.1f); break; case 6: // 802B033C @@ -296,23 +297,23 @@ static void __bsdronexform_setState(int next_state){ baModel_updateModel(); //update player model func_8029BD44(&sp34, &sp30); baanim_playForDuration_loopSmooth(sp34, sp30); - func_8029E3C0(0, 0.1f); + batimer_set(0, 0.1f); break; case 7: // 802B03E4 - func_8029E3C0(0, 0.8f); + batimer_set(0, 0.8f); break; case 8: // 802B03FC if(D_8037D470.room_transformation == TRANSFORM_1_BANJO && D_8037D470.player_transformation == TRANSFORM_1_BANJO){ func_8025A6EC(COMUSIC_3C_MINIGAME_LOSS, 28000); } - func_8029E3C0(0, 1.0f); + batimer_set(0, 1.0f); break; case 9:// 802B0438 D_8037D470.unk1C = 0; - func_8029E3C0(0, 0.7f); + batimer_set(0, 0.7f); baphysics_set_type(BA_PHYSICS_FREEZE); break; } @@ -339,7 +340,7 @@ void bsdronexform_init(void){ } f32 func_802B051C(s32 arg0, f32 arg1, f32 arg2, f32 arg3){ - return ml_map_f(func_8029E270(arg0), arg1, 0.0f, arg2, arg3); + return ml_map_f(batimer_get(arg0), arg1, 0.0f, arg2, arg3); } void bsdronexform_update(void){ @@ -350,7 +351,7 @@ void bsdronexform_update(void){ func_802B01C8(); switch(D_8037D470.state){ case 1: - sp24 = func_8029E1A8(0); + sp24 = batimer_decrement(0); player_setYPosition(func_802B051C(0, 2.8f, 0.0f, 90.0f) + D_8037D470.unk2C); func_802AFB94(func_802B051C(0, 2.8f, 0.28f, 1.0f)); func_802AFBA0(func_802B051C(0, 2.8f, 180.0f, 55.0f)); @@ -369,40 +370,40 @@ void bsdronexform_update(void){ break; case 2: - sp24 = func_8029E1A8(0); + sp24 = batimer_decrement(0); func_802B01B0(func_802B051C(0, 0.5f, 0.4f, 0.6f)); if(sp24) __bsdronexform_setState(3); break; case 3: - sp24 = func_8029E1A8(0); + sp24 = batimer_decrement(0); func_802B01BC(func_802B051C(0, 0.05f, 0.8f, 1.2f)); if(sp24) __bsdronexform_setState(4); break; case 4: - sp24 = func_8029E1A8(0); + sp24 = batimer_decrement(0); func_802B01BC(func_802B051C(0, 0.8f, 1.2f, 0.09f)); if(sp24) __bsdronexform_setState(5); break; case 5: - sp24 = func_8029E1A8(0); + sp24 = batimer_decrement(0); if(sp24) __bsdronexform_setState(6); break; case 6: - sp24 = func_8029E1A8(0); + sp24 = batimer_decrement(0); if(sp24) __bsdronexform_setState(7); break; case 7: - sp24 = func_8029E1A8(0); + sp24 = batimer_decrement(0); func_802B01BC(func_802B051C(0, 0.8f, 0.09f, 1.0f)); if(sp24) __bsdronexform_setState(8); @@ -416,7 +417,7 @@ void bsdronexform_update(void){ (s32)func_802B051C(0, 1.0f, 80.0f, 255.0f), (s32)func_802B051C(0, 1.0f, 80.0f, 255.0f) ); - if(func_8029E1A8(0)){ + if(batimer_decrement(0)){ if(player_getTransformation() == TRANSFORM_7_WISHWASHY){ bs_setState(0x33); }else{ @@ -426,7 +427,7 @@ void bsdronexform_update(void){ break; case 9: - sp24 = func_8029E1A8(0); + sp24 = batimer_decrement(0); player_setYPosition(func_802B051C(0, 0.7f, 90.0f, 0.0f) + D_8037D470.unk2C); if(sp24) bs_setState(bs_getIdleState()); diff --git a/src/core2/bs/jump.c b/src/core2/bs/jump.c index 3558c159..02ab435c 100644 --- a/src/core2/bs/jump.c +++ b/src/core2/bs/jump.c @@ -6,6 +6,7 @@ #include "core2/ba/anim.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" f32 func_80294438(void); void func_80299B58(f32, f32); @@ -390,27 +391,27 @@ void bsjump_tumble_init(void){ func_8029C7F4(1,1,3, BA_PHYSICS_AIRBORN); baModel_setYDisplacement(60.0f); if(bafalldamage_get_state() == 1){ - func_8029E3C0(0, 0.5f); - func_8029E3C0(1, 0.41f); + batimer_set(0, 0.5f); + batimer_set(1, 0.41f); func_80299CF4(SFX_52_BANJO_YAH_OH, 1.0f, 22000); }else{ - func_8029E3C0(0, 0.0f); - func_8029E3C0(1, 0.01f); + batimer_set(0, 0.0f); + batimer_set(1, 0.01f); } D_8037D4C0 = 0; } void bsjump_tumble_update(void){ enum bs_e sp1C = 0; - if(func_8029E1A8(1)) + if(batimer_decrement(1)) func_80299CF4(SFX_63_BANJO_UWAAAAOOH, 1.0f, 32000); - func_8029E1A8(0); + batimer_decrement(0); func_802B6FA8(); - if(func_8029E384(1)){ + if(batimer_isZero(1)){ pitch_setIdeal(pitch_getIdeal() + 20.0f); } - if(func_8029E348(0)){ + if(batimer_isNonzero(0)){ if(should_feathery_flap()) sp1C = BS_BFLAP; diff --git a/src/core2/bs/pumpkin.c b/src/core2/bs/pumpkin.c index 29868e48..9e87ee6c 100644 --- a/src/core2/bs/pumpkin.c +++ b/src/core2/bs/pumpkin.c @@ -309,7 +309,7 @@ void func_802B2BF0(void) { baanim_playForDuration_loop(ASSET_A0_ANIM_BSPUMPKIN_WALK, 0.8f); func_8029C7F4(1, 1, 2, BA_PHYSICS_FREEZE); func_80294378(6); - func_8029E3C0(0, 0.0f); + batimer_set(0, 0.0f); } void func_802B2C58(void) { @@ -318,8 +318,8 @@ void func_802B2C58(void) { f32 sp34; f32 sp28[3]; - func_8029E22C(0); - sp34 = func_8029E270(0); + batimer_increment(0); + sp34 = batimer_get(0); sp38 = yaw_getIdeal(); sp3C = ml_map_f(sp34, 0.0f, 2.3f, 0.0f, 45.0f); yaw_setIdeal(mlNormalizeAngle(sp38 + sp3C)); @@ -459,7 +459,7 @@ void bspumpkin_die_init(void) { func_8029C984(); baMarker_collisionOff(); func_80292E48(); - func_8029E3C0(1, 2.9f); + batimer_set(1, 2.9f); D_8037D4E0 = 0; } @@ -516,7 +516,7 @@ void bspumpkin_die_update(void){ break; } - if (func_8029E1A8(1) != 0) { + if (batimer_decrement(1) != 0) { func_8029B890(); } bs_setState(0); diff --git a/src/core2/bs/rebound.c b/src/core2/bs/rebound.c index 1aeebd94..6e30f674 100644 --- a/src/core2/bs/rebound.c +++ b/src/core2/bs/rebound.c @@ -3,6 +3,7 @@ #include "variables.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" extern f32 func_80296548(void); extern f32 func_8029653C(void); @@ -50,7 +51,7 @@ void func_802B360C(void) { sp44[2] /= sp24; sp44[1] = sp20; baphysics_set_velocity(sp44); - func_8029E3C0(6, sp24); + batimer_set(6, sp24); } else { func_802B35D0(0); func_80298760(sp1C); @@ -72,7 +73,7 @@ void func_802B37DC(void) { f32 velocity[3]; if (D_8037D500 != 0) { - if ((D_8037D500 == 1) && func_8029E1A8(6)) { + if ((D_8037D500 == 1) && batimer_decrement(6)) { baphysics_get_velocity(velocity); velocity[0] = 0.0f; velocity[2] = 0.0f; @@ -103,7 +104,7 @@ void func_802B3868(void) { animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE); animctrl_start(anim_ctrl, "bsrebound.c", 0xC6); func_8030E58C(SFX_56_BANJO_HUI, 1.0f); - func_8029E3C0(0, 1.5f); + batimer_set(0, 1.5f); baMarker_collisionOff(); } @@ -114,7 +115,7 @@ void func_802B3954(void) { next_state = 0; anim_ctrl = baanim_getAnimCtrlPtr(); - if (func_8029E1A8(0) && map_get() == MAP_93_GL_DINGPOT) { + if (batimer_decrement(0) && map_get() == MAP_93_GL_DINGPOT) { baMarker_collisionOn(); } func_802B37DC(); diff --git a/src/core2/bs/timeout.c b/src/core2/bs/timeout.c index 1c159e76..4bd5a9dc 100644 --- a/src/core2/bs/timeout.c +++ b/src/core2/bs/timeout.c @@ -2,6 +2,7 @@ #include "functions.h" #include "variables.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" void func_80292E80(s32, f32); @@ -60,11 +61,11 @@ void func_802B63F8(void){ comusic_playTrack(COMUSIC_3C_MINIGAME_LOSS); core1_ce60_incOrDecCounter(FALSE); baMarker_collisionOff(); - func_8029E3C0(0, 2.9f); + batimer_set(0, 2.9f); } void func_802B64D0(void){ - if(func_8029E1A8(0)) + if(batimer_decrement(0)) func_8029B6F0(); } diff --git a/src/core2/bs/twirl.c b/src/core2/bs/twirl.c index 84adc5fb..fac4ae5c 100644 --- a/src/core2/bs/twirl.c +++ b/src/core2/bs/twirl.c @@ -3,6 +3,8 @@ #include "variables.h" #include "core2/ba/anim.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" + /* .bss */ f32 D_8037D5A0; u8 D_8037D5A4; @@ -32,7 +34,7 @@ void bstwirl_init(void){ baphysics_set_target_horizontal_velocity(600.0f); func_80299CF4(SFX_32_BANJO_EGHEE, 1.0f, 0x6590); _bstwirlHitboxActive = TRUE; - func_8029E3C0(0, 0.01f); + batimer_set(0, 0.01f); D_8037D5A4 = 0; } @@ -48,9 +50,9 @@ void bstwirl_update(void){ D_8037D5A4 = 2; break; case 2: - if(func_8029E1A8(0)){ + if(batimer_decrement(0)){ func_8029AE74(0); - func_8029E3C0(0, 0.12f); + batimer_set(0, 0.12f); } if(animctrl_isAt(aCtrl, 0.8011f)){ animctrl_setDuration(aCtrl, 2.5f); diff --git a/src/core2/bs/walrus.c b/src/core2/bs/walrus.c index a0960fa9..e095ea21 100644 --- a/src/core2/bs/walrus.c +++ b/src/core2/bs/walrus.c @@ -3,6 +3,7 @@ #include "variables.h" #include "core2/ba/anim.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" extern void func_8029AD68(f32, s32); @@ -470,7 +471,7 @@ void bswalrus_die_init(void){ comusic_playTrack(0x1A); baMarker_collisionOff(); func_80292E48(); - func_8029E3C0(0, 1.5f); + batimer_set(0, 1.5f); func_802B8110(); D_8037D5C8 = 0; } @@ -500,7 +501,7 @@ void bswalrus_die_update(void){ break; }//L802B8FE0 - if(func_8029E1A8(0)) + if(batimer_decrement(0)) func_8029B890(); bs_setState(next_state); @@ -733,7 +734,7 @@ void bswalrus_timeout_init(void) { comusic_playTrack(COMUSIC_3C_MINIGAME_LOSS); core1_ce60_incOrDecCounter(FALSE); baMarker_collisionOff(); - func_8029E3C0(0, 2.9f); + batimer_set(0, 2.9f); func_802B813C(); func_80292E48(); } @@ -741,7 +742,7 @@ void bswalrus_timeout_init(void) { void func_802B9830(void) { yaw_setIdeal(func_8029B41C() + 35.0f); func_80299628(0); - if (func_8029E1A8(0) != 0) { + if (batimer_decrement(0) != 0) { func_8029B6F0(); } } diff --git a/src/core2/bs/washy.c b/src/core2/bs/washy.c index 3b2cb332..2d4c74b5 100644 --- a/src/core2/bs/washy.c +++ b/src/core2/bs/washy.c @@ -3,6 +3,7 @@ #include "variables.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" /* .bss */ u8 D_8037D5D0; @@ -23,18 +24,18 @@ void func_802B9980(s32 arg0){ baphysics_set_vertical_velocity(300.0f); break; case 3: //L802B9A20 - func_8029E3C0(0, 0.01f); + batimer_set(0, 0.01f); break; case 4: //L802B9A38 FUNC_8030E624(SFX_3EB_UNKNOWN, 0.7f, 25000); - func_8029E3C0(0, 0.25f); + batimer_set(0, 0.25f); break; case 5: //L802B9A58 func_8030E58C(SFX_D0_GRIMLET_SQUEAK, 0.9f); animctrl_setDuration(plyr_anim, 2.2f); break; case 6: //L802B9A84 - func_8029E3C0(0, 0.01f); + batimer_set(0, 0.01f); case 0: //L802B9A94 break; } @@ -70,11 +71,11 @@ void func_802B9B14(void){ func_802B9980(3); break; case 3: // L802B9BA8 - if(func_8029E1A8(0)) + if(batimer_decrement(0)) func_802B9980(4); break; case 4: // L802B9BC8 - if(func_8029E1A8(0)) + if(batimer_decrement(0)) func_802B9980(5); break; case 5: // L802B9BE8 @@ -86,12 +87,12 @@ void func_802B9B14(void){ } break; case 6: // L802B9C20 - if(func_8029E1A8(0)){ + if(batimer_decrement(0)){ sp18 = func_802F9AA8(SFX_12B_BOILING_AND_BUBBLING); func_802F9DB8(sp18, 1.0f, 1.2f, 0.0f); func_802F9F80(sp18, 0.05f, 0.05 + randf()*0.4, 0.1f); func_802FA060(sp18, 28000, 32000, 0.0f); - func_8029E3C0(0, 0.8 + randf()*0.7); + batimer_set(0, 0.8 + randf()*0.7); } break; } diff --git a/src/core2/code_16010.c b/src/core2/code_16010.c index 64ca786e..7884ef05 100644 --- a/src/core2/code_16010.c +++ b/src/core2/code_16010.c @@ -2,6 +2,7 @@ #include "functions.h" #include "variables.h" +#include "core2/ba/timer.h" #include "core2/statetimer.h" /* .bss */ @@ -261,7 +262,7 @@ void func_8029D968(void){ }//L8029DA18 sp24 = func_8029D7B4(); - func_8029E1A8(4); + batimer_decrement(4); if(sp24){ if(map_get() == MAP_8E_GL_FURNACE_FUN){ if(bs_checkInterrupt(BS_INTR_13)){ @@ -270,8 +271,8 @@ void func_8029D968(void){ } else{//L8029DA6C - if(func_8029E384(4)){ - func_8029E3C0(4, 4.0f); + if(batimer_isZero(4)){ + batimer_set(4, 4.0f); if(func_8028F504(0xD)){ func_8029D230(); rumbleManager_80250D94(1.0f, 0.5f, 0.4f); diff --git a/src/core2/code_171F0.c b/src/core2/code_171F0.c deleted file mode 100644 index 7d2b028f..00000000 --- a/src/core2/code_171F0.c +++ /dev/null @@ -1,59 +0,0 @@ -#include -#include "functions.h" -#include "variables.h" - -/* .bss */ -struct { - f32 unk0[0x8]; - f32 unk20[0x8]; -} D_8037D250; - -/* .code*/ -void func_8029E180(s32 arg0, f32 arg1){ - D_8037D250.unk20[arg0] = D_8037D250.unk0[arg0]; - D_8037D250.unk0[arg0] += arg1; -} - -int func_8029E1A8(s32 arg0){ - D_8037D250.unk20[arg0] = D_8037D250.unk0[arg0]; - if(0.0f == D_8037D250.unk0[arg0]){ - return 0; - } - D_8037D250.unk0[arg0] = ml_max_f(0.0f, D_8037D250.unk0[arg0] - time_getDelta()); - return D_8037D250.unk0[arg0] == 0.0f; -} - -void func_8029E22C(s32 arg0){ - D_8037D250.unk20[arg0] = D_8037D250.unk0[arg0]; - D_8037D250.unk0[arg0] += time_getDelta(); -} - -f32 func_8029E270(s32 arg0){ - return D_8037D250.unk0[arg0]; -} - -int func_8029E284(s32 arg0, f32 arg1){ - return D_8037D250.unk20[arg0] <= arg1 - && arg1 < D_8037D250.unk0[arg0]; -} - -int func_8029E2E0(s32 arg0, f32 arg1){ - return D_8037D250.unk0[arg0] < arg1; -} - -int func_8029E314(s32 arg0, f32 arg1){ - return arg1 < D_8037D250.unk0[arg0]; -} - -int func_8029E348(s32 arg0){ - return (0.0 != D_8037D250.unk0[arg0]); -} - -int func_8029E384(s32 arg0){ - return (0.0 == D_8037D250.unk0[arg0]); -} - -void func_8029E3C0(s32 arg0, f32 arg1){ - D_8037D250.unk20[arg0] = arg1; - D_8037D250.unk0[arg0] = arg1; -} diff --git a/src/core2/code_9BD0.c b/src/core2/code_9BD0.c index fa8b5fc0..7091cec7 100644 --- a/src/core2/code_9BD0.c +++ b/src/core2/code_9BD0.c @@ -1,6 +1,7 @@ #include #include "functions.h" #include "variables.h" +#include "core2/ba/timer.h" void func_80291488(s32 arg0); void func_802914CC(s32 arg0); @@ -31,7 +32,7 @@ void func_80290B6C(void){ D_8037C062 = 0; func_80291488(2); func_80290B60(2); - func_8029E3C0(7, 0.5f); + batimer_set(7, 0.5f); } void func_80290BC0(s32 arg0){ @@ -119,7 +120,7 @@ int func_80290E8C(void){ void func_80290F14(void){ if( !func_80298850() && func_8028ECAC() != 4 - && func_8029E270(7) == 0.0f + && batimer_get(7) == 0.0f && should_zoom_out_camera() ){ switch(D_8037C061){ @@ -142,7 +143,7 @@ void func_80290F14(void){ func_80290B60(1); break; } - func_8029E3C0(0x7, 0.4f); + batimer_set(0x7, 0.4f); } } @@ -239,7 +240,7 @@ void func_80291328(void){ /* camera update */ void cameraMode_update(void){ - func_8029E1A8(7); + batimer_decrement(7); func_80290298(); func_8029028C(0); switch(D_8037C062){ diff --git a/src/core2/code_A960.c b/src/core2/code_A960.c index bb345c0f..ddd23dd4 100644 --- a/src/core2/code_A960.c +++ b/src/core2/code_A960.c @@ -2,6 +2,7 @@ #include "functions.h" #include "variables.h" #include "core2/ba/physics.h" +#include "core2/ba/timer.h" void codeA960_forceLoadzone(s32); @@ -17,7 +18,7 @@ void codeA960_forceLoadzone(s32 arg0){ if(!isLoadzoneFlagSet()){ miscFlag_set(MISC_FLAG_15_LOADZONE); if(arg0){ - func_8029E3C0(5, 2.0f); + batimer_set(5, 2.0f); func_8029C984(); bs_setState(BS_5A_LOADZONE); baModel_setVisible(FALSE); @@ -28,7 +29,7 @@ void codeA960_forceLoadzone(s32 arg0){ } void func_802919A0(void){ - if(isLoadzoneFlagSet() && func_8029E1A8(5)){ + if(isLoadzoneFlagSet() && batimer_decrement(5)){ func_8029B890(); codeA960_forceLoadzone(0); }