misc documentation

This commit is contained in:
Banjo Kazooie
2023-01-30 00:02:44 -06:00
parent da9a0109b5
commit cd146f444f
258 changed files with 2526 additions and 3594 deletions

290
src/core2/ba/anim.c Normal file
View File

@@ -0,0 +1,290 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
extern f32 func_802E4B38(void);
extern f32 func_80257BFC(f32, f32, f32, f32, f32);
void func_80289F30(void);
/* .data */
f32 D_803635E0[3] = {0.0f, 5.0f, 0.0f};
s32 D_803635EC[7] = {0x4, 0x3, 0x60, 0x18, 0x1B, 0x67, 0x80};
/* .bss */
AnimCtrl *playerAnimCtrl;
s32 D_8037BF24;
f32 D_8037BF28;
f32 D_8037BF2C;
struct {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
f32 unk10;
u8 unk14;
}D_8037BF30;
void (*D_8037BF48)(s32, s32);
/* .code */
void func_80289820(s32 arg0){
D_8037BF24 = arg0;
}
void func_8028982C(void) {
f32 sp2C[3];
f32 temp_f12;
f32 sp24;
sp24 = (D_8037BF30.unk14 != 0) ? D_8037BF30.unk10 : 1.0f;
_get_velocity(sp2C);
temp_f12 = func_80257BFC(gu_sqrtf(sp2C[0]*sp2C[0] + sp2C[2] * sp2C[2]), D_8037BF30.unk0, D_8037BF30.unk4, D_8037BF30.unk8 * sp24, D_8037BF30.unkC * sp24);
animctrl_setDuration(playerAnimCtrl, ml_clamp_f(temp_f12, D_8037BF28, D_8037BF2C));
animctrl_update(playerAnimCtrl);
}
void func_802898F8(void) {
animctrl_setDuration(playerAnimCtrl, ml_clamp_f(func_80257BFC(mlAbsF(func_80297AAC()), D_8037BF30.unk0, D_8037BF30.unk4, D_8037BF30.unk8, D_8037BF30.unkC), D_8037BF28, D_8037BF2C));
animctrl_update(playerAnimCtrl);
}
void func_80289978(f32 sp2C[3], f32 arg1, f32 arg2, f32 arg3) {
s32 phi_s0;
for(phi_s0 = 0; phi_s0 < 3; phi_s0++){
sp2C[phi_s0] = ((((f64) sinf((f32) ((f64) func_80257A44((f32) ( arg1 + (2.0 * ((f64) (f32) phi_s0 / 3.0))), 2.0f) * 6.2831853080000002)) * 0.5) + 0.5) * arg3) + arg2;
};
}
void func_80289A78(s32 arg0, s32 arg1) {
f32 sp2C[3];
f32 sp28;
s32 phi_s0;
static s32 D_8037BF4C;
sp28 = func_802E4B38();
if (func_803203FC(0x78) == 0) {
D_8037BF4C = 0;
} else {
for(phi_s0 = 0; phi_s0 < 7; phi_s0++){
if (func_803203FC(phi_s0 + 0x97)) {
D_8037BF4C = D_803635EC[phi_s0];
}
}
}
if ((D_8037BF4C & 1)) {
func_80289978(sp2C, sp28, 2.0f, 1.0f);
func_8033A928(arg0, 6, sp2C);
func_8033A928(arg0, 0x14, sp2C);
}
if (D_8037BF4C & 2) {
func_80289978(sp2C, sp28, 2.0f, 1.0f);
func_8033A928(arg0, 0x10, sp2C);
func_8033A928(arg0, 0x1E, sp2C);
}
if (D_8037BF4C & 4) {
func_80289978(sp2C, sp28, 2.0f, 1.0f);
func_8033A928(arg0, 0x12, sp2C);
}
if (D_8037BF4C & 8) {
func_80289978(sp2C, sp28, 0.2f, 0.5f);
func_8033A928(arg0, 0x12, sp2C);
}
if (D_8037BF4C & 0x10) {
func_8033A968(arg0, 1, &D_803635E0);
}
if (D_8037BF4C & 0x20) {
func_80289978(sp2C, sp28, 2.0f, 1.0f);
func_8033A928(arg0, 0x6C, sp2C);
}
if (D_8037BF4C & 0x40) {
func_80289978(sp2C, sp28, 2.0f, 1.0f);
func_8033A928(arg0, 0x64, sp2C);
func_8033A928(arg0, 0x67, sp2C);
}
if (map_get() == MAP_A_TTC_SANDCASTLE) {
if ((D_8037BF4C & 0x80) && (player_getTransformation() != TRANSFORM_7_WISHWASHY)) {
func_8028FB88(TRANSFORM_7_WISHWASHY);
}
if (!(D_8037BF4C & 0x80) && (player_getTransformation() == TRANSFORM_7_WISHWASHY)) {
func_8028FB88(TRANSFORM_1_BANJO);
}
}
if (D_8037BF48 != NULL) {
D_8037BF48(arg0, arg1);
}
}
void baAnim_init(void){
playerAnimCtrl = animctrl_new(1);
func_80287784(playerAnimCtrl, 0);
animctrl_setSmoothTransition(playerAnimCtrl, FALSE);
func_8028746C(playerAnimCtrl, func_80289A78);
D_8037BF48 = NULL;
func_80289F30();
D_8037BF24 = 0;
func_80289820(1);
func_80289EA8(0.01f, 100.0f);
func_80289EC8(0.0f, 1000.0f, 0.1f, 10.0f);
D_8037BF30.unk14 = 0;
D_8037BF30.unk10 = 1.0f;
}
void baAnim_free(void){
animctrl_free(playerAnimCtrl);
}
void baAnim_update(void){
switch(D_8037BF24){
case 2:
func_8028982C();
break;
case 3:
func_802898F8();
break;
case 1:
animctrl_update(playerAnimCtrl);
break;
case 0:
break;
}
}
void baAnim_defrag(void){
playerAnimCtrl = animctrl_defrag(playerAnimCtrl);
}
s32 func_80289E9C(void){
return D_8037BF24;
}
void func_80289EA8(f32 arg0, f32 arg1){
D_8037BF28 = arg0;
D_8037BF2C = arg1;
}
void func_80289EBC(void (*arg0)(s32, s32)){
D_8037BF48 = arg0;
}
void func_80289EC8(f32 arg0, f32 arg1, f32 arg2, f32 arg3){
D_8037BF30.unk0 = arg0;
D_8037BF30.unk4 = arg1;
D_8037BF30.unk8 = arg2;
D_8037BF30.unkC = arg3;
D_8037BF30.unk14 = 0;
}
void func_80289EF8(f32 arg0){
D_8037BF30.unk10 = arg0;
D_8037BF30.unk14 = 1;
}
void func_80289F10(s32 arg0){
func_80289820(arg0);
}
void func_80289F30(void){
f32 sp1C[3];
_player_getPosition(sp1C);
func_8028781C(playerAnimCtrl, sp1C, 1);
}
AnimCtrl *_player_getAnimCtrlPtr(void){
return playerAnimCtrl;
}
f32 func_80289F70(void){
return animctrl_getAnimTimer(playerAnimCtrl);
}
bool func_80289F94(enum asset_e anim_id){
return animctrl_getIndex(playerAnimCtrl) == anim_id;
}
bool baanim_isStopped(void){
return animctrl_isStopped(playerAnimCtrl);
}
bool baanim_isAt(f32 time){
return animctrl_isAt(playerAnimCtrl, time);
}
void func_8028A010(enum asset_e anim_id, f32 duration){
animctrl_reset(playerAnimCtrl);
animctrl_setIndex(playerAnimCtrl, anim_id);
animctrl_setDuration(playerAnimCtrl, duration);
animctrl_setPlaybackType(playerAnimCtrl, 2);
func_802875AC(playerAnimCtrl, "baanim.c", 0x188);
}
void func_8028A084(enum asset_e anim_id, f32 duration){
animctrl_reset(playerAnimCtrl);
animctrl_setSmoothTransition(playerAnimCtrl, FALSE);
animctrl_setIndex(playerAnimCtrl, anim_id);
animctrl_setDuration(playerAnimCtrl, duration);
animctrl_setPlaybackType(playerAnimCtrl, 2);
func_802875AC(playerAnimCtrl, "baanim.c", 0x193);
}
void func_8028A100(enum asset_e anim_id, f32 duration, f32 arg2){
animctrl_reset(playerAnimCtrl);
animctrl_setIndex(playerAnimCtrl, anim_id);
animctrl_setDuration(playerAnimCtrl, duration);
func_8028774C(playerAnimCtrl, arg2);
animctrl_setPlaybackType(playerAnimCtrl, 2);
func_802875AC(playerAnimCtrl, "baanim.c", 0x19e);
}
void func_8028A180(enum asset_e anim_id, f32 duration){
animctrl_reset(playerAnimCtrl);
animctrl_setIndex(playerAnimCtrl, anim_id);
animctrl_setDuration(playerAnimCtrl, duration);
animctrl_setPlaybackType(playerAnimCtrl, 1);
func_802875AC(playerAnimCtrl, "baanim.c", 0x1a8);
}
void func_8028A1F4(enum asset_e anim_id, f32 duration, f32 arg2){
animctrl_reset(playerAnimCtrl);
animctrl_setIndex(playerAnimCtrl, anim_id);
animctrl_setDuration(playerAnimCtrl, duration);
func_8028774C(playerAnimCtrl, arg2);
animctrl_setPlaybackType(playerAnimCtrl, 1);
func_802875AC(playerAnimCtrl, "baanim.c", 0x1b3);
}
void func_8028A274(enum asset_e anim_id, f32 duration){
animctrl_reset(playerAnimCtrl);
animctrl_setSmoothTransition(playerAnimCtrl, FALSE);
animctrl_setIndex(playerAnimCtrl, anim_id);
animctrl_setDuration(playerAnimCtrl, duration);
animctrl_setPlaybackType(playerAnimCtrl, 1);
func_802875AC(playerAnimCtrl, "baanim.c", 0x1bd);
}
void func_8028A2F0(enum asset_e anim_id, f32 duration, f32 arg2){
animctrl_reset(playerAnimCtrl);
animctrl_setSmoothTransition(playerAnimCtrl, FALSE);
animctrl_setIndex(playerAnimCtrl, anim_id);
animctrl_setDuration(playerAnimCtrl, duration);
func_8028774C(playerAnimCtrl, arg2);
animctrl_setPlaybackType(playerAnimCtrl, 1);
func_802875AC(playerAnimCtrl, "baanim.c", 0x1c9);
}
void func_8028A37C(f32 arg0){
animctrl_setSubRange(playerAnimCtrl, 0.0f, arg0);
animctrl_setPlaybackType(playerAnimCtrl, 1);
}
void func_8028A3B8(f32 arg0, f32 arg1){
animctrl_setSubRange(playerAnimCtrl, 0.0f, arg0);
animctrl_setDuration(playerAnimCtrl, arg1);
animctrl_setPlaybackType(playerAnimCtrl, 1);
}

1066
src/core2/ba/marker.c Normal file

File diff suppressed because it is too large Load Diff

388
src/core2/ba/model.c Normal file
View File

@@ -0,0 +1,388 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
#include "core2/ba/model.h"
void func_80254008(void);
extern void func_80256E24(f32[3], f32, f32, f32, f32, f32);
void assetcache_release(void *); //assetcache_free
extern void ml_vec3f_assign(f32[3], f32, f32, f32);
void func_8033A280(f32);
extern s32 osCicId;
/* .data */
struct5Bs *D_80363780 = NULL;
/* .bss */
void *baModelBin; //baModelPtr
s16 baModelId; //baModel asset_id
u8 baModelEnvAlpha;
u8 baModelDirection;
u8 baModelIsVisible;
f32 baModelScale;
f32 baModelPitch;
f32 baModelRoll;
f32 baModelYaw;
f32 D_8037C100[3];
f32 D_8037C110[3];
f32 baModelDisplacement[3];
void (*baModelPostDrawMethod)(Gfx **gfx, Mtx **mtx, Vtx **vtx);
f32 D_8037C130[2][4];
struct {
u8 unk0;
f32 unk4[3];
} D_8037C150;
//public
void baModel_set(enum asset_e asset_id);
//.data
static void _baModel_updateModelYaw(void){
switch(baModelDirection){
case PLAYER_MODEL_DIR_KAZOOIE:
baModelYaw = mlNormalizeAngle(yaw_get() + 180.0f);
break;
default:
baModelYaw = yaw_get();
break;
case PLAYER_MODEL_DIR_GLOBAL:
break;
}
}
void baModel_80291A50(s32 arg0, f32 dst[3]){
func_8034A174(D_80363780, arg0, dst);
if(ml_isZero_vec3f(dst)){
_player_getPosition(dst);
}
}
Actor *baModel_80291AAC(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
return NULL;
}
static void _baModel_preDraw(int arg0){
baMarker_get()->unk14_21 = 1;
}
void baModel_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx){
f32 rotation[3];
s32 env_color[3];
f32 plyr_pos[3]; //sp44
f32 sp38[3];
if(!baModelIsVisible)
return;
_baModel_updateModelYaw();
baModelRoll = roll_get();
baModelPitch = pitch_get();
_player_getPosition(plyr_pos);
plyr_pos[1] += 2.0f;
ml_vec3f_assign(rotation, baModelPitch, baModelYaw, baModelRoll);
func_8029A47C(env_color);
ml_vec3f_copy(sp38, D_8037C100);
plyr_pos[0] += baModelDisplacement[0];\
plyr_pos[1] += baModelDisplacement[1];\
plyr_pos[2] += baModelDisplacement[2];
sp38[0] += baModelDisplacement[0];\
sp38[1] += baModelDisplacement[1];\
sp38[2] += baModelDisplacement[2];
if(baModelBin){
func_80289F30();
func_8029DD6C();
modelRender_setEnvColor(env_color[0], env_color[1], env_color[2], baModelEnvAlpha);
func_8033A280(2.0f);
modelRender_preDraw((GenMethod_1)_baModel_preDraw, 0);
func_8033A450(D_80363780);
modelRender_setDepthMode(MODEL_RENDER_DEPTH_FULL);
if(D_8037C150.unk0){
D_8037C150.unk0 = 0;
modelRender_draw(gfx, mtx, D_8037C150.unk4, rotation, baModelScale, sp38, baModelBin);
}
else{
modelRender_draw(gfx, mtx, plyr_pos, rotation, baModelScale, sp38, baModelBin);
}
}//L80291CD4
if(baModelPostDrawMethod){
baModelPostDrawMethod(gfx, mtx, vtx);
}
}
void baModel_updateModel(void){
baModel_set(func_802985F0());
}
void baModel_reset(void){
f32 plyr_pos[3];
int i;
for(i = 0; i < 2 ; i++){
baModel_80292048(i, 0.0f, 0.0f, 0.0f);
baModel_80292078(i, 0.0f);
}
baModelEnvAlpha = 0xFF;
baModelBin = NULL;
baModelId = 0;
baModelPostDrawMethod = NULL;
D_80363780 = func_8034A2C8();
func_8034A130(D_80363780);
ml_vec3f_clear(D_8037C100);
ml_vec3f_clear(D_8037C110);
ml_vec3f_clear(baModelDisplacement);
baModelYaw = baModelRoll = baModelPitch = 0.0f;
D_8037C150.unk0 = 0;
baModel_setVisible(TRUE);
baModel_setScale(1.0f);
baModelDirection = 0;
baModel_setDirection(PLAYER_MODEL_DIR_BANJO);
if(!func_8028ADB4())
baModel_updateModel();
player_getPosition(plyr_pos);
__spawnQueue_add_4((GenMethod_4)func_802C4140,
ACTOR_17_PLAYER_SHADOW,
reinterpret_cast(s32, plyr_pos[0]),
reinterpret_cast(s32, plyr_pos[1]),
reinterpret_cast(s32, plyr_pos[2])
);
}
void baModel_free(void){
assetcache_release(baModelBin);
baModelBin = NULL;
baModelId = 0;
func_8034A2A8(D_80363780);
D_80363780 = NULL;
}
void baModel_update(void){
f32 sp1C;
f32 temp_f0;
sp1C = D_8037C110[1] - D_8037C100[1];
temp_f0 = mlAbsF(sp1C);
if( temp_f0 < 0.01){
D_8037C100[1] = D_8037C110[1];
}
else{
if(5.0f < temp_f0){
temp_f0 = 1.0f;
}
if(0.0f < sp1C){
D_8037C100[1] += temp_f0;
}
else{
D_8037C100[1] -= temp_f0;
}
{//L80291F7C
baMarker_get()->unk14_21 = 0;
}
}
}
BKModelBin *baModel_getModelBin(void){
return baModelBin;
}
enum asset_e baModel_getModelId(void){
return baModelId;
}
void baModel_setEnvAlpha(s32 alpha){
baModelEnvAlpha = alpha;
}
void baModel_set(enum asset_e asset_id){
if(asset_id != baModelId){
if(baModelBin){
func_80254008();
assetcache_release(baModelBin);
baModelBin = NULL;
}
baModelId = asset_id;
if(baModelId)
baModelBin = assetcache_get(baModelId);
}
}
void baModel_80292048(s32 arg0, f32 arg1, f32 arg2, f32 arg3){
D_8037C130[arg0][2] = arg1;
D_8037C130[arg0][3] = arg2;
D_8037C130[arg0][1] = arg3;
}
void baModel_80292078(s32 arg0, f32 arg1){
D_8037C130[arg0][0] = arg1;
}
void baModel_setDirection(enum player_model_direction_e direction){
if(direction != baModelDirection){
if(direction == PLAYER_MODEL_DIR_KAZOOIE || PLAYER_MODEL_DIR_KAZOOIE == baModelDirection){
//flip model
yaw_setIdeal(mlNormalizeAngle(yaw_get() + 180.0f));
yaw_applyIdeal();
}
}
baModelDirection = direction;
}
void baModel_setScale(f32 scale){
if(osCicId + -6103){
scale = scale*0.25;
}
baModelScale = scale;
}
void baModel_setYaw(f32 angleDegrees){
baModelYaw = mlNormalizeAngle(angleDegrees);
}
void baModel_80292158(f32 arg0){
D_8037C100[1] = arg0;
baModel_8029217C(arg0);
}
void baModel_8029217C(f32 arg0){
D_8037C110[1] = arg0;
}
void baModel_setPostDraw(void (*draw_func)(Gfx **gfx, Mtx **mtx, Vtx **vtx)){
baModelPostDrawMethod = draw_func;
}
void baModel_setDisplacement(f32 arg0[3]){
ml_vec3f_copy(baModelDisplacement, arg0);
}
void baModel_setYDisplacement(f32 arg0){
baModelDisplacement[1] = arg0;
}
void baModel_setVisible(s32 arg0){
baModelIsVisible = arg0;
}
void baModel_802921D4(f32 arg0[3]){
if(func_8028EE84() == BSWATERGROUP_0_NONE){
D_8037C150.unk0 = 1;
D_8037C150.unk4[0] = arg0[0];
D_8037C150.unk4[1] = arg0[1];
D_8037C150.unk4[2] = arg0[2];
}
}
f32 baModel_getYaw(void){
return baModelYaw;
}
f32 baModel_80292230(void){
return D_8037C100[1];
}
void baModel_8029223C(f32 arg0[3]){
baModel_80291A50(8, arg0);
}
void baModel_80292260(f32 arg0[3]){
baModel_80291A50(7, arg0);
}
void baModel_80292284(f32 arg0[3], s32 arg1){
f32 sp44[3];
f32 sp38[3];
if(baMarker_get()->unk14_21 && baModelIsVisible){
switch(baModel_getModelId()){
case 0x34D:
case 0x34E:
case ASSET_34F_MODEL_BANJO_TERMITE: //802922E8
case ASSET_359_MODEL_BANJO_WALRUS: //802922E8
case ASSET_362_MODEL_BANJO_BEE:
case ASSET_36F_MODEL_BANJO_PUMPKIN:
case ASSET_374_MODEL_BANJO_CROC:
func_8034A174(D_80363780, arg1 + 1, arg0);
if(ml_isZero_vec3f(arg0)){
_player_getPosition(arg0);
}
arg0[1] += D_8037C130[arg1][0];
if(D_8037C130[arg1][1] != 0.0f){
func_80256E24(sp44, D_8037C130[arg1][2], mlNormalizeAngle(yaw_get() + D_8037C130[arg1][3]), 0.0f, 0.0f, D_8037C130[arg1][1]);
arg0[0] += sp44[0];
arg0[1] += sp44[1];
arg0[2] += sp44[2];
}
func_802976C0(sp38);
arg0[0] = arg0[0] + sp38[0];
arg0[1] = arg0[1] + sp38[1];
arg0[2] = arg0[2] + sp38[2];
break;
default: ////80292400
_player_getPosition(arg0);
break;
}
}
else{//L80292410
_player_getPosition(arg0);
if(arg1){
arg0[1] += 33.0f;
}
else{
arg0[1] += 75.0f;
}
}
}
void baModel_getPosition(f32* dst){
f32 tmp1[3];
f32 tmp2[3];
baModel_80291A50(5,tmp1);
baModel_80291A50(6,tmp2);
ml_vec3f_add(dst, tmp1, tmp2);
ml_vec3f_scale(dst, 0.5);
}
void baModel_802924B8(f32 arg0[3]){
baModel_80291A50(0xA, arg0);
}
enum player_model_direction_e baModel_getDirection(void){
return baModelDirection;
}
void baModel_802924E8(f32 arg0[3]){
switch(player_getTransformation()){
case TRANSFORM_5_CROC:
baModel_80291A50(5, arg0);
break;
case TRANSFORM_4_WALRUS: //L80292520
baModel_80291A50(0xB, arg0);
break;
default: //L80292530
baModel_80291A50(0x9, arg0);
break;
}
}
s32 baModel_isVisible(void){
return baModelIsVisible;
}
void baModel_80292554(f32 arg0[3]){
baModel_80291A50(0x9, arg0);
}
void baModel_80292578(f32 arg0[3]){
baModel_80291A50(0xA, arg0);
}
void baModel_defrag(void){
if(D_80363780){
D_80363780 = func_8034A348(D_80363780);
}
}