core2/code_4C020.c done
This commit is contained in:
@@ -6,18 +6,20 @@ Actor *chtrainers_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
||||
void chtrainers_update(Actor *this);
|
||||
|
||||
/* .data */
|
||||
extern ActorAnimationInfo D_80366EA0[];
|
||||
extern ActorInfo D_80366EC0 = {
|
||||
ActorAnimationInfo D_80366EA0[] = {
|
||||
{ASSET_D6_ANIM_TURBO_TALON_TRAINERS, 1.5f},
|
||||
{ASSET_D6_ANIM_TURBO_TALON_TRAINERS, 1.5f},
|
||||
{ASSET_D6_ANIM_TURBO_TALON_TRAINERS, 1.5f},
|
||||
{ASSET_D6_ANIM_TURBO_TALON_TRAINERS, 1.5f}
|
||||
};
|
||||
|
||||
ActorInfo D_80366EC0 = {
|
||||
MARKER_38_TURBO_TALON_TRAINERS, ACTOR_2C_TURBO_TALON_TRAINERS, ASSET_367_MODEL_TURBO_TALON_TRAINERS,
|
||||
0x0, D_80366EA0,
|
||||
chtrainers_update, func_80326224, chtrainers_draw,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
/* .rodata */
|
||||
extern f64 D_80376470;
|
||||
extern f64 D_80376478;
|
||||
|
||||
/* .code */
|
||||
Actor *chtrainers_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
Actor *this = marker_getActor(marker);
|
||||
@@ -46,8 +48,8 @@ void _chtrainers_802CA378(Actor *this, bool arg1){
|
||||
func_802589E4(sp24, this->velocity[1], 40.0f);
|
||||
sp24[1] = 0.0f;
|
||||
ml_vec3f_add(this->position, this->unk1C, sp24);
|
||||
this->velocity[1] += D_80376470;
|
||||
this->yaw = mlNormalizeAngle(this->velocity[1] + D_80376478);
|
||||
this->velocity[1] += 2.3;
|
||||
this->yaw = mlNormalizeAngle(this->velocity[1] + 90.0);
|
||||
}
|
||||
|
||||
void chtrainers_update(Actor *this){
|
||||
|
||||
@@ -2,19 +2,27 @@
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern bool func_80309DBC(f32[3], f32[3], f32, f32 sp54[3], s32, s32);
|
||||
extern bool func_80320C94(f32[3], f32[3], f32, f32 sp54[3], s32, s32);
|
||||
extern f32 func_8033229C(ActorMarker *);
|
||||
extern void ml_vec3f_normalize(f32 [3]);
|
||||
|
||||
typedef struct {
|
||||
s16 unk0;
|
||||
u8 pad2[0x2];
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
u8 padC[0x8];
|
||||
s16 unkC;
|
||||
s16 unkE;
|
||||
s16 unk10;
|
||||
u8 pad12[0x2];
|
||||
f32 unk14;
|
||||
f32 unk18;
|
||||
f32 unk1C;
|
||||
f32 unk20;
|
||||
f32 unk24;
|
||||
f32 unk28;
|
||||
u8 pad2C[0x4];
|
||||
f32 unk2C;
|
||||
f32 unk30;
|
||||
} struct41FB0s;
|
||||
|
||||
@@ -39,27 +47,47 @@ extern f32 D_80366C4C;
|
||||
|
||||
/* .rodata */
|
||||
extern f64 D_80376410;
|
||||
extern f64 D_80376418;
|
||||
|
||||
/* .bss */
|
||||
UNK_TYPE(s32) D_8037DDB0;
|
||||
f32 D_8037DDB4;
|
||||
f32 D_8037DDB8;
|
||||
|
||||
/* .public */
|
||||
Actor *func_802C937C(s32 arg0, f32 position[3]);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C8F40.s")
|
||||
/* .code */
|
||||
void func_802C8F40(void){
|
||||
D_8037DDB0 = 0;
|
||||
D_8037DDB4 = 0.0f;
|
||||
D_8037DDB8 = 1.0f;
|
||||
}
|
||||
|
||||
void func_802C8F68(void){}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C8F70.s")
|
||||
void func_802C8F70(f32 arg0){
|
||||
D_8037DDB4 = arg0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C8F7C.s")
|
||||
void func_802C8F7C(f32 arg0){
|
||||
D_8037DDB8 = arg0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C8F88.s")
|
||||
Actor *func_802C8F88(s32 arg0, s32 arg1[3]){
|
||||
f32 sp1C[3];
|
||||
|
||||
#ifndef NONMATCHING
|
||||
sp1C[0] = arg1[0];
|
||||
sp1C[1] = arg1[1];
|
||||
sp1C[2] = arg1[2];
|
||||
return func_802C937C(arg0, sp1C);
|
||||
}
|
||||
|
||||
#ifndef NONMATCHING //matches but requires .data and .rodata defined
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C8FE4.s")
|
||||
#else
|
||||
Actor *func_802C8FE4(s32 arg0, f32 position[3], Actor *arg2){
|
||||
static f32 D_80366C4C = 0.0f;
|
||||
struct41FB0s * sp74; //s2
|
||||
Actor *actor; //s3
|
||||
s32 i;
|
||||
@@ -68,7 +96,8 @@ Actor *func_802C8FE4(s32 arg0, f32 position[3], Actor *arg2){
|
||||
sp74 = D_80366460 + arg0;
|
||||
actor = NULL;
|
||||
for(i = 0; i < sp74->unk8; i++){//L802C90B0
|
||||
for( D_8037DDB4 = D_8037DDB4 + 360.0/sp74->unk8; 360.0 <= D_8037DDB4; D_8037DDB4 -= 360.0);
|
||||
D_8037DDB4 += 360.0/sp74->unk8;
|
||||
while(360.0 <= D_8037DDB4){ D_8037DDB4 -= 360.0;}
|
||||
//L802C9114
|
||||
actor =(i == 0 && arg2) ? arg2 : func_8032813C(sp74->unk4, position, 0);
|
||||
actor->unk10_0 = 1;
|
||||
@@ -91,14 +120,13 @@ Actor *func_802C8FE4(s32 arg0, f32 position[3], Actor *arg2){
|
||||
|
||||
}//L802C9210
|
||||
ml_vec3f_yaw_rotate_copy(s0->unk14, s0->unk14, D_8037DDB4);
|
||||
s0->unk24 = -1.0f * D_80366C4C;
|
||||
D_80366C4C = s0->unk24;
|
||||
s0->unk24 = D_80366C4C *= -1;
|
||||
actor->unk5C = s0->unk20 = (sp74->unk0 & 0x20) ? sp74->unk30 : randf2(0.0f, 360.0f);
|
||||
s0->unk28 = 0.0f;
|
||||
s0->unk2C = 0;
|
||||
s0->unk2D = 1;
|
||||
s0->unk4 = sp74->unk0;
|
||||
s0->unk2E = (sp74->unk0 & 0x1) ? ((0.5 < randf()) ? 1 : 0) : 0 ;
|
||||
s0->unk2E = (sp74->unk0 & 0x1) ? (0.5 < randf()) : 0 ;
|
||||
if(sp74->unk0 & 0x200){
|
||||
actor->unk5C = s0->unk8[1];
|
||||
}
|
||||
@@ -107,16 +135,195 @@ Actor *func_802C8FE4(s32 arg0, f32 position[3], Actor *arg2){
|
||||
}
|
||||
#endif
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C9334.s")
|
||||
Actor *func_802C9334(s32 arg0, Actor * arg1){
|
||||
D_80366460[arg0].unk30 = arg1->yaw;
|
||||
return func_802C8FE4(arg0, arg1->position, arg1);
|
||||
}
|
||||
|
||||
Actor *func_802C937C(s32 arg0, f32 position[3]){
|
||||
return func_802C8FE4(arg0, position, 0);
|
||||
}
|
||||
|
||||
#ifndef NONMATCHING
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C939C.s")
|
||||
#else
|
||||
bool func_802C939C(Actor *actor, f32 arg1[3], f32 arg2[3], f32 arg3[3], bool arg4) {
|
||||
struct41FB0s_1 *sp64 = (struct41FB0s_1 *)&actor->unkBC;
|
||||
f32 sp60;
|
||||
bool var_v1;
|
||||
f32 sp50[3];
|
||||
f32 sp44[3];
|
||||
s32 sp40;
|
||||
s32 sp3C;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C96E4.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C9C0C.s")
|
||||
if (sp64->unk4 & 0x80) {
|
||||
if (actor->unk10_25 != 0) {
|
||||
if (func_80307258(arg2, actor->unk10_25 - 1, actor->unk10_18 - 1) == -1) {
|
||||
ml_vec3f_diff_copy(arg3, arg2, arg1);
|
||||
ml_vec3f_normalize(arg3);
|
||||
ml_vec3f_copy(arg2, arg1);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ((actor->unk10_18 != 0)){
|
||||
if(func_80309D58(arg2, actor->unk10_18) == 0) {
|
||||
ml_vec3f_diff_copy(arg3, arg2, arg1);
|
||||
ml_vec3f_normalize(arg3);
|
||||
ml_vec3f_copy(arg2, arg1);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_41FB0/func_802C9C14.s")
|
||||
sp60 = func_8033229C(actor->marker) * D_80376418;
|
||||
ml_vec3f_copy(sp50, arg2);
|
||||
arg1[1] += sp60;
|
||||
arg2[1] += sp60;
|
||||
if (arg4) {
|
||||
var_v1 = func_80309DBC(arg1, arg2, sp60, arg3, 3, actor->unk154);
|
||||
if (!var_v1) {
|
||||
var_v1 = func_80309B48(arg1, arg2, arg3, actor->unk154);
|
||||
if (var_v1) {
|
||||
arg2[0] += arg3[0];
|
||||
arg2[1] += arg3[1];
|
||||
arg2[2] += arg3[2];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
var_v1 = func_80320C94(arg1, arg2, sp60, arg3, 3, actor->unk154);
|
||||
if (!var_v1) {
|
||||
var_v1 = func_80320B98(arg1, arg2, arg3, actor->unk154);
|
||||
if (var_v1) {
|
||||
arg2[0] += arg3[0];
|
||||
arg2[1] += arg3[1];
|
||||
arg2[2] += arg3[2];
|
||||
}
|
||||
}
|
||||
}
|
||||
if (var_v1 && sp64->unk2D && (actor->marker->modelId == ASSET_363_MODEL_HONEYCOMB)) {
|
||||
ml_vec3f_scale_copy(sp44, arg3, sp60 / (f32) (1 << sp64->unk6));
|
||||
var_v1 = TRUE;
|
||||
arg2[0] += sp44[0];
|
||||
arg2[1] += sp44[1];
|
||||
arg2[2] += sp44[2];
|
||||
if (actor->marker->modelId != ASSET_363_MODEL_HONEYCOMB) {
|
||||
sp64->unk6++;
|
||||
}
|
||||
if (sp64->unk6 == 5) {
|
||||
sp64->unk2D = FALSE;
|
||||
} else {
|
||||
var_v1 = FALSE;
|
||||
}
|
||||
} else {
|
||||
sp64->unk2D = FALSE;
|
||||
}
|
||||
arg1[1] -= sp60;
|
||||
arg2[1] -= sp60;
|
||||
return var_v1;
|
||||
}
|
||||
#endif
|
||||
|
||||
void func_802C96E4(Actor *actor) {
|
||||
f32 sp6C;
|
||||
struct41FB0s_1 *sp68;
|
||||
struct41FB0s *sp64;
|
||||
f32 sp58[3];
|
||||
f32 sp4C[3];
|
||||
f32 sp40[3];
|
||||
s32 pad;
|
||||
s32 pad2;
|
||||
f32 var_f0;
|
||||
|
||||
sp6C = time_getDelta();
|
||||
sp68 = (struct41FB0s_1 *)&actor->unkBC;
|
||||
sp64 = &D_80366460[sp68->unk0];
|
||||
if (D_8037DDB0 > 0) D_8037DDB0--;
|
||||
|
||||
switch (sp68->unk2F) {
|
||||
case 3:
|
||||
break;
|
||||
case 1:
|
||||
sp68->unk28 += sp6C;
|
||||
ml_vec3f_copy(sp58, sp68->unk8);
|
||||
ml_vec3f_scale_copy(sp4C, sp68->unk14, sp6C);
|
||||
sp68->unk8[0] += sp4C[0];
|
||||
sp68->unk8[1] += sp4C[1];
|
||||
sp68->unk8[2] += sp4C[2];
|
||||
if (1.2 < sp68->unk28) {
|
||||
sp68->unk2C = 1;
|
||||
}
|
||||
if (!((sp64->unk0 & 0x40) && (sp68->unk28 < 1.2))
|
||||
&& ( (func_802C939C(actor, sp58, sp68->unk8, sp40, sp64->unk0 & 8))
|
||||
|| ((sp64->unk0 & 0x200) && (sp68->unk14[1] < -((sp64->unk20 / 2) + sp64->unk1C)))
|
||||
)
|
||||
) {
|
||||
if (sp64->unk0 & 0x204) {
|
||||
sp40[0] = 0.0f;
|
||||
sp40[1] = 1.0f;
|
||||
sp40[2] = 0.0f;
|
||||
}
|
||||
ml_vec3f_scale(sp68->unk14, -1.0f);
|
||||
var_f0 = ((sp68->unk14[0] * sp40[0]) + (sp68->unk14[1] * sp40[1]) + (sp68->unk14[2] * sp40[2]));
|
||||
ml_vec3f_scale(sp40, 2*var_f0);
|
||||
ml_vec3f_diff_copy(sp68->unk14, sp40, sp68->unk14);
|
||||
if (D_8037DDB0 == 0) {
|
||||
if (sp64->unkC != 0) {
|
||||
func_8030E878(sp64->unkC, (f32)sp64->unkE, sp64->unk10, sp68->unk8, 300.0f, 3000.0f);
|
||||
}
|
||||
D_8037DDB0 = sp64->unk8 * 8;
|
||||
}
|
||||
ml_vec3f_scale(sp68->unk14, sp64->unk2C);
|
||||
var_f0 = gu_sqrtf((sp68->unk14[0]*sp68->unk14[0]) + (sp68->unk14[1]*sp68->unk14[1]) + (sp68->unk14[2]*sp68->unk14[2]));
|
||||
if (((var_f0 < 200.0f) && (sp40[1] > 0.75)) || (var_f0 < 10.0f)) {
|
||||
sp68->unk2F = 2;
|
||||
sp68->unk2C = 1;
|
||||
if (sp64->unk0 & 0x10) {
|
||||
actor->marker->propPtr->unk8_3 = TRUE;
|
||||
}
|
||||
}
|
||||
else{
|
||||
|
||||
}
|
||||
if (sp64->unk0 & 0x200) {
|
||||
sp68->unk8[1] = actor->unk5C;
|
||||
}
|
||||
} else {
|
||||
if (sp64->unk0 & 0x100) {
|
||||
sp68->unk14[1] -= 4000.0 * sp6C;
|
||||
} else {
|
||||
sp68->unk14[1] -= 1500.0 * sp6C;
|
||||
}
|
||||
}
|
||||
ml_vec3f_copy(actor->position, sp68->unk8);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (sp64->unk0 & 2) {
|
||||
sp68->unk20 += (sp68->unk24 * sp6C);
|
||||
while (sp68->unk20 >= 360.0f) { sp68->unk20 -= 360.0f; }
|
||||
while (sp68->unk20 < 0.0f) { sp68->unk20 += 360.0f; }
|
||||
actor->yaw = sp68->unk20;
|
||||
}
|
||||
var_f0 = (sp68->unk24 >= 0.0f) ? sp68->unk24 : -sp68->unk24;
|
||||
if (var_f0 < 0.1) {
|
||||
sp68->unk2F = 3U;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (actor->position[1] < -5000.0f) {
|
||||
marker_despawn(actor->marker);
|
||||
}
|
||||
}
|
||||
|
||||
f32 *func_802C9C0C(Actor *actor){
|
||||
struct41FB0s_1 *ptr = (struct41FB0s_1 *)&actor->unkBC;
|
||||
return ptr->unk14;
|
||||
}
|
||||
|
||||
bool func_802C9C14(Actor *actor){
|
||||
struct41FB0s_1 *ptr = (struct41FB0s_1 *)&actor->unkBC;
|
||||
return ptr->unk2C < 1U;
|
||||
}
|
||||
|
||||
@@ -7,16 +7,14 @@ extern f32 func_8028E82C(void);
|
||||
Actor *func_802CA7BC(ActorMarker *, Gfx **, Mtx **, Vtx **);
|
||||
void func_802CA92C(Actor *this);
|
||||
|
||||
extern ActorInfo D_80366EF0 = {
|
||||
/* .data */
|
||||
ActorInfo D_80366EF0 = {
|
||||
MARKER_32_PLAYER_SHADOW, ACTOR_17_PLAYER_SHADOW, ASSET_3BF_MODEL_PLAYER_SHADOW,
|
||||
0x1, 0x0,
|
||||
func_802CA92C, func_80326224, func_802CA7BC,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
/* .rodata */
|
||||
extern f32 D_80376480;
|
||||
|
||||
/* .code */
|
||||
void func_802CA790(Actor *this){
|
||||
func_8033A410(0xff);
|
||||
@@ -53,7 +51,7 @@ Actor *func_802CA7BC(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
sp48[0] = this->pitch;
|
||||
sp48[1] = this->yaw;
|
||||
sp48[2] = this->roll;
|
||||
sp44 = ml_map_f(sp54[1] - sp40, 0.0f, 300.0f, 0.43f, D_80376480);
|
||||
sp44 = ml_map_f(sp54[1] - sp40, 0.0f, 300.0f, 0.43f, 0.28f);
|
||||
func_8033A2D4(func_802CA790, this);
|
||||
func_803391A4(gfx, mtx, this->position, sp48, sp44, NULL, func_80330B1C(marker));
|
||||
return this;
|
||||
|
||||
@@ -11,7 +11,10 @@ extern void func_802F363C(f32);
|
||||
extern void func_802F9D38(s32);
|
||||
extern void func_802EE6CC(f32[3], f32[3], s32[4], s32, f32, f32, s32, s32, s32);
|
||||
extern void ml_vec3f_assign(f32[3], f32, f32, f32);
|
||||
|
||||
extern void func_802EE2E8(Actor *arg0, s32 arg1, s32 cnt, s32 arg3, f32 arg4, f32 arg5, f32 arg6);
|
||||
extern void func_80319EA4(void);
|
||||
extern void func_80320004(s32, bool);
|
||||
extern void func_803204E4(s32, bool);
|
||||
|
||||
void func_802D3D54(Actor *this);
|
||||
void func_802D3DA4(Actor *this);
|
||||
@@ -34,80 +37,83 @@ void func_802D4CD4(Actor *this);
|
||||
void func_802D68F0(s32 seconds);
|
||||
|
||||
typedef struct {
|
||||
u8 pad0[4];
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
}Struct_core2_4C020_0;
|
||||
|
||||
/* .data */
|
||||
extern ActorAnimationInfo D_803676B0[];
|
||||
extern ActorInfo D_80367760 = { 0x26E, 0x2D9, 0x3B4, 0x1, NULL, func_802D3D54, func_80326224, func_80325E78, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_80367784 = { 0x26F, 0x2DA, 0x3B5, 0x1, NULL, func_802D3D54, func_80326224, func_80325E78, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_803677A8 = { MARKER_168_ICE_KEY, ACTOR_25D_ICE_KEY, ASSET_50C_MODEL_ICE_KEY, 0x1, NULL, func_802D4250, func_80326224, func_80325E78, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_803677CC = { 0x233, 0x23D, 0x4DD, 0x12, D_803676B0, func_802D4388, func_80326224, func_802D4588, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_803677F0 = { 0x16A, 0x242, 0x0, 0x0, NULL, func_802D4680, NULL, func_80325340, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_80367814 = { MARKER_169_SNS_EGG, ACTOR_25E_SNS_EGG, ASSET_50D_MODEL_SNS_EGG, 0x1, NULL, func_802D3FD4, NULL, func_802D41C4, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_80367838 = { 0x265, 0x2E4, 0x55A, 0x1, NULL, func_802D3DA4, NULL, func_802D3F48, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_8036785C = { MARKER_103_MM_WITCH_SWITCH, ACTOR_204_MM_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4B94, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_80367880 = { MARKER_104_MMM_WITCH_SWITCH, ACTOR_206_MMM_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C34, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_803678A4 = { MARKER_105_TTC_WITCH_SWITCH, ACTOR_208_TTC_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C5C, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_803678C8 = { MARKER_106_RBB_WITCH_SWITCH, ACTOR_20B_RBB_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C84, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_803678EC = { MARKER_22A_CCW_WITCH_SWITCH, ACTOR_237_CCW_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4CAC, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_80367910 = { MARKER_22B_FP_WITCH_SWITCH, ACTOR_239_FP_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4CD4, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_80367934 = { MARKER_166_CC_WITCH_SWITCH, ACTOR_25B_CC_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4BBC, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_80367958 = { MARKER_162_BGS_WITCH_SWITCH, ACTOR_257_BGS_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4BE4, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_8036797C = { MARKER_161_GV_WITCH_SWITCH, ACTOR_256_GV_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C0C, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
f32 D_80367680 = 130.0f;
|
||||
s32 D_80367684 = 0; //enum map_e
|
||||
s32 D_80367688 = 0;
|
||||
s32 D_8036768C = 0;
|
||||
s32 D_80367690 = 0;
|
||||
s32 D_80367694 = 0; //enum map_e
|
||||
s32 D_80367698 = 0;
|
||||
s32 D_8036769C = 0; //enum bkprog_e
|
||||
s32 D_803676A0 = 0; //enum actor_e
|
||||
f32 D_803676A4 = 0.0f;
|
||||
s32 D_803676A8 = 0;
|
||||
u8 D_803676AC = 0;
|
||||
|
||||
extern f32 D_80367680;
|
||||
extern s32 D_80367684; //enum map_e
|
||||
extern s32 D_80367688;
|
||||
extern s32 D_8036768C;
|
||||
extern s32 D_80367690;
|
||||
extern s32 D_80367694; //enum map_e
|
||||
extern s32 D_80367698;
|
||||
extern s32 D_8036769C; //enum bkprog_e
|
||||
extern s32 D_803676A0; //enum actor_e
|
||||
extern s32 D_803676A8;
|
||||
extern u8 D_803676AC;
|
||||
extern s32 D_803679A0[4];
|
||||
extern s16 D_803679B0[];
|
||||
extern Struct_core2_4C020_0 D_803679C8[];
|
||||
extern s16 D_803679E0[];
|
||||
extern s32 D_803679E8;
|
||||
extern s32 D_803679EC;
|
||||
extern f32 D_803679F0;
|
||||
ActorAnimationInfo D_803676B0[] = {
|
||||
{0x000, 0.0f},
|
||||
{0x000, 0.0f},
|
||||
{0x0D4, 0.15f},
|
||||
{0x0D5, 0.5f},
|
||||
{0x000, 0.0f},
|
||||
{0x000, 0.0f},
|
||||
{0x0D4, 0.15f},
|
||||
{0x0D5, 0.5f},
|
||||
{0x0D5, 1e+8f},
|
||||
{0x1E3, 0.73f},
|
||||
{0x1E3, 1e+8f},
|
||||
{0x1F0, 1.0f},
|
||||
{0x1F1, 0.7f},
|
||||
{0x1F1, 1e+8f},
|
||||
{0x1F2, 1.0f},
|
||||
{0x1F3, 0.4f},
|
||||
{0x1F3, 1e+8f},
|
||||
{0x000, 0.0f},
|
||||
{0x217, 1e+8f},
|
||||
{0x217, 0.3f},
|
||||
{0x217, 1e+8f},
|
||||
{0x217, 0.3f}
|
||||
};
|
||||
|
||||
ActorInfo D_80367760 = { 0x26E, 0x2D9, 0x3B4, 0x1, NULL, func_802D3D54, func_80326224, func_80325E78, 0, 0, 0.0f, 0};
|
||||
ActorInfo D_80367784 = { 0x26F, 0x2DA, 0x3B5, 0x1, NULL, func_802D3D54, func_80326224, func_80325E78, 0, 0, 0.0f, 0};
|
||||
ActorInfo D_803677A8 = { MARKER_168_ICE_KEY, ACTOR_25D_ICE_KEY, ASSET_50C_MODEL_ICE_KEY, 0x1, NULL, func_802D4250, func_80326224, func_80325E78, 0, 0, 0.0f, 0};
|
||||
ActorInfo D_803677CC = { 0x233, 0x23D, 0x4DD, 0x12, D_803676B0, func_802D4388, func_80326224, func_802D4588, 0, 0, 0.0f, 0};
|
||||
ActorInfo D_803677F0 = { 0x16A, 0x242, 0x0, 0x0, NULL, func_802D4680, NULL, func_80325340, 0, 0, 0.0f, 0};
|
||||
ActorInfo D_80367814 = { MARKER_169_SNS_EGG, ACTOR_25E_SNS_EGG, ASSET_50D_MODEL_SNS_EGG, 0x1, NULL, func_802D3FD4, NULL, func_802D41C4, 0, 0, 0.0f, 0};
|
||||
ActorInfo D_80367838 = { 0x265, 0x2E4, 0x55A, 0x1, NULL, func_802D3DA4, NULL, func_802D3F48, 0, 0, 0.0f, 0};
|
||||
ActorInfo D_8036785C = { MARKER_103_MM_WITCH_SWITCH, ACTOR_204_MM_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4B94, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
ActorInfo D_80367880 = { MARKER_104_MMM_WITCH_SWITCH, ACTOR_206_MMM_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C34, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
ActorInfo D_803678A4 = { MARKER_105_TTC_WITCH_SWITCH, ACTOR_208_TTC_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C5C, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
ActorInfo D_803678C8 = { MARKER_106_RBB_WITCH_SWITCH, ACTOR_20B_RBB_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C84, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
ActorInfo D_803678EC = { MARKER_22A_CCW_WITCH_SWITCH, ACTOR_237_CCW_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4CAC, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
ActorInfo D_80367910 = { MARKER_22B_FP_WITCH_SWITCH, ACTOR_239_FP_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4CD4, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
ActorInfo D_80367934 = { MARKER_166_CC_WITCH_SWITCH, ACTOR_25B_CC_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4BBC, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
ActorInfo D_80367958 = { MARKER_162_BGS_WITCH_SWITCH, ACTOR_257_BGS_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4BE4, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
ActorInfo D_8036797C = { MARKER_161_GV_WITCH_SWITCH, ACTOR_256_GV_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C0C, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
|
||||
/* .rodata */
|
||||
extern f32 D_80376984;
|
||||
extern f64 D_80376988;
|
||||
extern f64 D_80376990;
|
||||
extern f64 D_80376998;
|
||||
extern f64 D_803769A0;
|
||||
extern f32 D_803769A8;
|
||||
extern f32 D_803769AC;
|
||||
|
||||
extern f32 D_803769B0;
|
||||
extern f64 D_803769B8; //3FA999999999999A
|
||||
extern f32 D_803769C0; //3F666666
|
||||
|
||||
extern f32 D_80376A78;
|
||||
extern f32 D_80376A7C;
|
||||
extern f32 D_80376A80;
|
||||
extern f32 D_80376A84;
|
||||
extern f32 D_80376A88;
|
||||
extern f64 D_80376A90;
|
||||
extern f64 D_80376A98;
|
||||
|
||||
// 3ECCCCCD 3ECCCCCD
|
||||
// 3ECCCCCD 3ECCCCCD 3ECCCCCD
|
||||
// 4072C00000000000 4072C00000000000
|
||||
s32 D_803679A0[4] = {0x87, 0x87, 0x87, 0xA0};
|
||||
s16 D_803679B0[] = {0x5, 0x90, 0xA, 0x93, 0xF,0x92, 0x14, 0x91, 0x19, 0x94, -1};
|
||||
Struct_core2_4C020_0 D_803679C8[] = {
|
||||
{0, 600, 1200, 1900},
|
||||
{-580, 0, 1550, 2200},
|
||||
{150, 460, 1625, 2100},
|
||||
};
|
||||
s16 D_803679E0[] = {-50, -100, 200};
|
||||
|
||||
/* .bss */
|
||||
int D_8037DE00;
|
||||
f32 D_8037DE04;
|
||||
f32 D_8037DE08;
|
||||
|
||||
/* .public */
|
||||
void func_802D6114(void);
|
||||
void func_802D6264(f32 arg0, enum map_e arg1, s32 arg2, s32 arg3, s32 arg4, enum bkprog_e arg5);
|
||||
void func_802D6344(void);
|
||||
@@ -142,47 +148,199 @@ void func_802D317C(ActorMarker *marker, enum bkprog_e prog_flag_id){
|
||||
marker_despawn(marker);
|
||||
}
|
||||
|
||||
#ifndef NONMATCHING
|
||||
void func_802D31AC(ActorMarker *marker, ActorMarker *other_marker);
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_4C020/func_802D31AC.s")
|
||||
#else
|
||||
void func_802D31AC(ActorMarker *marker, ActorMarker *other_marker){
|
||||
void func_802D31AC(ActorMarker *arg0, ActorMarker * arg1) {
|
||||
Actor *sp2C;
|
||||
|
||||
sp2C = marker_getActor(marker);
|
||||
swtich(marker->unk14_20){
|
||||
//L802D3218 x < 0x23a //jmptbl D_80376720
|
||||
//L802D3292 x < 0x124 //jmptbl D_80376778
|
||||
//L802D32CC x < 0xa2 //jmptbl D_8037686C
|
||||
sp2C = marker_getActor(arg0);
|
||||
arg0->collidable = FALSE;
|
||||
switch (arg0->unk14_20) {
|
||||
case 0x9F:
|
||||
case 0xA0:
|
||||
case 0xFF:
|
||||
func_8030E540(SFX_82_METAL_BREAK);
|
||||
func_80328A84(sp2C, 4);
|
||||
break;
|
||||
|
||||
case 0x17d://L802D3308
|
||||
func_8030E624(0x599ff882);
|
||||
func_8030E624(0x4cbff882);
|
||||
func_802D2FB0(sp2C, 0x14, -0x1e, 0x190, 3.0f, 0x15e, 0x50, 0x96);
|
||||
sp2C->unk60 = 1.0f;
|
||||
func_80320004(0xA5, TRUE);
|
||||
break;
|
||||
case 0x17D:
|
||||
FUNC_8030E624(SFX_82_METAL_BREAK, 0.7f, 32736);
|
||||
FUNC_8030E624(SFX_82_METAL_BREAK, 0.6f, 32736);
|
||||
func_802D2FB0(sp2C, 0x14, -0x1E, 0x190, 3.0f, 0x15E, 0x50, 0x96);
|
||||
sp2C->unk60 = 1.0f;
|
||||
func_80320004(0xA5, 1);
|
||||
break;
|
||||
|
||||
case 0x163://L802D3558
|
||||
break;
|
||||
case 0x109:
|
||||
func_8030E6D4(SFX_114_BRICKWALL_BREAKING);
|
||||
func_8030E510(SFX_11_WOOD_BREAKING_1, 28000);
|
||||
func_80328AEC(sp2C, 9);
|
||||
func_80320004((sp2C->unkF4_8 == 1) ? 0xC8 : 0xC9, 1);
|
||||
break;
|
||||
|
||||
case 0x263://L802D35A8
|
||||
break;
|
||||
case 0x107:
|
||||
func_8030E540(SFX_82_METAL_BREAK);
|
||||
func_802EE278(sp2C, 0xE, 0xF, 0x46, 0.8f, 0.7f);
|
||||
marker_despawn(arg0);
|
||||
break;
|
||||
|
||||
case 0x1f2://L802D3A8C
|
||||
case 0x1f3://L802D3A8C
|
||||
break;
|
||||
case 0x224:
|
||||
func_8025A70C(COMUSIC_2B_DING_B);
|
||||
func_8030E6A4(SFX_129_SWOOSH, (sp2C->scale < 0.45) ? 1.0 : 0.8, 0x7FF8);
|
||||
func_80328AEC(sp2C, 0xC);
|
||||
func_802D2FB0(sp2C, 8, -0x3C, 0xC8, 2.0f, 0xFA, 0x3C, 0x64);
|
||||
func_80320004((sp2C->unkF4_8== 1) ? 0xCB : 0xCC, 1);
|
||||
break;
|
||||
|
||||
case 0x164://L802D3C68
|
||||
case 0x165://L802D3C68
|
||||
break;
|
||||
case 0x225:
|
||||
func_8025A70C(COMUSIC_2B_DING_B);
|
||||
func_8030E540(SFX_129_SWOOSH);
|
||||
func_80328AEC(sp2C, 0xF);
|
||||
func_802D2FB0(sp2C, 0xE, -0x3C, 0xC8, 2.0f, 0xFA, 0x3C, 0x64);
|
||||
func_80320004(0xCA, 1);
|
||||
break;
|
||||
|
||||
|
||||
//L802D3CA0 else
|
||||
case 0x163:
|
||||
if (sp2C->unk10_12 == 0) {
|
||||
sp2C->unk10_12 = TRUE;
|
||||
timed_playSfx(0.5f, SFX_3F9_UNKNOWN, 1.0f, 32000);
|
||||
FUNC_8030E624(SFX_114_BRICKWALL_BREAKING, 0.8f, 32000);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x9A:
|
||||
case 0x9C:
|
||||
case 0x9D:
|
||||
case 0x9E:
|
||||
case 0xA1:
|
||||
case 0xE7:
|
||||
case 0xEA:
|
||||
case 0x108:
|
||||
case 0x263:
|
||||
if ((arg0->unk14_20 == 0x9D) || (arg0->unk14_20 == 0xE7)) {
|
||||
levelSpecificFlags_set(0x2E, 1);
|
||||
}
|
||||
if (arg0->unk14_20 == 0x263) {
|
||||
levelSpecificFlags_set(0x38, 1);
|
||||
}
|
||||
func_802D2FB0(sp2C, 5, -0x28, 0xC8, 0.85f, 0xDC, 0x3C, 0x64);
|
||||
func_8030E540(SFX_D_EGGSHELL_BREAKING);
|
||||
func_8030E540(SFX_11_WOOD_BREAKING_1);
|
||||
switch (arg0->unk14_20) {
|
||||
case 0x9E:
|
||||
func_802EE278(sp2C, 0xD, 9, 0x82, 0.34f, 1.0f);
|
||||
break;
|
||||
|
||||
case 0x9D:
|
||||
case 0xE7:
|
||||
case 0x108:
|
||||
func_802EE278(sp2C, 7, 6, 0x32, 0.4f, 1.1f);
|
||||
func_802EE278(sp2C, 7, 6, 0xB4, 0.4f, 1.1f);
|
||||
break;
|
||||
|
||||
case 0x9A:
|
||||
case 0x9C:
|
||||
case 0x263:
|
||||
func_802EE278(sp2C, 7, 0xA, 0x82, 0.3f, 0.8f);
|
||||
break;
|
||||
|
||||
case 0xA1:
|
||||
func_802EE278(sp2C, 7, 9, 0x82, 0.3f, 0.6f);
|
||||
break;
|
||||
|
||||
case 0xEA:
|
||||
func_802EE278(sp2C, 3, 9, 0x82, 0.21f, 0.8f);
|
||||
break;
|
||||
|
||||
default:
|
||||
func_802EE278(sp2C, 7, 0x19, 0x82, 0.17f, 0.8f);
|
||||
break;
|
||||
}
|
||||
marker_despawn(arg0);
|
||||
break;
|
||||
|
||||
case 0x11F:
|
||||
func_8030E540(SFX_D9_WOODEN_CRATE_BREAKING_1);
|
||||
func_802EE2E8(sp2C, 7, 9, 0x78, 0.43f, 1.3f, 3.0f);
|
||||
func_802EE2E8(sp2C, 3, 6, 0x78, 0.43f, 1.3f, 3.0f);
|
||||
func_802D317C(arg0, 0xC5);
|
||||
break;
|
||||
|
||||
case 0x11A:
|
||||
func_8030E540(SFX_82_METAL_BREAK);
|
||||
func_802EE278(sp2C, 0xE, 0xD, 0x32, 0.8f, 0.9f);
|
||||
func_802EE278(sp2C, 0xE, 0xD, 0xAA, 0.8f, 0.9f);
|
||||
func_802D317C(arg0, 0xC2);
|
||||
break;
|
||||
|
||||
case 0x118:
|
||||
func_8030E540(SFX_82_METAL_BREAK);
|
||||
func_802EE278(sp2C, 0xE, 0xD, 0x50, 1.2f, 0.9f);
|
||||
func_802EE278(sp2C, 0xE, 0xD, 0xB4, 1.2f, 0.9f);
|
||||
func_802D317C(arg0, 0xCD);
|
||||
break;
|
||||
|
||||
case 0x119:
|
||||
func_8030E540(SFX_82_METAL_BREAK);
|
||||
func_802EE278(sp2C, 0xE, 9, 0x50, 1.2f, 0.9f);
|
||||
func_802EE278(sp2C, 0xE, 9, 0xAA, 1.2f, 0.9f);
|
||||
func_802EE278(sp2C, 0xE, 9, 0x104, 1.2f, 0.9f);
|
||||
func_802D317C(arg0, 0xCE);
|
||||
break;
|
||||
|
||||
case 0x22D:
|
||||
case 0x22E:
|
||||
func_8030E540(SFX_82_METAL_BREAK);
|
||||
func_8030E540(SFX_B6_GLASS_BREAKING_1);
|
||||
func_802EE278(sp2C, 4, 0x23, 0x1E, 0.7f, 0.6f);
|
||||
marker_despawn(arg0);
|
||||
break;
|
||||
|
||||
case 0x123:
|
||||
case 0x1F2:
|
||||
case 0x1F3:
|
||||
case 0x235:
|
||||
case 0x236:
|
||||
case 0x237:
|
||||
case 0x238:
|
||||
case 0x239:
|
||||
func_8030E540(SFX_13A_GLASS_BREAKING_7);
|
||||
func_802EE278(sp2C, 4, 0x2D, 0x82, 1.0f, 1.0f);
|
||||
if (arg0->unk14_20 == 0x1F3) {
|
||||
func_802EE278(sp2C, 4, 0x2D, 0x104, 1.0f, 1.0f);
|
||||
}
|
||||
marker_despawn(arg0);
|
||||
break;
|
||||
|
||||
case 0x11E:
|
||||
func_8030E540(SFX_B6_GLASS_BREAKING_1);
|
||||
func_802EE278(sp2C, 4, 0x32, 0x50, 1.0f, 1.4f);
|
||||
func_802EE278(sp2C, 4, 0x32, 0xA0, 1.0f, 1.4f);
|
||||
func_802EE278(sp2C, 4, 0x1E, 0xF0, 0.8f, 1.1f);
|
||||
func_802D317C(arg0, 0xC3);
|
||||
break;
|
||||
|
||||
case MARKER_121_GLASS_EYE:
|
||||
func_8030E540(SFX_B6_GLASS_BREAKING_1);
|
||||
func_802EE2E8(sp2C, 1, 0x32, 0x14, 1.2f, 1.4f, 2.2f);
|
||||
func_802EE2E8(sp2C, 1, 0x3C, 0x64, 1.6f, 1.8f, 2.2f);
|
||||
func_802EE2E8(sp2C, 1, 0x32, 0xB4, 1.2f, 1.4f, 2.2f);
|
||||
func_802D317C(arg0, BKPROG_C4_STATUE_EYE_BROKEN);
|
||||
break;
|
||||
|
||||
case 0x164:
|
||||
case 0x165:
|
||||
if (sp2C->unk1C[1] == sp2C->position[1]) {
|
||||
func_8030E510(SFX_9B_BOULDER_BREAKING_1, 25000);
|
||||
sp2C->unk1C[0] = 1.0f;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
func_8030E540(SFX_D_EGGSHELL_BREAKING);
|
||||
func_8030E540(SFX_11_WOOD_BREAKING_1);
|
||||
marker_despawn(arg0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void func_802D3CC8(ActorMarker *marker){
|
||||
func_802D31AC(marker, NULL);
|
||||
@@ -221,7 +379,7 @@ void func_802D3DA4(Actor *this) {
|
||||
}
|
||||
player_getPosition(sp24);
|
||||
phi_v0 = ((this->position[1] - 5.0f) <= sp24[1]) && (sp24[1] <= (this->position[1] + 30.0f))
|
||||
&& (((sp24[0] - this->position[0])*(sp24[0] - this->position[0]) + (sp24[2] - this->position[2])*(sp24[2] - this->position[2])) < D_80376984);
|
||||
&& (((sp24[0] - this->position[0])*(sp24[0] - this->position[0]) + (sp24[2] - this->position[2])*(sp24[2] - this->position[2])) < 3025.0f);
|
||||
|
||||
if ((this->unk38_31 == 0) && (phi_v0 == 0)) {
|
||||
this->unk38_31 = 1;
|
||||
@@ -288,7 +446,7 @@ void func_802D3FD4(Actor *this){
|
||||
return;
|
||||
}//L802D4134
|
||||
|
||||
this->yaw += (this->unkF4_8 & 1) ? D_80376988 : D_80376990;
|
||||
this->yaw += (this->unkF4_8 & 1) ? -1.4 : 1.4;
|
||||
if(this->yaw < 0.0f){
|
||||
this->yaw += 360.0f;
|
||||
}
|
||||
@@ -357,7 +515,7 @@ void func_802D4388(Actor *this){
|
||||
break;
|
||||
|
||||
case 0x13: //L802D44B0
|
||||
if(D_80376998 <= animctrl_getAnimTimer(this->animctrl)){
|
||||
if(0.66 <= animctrl_getAnimTimer(this->animctrl)){
|
||||
func_80328B8C(this, 0x14, 0.66f, 0);
|
||||
}
|
||||
break;
|
||||
@@ -370,7 +528,7 @@ void func_802D4388(Actor *this){
|
||||
break;
|
||||
|
||||
case 0x15: //L802D4534
|
||||
if(animctrl_getAnimTimer(this->animctrl) < D_803769A0){
|
||||
if(animctrl_getAnimTimer(this->animctrl) < 0.03){
|
||||
func_80328B8C(this, 0x12, 0.0f, 1);
|
||||
}
|
||||
break;
|
||||
@@ -462,36 +620,27 @@ void func_802D48F0(void){
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef NONMATCHING
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_4C020/func_802D4928.s")
|
||||
#else
|
||||
void func_802D4928(Actor *this, s32 arg1, s32 arg2, s32 arg3) {
|
||||
s32 sp1C;
|
||||
|
||||
this->marker->propPtr->unk8_3 = TRUE;
|
||||
sp1C = arg1 & 0xC00000;
|
||||
if( ( ((sp1C == 0) && mapSpecificFlags_get(arg1 - 0))
|
||||
|| ((sp1C == 0x800000) && func_8031FF1C(arg1 - 0x800000))
|
||||
|| ((sp1C == 0x400000) && func_803203FC(arg1 - 0x400000))
|
||||
if( ( (((arg1 & 0xC00000) == 0) && mapSpecificFlags_get(arg1 - 0))
|
||||
|| (((arg1 & 0xC00000) == 0x800000) && func_8031FF1C(arg1 - 0x800000))
|
||||
|| (((arg1 & 0xC00000) == 0x400000) && func_803203FC(arg1 - 0x400000))
|
||||
)
|
||||
&& (arg2 != this->state)
|
||||
) {
|
||||
func_80328B8C(this, arg2, 0.0f, 1);
|
||||
actor_playAnimationOnce(this);
|
||||
}
|
||||
sp1C = arg1 & 0xC00000;
|
||||
if( ( ((sp1C == 0) && !mapSpecificFlags_get(arg1 - 0))
|
||||
|| ((sp1C == 0x800000) && !func_8031FF1C(arg1 - 0x800000))
|
||||
|| ((sp1C == 0x400000) && !func_803203FC(arg1 - 0x400000))
|
||||
if( ( (((arg1 & 0xC00000) == 0) && !mapSpecificFlags_get(arg1 - 0))
|
||||
|| (((arg1 & 0xC00000) == 0x800000) && !func_8031FF1C(arg1 - 0x800000))
|
||||
|| (((arg1 & 0xC00000) == 0x400000) && !func_803203FC(arg1 - 0x400000))
|
||||
)
|
||||
&& (arg2 == this->state)
|
||||
) {
|
||||
func_80328B8C(this, arg3, 0.0f, 1);
|
||||
actor_playAnimationOnce(this);
|
||||
}
|
||||
if(sp1C);
|
||||
}
|
||||
#endif
|
||||
|
||||
void func_802D4A9C(Actor *this, s32 arg1){
|
||||
func_802D4928(this, arg1, 2, 3);
|
||||
@@ -586,12 +735,12 @@ void func_802D4D3C(s32 arg0, s32 arg1) {
|
||||
sp4C[3] = 200;
|
||||
sp4C[0] = sp4C[1] = sp4C[2] = 250;
|
||||
ml_vec3f_assign(&sp40, -1.0f, 3.0f, -3.0f);
|
||||
func_802EE6CC(&sp5C, &sp40, &sp4C, 0, D_803769A8, 40.0f, 10, 120, 0);
|
||||
func_802EE6CC(&sp5C, &sp40, &sp4C, 0, 2.4f, 40.0f, 10, 120, 0);
|
||||
|
||||
sp4C[3] = 130;
|
||||
sp4C[0] = sp4C[1] = sp4C[2] = 130;
|
||||
ml_vec3f_assign(&sp40, 2.0f, -2.0f, 2.0f);
|
||||
func_802EE6CC(&sp5C, &sp40, &sp4C, 0, D_803769AC, 180.0f, 20, 160, 0);
|
||||
func_802EE6CC(&sp5C, &sp40, &sp4C, 0, 4.7f, 180.0f, 20, 160, 0);
|
||||
func_8030E6D4(SFX_1B_EXPLOSION_1);
|
||||
}
|
||||
else{
|
||||
@@ -642,7 +791,7 @@ void func_802D5178(s32 arg0, enum bkprog_e arg1, s32 arg2, enum map_e arg3, s32
|
||||
if(levelSpecificFlags_get(arg0) && !func_8031FF1C(arg1)){
|
||||
levelSpecificFlags_set(arg0, FALSE);
|
||||
func_80320004(arg1, TRUE);
|
||||
func_802D6264(D_803769B0, arg3, arg2, arg4, arg5, 0);
|
||||
func_802D6264(0.95f, arg3, arg2, arg4, arg5, 0);
|
||||
D_803676A0 = arg6;
|
||||
D_80367690 = arg7;
|
||||
}
|
||||
@@ -654,18 +803,11 @@ void func_802D520C(Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef NONMATCHING
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_4C020/func_802D5260.s")
|
||||
#else
|
||||
extern f32 D_803676A4;
|
||||
extern f32 D_803769B4;
|
||||
void func_802D5260(void) {
|
||||
s32 sp3C;
|
||||
s32 sp38;
|
||||
f32 sp34;
|
||||
f32 sp28[3];
|
||||
s32 phi_v0_2;
|
||||
s32 phi_v1_2;
|
||||
|
||||
sp3C = (map_get() == MAP_76_GL_640_NOTE_DOOR) ? 0
|
||||
: (map_get() == MAP_77_GL_RBB_LOBBY) ? 1
|
||||
@@ -715,42 +857,18 @@ void func_802D5260(void) {
|
||||
if (levelSpecificFlags_get(0x3C) != 0) {
|
||||
sp34 = D_803679C8[sp3C].unk6 + D_803676A4;
|
||||
} else {
|
||||
if (func_8031FF1C(BKPROG_27_LAIR_WATER_LEVEL_3)) {
|
||||
phi_v0_2 = 3;
|
||||
} else {
|
||||
if (func_8031FF1C(BKPROG_25_LAIR_WATER_LEVEL_2)) {
|
||||
phi_v1_2 = 2;
|
||||
} else {
|
||||
if (func_8031FF1C(BKPROG_23_LAIR_WATER_LEVEL_1)) {
|
||||
phi_v0_2 = 1;
|
||||
} else {
|
||||
phi_v0_2 = 0;
|
||||
}
|
||||
phi_v1_2 = phi_v0_2;
|
||||
}
|
||||
phi_v0_2 = phi_v1_2;
|
||||
}
|
||||
sp34 = ((s16 *)&D_803679C8[sp3C])[phi_v0_2];
|
||||
sp34 = ((s16 *)&D_803679C8[sp3C])[(func_8031FF1C(BKPROG_27_LAIR_WATER_LEVEL_3)) ? 3
|
||||
: (func_8031FF1C(BKPROG_25_LAIR_WATER_LEVEL_2)) ? 2
|
||||
: (func_8031FF1C(BKPROG_23_LAIR_WATER_LEVEL_1)) ? 1
|
||||
: 0];
|
||||
}
|
||||
func_8034DEB4(sp38, sp34);
|
||||
player_getPosition(sp28);
|
||||
|
||||
if (sp3C != -1) {
|
||||
phi_v1_2 = (sp3C == 2) ? (D_803769B4 < sp28[0]) ? -200 : 0 : 0;
|
||||
phi_v0_2 = D_803679E0[sp3C] + phi_v1_2;
|
||||
}
|
||||
else{
|
||||
phi_v0_2 = 0;
|
||||
}
|
||||
func_802F363C((f32) phi_v0_2 + sp34);
|
||||
func_802F363C(sp34 + ((sp3C != -1) ? (D_803679E0[sp3C] + ((sp3C == 2) ? (6600.0f < sp28[0]) ? -200 : 0 : 0)) : 0));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef NONMATCHING
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_4C020/func_802D5628.s")
|
||||
#else
|
||||
void func_802D5628(void){
|
||||
s32 sp7C;
|
||||
s32 sp78;
|
||||
@@ -760,9 +878,9 @@ void func_802D5628(void){
|
||||
s32 sp68;
|
||||
s32 sp50[6];
|
||||
s32 sp4C;
|
||||
// static s32 D_803679E8 = 0;
|
||||
// static s32 D_803679EC = 0;
|
||||
// static f32 D_803679F0 = 0.0f;
|
||||
static s32 D_803679E8 = 0;
|
||||
static s32 D_803679EC = 0;
|
||||
static f32 D_803679F0 = 0.0f;
|
||||
|
||||
if( map_get() != MAP_8E_GL_FURNACE_FUN
|
||||
&& map_get() != MAP_80_GL_FF_ENTRANCE
|
||||
@@ -782,7 +900,7 @@ void func_802D5628(void){
|
||||
D_803679EC = 2;
|
||||
}
|
||||
func_8030E6A4(SFX_2_CLAW_SWIPE, MIN(2.0,D_803679F0), 20000);
|
||||
D_803679F0 += D_803769B8;
|
||||
D_803679F0 += 0.05;
|
||||
}
|
||||
}
|
||||
else{//L802D5750
|
||||
@@ -877,7 +995,7 @@ void func_802D5628(void){
|
||||
}
|
||||
else{//L802D5B24
|
||||
func_8024E55C(0, sp50); //get button inputs
|
||||
if(sp50[FACE_BUTTON(BUTTON_C_UP)] == 1){
|
||||
if(sp50[FACE_BUTTON(BUTTON_B)] == 1){
|
||||
func_80324C58();
|
||||
func_802D6114();
|
||||
}
|
||||
@@ -964,7 +1082,6 @@ void func_802D5628(void){
|
||||
}//L802D607C
|
||||
}//L802D607C
|
||||
}
|
||||
#endif
|
||||
|
||||
//water_level_atleast_2;
|
||||
int func_802D6088(void){
|
||||
|
||||
@@ -116,7 +116,7 @@ extern ActorInfo D_80393138 = { 0x11E, 0x224, 0x4AF, 0x1, NULL, func_8038A014, f
|
||||
extern ActorInfo D_8039315C = { 0x227, 0x234, 0x4D6, 0x1, NULL, func_80388524, func_80326224, func_80325E78, 0, 0, 0.0f, 0x93};
|
||||
extern ActorInfo D_80393180 = { 0x228, 0x235, 0x4D7, 0x1, NULL, func_80388524, func_80326224, func_80325E78, 0, 0, 0.0f, 0x8B};
|
||||
extern ActorInfo D_803931A4 = { 0x229, 0x236, 0x4D8, 0x1, NULL, func_80388524, func_80326224, func_80325E78, 0, 0, 0.0f, 0x8B};
|
||||
extern ActorInfo D_803931C8 = { 0x121, 0x227, 0x4BD, 0x1, NULL, func_8038A034, func_80326224, func_80325888, 0, 0, 0.0f, 0x89};
|
||||
extern ActorInfo D_803931C8 = { MARKER_121_GLASS_EYE, ACTOR_227_GLASS_EYE, ASSET_4BD_MODEL_GLASS_EYE, 0x1, NULL, func_8038A034, func_80326224, func_80325888, 0, 0, 0.0f, 0x89};
|
||||
extern ActorInfo D_803931EC = { 0x116, 0x21A, 0x4AC, 0x1, NULL, func_803893B8, func_80326224, func_80325E78, 0, 0, 0.0f, 0x82};
|
||||
extern ActorInfo D_80393210 = { 0x117, 0x21B, 0x4AD, 0x1, NULL, func_803894B0, func_80326224, func_80325E78, 0, 0, 0.0f, 0x82};
|
||||
extern ActorInfo D_80393234 = { 0x10B, 0x20F, 0x4B4, 0x1, NULL, func_80388524, func_80326224, func_80325E78, 0, 0, 0.0f, 0x90};
|
||||
|
||||
@@ -64,7 +64,7 @@ void func_80392700(Actor *this) {
|
||||
mapSpecificFlags_set(4, 0);
|
||||
}
|
||||
if (mapSpecificFlags_get(6)) {
|
||||
func_8025A70C(MUSIC_KLUNGO_BY_FALLEN_GRUNTY);
|
||||
func_8025A70C(COMUSIC_A8_KLUNGO_BY_FALLEN_GRUNTY);
|
||||
func_802BC280();
|
||||
set_camera_to_node(9);
|
||||
mapSpecificFlags_set(9, 1);
|
||||
@@ -108,7 +108,7 @@ void func_80392918(Actor *this) {
|
||||
set_camera_to_node(0x1E);
|
||||
}
|
||||
if ((0.999 < this->unk48) && !this->unk38_0) {
|
||||
comusic_8025AB44(MUSIC_KLUNGO_BY_FALLEN_GRUNTY, 0, 2000);
|
||||
comusic_8025AB44(COMUSIC_A8_KLUNGO_BY_FALLEN_GRUNTY, 0, 2000);
|
||||
func_8025AABC(0xA8);
|
||||
this->unk38_0 = TRUE;
|
||||
mapSpecificFlags_set(7, TRUE);
|
||||
|
||||
Reference in New Issue
Block a user