Files
banjo-kazooie/src/MMM/code_3120.c
2022-07-15 17:09:41 -05:00

116 lines
2.4 KiB
C

#include <ultra64.h>
#include "functions.h"
#include "variables.h"
Struct5Es * func_80309B48(f32[3], f32[3], f32[3], u32);
/* .bss */
extern struct{
u8 unk0;
u8 unk1;
u8 unk2;
} D_8038C4E0;
/* .code */
s32 func_80389510() {
return D_8038C4E0.unk1 == 1;
}
u8 func_80389524() {
return D_8038C4E0.unk0;
}
u8 func_80389530() {
return D_8038C4E0.unk2;
}
void func_8038953C() {
return;
}
void func_80389544(void){
D_8038C4E0.unk0 = 0;
D_8038C4E0.unk2 = 0;
if(map_get() == MAP_26_MMM_NAPPERS_ROOM){
if(jiggyscore_isCollected(JIGGY_5D_MMM_NAPPER)){
D_8038C4E0.unk1 = 2;
}
else{
D_8038C4E0.unk1 = 1;
}
}
else{
D_8038C4E0.unk1 = 0;
}
}
void func_803895B0(s32 arg0) {
if (arg0 != 0) {
D_8038C4E0.unk1 = 1;
return;
}
D_8038C4E0.unk1 = 2;
}
void func_803895D8(ActorMarker *caller, enum asset_e text_id, s32 arg2) {
if (text_id == 0xAD7) {
timed_playSfx(0.1f, SFX_3F5_UNKNOWN, 1.0f, 30000);
func_80324E88(1.5f);
func_80324E38(1.5f, 0);
return;
}
D_8038C4E0.unk0 = 1;
func_80324E88(1.5f);
func_80324E38(1.5f, 0);
}
void func_8038966C(void){
f32 sp54[3];
f32 sp48[3];
f32 sp3C[3];
f32 sp30[3];
BKCollisionTri *tmp_v0;
if(D_8038C4E0.unk1 == 0) return;
if( !D_8038C4E0.unk2
&& D_8038C4E0.unk1 == 1
&& jiggyscore_isCollected(JIGGY_5D_MMM_NAPPER)
){
D_8038C4E0.unk2 = TRUE;
func_80324E38(0.0f, 3);
timed_setCameraToNode(0.2f, 1);
func_80324DBC(0.2f, 0xad9, 6, NULL, NULL, func_803895D8, NULL);
}//L80389700
if(D_8038C4E0.unk1 != 1)
return;
player_getPosition(sp54);
sp48[0] = sp54[0];
sp3C[0] = sp54[0];
sp48[1] = sp54[1] + 10.0f;
sp3C[1] = sp54[1] - 10.0f;
sp48[2] = sp54[2];
sp3C[2] = sp54[2];
tmp_v0 = func_80309B48(sp48, sp3C, sp30, 0);
if(tmp_v0 != NULL){
if((s32)(tmp_v0->flags << 4) < 0){
FUNC_8030E624(SFX_6B_LOCKUP_OPENING, 1.4f, 32750);
D_8038C4E0.unk1 = 2;
if(!levelSpecificFlags_get(0x1b)){
func_80324E38(0.0f, 3);
timed_setCameraToNode(0.0f, 0);
func_80324DBC(0.0f, 0xad7, 6, NULL, NULL, func_803895D8, NULL);
levelSpecificFlags_set(0x1b, TRUE);
}
}
}
}