baflap documenation
This commit is contained in:
@@ -516,8 +516,8 @@ segments:
|
||||
- [0xF7FD00, c, code_6B30]
|
||||
- [0xF7FFA0, c, ba/carriedobj]
|
||||
- [0xF80230, c, code_7060]
|
||||
- [0xF81F70, bin, core2_untouched_text]
|
||||
# - [0xF5E700, c, code_8DA0] #DONE
|
||||
- [0xF81F70, c, ba/flap]
|
||||
- [0xF822B0, bin, core2_untouched_text]
|
||||
# - [0xF5EA40, c, code_90E0] #DONE
|
||||
# - [0xF5EBF0, c, code_9290] #DONE
|
||||
# - [0xF5EDB0, c, code_9450] #DONE
|
||||
@@ -1383,7 +1383,7 @@ segments:
|
||||
- [0x0106C980, .bss, ba/marker]
|
||||
- [0x0106C980, .bss, code_6B30]
|
||||
- [0x0106C980, .bss, code_7060]
|
||||
# - [0x0106C980, .bss, code_8DA0]
|
||||
- [0x0106C980, .bss, ba/flap]
|
||||
# - [0x0106C980, .bss, code_90E0]
|
||||
# - [0x0106C980, .bss, code_9290]
|
||||
# - [0x0106C980, .bss, code_9450]
|
||||
|
@@ -517,7 +517,7 @@ segments:
|
||||
- [0xF5C490, c, code_6B30] #DONE
|
||||
- [0xF5C730, c, ba/carriedobj] #DONE
|
||||
- [0xF5C9C0, c, code_7060] #DONE
|
||||
- [0xF5E700, c, code_8DA0] #DONE
|
||||
- [0xF5E700, c, ba/flap] #DONE
|
||||
- [0xF5EA40, c, code_90E0] #DONE
|
||||
- [0xF5EBF0, c, code_9290] #DONE
|
||||
- [0xF5EDB0, c, code_9450] #DONE
|
||||
@@ -1381,7 +1381,7 @@ segments:
|
||||
- [0x1048560, .bss, ba/marker]
|
||||
- [0x1048560, .bss, code_6B30]
|
||||
- [0x1048560, .bss, code_7060]
|
||||
- [0x1048560, .bss, code_8DA0]
|
||||
- [0x1048560, .bss, ba/flap]
|
||||
- [0x1048560, .bss, code_90E0]
|
||||
- [0x1048560, .bss, code_9290]
|
||||
- [0x1048560, .bss, code_9450]
|
||||
|
13
include/core2/ba/flap.h
Normal file
13
include/core2/ba/flap.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifndef __BA_FLAP_H__
|
||||
#define __BA_FLAP_H__
|
||||
|
||||
#include <ultra64.h>
|
||||
|
||||
s32 baflap_getCount(void);
|
||||
bool baflap_add(f32 duration);
|
||||
void baflap_reset(void);
|
||||
void baflap_activate(bool active);
|
||||
void baflap_update(void);
|
||||
|
||||
|
||||
#endif // __BA_FLAP_H__
|
103
src/core2/ba/flap.c
Normal file
103
src/core2/ba/flap.c
Normal file
@@ -0,0 +1,103 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
u8 s_active;
|
||||
f32 s_flap_max_timer;
|
||||
f32 s_flap_list[5];
|
||||
|
||||
/* .code */
|
||||
|
||||
/**
|
||||
* @brief returns the number of nonzero flap timers in `s_flap_list`
|
||||
*
|
||||
* @return s32 number of active flaps
|
||||
*/
|
||||
s32 baflap_getCount(void) {
|
||||
s32 i;
|
||||
s32 cnt;
|
||||
|
||||
cnt = 0;
|
||||
for(i = 0; i < 5; i++){
|
||||
if(s_flap_list[i] != 0.0f){
|
||||
cnt++;
|
||||
}
|
||||
}
|
||||
return cnt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief add a flap duration to the flap list
|
||||
*
|
||||
* @param duration duration of flap in seconds
|
||||
* @return true if baflap duration was extended
|
||||
* @return false if baflap does not extend duration or all timers in flap queue are occupied
|
||||
*/
|
||||
bool baflap_add(f32 duration) {
|
||||
s32 i;
|
||||
|
||||
// check that timer is far enough away from any value
|
||||
for(i = 0; i < 5; i++){
|
||||
if(duration - 0.25 < s_flap_list[i]){
|
||||
s_flap_max_timer = duration;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
// add to list
|
||||
for(i = 0; i < 5; i++){
|
||||
if (s_flap_list[i] == 0.0f) {
|
||||
s_flap_list[i] = duration;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
s_flap_max_timer = duration;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief zeros all flap timers and sets as inactive
|
||||
*
|
||||
*/
|
||||
void baflap_reset(void) {
|
||||
s32 i;
|
||||
|
||||
for(i = 0; i < 5; i++){
|
||||
s_flap_list[i] = 0.0f;
|
||||
}
|
||||
s_active = s_flap_max_timer = 0.0f;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief activates or deactivates flap timers
|
||||
*
|
||||
* @param active false (0) or true (!0)
|
||||
*/
|
||||
void baflap_activate(bool active){
|
||||
s_active = active;
|
||||
if(!s_active){
|
||||
baflap_reset();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief updates flap timers if active
|
||||
*
|
||||
*/
|
||||
void baflap_update(void) {
|
||||
f32 temp_f0;
|
||||
s32 i;
|
||||
|
||||
if (s_active != 0) {
|
||||
//update timers
|
||||
for(i = 0; i < 5; i++){
|
||||
func_80259430(&s_flap_list[i]);
|
||||
}
|
||||
if (s_flap_max_timer != 0.0f) {
|
||||
temp_f0 = s_flap_max_timer;
|
||||
s_flap_max_timer = 0.0f;
|
||||
baflap_add(temp_f0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3,8 +3,8 @@
|
||||
#include "variables.h"
|
||||
#include <core1/viewport.h>
|
||||
#include "core2/ba/physics.h"
|
||||
#include "core2/ba/flap.h"
|
||||
|
||||
extern void func_8028FDC8(f32);
|
||||
extern void baModel_setYDisplacement(f32);
|
||||
extern f32 func_8029B2D0(void);
|
||||
extern void ncDynamicCam4_func_802BFE50(f32, f32, f32);
|
||||
@@ -56,8 +56,8 @@ void func_802A3430(void){
|
||||
func_802A33D8();
|
||||
func_80293D48(60.0f, 45.0f);
|
||||
func_80294378(4);
|
||||
func_8028FEF0();
|
||||
func_8028FFBC(1);
|
||||
baflap_reset();
|
||||
baflap_activate(1);
|
||||
}
|
||||
|
||||
void func_802A34C8(void){
|
||||
@@ -71,7 +71,7 @@ void func_802A34C8(void){
|
||||
func_80291548();
|
||||
func_80293D74();
|
||||
func_80294378(1);
|
||||
func_8028FFBC(0);
|
||||
baflap_activate(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,13 +230,13 @@ void bsbfly_update(void){
|
||||
}
|
||||
if(D_8037D346){
|
||||
D_8037D346 = 0;
|
||||
func_8028FDC8(0.35f);
|
||||
baflap_add(0.35f);
|
||||
}else{
|
||||
func_8028FDC8(1.0f);
|
||||
baflap_add(1.0f);
|
||||
}
|
||||
}//L802A3BB4
|
||||
|
||||
sp30 = func_8028FD30();
|
||||
sp30 = baflap_getCount();
|
||||
switch(D_8037D344){
|
||||
case 0:
|
||||
if(sp30)
|
||||
@@ -306,7 +306,7 @@ void bsbfly_update(void){
|
||||
if(func_802A3350())
|
||||
sp54 = BS_1_IDLE;
|
||||
|
||||
func_8028FFF0();
|
||||
baflap_update();
|
||||
bs_setState(sp54);
|
||||
}
|
||||
|
||||
|
@@ -3,6 +3,7 @@
|
||||
#include "variables.h"
|
||||
|
||||
#include "core2/ba/physics.h"
|
||||
#include "core2/ba/flap.h"
|
||||
|
||||
|
||||
void func_80354030(f32*, f32);
|
||||
@@ -14,7 +15,6 @@ void ncDynamicCam4_func_802BFE50(f32, f32, f32);
|
||||
void yaw_setVelocityBounded(f32, f32);
|
||||
f32 func_8029B2D0(void);
|
||||
f32 func_8029B2DC(void);
|
||||
void func_8028FDC8(f32);
|
||||
void func_80290B40(f32);
|
||||
void func_80290A6C(void);
|
||||
|
||||
@@ -98,7 +98,7 @@ void _bsbeefly_end(void){
|
||||
func_80291548();
|
||||
baphysics_reset_gravity();
|
||||
baphysics_reset_terminal_velocity();
|
||||
func_8028FFBC(0);
|
||||
baflap_activate(0);
|
||||
func_8029099C();
|
||||
}
|
||||
|
||||
@@ -111,8 +111,8 @@ void func_802A07F8(void){
|
||||
func_802A0724();
|
||||
baphysics_set_gravity(-300.0f);
|
||||
baphysics_set_terminal_velocity(-99.9f);
|
||||
func_8028FEF0();
|
||||
func_8028FFBC(1);
|
||||
baflap_reset();
|
||||
baflap_activate(1);
|
||||
func_802909C4();
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ void bsbeefly_enter(void){
|
||||
func_802914CC(4);
|
||||
func_802A07F8();
|
||||
if(mvmnt != 0x8b){
|
||||
func_8028FDC8(1.0f);
|
||||
baflap_add(1.0f);
|
||||
D_8037D2C0 = 0;
|
||||
}
|
||||
else {
|
||||
@@ -186,12 +186,12 @@ void bsbeefly_update(void){
|
||||
_bsBeeFly_updatePitch();
|
||||
pitch_get(); //return value never used
|
||||
if(button_pressed(BUTTON_A) && (player_getYPosition() < 7500.0)){
|
||||
func_8028FDC8(1.0f);
|
||||
baflap_add(1.0f);
|
||||
}
|
||||
if(!func_8028FD30() && player_inWater()){
|
||||
func_8028FDC8(1.0f);
|
||||
if((baflap_getCount() == 0) && player_inWater()){
|
||||
baflap_add(1.0f);
|
||||
}
|
||||
sp44 = func_8028FD30();
|
||||
sp44 = baflap_getCount();
|
||||
animctrl_setDuration(sp48, D_803649B0[sp44]);
|
||||
sp24 = &D_803649C4[sp44];
|
||||
sp40 = 0.9f;
|
||||
@@ -255,7 +255,7 @@ void bsbeefly_update(void){
|
||||
baphysics_set_target_horizontal_velocity(sp38);
|
||||
if(player_isStable() && !player_inWater())
|
||||
sp4C = BS_85_BEE_IDLE;
|
||||
func_8028FFF0();
|
||||
baflap_update();
|
||||
bs_setState(sp4C);
|
||||
}
|
||||
|
||||
|
@@ -1,74 +0,0 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037BFE0;
|
||||
f32 D_8037BFE4;
|
||||
f32 D_8037BFE8[5];
|
||||
|
||||
/* .code */
|
||||
s32 func_8028FD30(void) {
|
||||
s32 i;
|
||||
s32 cnt;
|
||||
|
||||
cnt = 0;
|
||||
for(i = 0; i < 5; i++){
|
||||
if(D_8037BFE8[i] != 0.0f){
|
||||
cnt++;
|
||||
}
|
||||
}
|
||||
return cnt;
|
||||
}
|
||||
|
||||
bool func_8028FDC8(f32 arg0) {
|
||||
s32 i;
|
||||
|
||||
for(i = 0; i < 5; i++){
|
||||
if(arg0 - 0.25 < D_8037BFE8[i]){
|
||||
D_8037BFE4 = arg0;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
for(i = 0; i < 5; i++){
|
||||
if (D_8037BFE8[i] == 0.0f) {
|
||||
D_8037BFE8[i] = arg0;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
D_8037BFE4 = arg0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void func_8028FEF0(void) {
|
||||
s32 i;
|
||||
|
||||
for(i = 0; i < 5; i++){
|
||||
D_8037BFE8[i] = 0.0f;
|
||||
}
|
||||
D_8037BFE0 = D_8037BFE4 = 0.0f;
|
||||
}
|
||||
|
||||
void func_8028FFBC(bool arg0){
|
||||
D_8037BFE0 = arg0;
|
||||
if(!D_8037BFE0){
|
||||
func_8028FEF0();
|
||||
}
|
||||
}
|
||||
|
||||
void func_8028FFF0(void) {
|
||||
f32 temp_f0;
|
||||
s32 i;
|
||||
|
||||
if (D_8037BFE0 != 0) {
|
||||
for(i = 0; i < 5; i++){
|
||||
func_80259430(&D_8037BFE8[i]);
|
||||
}
|
||||
if (D_8037BFE4 != 0.0f) {
|
||||
temp_f0 = D_8037BFE4;
|
||||
D_8037BFE4 = 0.0f;
|
||||
func_8028FDC8(temp_f0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user