225 lines
7.3 KiB
C
225 lines
7.3 KiB
C
#include <ultra64.h>
|
|
#include "functions.h"
|
|
#include "variables.h"
|
|
|
|
#include "prop.h"
|
|
|
|
extern ActorInfo D_80390D20;
|
|
extern ActorInfo D_80390050;
|
|
extern ActorInfo D_80390200;
|
|
extern ActorInfo D_80390270;
|
|
extern ActorInfo D_80390D50;
|
|
extern ActorInfo D_803906E0;
|
|
extern ActorInfo D_80390738;
|
|
extern ActorInfo D_803907D0;
|
|
extern ActorInfo D_803907F4;
|
|
extern ActorInfo D_80390818;
|
|
extern ActorInfo D_8039083C;
|
|
extern ActorInfo D_803904C0;
|
|
extern ActorInfo D_803904E4;
|
|
extern ActorInfo D_80390508;
|
|
extern ActorInfo D_803903B0;
|
|
extern ActorInfo D_803903D4;
|
|
extern ActorInfo D_803903F8;
|
|
extern ActorInfo D_80390640;
|
|
extern ActorInfo D_80390664;
|
|
extern ActorInfo D_80390688;
|
|
extern ActorInfo D_803906B0;
|
|
extern ActorInfo D_803908C0;
|
|
extern ActorInfo D_803908E4;
|
|
extern ActorInfo D_80390908;
|
|
extern ActorInfo D_803909B0;
|
|
extern ActorInfo D_803909D4;
|
|
extern ActorInfo RBB_D_803909F8;
|
|
extern ActorInfo D_80390A50;
|
|
extern ActorInfo D_80390380;
|
|
extern ActorInfo D_80390A80; //anchorswitch
|
|
extern ActorInfo RBB_D_80390AB0; //dolphin
|
|
extern ActorInfo RBB_D_80390AE0; //anchor
|
|
extern ActorInfo RBB_D_80390B10;
|
|
extern ActorInfo D_80390B40; //rarewareflag
|
|
extern ActorInfo RBB_D_80390BD0;
|
|
extern ActorInfo D_80390BF4;
|
|
extern ActorInfo D_80390C18;
|
|
extern ActorInfo RBB_D_80390C3C;
|
|
extern ActorInfo RBB_D_80390CF0;
|
|
extern ActorInfo D_80390D88;
|
|
extern ActorInfo D_80390DAC; //TNTpart_IDStruct;
|
|
extern ActorInfo RBB_D_80390E00;
|
|
extern ActorInfo D_80390E34;
|
|
extern ActorInfo D_80390E58;
|
|
extern ActorInfo D_803900E0;
|
|
extern ActorInfo D_80390104; //captcabinwooddoor
|
|
extern ActorInfo D_80390128;
|
|
extern ActorInfo D_8039014C;
|
|
extern ActorInfo D_803901B8;
|
|
extern ActorInfo D_803901DC;
|
|
extern ActorInfo D_80390170;//skylight
|
|
extern ActorInfo D_80390194;//honeycombswitch
|
|
|
|
|
|
|
|
extern void func_802D3D54(Actor *);
|
|
|
|
void func_80386A7C(Actor *);
|
|
void func_80386BF8(Actor *arg0);
|
|
Actor *func_80386B9C(ActorMarker *marker, Gfx **gdl, Mtx **mptr, s32 arg3);
|
|
|
|
|
|
/* .data */
|
|
ActorAnimationInfo D_803900C0[4] = {
|
|
{0, 0.0f},
|
|
{0, 0.0f},
|
|
{0xD4, 0.15f},
|
|
{0xD5, 0.5f}
|
|
};
|
|
|
|
ActorInfo D_803900E0 = {
|
|
0x107, 0x21D, 0x493, 0x1, NULL,
|
|
func_802D3D54, func_80326224, func_80325E78,
|
|
0, 0, 0.0f, 0
|
|
};
|
|
|
|
ActorInfo D_80390104 = {
|
|
0x108, 0x21C, 0x492, 0x1, NULL,
|
|
func_802D3D54, func_80326224, func_80325E78,
|
|
0, 0, 0.0f, 0
|
|
};
|
|
|
|
ActorInfo D_80390128 = {
|
|
0x22D, 0x266, 0x4BA, 0x1, NULL,
|
|
func_802D3D54, func_80326224, func_80325E78,
|
|
0, 0, 0.0f, 0
|
|
};
|
|
|
|
ActorInfo D_8039014C = {
|
|
0x22E, 0x267, 0x4BB, 0x1, NULL,
|
|
func_802D3D54, func_80326224, func_80325E78,
|
|
0, 0, 0.0f, 0
|
|
};
|
|
|
|
ActorInfo D_80390170 = {
|
|
0x235, 0x23F, 0x4E2, 0x1, NULL,
|
|
func_802D3D54, func_80326224, func_80325E78,
|
|
0, 0, 0.0f, 0
|
|
};
|
|
|
|
ActorInfo D_80390194 = {
|
|
0x15F, 0x18F, 0x42F, 0x1, D_803900C0,
|
|
func_80386BF8, func_80326224, func_80325888,
|
|
0, 0, 0.0f, 0
|
|
};
|
|
|
|
ActorInfo D_803901B8 = {
|
|
0x22F, 0x263, 0x4DB, 0x1, NULL,
|
|
func_80386A7C, func_80326224, func_80386B9C,
|
|
0, 0, 0.0f, 0
|
|
};
|
|
|
|
ActorInfo D_803901DC = {
|
|
0x230, 0x264, 0x4DE, 0x1, NULL,
|
|
func_80386A7C, func_80326224, func_80386B9C,
|
|
0, 0, 0.0f, 0
|
|
};
|
|
|
|
|
|
/* .code */
|
|
s32 func_80386A30(f32 (*arg0)[3]){
|
|
s32 r;
|
|
|
|
r = ((*arg0)[0] < 0.0f)? 0 : 1;
|
|
|
|
return (((*arg0)[2] < 0.0f)? 0 : 2) + r;
|
|
}
|
|
|
|
void func_80386A7C(Actor *this){
|
|
f32 sp2C[3];
|
|
s32 sp28;
|
|
s32 temp_v0;
|
|
|
|
func_802D3D74(this);
|
|
this->unk124_9 = 1;
|
|
func_8024C5CC(&sp2C);
|
|
sp28 = func_80386A30(&this->position);
|
|
temp_v0 = func_80386A30(&sp2C);
|
|
this->unk38_0 = 0;
|
|
if(sp2C[0] + 8000.0f < this->position_x || this->position_x < sp2C[0] - 8000.0f)
|
|
return;
|
|
|
|
if( !( (sp28 ^ temp_v0) & 2
|
|
&& (-5000.0f < sp2C[0] && sp2C[0] < 6000.0f)
|
|
&& (sp2C[2] < -600.0f || 600.0f < sp2C[2])
|
|
)
|
|
&& ( sp28 ^ temp_v0) != 3
|
|
){
|
|
this->unk38_0 = 1;
|
|
}
|
|
}
|
|
|
|
Actor *func_80386B9C(ActorMarker *marker, Gfx **gdl, Mtx **mptr, s32 arg3){
|
|
Actor *actor = marker_getActor(marker);
|
|
|
|
return (actor->unk38_0) ? func_80325E78(marker, gdl, mptr, arg3): NULL;
|
|
}
|
|
|
|
void func_80386BF8(Actor *arg0){
|
|
if(!mapSpecificFlags_get(0) && honeycombscore_get(HONEYCOMB_F_RBB_BOAT_HOUSE))
|
|
mapSpecificFlags_set(0, TRUE);
|
|
func_802D4A9C(arg0, 0);
|
|
}
|
|
|
|
void RBB_func_80386C48(void){
|
|
spawnableActorList_add(&D_80390D20, actor_new, 0x4880);
|
|
spawnableActorList_add(&D_80390050, actor_new, 0);
|
|
spawnableActorList_add(&D_80390200, actor_new, 0x80);
|
|
spawnableActorList_add(&D_80390270, actor_new, 0x80);
|
|
spawnableActorList_add(&D_80390D50, actor_new, 0x8004480);
|
|
spawnableActorList_add(&D_803906E0, actor_new, 0x80);
|
|
spawnableActorList_add(&D_80390738, actor_new, 0x80);
|
|
spawnableActorList_add(&D_803907D0, actor_new, 0x6488);
|
|
spawnableActorList_add(&D_803907F4, actor_new, 0x6488);
|
|
spawnableActorList_add(&D_80390818, actor_new, 0x6488);
|
|
spawnableActorList_add(&D_8039083C, actor_new, 0x6488);
|
|
spawnableActorList_add(&D_803904C0, actor_new, 0x6408);
|
|
spawnableActorList_add(&D_803904E4, actor_new, 0x6408);
|
|
spawnableActorList_add(&D_80390508, actor_new, 0x6408);
|
|
spawnableActorList_add(&D_803903B0, actor_new, 0x6408);
|
|
spawnableActorList_add(&D_803903D4, actor_new, 0x6408);
|
|
spawnableActorList_add(&D_803903F8, actor_new, 0x6408);
|
|
spawnableActorList_add(&D_80390640, actor_new, 0x400);
|
|
spawnableActorList_add(&D_80390664, actor_new, 0x400);
|
|
spawnableActorList_add(&D_80390688, actor_new, 0x400);
|
|
spawnableActorList_add(&D_803906B0, actor_new, 0);
|
|
spawnableActorList_add(&D_803908C0, actor_new, 0x80);
|
|
spawnableActorList_add(&D_803908E4, actor_new, 0x80);
|
|
spawnableActorList_add(&D_80390908, actor_new, 0x80);
|
|
spawnableActorList_add(&D_803909B0, actor_new, 0x880);
|
|
spawnableActorList_add(&D_803909D4, actor_new, 0x880);
|
|
spawnableActorList_add(&RBB_D_803909F8, actor_new, 0x880);
|
|
spawnableActorList_add(&D_80390A50, actor_new, 0x80);
|
|
spawnableActorList_add(&D_80390380, actor_new, 0x9aa);
|
|
spawnableActorList_add(&D_80390A80, actor_new, 0x80); //anchorswitch
|
|
spawnableActorList_add(&RBB_D_80390AB0, actor_new, 0x8C8); //dolphin
|
|
spawnableActorList_add(&RBB_D_80390AE0, actor_new, 0xC80); //anchor
|
|
spawnableActorList_add(&RBB_D_80390B10, actor_new, 0x80);
|
|
spawnableActorList_add(&D_80390B40, actor_new, 0x880); //rarewareflag
|
|
spawnableActorList_add(&RBB_D_80390BD0, actor_new, 0xc2c);
|
|
spawnableActorList_add(&D_80390BF4, actor_new, 0xc2c);
|
|
spawnableActorList_add(&D_80390C18, actor_new, 0xc2c);
|
|
spawnableActorList_add(&RBB_D_80390C3C, actor_new, 0xc2c);
|
|
spawnableActorList_add(&RBB_D_80390CF0, actor_new, 0x80);
|
|
spawnableActorList_add(&D_80390D88, actor_new, 0x2000889);
|
|
spawnableActorList_add(&D_80390DAC, actor_new, 0x2000889);
|
|
spawnableActorList_add(&RBB_D_80390E00, actor_new, 0x80);
|
|
spawnableActorList_add(&D_80390E34, actor_new, 0x80);
|
|
spawnableActorList_add(&D_80390E58, actor_new, 0x80);
|
|
spawnableActorList_add(&D_803900E0, actor_new, 0);
|
|
spawnableActorList_add(&D_80390104, actor_new, 0x8600); //captcabinwooddoor
|
|
spawnableActorList_add(&D_80390128, actor_new, 0);
|
|
spawnableActorList_add(&D_8039014C, actor_new, 0);
|
|
spawnableActorList_add(&D_803901B8, actor_new, 0x8600);
|
|
spawnableActorList_add(&D_803901DC, actor_new, 0x8600);
|
|
spawnableActorList_add(&D_80390170, actor_new, 0x8600); //skylight
|
|
spawnableActorList_add(&D_80390194, actor_new, 0x8); //honeycombswitch
|
|
}
|