The first commit
This commit is contained in:
348
src/core2/code_400F0.c
Normal file
348
src/core2/code_400F0.c
Normal file
@@ -0,0 +1,348 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern void func_802BB360(s32, f32);
|
||||
extern void func_802BB3AC(s32, f32);
|
||||
|
||||
typedef struct {
|
||||
f32 unk0;
|
||||
u8 unk4;
|
||||
f32 unk8;
|
||||
f32 unkC;
|
||||
}Struct_Core2_400F0_0;
|
||||
|
||||
typedef struct {
|
||||
f32 unk0[2];
|
||||
f32 unk8[2];
|
||||
}ActorLocal_Core2_400F0;
|
||||
|
||||
void func_802C75A0(Actor *actor, s32 arg1);
|
||||
|
||||
/* .data */
|
||||
Struct_Core2_400F0_0 D_803660F0[] = {
|
||||
{2.0f, 1, 1.0f, 0.1f},
|
||||
{0.034f, 0, 1.0f, 0.1f},
|
||||
{0.1f, 1, 0.0f, 0.1f},
|
||||
{0.034f, 0, 0.0f, 0.1f},
|
||||
{5.0f, 1, 1.0f, 0.06f},
|
||||
{0.034f, 0, 1.0f, 0.06f},
|
||||
{0.06f, 1, 0.0f, 0.06f},
|
||||
{0.034f, 0, 0.0f, 0.06f},
|
||||
{0.2f, 1, 1.0f, 0.09f},
|
||||
{0.034f, 0, 1.0f, 0.09f},
|
||||
{0.09f, 1, 0.0f, 0.09f},
|
||||
{0.034f, 0, 0.0f, 0.09f},
|
||||
{1.0f, 1, 1.0f, 0.1f},
|
||||
{0.034f, 0, 1.0f, 0.1f},
|
||||
{0.1f, 1, 0.0f, 0.1f},
|
||||
{0.034f, 0, 0.0f, 0.1f},
|
||||
{5.0f, 1, 1.0f, 0.1f},
|
||||
{0.034f, 0, 1.0f, 0.1f},
|
||||
{0.1f, 1, 0.0f, 0.1f},
|
||||
{0.034f, 0, 0.0f, 0.1f},
|
||||
{0.0f, 2, 0.0f, 0.0f}
|
||||
};
|
||||
|
||||
Struct_Core2_400F0_0 D_80366240[] ={
|
||||
{0.0f, 01, 1.0f, 0.1f},
|
||||
{0.034f, 00, 1.0f, 0.1f},
|
||||
{0.1f, 01, 0.0f, 0.1f},
|
||||
{0.034f, 00, 0.0f, 0.1f},
|
||||
{0.0f, 02, 0.0f, 0.0f}
|
||||
};
|
||||
|
||||
/* .code */
|
||||
void func_802C7080(Actor *actor, s32 arg1, f32 arg2, f32 arg3){
|
||||
ActorLocal_Core2_400F0 *local = (ActorLocal_Core2_400F0 *) &actor->local;
|
||||
local->unk8[arg1] = arg2;
|
||||
if(arg3 != 0.0f){
|
||||
actor->unk1C[arg1] = (local->unk8[arg1] - local->unk0[arg1])/arg3;
|
||||
}
|
||||
else{
|
||||
local->unk0[arg1] = local->unk8[arg1];
|
||||
}
|
||||
}
|
||||
|
||||
void func_802C70DC(Actor *actor, Struct_Core2_400F0_0 * arg1, s32 arg2){
|
||||
f32 tmp_f20;
|
||||
Struct_Core2_400F0_0 *s0;
|
||||
|
||||
tmp_f20 = time_getDelta();
|
||||
while(0.0f < tmp_f20){
|
||||
actor->unk60 -= tmp_f20;
|
||||
if(0.0f < actor->unk60)
|
||||
break;
|
||||
tmp_f20 = mlAbsF(actor->unk60);
|
||||
s0 = &arg1[actor->unk154];
|
||||
func_802C7080(actor, s0->unk4, s0->unk8, s0->unkC);
|
||||
s0++;
|
||||
if(s0->unk4 == 2){
|
||||
s0 = arg1;
|
||||
if(!arg2){
|
||||
func_802C75A0(actor, 1);
|
||||
return;
|
||||
}
|
||||
else{//L802C71A4
|
||||
actor->unk154 = 0;
|
||||
}
|
||||
}
|
||||
else {//L802C71B0
|
||||
actor->unk154++;
|
||||
}
|
||||
//L802C71B8
|
||||
actor->unk60 = s0->unk0;
|
||||
}//L802C71CC
|
||||
}
|
||||
|
||||
void func_802C71F0(Actor *actor){
|
||||
ActorLocal_Core2_400F0 *local = (ActorLocal_Core2_400F0 *) &actor->local;
|
||||
switch(actor->modelCacheIndex){
|
||||
case 0x8E:
|
||||
case 0xAC:
|
||||
case 0xB8://L802C7254
|
||||
func_8033A45C(0x1, (s32)func_80257C48(local->unk0[0], 1.0f, 6.0f));
|
||||
func_8033A45C(0x2, (s32)func_80257C48(local->unk0[1], 1.0f, 6.0f));
|
||||
break;
|
||||
|
||||
case 0x195:
|
||||
case 0x196:
|
||||
case 0x197://L802C72B0
|
||||
case 0x2FB://L802C72B4
|
||||
func_8033A45C(0x1C, (s32)func_80257C48(local->unk0[0], 1.0f, 8.0f));
|
||||
func_8033A45C(0x1D, (s32)func_80257C48(local->unk0[1], 1.0f, 8.0f));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802C7318(Actor *actor){
|
||||
ActorLocal_Core2_400F0 *local = (ActorLocal_Core2_400F0 *) &actor->local;
|
||||
int i;
|
||||
|
||||
for(i = 0; i < 2; i++){
|
||||
actor->unk1C[i] = 0.0f;
|
||||
local->unk0[i] = 0.0f;
|
||||
local->unk8[i] = 0.0f;
|
||||
}
|
||||
actor->unk60 = 0.0f;
|
||||
actor->unk154 = 0;
|
||||
actor->unk124_5 = 0;
|
||||
reinterpret_cast(s32, actor->unkBC) = 1;
|
||||
switch(actor->modelCacheIndex){
|
||||
case 0x195:
|
||||
case 0x196:
|
||||
case 0x197:
|
||||
func_802C75A0(actor, 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802C73B0(Actor *actor, ActorLocal_Core2_400F0 *local){
|
||||
f32 tmp_f0 = time_getDelta();
|
||||
int i;
|
||||
|
||||
for(i = 0; i < 2; i++){
|
||||
if(local->unk8[i] != local->unk0[i]){
|
||||
local->unk0[i] += actor->unk1C[i]*tmp_f0;
|
||||
|
||||
if( ((0.0f < actor->unk1C[i]) && (local->unk8[i] < local->unk0[i]))
|
||||
|| ((actor->unk1C[i] < 0.0f) && (local->unk0[i] < local->unk8[i]))
|
||||
){
|
||||
local->unk0[i] = local->unk8[i];
|
||||
}
|
||||
}//L802C7460
|
||||
}
|
||||
}
|
||||
|
||||
void func_802C7478(Actor *actor){
|
||||
func_802C73B0(actor, &actor->local);
|
||||
switch(actor->unk124_5){
|
||||
case 2://L802C74C4
|
||||
func_802C70DC(actor, &D_803660F0, 1);
|
||||
break;
|
||||
case 3://L802C74D8
|
||||
func_802C70DC(actor, &D_80366240, 0);
|
||||
break;
|
||||
case 1://L802C74E4
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802C74F4(Actor *actor, s32 arg1, f32 arg2){
|
||||
f32 tmp_f0;
|
||||
switch(reinterpret_cast(s32, actor->unkBC)){
|
||||
case 0:
|
||||
tmp_f0 = 0.35f;
|
||||
break;
|
||||
case 2:
|
||||
tmp_f0 = 0.09f;
|
||||
break;
|
||||
case 1:
|
||||
default:
|
||||
tmp_f0 = 0.2f;
|
||||
break;
|
||||
}
|
||||
func_802C7080(actor, arg1, arg2, tmp_f0);
|
||||
}
|
||||
|
||||
void func_802C7568(enum actor_e actor_id, s32 arg1, f32 arg2){
|
||||
Actor *actor = func_80326EEC(actor_id);
|
||||
if(actor)
|
||||
func_802C74F4(actor, arg1, arg2);
|
||||
}
|
||||
|
||||
void func_802C75A0(Actor *actor, s32 arg1){
|
||||
actor->unk124_5 = arg1;
|
||||
actor->unk154 = 0;
|
||||
actor->unk60 = 0.0f;
|
||||
}
|
||||
|
||||
void func_802C75C8(enum actor_e actor_id, s32 arg1){
|
||||
Actor *actor = func_80326EEC(actor_id);
|
||||
if(actor)
|
||||
func_802C75A0(actor, arg1);
|
||||
}
|
||||
|
||||
void func_802C75F8(Actor *actor, s32 arg1){
|
||||
reinterpret_cast(s32, actor->unkBC) = arg1;
|
||||
}
|
||||
|
||||
void func_802C7600(enum actor_e actor_id, s32 arg1){
|
||||
Actor *actor = func_80326EEC(actor_id);
|
||||
if(actor)
|
||||
func_802C75F8(actor, arg1);
|
||||
}
|
||||
|
||||
void func_802C7630(enum actor_e actor_id){
|
||||
func_802C7600(actor_id, 0);
|
||||
}
|
||||
|
||||
void func_802C7650(enum actor_e actor_id){
|
||||
func_802C7600(actor_id, 1);
|
||||
}
|
||||
|
||||
void func_802C7670(enum actor_e actor_id){
|
||||
func_802C7600(actor_id, 2);
|
||||
}
|
||||
|
||||
void func_802C7690(enum actor_e actor_id){
|
||||
func_802C75C8(actor_id, 1);
|
||||
func_802C7568(actor_id, 0, 1.0f);
|
||||
func_802C7568(actor_id, 1, 1.0f);
|
||||
}
|
||||
|
||||
void func_802C76D4(enum actor_e actor_id){
|
||||
func_802C75C8(actor_id, 1);
|
||||
func_802C7568(actor_id, 0, 0.0f);
|
||||
func_802C7568(actor_id, 1, 0.0f);
|
||||
}
|
||||
|
||||
void func_802C7718(enum actor_e actor_id){
|
||||
func_802C75C8(actor_id, 1);
|
||||
func_802C7568(actor_id, 0, 0.5f);
|
||||
func_802C7568(actor_id, 1, 0.5f);
|
||||
}
|
||||
|
||||
void func_802C775C(enum actor_e actor_id){
|
||||
func_802C75C8(actor_id, 3);
|
||||
}
|
||||
|
||||
void func_802C777C(enum actor_e actor_id){
|
||||
func_802C75C8(actor_id, 2);
|
||||
}
|
||||
|
||||
int func_802C779C(s32 arg0){
|
||||
switch(arg0){
|
||||
case 0x10: // 802C77C8
|
||||
func_802C7630(0x8E);
|
||||
func_802C7630(0xB8);
|
||||
func_802C7630(0x2FB);
|
||||
return TRUE;
|
||||
case 0x11: // 802C77E8
|
||||
func_802C7650(0x8E);
|
||||
func_802C7650(0xB8);
|
||||
func_802C7650(0x2FB);
|
||||
return TRUE;
|
||||
case 0x12: // 802C7808
|
||||
func_802C7670(0x8E);
|
||||
func_802C7670(0xB8);
|
||||
func_802C7670(0x2FB);
|
||||
return TRUE;
|
||||
case 0x13: // 802C7828
|
||||
func_802C7690(0x8E);
|
||||
func_802C7690(0xB8);
|
||||
func_802C7690(0x2FB);
|
||||
return TRUE;
|
||||
case 0x14: // 802C7848
|
||||
func_802C76D4(0x8E);
|
||||
func_802C76D4(0xB8);
|
||||
func_802C76D4(0x2FB);
|
||||
return TRUE;
|
||||
case 0x15: // 802C7868
|
||||
func_802C7718(0x8E);
|
||||
func_802C7718(0xB8);
|
||||
func_802C7718(0x2FB);
|
||||
return TRUE;
|
||||
case 0x16: // 802C7888
|
||||
func_802C775C(0x8E);
|
||||
func_802C775C(0xB8);
|
||||
func_802C775C(0x2FB);
|
||||
return TRUE;
|
||||
case 0x17: // 802C78A8
|
||||
func_802C777C(0x8E);
|
||||
func_802C777C(0xB8);
|
||||
func_802C777C(0x2FB);
|
||||
return TRUE;
|
||||
case 0x18: // 802C78C8
|
||||
func_802C7630(0xAC);
|
||||
return TRUE;
|
||||
case 0x19: // 802C78D8
|
||||
func_802C7650(0xAC);
|
||||
return TRUE;
|
||||
case 0x1A: // 802C78E8
|
||||
func_802C7670(0xAC);
|
||||
return TRUE;
|
||||
case 0x1B: // 802C78F8
|
||||
func_802C7690(0xAC);
|
||||
return TRUE;
|
||||
case 0x1C: // 802C7908
|
||||
func_802C76D4(0xAC);
|
||||
return TRUE;
|
||||
case 0x1D: // 802C7918
|
||||
func_802C7718(0xAC);
|
||||
return TRUE;
|
||||
case 0x1E: // 802C7928
|
||||
func_802C775C(0xAC);
|
||||
return TRUE;
|
||||
case 0x1F: // 802C7938
|
||||
func_802C777C(0xAC);
|
||||
return TRUE;
|
||||
case 0xD: // 802C7948
|
||||
func_802BB360(0, 10.0f);
|
||||
func_802BB3AC(0, 1.0f);
|
||||
func_802BB3C4(0);
|
||||
return TRUE;
|
||||
case 0xE: // 802C7970
|
||||
func_802BB360(0, 35.0f);
|
||||
func_802BB3AC(0, 1.0f);
|
||||
func_802BB3C4(0);
|
||||
return TRUE;
|
||||
case 0xF: // 802C7998
|
||||
func_802BB3AC(0, 0.8f);
|
||||
return TRUE;
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void func_802C79C4(void){
|
||||
int i;
|
||||
for(i = 0; i < 0x20; i++){
|
||||
if(mapSpecificFlags_get(i) && func_802C779C(i)){
|
||||
mapSpecificFlags_set(i, FALSE);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user