complete m438Dll/map.c (#534)
* get halfway through m424/ball * get halfway through m424/ball * get halfway through m424/ball * complete m424/ball * fix merge errors * Revert "complete m424/ball" This reverts commitacbc3196c5. * fix up ball, start claw * get halfway through m424/ball * complete m424/ball * Revert "complete m424/ball" This reverts commitacbc3196c5. * fix up ball, start claw * complete m424Dll * fix m424, begin m438/map * Start m438/map * complete m438/map * fix m424
This commit is contained in:
parent
ef9659fef2
commit
f6ca7da943
8 changed files with 756 additions and 68 deletions
5
.vscode/settings.json
vendored
5
.vscode/settings.json
vendored
|
|
@ -36,7 +36,10 @@
|
||||||
"vcruntime.h": "c",
|
"vcruntime.h": "c",
|
||||||
"hsfmotion.h": "c",
|
"hsfmotion.h": "c",
|
||||||
"m424dll.h": "c",
|
"m424dll.h": "c",
|
||||||
"chrman.h": "c"
|
"chrman.h": "c",
|
||||||
|
"os.h": "c",
|
||||||
|
"type_traits": "cpp",
|
||||||
|
"xutility": "cpp"
|
||||||
},
|
},
|
||||||
"search.useIgnoreFiles": false,
|
"search.useIgnoreFiles": false,
|
||||||
"search.exclude": {
|
"search.exclude": {
|
||||||
|
|
|
||||||
|
|
@ -397,43 +397,43 @@ lbl_1_data_678 = .data:0x00000678; // type:object size:0x24
|
||||||
lbl_1_data_69C = .data:0x0000069C; // type:object size:0x6C
|
lbl_1_data_69C = .data:0x0000069C; // type:object size:0x6C
|
||||||
lbl_1_data_708 = .data:0x00000708; // type:object size:0x24
|
lbl_1_data_708 = .data:0x00000708; // type:object size:0x24
|
||||||
lbl_1_data_72C = .data:0x0000072C; // type:object size:0x24
|
lbl_1_data_72C = .data:0x0000072C; // type:object size:0x24
|
||||||
lbl_1_data_750 = .data:0x00000750; // type:object size:0x7 data:string
|
lbl_1_data_750 = .data:0x00000750; // type:object size:0x7 scope:local data:string
|
||||||
lbl_1_data_757 = .data:0x00000757; // type:object size:0x7 data:string
|
lbl_1_data_757 = .data:0x00000757; // type:object size:0x7 scope:local data:string
|
||||||
lbl_1_data_75E = .data:0x0000075E; // type:object size:0x7 data:string
|
lbl_1_data_75E = .data:0x0000075E; // type:object size:0x7 scope:local data:string
|
||||||
lbl_1_data_765 = .data:0x00000765; // type:object size:0x7 data:string
|
lbl_1_data_765 = .data:0x00000765; // type:object size:0x7 scope:local data:string
|
||||||
lbl_1_data_76C = .data:0x0000076C; // type:object size:0x7 data:string
|
lbl_1_data_76C = .data:0x0000076C; // type:object size:0x7 scope:local data:string
|
||||||
lbl_1_data_773 = .data:0x00000773; // type:object size:0x7 data:string
|
lbl_1_data_773 = .data:0x00000773; // type:object size:0x7 scope:local data:string
|
||||||
lbl_1_data_77A = .data:0x0000077A; // type:object size:0x7 data:string
|
lbl_1_data_77A = .data:0x0000077A; // type:object size:0x7 scope:local data:string
|
||||||
lbl_1_data_781 = .data:0x00000781; // type:object size:0x7 data:string
|
lbl_1_data_781 = .data:0x00000781; // type:object size:0x7 scope:local data:string
|
||||||
lbl_1_data_788 = .data:0x00000788; // type:object size:0x7 data:string
|
lbl_1_data_788 = .data:0x00000788; // type:object size:0x7 scope:local data:string
|
||||||
lbl_1_data_78F = .data:0x0000078F; // type:object size:0x8 data:string
|
lbl_1_data_78F = .data:0x0000078F; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_797 = .data:0x00000797; // type:object size:0x8 data:string
|
lbl_1_data_797 = .data:0x00000797; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_79F = .data:0x0000079F; // type:object size:0x8 data:string
|
lbl_1_data_79F = .data:0x0000079F; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_7A7 = .data:0x000007A7; // type:object size:0x8 data:string
|
lbl_1_data_7A7 = .data:0x000007A7; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_7AF = .data:0x000007AF; // type:object size:0x8 data:string
|
lbl_1_data_7AF = .data:0x000007AF; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x8 data:string
|
lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_7BF = .data:0x000007BF; // type:object size:0x8 data:string
|
lbl_1_data_7BF = .data:0x000007BF; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_7C7 = .data:0x000007C7; // type:object size:0x8 data:string
|
lbl_1_data_7C7 = .data:0x000007C7; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_7CF = .data:0x000007CF; // type:object size:0x8 data:string
|
lbl_1_data_7CF = .data:0x000007CF; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_7D7 = .data:0x000007D7; // type:object size:0x8 data:string
|
lbl_1_data_7D7 = .data:0x000007D7; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_7DF = .data:0x000007DF; // type:object size:0x8 data:string
|
lbl_1_data_7DF = .data:0x000007DF; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_7E7 = .data:0x000007E7; // type:object size:0x8 data:string
|
lbl_1_data_7E7 = .data:0x000007E7; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_7EF = .data:0x000007EF; // type:object size:0x8 data:string
|
lbl_1_data_7EF = .data:0x000007EF; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_7F7 = .data:0x000007F7; // type:object size:0x8 data:string
|
lbl_1_data_7F7 = .data:0x000007F7; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_7FF = .data:0x000007FF; // type:object size:0x8 data:string
|
lbl_1_data_7FF = .data:0x000007FF; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_807 = .data:0x00000807; // type:object size:0x8 data:string
|
lbl_1_data_807 = .data:0x00000807; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_80F = .data:0x0000080F; // type:object size:0x8 data:string
|
lbl_1_data_80F = .data:0x0000080F; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_817 = .data:0x00000817; // type:object size:0x8 data:string
|
lbl_1_data_817 = .data:0x00000817; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_81F = .data:0x0000081F; // type:object size:0x8 data:string
|
lbl_1_data_81F = .data:0x0000081F; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_827 = .data:0x00000827; // type:object size:0x8 data:string
|
lbl_1_data_827 = .data:0x00000827; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_82F = .data:0x0000082F; // type:object size:0x8 data:string
|
lbl_1_data_82F = .data:0x0000082F; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_837 = .data:0x00000837; // type:object size:0x8 data:string
|
lbl_1_data_837 = .data:0x00000837; // type:object size:0x8 scope:local data:string
|
||||||
lbl_1_data_83F = .data:0x0000083F; // type:object size:0x9
|
lbl_1_data_83F = .data:0x0000083F; // type:object size:0x9 scope:local
|
||||||
lbl_1_data_848 = .data:0x00000848; // type:object size:0x80
|
lbl_1_data_848 = .data:0x00000848; // type:object size:0x80
|
||||||
lbl_1_data_8C8 = .data:0x000008C8; // type:object size:0x9 data:string
|
lbl_1_data_8C8 = .data:0x000008C8; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_8D1 = .data:0x000008D1; // type:object size:0x7 data:string
|
lbl_1_data_8D1 = .data:0x000008D1; // type:object size:0x7 scope:local data:string
|
||||||
lbl_1_data_8D8 = .data:0x000008D8; // type:object size:0x60
|
lbl_1_data_8D8 = .data:0x000008D8; // type:object size:0x60
|
||||||
lbl_1_data_938 = .data:0x00000938; // type:object size:0xB data:string
|
lbl_1_data_938 = .data:0x00000938; // type:object size:0xB scope:local data:string
|
||||||
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte
|
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte
|
||||||
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte
|
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte
|
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte
|
||||||
|
|
@ -458,6 +458,7 @@ lbl_1_bss_DD8 = .bss:0x00000DD8; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_DDC = .bss:0x00000DDC; // type:object size:0x4 data:4byte
|
lbl_1_bss_DDC = .bss:0x00000DDC; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_DE0 = .bss:0x00000DE0; // type:object size:0x4 data:4byte
|
lbl_1_bss_DE0 = .bss:0x00000DE0; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_DE4 = .bss:0x00000DE4; // type:object size:0x44 data:4byte
|
lbl_1_bss_DE4 = .bss:0x00000DE4; // type:object size:0x44 data:4byte
|
||||||
|
lbl_1_bss_E28 = .bss:0x00000E28; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_E2C = .bss:0x00000E2C; // type:object size:0x4 data:4byte
|
lbl_1_bss_E2C = .bss:0x00000E2C; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_E30 = .bss:0x00000E30; // type:object size:0x4 data:4byte
|
lbl_1_bss_E30 = .bss:0x00000E30; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_E34 = .bss:0x00000E34; // type:object size:0x258 data:4byte
|
lbl_1_bss_E34 = .bss:0x00000E34; // type:object size:0x258 data:4byte
|
||||||
|
|
|
||||||
|
|
@ -1160,7 +1160,7 @@ config.libs = [
|
||||||
"m438Dll", # Chain Chomp Fever
|
"m438Dll", # Chain Chomp Fever
|
||||||
objects={
|
objects={
|
||||||
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m438Dll/main.c"),
|
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m438Dll/main.c"),
|
||||||
Object(NonMatching, "REL/m438Dll/map.c"),
|
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m438Dll/map.c"),
|
||||||
Object(NonMatching, "REL/m438Dll/fire.c"),
|
Object(NonMatching, "REL/m438Dll/fire.c"),
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,19 @@
|
||||||
|
|
||||||
#include "game/object.h"
|
#include "game/object.h"
|
||||||
|
|
||||||
|
typedef struct M438MainWork4 {
|
||||||
|
u8 unk_00;
|
||||||
|
char unk01[0x3];
|
||||||
|
s32 unk_04;
|
||||||
|
float unk_08;
|
||||||
|
float unk_0C;
|
||||||
|
Vec unk_10;
|
||||||
|
Vec unk_1C;
|
||||||
|
Vec unk_28;
|
||||||
|
Vec unk_34;
|
||||||
|
char unk40[0xC];
|
||||||
|
} M438MainWork4; /* size = 0x4C */
|
||||||
|
|
||||||
void fn_1_B4D8(Process *arg0);
|
void fn_1_B4D8(Process *arg0);
|
||||||
void fn_1_B548();
|
void fn_1_B548();
|
||||||
s32 fn_1_DA64(float arg8);
|
s32 fn_1_DA64(float arg8);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#include "REL/m424Dll.h"
|
#include "REL/m424Dll.h"
|
||||||
|
|
||||||
|
#include "math.h"
|
||||||
#include "ext_math.h"
|
#include "ext_math.h"
|
||||||
#include "game/audio.h"
|
#include "game/audio.h"
|
||||||
#include "game/chrman.h"
|
#include "game/chrman.h"
|
||||||
|
|
@ -7,8 +8,6 @@
|
||||||
#include "game/hsfman.h"
|
#include "game/hsfman.h"
|
||||||
#include "game/hsfmotion.h"
|
#include "game/hsfmotion.h"
|
||||||
#include "game/pad.h"
|
#include "game/pad.h"
|
||||||
#include "math.h"
|
|
||||||
|
|
||||||
|
|
||||||
// STRUCT
|
// STRUCT
|
||||||
typedef struct _M424DllClawStruct {
|
typedef struct _M424DllClawStruct {
|
||||||
|
|
@ -67,8 +66,8 @@ typedef struct _M424DllClawStruct3 {
|
||||||
} M424DllClawStruct3; // sizeof 0x8
|
} M424DllClawStruct3; // sizeof 0x8
|
||||||
|
|
||||||
// BSS
|
// BSS
|
||||||
Process *lbl_1_bss_6DC;
|
Process* lbl_1_bss_6DC;
|
||||||
omObjData *lbl_1_bss_6D8;
|
omObjData* lbl_1_bss_6D8;
|
||||||
s32 lbl_1_bss_6D0[2];
|
s32 lbl_1_bss_6D0[2];
|
||||||
s32 lbl_1_bss_6CC;
|
s32 lbl_1_bss_6CC;
|
||||||
s32 lbl_1_bss_6C8;
|
s32 lbl_1_bss_6C8;
|
||||||
|
|
|
||||||
|
|
@ -273,7 +273,7 @@ void fn_1_41C(omObjData* object) {
|
||||||
|
|
||||||
void fn_1_EE0(omObjData* object) {
|
void fn_1_EE0(omObjData* object) {
|
||||||
if (WipeStatGet() == 0) {
|
if (WipeStatGet() == 0) {
|
||||||
Hu3DBGColorSet(0U, 0U, 0U);
|
Hu3DBGColorSet(0, 0, 0);
|
||||||
fn_1_1B8C();
|
fn_1_1B8C();
|
||||||
fn_1_2880();
|
fn_1_2880();
|
||||||
fn_1_94A4();
|
fn_1_94A4();
|
||||||
|
|
|
||||||
|
|
@ -121,24 +121,6 @@ typedef struct M438MainWork3 {
|
||||||
u16 unk_188[3];
|
u16 unk_188[3];
|
||||||
} M438MainWork3; /* size = */
|
} M438MainWork3; /* size = */
|
||||||
|
|
||||||
typedef struct M438MainWork4 {
|
|
||||||
u8 unk_00;
|
|
||||||
char unk01[0x7];
|
|
||||||
float unk_08;
|
|
||||||
float unk_0C;
|
|
||||||
float unk_10;
|
|
||||||
float unk_14;
|
|
||||||
float unk_18;
|
|
||||||
float unk_1C;
|
|
||||||
float unk_20;
|
|
||||||
float unk_24;
|
|
||||||
char unk28[4];
|
|
||||||
float unk_2C;
|
|
||||||
char unk30[4];
|
|
||||||
Vec unk_34;
|
|
||||||
char unk40[0xC];
|
|
||||||
} M438MainWork4; /* size = 0x4C */
|
|
||||||
|
|
||||||
typedef struct M438StructBss298 {
|
typedef struct M438StructBss298 {
|
||||||
/* 0x00 */ u8 unk_00;
|
/* 0x00 */ u8 unk_00;
|
||||||
u8 unk_01;
|
u8 unk_01;
|
||||||
|
|
@ -1595,15 +1577,15 @@ void fn_1_4724(omObjData *object)
|
||||||
var_r31 = fn_1_7BFC(sizeof(M438MainWork4));
|
var_r31 = fn_1_7BFC(sizeof(M438MainWork4));
|
||||||
object->data = var_r31;
|
object->data = var_r31;
|
||||||
memset(var_r31, 0, sizeof(M438MainWork4));
|
memset(var_r31, 0, sizeof(M438MainWork4));
|
||||||
var_r31->unk_10 = 0.0f;
|
var_r31->unk_10.x = 0.0f;
|
||||||
var_r31->unk_14 = -450.0f;
|
var_r31->unk_10.y = -450.0f;
|
||||||
var_r31->unk_18 = -1550.0f;
|
var_r31->unk_10.z = -1550.0f;
|
||||||
var_r31->unk_1C = var_r31->unk_20 = var_r31->unk_24 = 0.0f;
|
var_r31->unk_1C.x = var_r31->unk_1C.y = var_r31->unk_1C.z = 0.0f;
|
||||||
var_r31->unk_2C = 35.0f;
|
var_r31->unk_28.y = 35.0f;
|
||||||
var_r31->unk_0C = 0.0f;
|
var_r31->unk_0C = 0.0f;
|
||||||
var_r31->unk_00 = 0;
|
var_r31->unk_00 = 0;
|
||||||
omSetTra(object, var_r31->unk_10, var_r31->unk_14, var_r31->unk_18);
|
omSetTra(object, var_r31->unk_10.x, var_r31->unk_10.y, var_r31->unk_10.z);
|
||||||
omSetRot(object, var_r31->unk_1C, var_r31->unk_20, var_r31->unk_24);
|
omSetRot(object, var_r31->unk_1C.x, var_r31->unk_1C.y, var_r31->unk_1C.z);
|
||||||
omSetSca(object, 1.25f, 1.25f, 1.25f);
|
omSetSca(object, 1.25f, 1.25f, 1.25f);
|
||||||
object->func = fn_1_4984;
|
object->func = fn_1_4984;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,690 @@
|
||||||
|
#include "REL/m438Dll.h"
|
||||||
|
|
||||||
|
#include "ext_math.h"
|
||||||
|
#include "string.h"
|
||||||
|
#include "game/hsfanim.h"
|
||||||
|
#include "game/hsfmotion.h"
|
||||||
|
#include "game/sprite.h"
|
||||||
|
#include "game/wipe.h"
|
||||||
|
|
||||||
|
// STRUCT
|
||||||
|
typedef struct M438MapStruct {
|
||||||
|
s32 unk0;
|
||||||
|
s32 unk4;
|
||||||
|
s32 unk8;
|
||||||
|
Vec unkC;
|
||||||
|
f32 unk18;
|
||||||
|
f32 unk1C;
|
||||||
|
f32 unk20;
|
||||||
|
} M438MapStruct;
|
||||||
|
|
||||||
|
typedef struct M438MapStruct2 {
|
||||||
|
s32 unk0;
|
||||||
|
s32 unk4;
|
||||||
|
f32 unk8;
|
||||||
|
f32 unkC;
|
||||||
|
f32 unk10;
|
||||||
|
f32 unk14;
|
||||||
|
f32 unk18;
|
||||||
|
f32 unk1C;
|
||||||
|
f32 unk20;
|
||||||
|
Vec unk24;
|
||||||
|
Vec unk30;
|
||||||
|
Vec unk3C;
|
||||||
|
union {
|
||||||
|
M438MainWork4* unk48;
|
||||||
|
HsfObject* unk48o;
|
||||||
|
};
|
||||||
|
} M438MapStruct2;
|
||||||
|
|
||||||
|
typedef struct M438MapStruct3 {
|
||||||
|
u32 unk0;
|
||||||
|
M438MapStruct2 unk4;
|
||||||
|
char unk4C[0x934];
|
||||||
|
M438MapStruct unk984;
|
||||||
|
} M438MapStruct3;
|
||||||
|
|
||||||
|
// BSS
|
||||||
|
omObjData* lbl_1_bss_108C[6];
|
||||||
|
HsfanimStruct01* lbl_1_bss_E34[0x96];
|
||||||
|
s32 lbl_1_bss_E30;
|
||||||
|
s32 lbl_1_bss_E2C;
|
||||||
|
s32 lbl_1_bss_E28;
|
||||||
|
|
||||||
|
// DATA
|
||||||
|
char* lbl_1_data_848[] = {
|
||||||
|
"iwa_s1", "iwa_s2", "iwa_s3", "iwa_s4", "iwa_s5",
|
||||||
|
"iwa_s6", "iwa_s7", "iwa_s8", "iwa_s9",
|
||||||
|
"iwa_s10", "iwa_s11", "iwa_s12", "iwa_s13",
|
||||||
|
"iwa_s14", "iwa_s15", "iwa_s16", "iwa_s17",
|
||||||
|
"iwa_s18", "iwa_s19", "iwa_s20", "iwa_s21",
|
||||||
|
"iwa_s22", "iwa_s23", "iwa_s24", "iwa_s25",
|
||||||
|
"iwa_s26", "iwa_s27", "iwa_s28", "iwa_s29",
|
||||||
|
"iwa_s30", "iwa_s31", "iwa_s32"
|
||||||
|
};
|
||||||
|
|
||||||
|
// PROTO
|
||||||
|
void fn_1_B54C(omObjData*);
|
||||||
|
void fn_1_BF20(omObjData*);
|
||||||
|
void fn_1_CAB0(f32);
|
||||||
|
void fn_1_C764(ModelData* model, ParticleData* particle, Mtx matrix);
|
||||||
|
void fn_1_C8E8(ModelData* model, ParticleData* particle, Mtx matrix);
|
||||||
|
void fn_1_D3FC(ModelData* model, ParticleData* particle, Mtx matrix);
|
||||||
|
void fn_1_D57C(Vec*, f32);
|
||||||
|
void fn_1_E034(Mtx, Vec*);
|
||||||
|
|
||||||
|
void fn_1_B4D8(Process* arg0) {
|
||||||
|
omObjData* var_r31;
|
||||||
|
|
||||||
|
lbl_1_bss_E30 = 0;
|
||||||
|
var_r31 = lbl_1_bss_108C[0] = omAddObjEx(arg0, 0x20, 8, 0, -1, fn_1_B54C);
|
||||||
|
var_r31->work[0] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_B548(void) {}
|
||||||
|
|
||||||
|
void fn_1_B54C(omObjData* arg0) {
|
||||||
|
Vec sp20;
|
||||||
|
Vec sp14;
|
||||||
|
Vec sp8;
|
||||||
|
s32 var_r30;
|
||||||
|
s32 var_r29;
|
||||||
|
HsfObject* var_r26;
|
||||||
|
s32 var_r27;
|
||||||
|
M438MapStruct2* var_r28;
|
||||||
|
HsfanimStruct01* var_r25;
|
||||||
|
M438MapStruct* var_r24;
|
||||||
|
M438MapStruct3* temp_r23;
|
||||||
|
|
||||||
|
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x108C, 0x10000000);
|
||||||
|
temp_r23 = arg0->data;
|
||||||
|
memset(temp_r23, 0, 0x108C);
|
||||||
|
arg0->model[0] = Hu3DModelCreateFile(0x450000);
|
||||||
|
Hu3DModelLayerSet(arg0->model[0], 0);
|
||||||
|
Hu3DModelAttrSet(arg0->model[0], 0x40000001);
|
||||||
|
Hu3DModelShadowMapSet(arg0->model[0]);
|
||||||
|
arg0->model[1] = Hu3DModelCreateFile(0x450001);
|
||||||
|
Hu3DModelLayerSet(arg0->model[1], 1);
|
||||||
|
Hu3DModelPosSet(arg0->model[1], 0.0f, -80.0f, 0.0f);
|
||||||
|
arg0->model[2] = Hu3DModelCreateFile(0x450002);
|
||||||
|
Hu3DModelLayerSet(arg0->model[2], 0);
|
||||||
|
Hu3DModelPosSet(arg0->model[2], 0.0f, -50.0f, 0.0f);
|
||||||
|
Hu3DModelAttrSet(arg0->model[2], 0x40000001);
|
||||||
|
Hu3DMotionSpeedSet(arg0->model[2], 0.1f);
|
||||||
|
var_r29 = Hu3DTexScrollCreate(arg0->model[1], "lavafall");
|
||||||
|
Hu3DTexScrollPosMoveSet(var_r29, 0.0f, -0.025000002f, 0.0f);
|
||||||
|
var_r29 = Hu3DTexScrollCreate(arg0->model[1], "lafall");
|
||||||
|
Hu3DTexScrollPosMoveSet(var_r29, 0.0f, -(1.0f / 60.0f), 0.0f);
|
||||||
|
var_r29 = 0;
|
||||||
|
|
||||||
|
var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x45000C), 0x32);
|
||||||
|
arg0->model[3] = var_r27;
|
||||||
|
Hu3DModelLayerSet(var_r27, 3);
|
||||||
|
Hu3DParticleHookSet(var_r27, fn_1_C764);
|
||||||
|
for (var_r30 = 0; var_r30 < 0x32; var_r30++, var_r29++) {
|
||||||
|
lbl_1_bss_E34[var_r29] = &((ParticleData*)(Hu3DData[var_r27].unk_120))->unk_48[var_r30];
|
||||||
|
}
|
||||||
|
|
||||||
|
var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x45000D), 0x32);
|
||||||
|
arg0->model[4] = var_r27;
|
||||||
|
Hu3DModelLayerSet(var_r27, 3);
|
||||||
|
Hu3DParticleHookSet(var_r27, fn_1_C764);
|
||||||
|
for (var_r30 = 0; var_r30 < 0x32; var_r30++, var_r29++) {
|
||||||
|
lbl_1_bss_E34[var_r29] = &((ParticleData*)(Hu3DData[var_r27].unk_120))->unk_48[var_r30];
|
||||||
|
}
|
||||||
|
|
||||||
|
var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x45000E), 0x32);
|
||||||
|
arg0->model[5] = var_r27;
|
||||||
|
Hu3DModelLayerSet(var_r27, 3);
|
||||||
|
Hu3DParticleHookSet(var_r27, fn_1_C764);
|
||||||
|
for (var_r30 = 0; var_r30 < 0x32; var_r30++, var_r29++) {
|
||||||
|
lbl_1_bss_E34[var_r29] = &((ParticleData*)(Hu3DData[var_r27].unk_120))->unk_48[var_r30];
|
||||||
|
}
|
||||||
|
for (var_r30 = 0; var_r30 < 0x95; var_r30++) {
|
||||||
|
for (var_r29 = 1; var_r29 < 0x96; var_r29++) {
|
||||||
|
if (frandmod(0x3E8) < 0x1C2) {
|
||||||
|
var_r25 = lbl_1_bss_E34[var_r30];
|
||||||
|
lbl_1_bss_E34[var_r30] = lbl_1_bss_E34[var_r29];
|
||||||
|
lbl_1_bss_E34[var_r29] = var_r25;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var_r30 = 0; var_r30 < 0x96; var_r30++) {
|
||||||
|
lbl_1_bss_E34[var_r30]->unk2C = 0.0f;
|
||||||
|
lbl_1_bss_E34[var_r30]->unk40.a = 0;
|
||||||
|
lbl_1_bss_E34[var_r30]->unk00 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x45000F), 0x32);
|
||||||
|
arg0->model[6] = var_r27;
|
||||||
|
Hu3DModelLayerSet(var_r27, 3);
|
||||||
|
Hu3DParticleHookSet(var_r27, fn_1_C8E8);
|
||||||
|
var_r25 = &((ParticleData*)(Hu3DData[var_r27].unk_120))->unk_48[0];
|
||||||
|
for (var_r30 = 0; var_r30 < 0x32; var_r30++, var_r25++) {
|
||||||
|
var_r25->unk2C = 0.0f;
|
||||||
|
var_r25->unk40.a = 0;
|
||||||
|
var_r25->unk00 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x450010), 0x1F4);
|
||||||
|
arg0->model[7] = var_r27;
|
||||||
|
Hu3DModelLayerSet(var_r27, 2);
|
||||||
|
Hu3DParticleBlendModeSet(var_r27, 1);
|
||||||
|
Hu3DParticleHookSet(var_r27, fn_1_D3FC);
|
||||||
|
var_r25 = &((ParticleData*)(Hu3DData[var_r27].unk_120))->unk_48[0];
|
||||||
|
for (var_r30 = 0; var_r30 < 0x1F4; var_r30++, var_r25++) {
|
||||||
|
var_r25->unk2C = 0.0f;
|
||||||
|
var_r25->unk40.a = 0;
|
||||||
|
var_r25->unk00 = 0;
|
||||||
|
}
|
||||||
|
var_r28 = &temp_r23->unk4;
|
||||||
|
for (var_r30 = 0; var_r30 < 0x20; var_r30++, var_r28++) {
|
||||||
|
var_r28->unk0 = 1;
|
||||||
|
var_r28->unk4 = 0;
|
||||||
|
var_r28->unkC = var_r28->unk10 = 0.0f;
|
||||||
|
var_r28->unk14 = var_r28->unk18 = 0.0f;
|
||||||
|
var_r28->unk1C = var_r28->unk20 = 0.0f;
|
||||||
|
var_r26 = Hu3DModelObjPtrGet(arg0->model[0], lbl_1_data_848[var_r30]);
|
||||||
|
var_r28->unk48o = var_r26;
|
||||||
|
sp14.x = sp14.y = sp14.z = -100000.0f;
|
||||||
|
sp8.x = sp8.y = sp8.z = 100000.0f;
|
||||||
|
|
||||||
|
for (var_r29 = 0; var_r29 < var_r26->data.vertex->count; var_r29++) {
|
||||||
|
if (((Vec*)var_r26->data.vertex->data)[var_r29].x > sp14.x) {
|
||||||
|
sp14.x = ((Vec*)var_r26->data.vertex->data)[var_r29].x;
|
||||||
|
}
|
||||||
|
if (((Vec*)var_r26->data.vertex->data)[var_r29].y > sp14.y) {
|
||||||
|
sp14.y = ((Vec*)var_r26->data.vertex->data)[var_r29].y;
|
||||||
|
}
|
||||||
|
if (((Vec*)var_r26->data.vertex->data)[var_r29].z > sp14.z) {
|
||||||
|
sp14.z = ((Vec*)var_r26->data.vertex->data)[var_r29].z;
|
||||||
|
}
|
||||||
|
if (((Vec*)var_r26->data.vertex->data)[var_r29].x < sp8.x) {
|
||||||
|
sp8.x = ((Vec*)var_r26->data.vertex->data)[var_r29].x;
|
||||||
|
}
|
||||||
|
if (((Vec*)var_r26->data.vertex->data)[var_r29].y < sp8.y) {
|
||||||
|
sp8.y = ((Vec*)var_r26->data.vertex->data)[var_r29].y;
|
||||||
|
}
|
||||||
|
if (((Vec*)var_r26->data.vertex->data)[var_r29].z < sp8.z) {
|
||||||
|
sp8.z = ((Vec*)var_r26->data.vertex->data)[var_r29].z;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PSVECAdd(&sp14, &sp8, &sp20);
|
||||||
|
PSVECScale(&sp20, &sp20, 0.5f);
|
||||||
|
var_r28->unk24 = sp20;
|
||||||
|
var_r28->unk30 = var_r28->unk24;
|
||||||
|
var_r28->unk8 = (360.0 + atan2d(sp20.x, sp20.z));
|
||||||
|
if (var_r28->unk8 >= 360.0f) {
|
||||||
|
var_r28->unk8 -= 360.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var_r27 = Hu3DModelCreateFile(0x45000B);
|
||||||
|
Hu3DModelLayerSet(var_r27, 2);
|
||||||
|
var_r24 = &temp_r23->unk984;
|
||||||
|
for (var_r30 = 0; var_r30 < 0x32; var_r30++, var_r24++) {
|
||||||
|
var_r24->unk0 = 0;
|
||||||
|
var_r24->unk8 = 0;
|
||||||
|
var_r24->unk18 = 0.0f;
|
||||||
|
var_r24->unk1C = var_r24->unk20 = 0.0f;
|
||||||
|
var_r24->unk4 = Hu3DModelLink(var_r27);
|
||||||
|
Hu3DModelLayerSet(var_r24->unk4, 2);
|
||||||
|
Hu3DModelAttrSet(var_r24->unk4, 1);
|
||||||
|
}
|
||||||
|
Hu3DModelKill(var_r27);
|
||||||
|
arg0->func = fn_1_BF20;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vec lbl_1_data_8D8[4][2] = {
|
||||||
|
{
|
||||||
|
{ -967.0f, -80.0f, -312.0f },
|
||||||
|
{ -867.0f, -80.0f, -485.0f },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{ -917.0f, -80.0f, -857.0f },
|
||||||
|
{ -817.0f, -80.0f, -1030.0f },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{ 967.0f, -80.0f, -312.0f },
|
||||||
|
{ 867.0f, -80.0f, -485.0f },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{ 917.0f, -80.0f, -857.0f },
|
||||||
|
{ 817.0f, -80.0f, -1030.0f },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
void fn_1_BF20(omObjData* arg0) {
|
||||||
|
Mtx sp5C;
|
||||||
|
Mtx sp2C;
|
||||||
|
Vec sp20;
|
||||||
|
Vec sp14;
|
||||||
|
Vec sp8;
|
||||||
|
f32 temp_f29;
|
||||||
|
f32 temp_f30;
|
||||||
|
f32 temp_f31;
|
||||||
|
s32 var_r29;
|
||||||
|
M438MapStruct2* var_r31;
|
||||||
|
M438MapStruct* var_r30;
|
||||||
|
M438MapStruct3* temp_r28;
|
||||||
|
|
||||||
|
temp_r28 = arg0->data;
|
||||||
|
temp_r28->unk0++;
|
||||||
|
var_r31 = &temp_r28->unk4;
|
||||||
|
|
||||||
|
for (var_r29 = 0; var_r29 < 0x20; var_r29++, var_r31++) {
|
||||||
|
if ((var_r31->unk0 == 0) && (var_r31->unk4 != 0)) {
|
||||||
|
temp_f29 = var_r31->unk30.y;
|
||||||
|
PSVECAdd(&var_r31->unk30, &var_r31->unk3C, &var_r31->unk30);
|
||||||
|
var_r31->unk3C.x *= 0.92f;
|
||||||
|
var_r31->unk3C.z *= 0.92f;
|
||||||
|
var_r31->unk3C.y += -0.27222225f;
|
||||||
|
if (temp_f29 > 0.0) {
|
||||||
|
if (var_r31->unk30.y <= 0.0) {
|
||||||
|
HuAudFXEmiterPlay(0x6FF, &var_r31->unk30);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var_r31->unkC += var_r31->unk10;
|
||||||
|
var_r31->unk14 += var_r31->unk18;
|
||||||
|
var_r31->unk1C += var_r31->unk20;
|
||||||
|
sp14.x = sind(90.0f + var_r31->unk8);
|
||||||
|
sp14.z = cosd(90.0f + var_r31->unk8);
|
||||||
|
sp14.y = 0.0f;
|
||||||
|
PSMTXRotAxisRad(sp5C, &sp14, MTXDegToRad(var_r31->unkC));
|
||||||
|
sp14.x = sp14.z = 0.0f;
|
||||||
|
sp14.y = 1.0f;
|
||||||
|
PSMTXRotAxisRad(sp2C, &sp14, MTXDegToRad(var_r31->unk14));
|
||||||
|
PSMTXConcat(sp2C, sp5C, sp5C);
|
||||||
|
sp14.x = sind(var_r31->unk8);
|
||||||
|
sp14.z = cosd(var_r31->unk8);
|
||||||
|
sp14.y = 0.0f;
|
||||||
|
PSMTXRotAxisRad(sp2C, &sp14, MTXDegToRad(var_r31->unk1C));
|
||||||
|
PSMTXConcat(sp2C, sp5C, sp5C);
|
||||||
|
fn_1_E034(sp5C, &sp20);
|
||||||
|
var_r31->unk48->unk_28.x = sp20.x;
|
||||||
|
var_r31->unk48->unk_28.y = sp20.y;
|
||||||
|
var_r31->unk48->unk_28.z = sp20.z;
|
||||||
|
PSMTXInverse(sp5C, sp5C);
|
||||||
|
PSMTXMultVec(sp5C, &var_r31->unk24, &sp8);
|
||||||
|
var_r31->unk48->unk_1C.x = (var_r31->unk30.x - sp8.x);
|
||||||
|
var_r31->unk48->unk_1C.y = (var_r31->unk30.y - sp8.y);
|
||||||
|
var_r31->unk48->unk_1C.z = (var_r31->unk30.z - sp8.z);
|
||||||
|
if (var_r31->unk30.y < -500.0f) {
|
||||||
|
var_r31->unk4 = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((temp_r28->unk0 & 1) == 0) {
|
||||||
|
var_r30 = &temp_r28->unk984;
|
||||||
|
|
||||||
|
for (var_r29 = 0; var_r29 < 0x32; var_r29++, var_r30++) {
|
||||||
|
if (var_r30->unk0 != 0) continue;
|
||||||
|
var_r30->unk0 = 1;
|
||||||
|
var_r30->unk18 = frandmod(0x168);
|
||||||
|
if (frandmod(0x64) < 0x14) {
|
||||||
|
var_r30->unkC.x = (0.8f * (frandmod(0x7D0) - 0x3E8));
|
||||||
|
var_r30->unkC.y = -80.0f;
|
||||||
|
var_r30->unkC.z = ((-1.2f * frandmod(0x3E8)) - 1000.0f);
|
||||||
|
} else {
|
||||||
|
temp_f31 = frandmod(0x168);
|
||||||
|
temp_f30 = 800.0f + (0.25f * frandmod(0x3E8));
|
||||||
|
var_r30->unkC.x = (temp_f30 * sind(temp_f31));
|
||||||
|
var_r30->unkC.y = -80.0f;
|
||||||
|
var_r30->unkC.z = (temp_f30 * cosd(temp_f31));
|
||||||
|
}
|
||||||
|
var_r30->unk20 = (0.1f + (0.0005f * frandmod(0x3E8)));
|
||||||
|
var_r30->unk1C = 0.0f;
|
||||||
|
Hu3DModelAttrReset(var_r30->unk4, 1);
|
||||||
|
Hu3DModelPosSetV(var_r30->unk4, &var_r30->unkC);
|
||||||
|
Hu3DModelRotSet(var_r30->unk4, 0.0f, var_r30->unk18, 0.0f);
|
||||||
|
Hu3DModelScaleSet(var_r30->unk4, var_r30->unk1C, var_r30->unk1C, var_r30->unk1C);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var_r30 = &temp_r28->unk984;
|
||||||
|
for (var_r29 = 0; var_r29 < 0x32; var_r29++, var_r30++) {
|
||||||
|
if (var_r30->unk0 != 0) {
|
||||||
|
var_r30->unk1C += 0.005f;
|
||||||
|
if (var_r30->unk1C > var_r30->unk20) {
|
||||||
|
var_r30->unk0 = 0;
|
||||||
|
Hu3DModelAttrSet(var_r30->unk4, 1);
|
||||||
|
fn_1_D57C(&Hu3DData[var_r30->unk4].pos, var_r30->unk20);
|
||||||
|
}
|
||||||
|
Hu3DModelScaleSet(var_r30->unk4, var_r30->unk1C, var_r30->unk1C, var_r30->unk1C);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var_r29 = 0; var_r29 < 4; var_r29++) {
|
||||||
|
PSVECSubtract(&lbl_1_data_8D8[var_r29][1], &lbl_1_data_8D8[var_r29][0], &sp14);
|
||||||
|
temp_f31 = 0.001f * frandmod(0x3E8);
|
||||||
|
PSVECScale(&sp14, &sp14, temp_f31);
|
||||||
|
PSVECAdd(&lbl_1_data_8D8[var_r29][0], &sp14, &sp8);
|
||||||
|
PSVECScale(&sp8, &sp8, 0.98f);
|
||||||
|
fn_1_D57C(&sp8, 0.03f);
|
||||||
|
}
|
||||||
|
if ((lbl_1_bss_E30 == 0) && (WipeStatGet() == 0)) {
|
||||||
|
HuAudFXPlay(0x6F9);
|
||||||
|
HuAudFXPlay(0x6FD);
|
||||||
|
lbl_1_bss_E30 = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_C764(ModelData* model, ParticleData* particle, Mtx matrix) {
|
||||||
|
HsfanimStruct01* var_r31;
|
||||||
|
s32 var_r29;
|
||||||
|
u16 temp_r0;
|
||||||
|
|
||||||
|
var_r31 = particle->unk_48;
|
||||||
|
|
||||||
|
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
|
||||||
|
if (var_r31->unk00_s16 != 0) {
|
||||||
|
PSVECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34);
|
||||||
|
var_r31->unk08.x *= 0.95f;
|
||||||
|
var_r31->unk08.z *= 0.95f;
|
||||||
|
var_r31->unk08.y += -0.27222225f;
|
||||||
|
if (var_r31->unk00_s16 < 24.0f) {
|
||||||
|
var_r31->unk40.a = 0.9f * var_r31->unk40.a;
|
||||||
|
}
|
||||||
|
if (--var_r31->unk00_s16 == 0) {
|
||||||
|
var_r31->unk00 = 0;
|
||||||
|
var_r31->unk2C = 0.0f;
|
||||||
|
var_r31->unk40.a = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DCStoreRange(particle->unk_48, particle->unk_30 * 0x44);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_C8E8(ModelData* model, ParticleData* particle, Mtx matrix) {
|
||||||
|
HsfanimStruct01* var_r31;
|
||||||
|
s32 var_r29;
|
||||||
|
u16 temp_r0;
|
||||||
|
|
||||||
|
var_r31 = particle->unk_48;
|
||||||
|
|
||||||
|
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
|
||||||
|
if (var_r31->unk00_s16 != 0) {
|
||||||
|
PSVECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34);
|
||||||
|
var_r31->unk08.x *= 0.92f;
|
||||||
|
var_r31->unk08.z *= 0.92f;
|
||||||
|
var_r31->unk2C += 5.0f;
|
||||||
|
var_r31->unk40.a *= 0.99f;
|
||||||
|
if (var_r31->unk00_s16 < 24.0f) {
|
||||||
|
var_r31->unk40.a = 0.9f * var_r31->unk40.a;
|
||||||
|
}
|
||||||
|
if (--var_r31->unk00_s16 == 0) {
|
||||||
|
var_r31->unk00 = 0;
|
||||||
|
var_r31->unk2C = 0.0f;
|
||||||
|
var_r31->unk40.a = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DCStoreRange(particle->unk_48, particle->unk_30 * 0x44);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_CAB0(f32 arg8) {
|
||||||
|
Vec sp8;
|
||||||
|
f32 temp_f31;
|
||||||
|
f32 temp_f30;
|
||||||
|
f32 temp_f28;
|
||||||
|
f32 temp_f27;
|
||||||
|
HsfanimStruct01* var_r31;
|
||||||
|
s32 var_r30;
|
||||||
|
u32 var_r29;
|
||||||
|
|
||||||
|
temp_f28 = 20.0f;
|
||||||
|
temp_f27 = 7.0f;
|
||||||
|
var_r29 = 0x19;
|
||||||
|
|
||||||
|
for (var_r30 = 0; var_r30 < 0x96; var_r30++) {
|
||||||
|
var_r31 = lbl_1_bss_E34[var_r30];
|
||||||
|
if (var_r31->unk00_s16 == 0) {
|
||||||
|
var_r31->unk00_s16 = 60.0f * (0.6f + (0.0006f * frandmod(0x3E8)));
|
||||||
|
temp_f31 = ((0.002f * frandmod(0x3E8)) - 1.0f);
|
||||||
|
temp_f31 = arg8 + (temp_f31 * temp_f28);
|
||||||
|
sp8.x = sind(temp_f31);
|
||||||
|
sp8.y = 0.0f;
|
||||||
|
sp8.z = cosd(temp_f31);
|
||||||
|
|
||||||
|
temp_f31 = arg8 + (((0.002f * frandmod(0x3E8)) - 1.0f)) * temp_f27;
|
||||||
|
var_r31->unk34.x = 7.5 * sind(temp_f31) * 100.0;
|
||||||
|
var_r31->unk34.y = 0.2f * frandmod(0x3E8);
|
||||||
|
var_r31->unk34.z = 7.5 * cosd(temp_f31) * 100.0;
|
||||||
|
|
||||||
|
temp_f30 = 1.6666667f * (4.0f + (0.014f * frandmod(0x3E8)));
|
||||||
|
var_r31->unk08.x = sp8.x * temp_f30;
|
||||||
|
var_r31->unk08.z = sp8.z * temp_f30;
|
||||||
|
var_r31->unk08.y = temp_f30 * ((0.0006f * frandmod(0x3E8)) - 0.2f);
|
||||||
|
|
||||||
|
var_r31->unk30 = frandmod(0x168);
|
||||||
|
var_r31->unk2C = 10.0f + frandmod(0x32);
|
||||||
|
var_r31->unk40.a = 0xFA;
|
||||||
|
var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = 0xFF;
|
||||||
|
|
||||||
|
var_r29--;
|
||||||
|
if (var_r29 < 1) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var_r31 = ((ParticleData*)(Hu3DData[lbl_1_bss_108C[0]->model[6]].unk_120))->unk_48;
|
||||||
|
var_r29 = 0xF;
|
||||||
|
for (var_r30 = 0; var_r30 < 0x32; var_r30++, var_r31++) {
|
||||||
|
if (var_r31->unk00_s16 == 0) {
|
||||||
|
var_r31->unk00_s16 = 60.0f * (0.6f + (0.0006f * frandmod(0x3E8)));
|
||||||
|
temp_f31 = ((0.002f * frandmod(0x3E8)) - 1.0f);
|
||||||
|
temp_f31 = arg8 + (temp_f31 * temp_f28);
|
||||||
|
sp8.x = sind(temp_f31);
|
||||||
|
sp8.y = 0.0f;
|
||||||
|
sp8.z = cosd(temp_f31);
|
||||||
|
|
||||||
|
temp_f31 = arg8 + (((0.002f * frandmod(0x3E8)) - 1.0f)) * temp_f27;
|
||||||
|
var_r31->unk34.x = 7.5 * sind(temp_f31) * 100.0;
|
||||||
|
var_r31->unk34.y = 0.2f * frandmod(0x3E8);
|
||||||
|
var_r31->unk34.z = 7.5 * cosd(temp_f31) * 100.0;
|
||||||
|
|
||||||
|
temp_f30 = 1.6666667f * -(0.01f * frandmod(0x3E8));
|
||||||
|
var_r31->unk08.x = sp8.x * temp_f30;
|
||||||
|
var_r31->unk08.z = sp8.z * temp_f30;
|
||||||
|
var_r31->unk08.y = temp_f30 * -((0.00020000001f * frandmod(0x3E8)) + 0.05f);
|
||||||
|
|
||||||
|
var_r31->unk30 = frandmod(0x168);
|
||||||
|
var_r31->unk2C = 100.0f + frandmod(0x64);
|
||||||
|
var_r31->unk40.a = 0x50 + frandmod(0x50);
|
||||||
|
temp_f31 = frandmod(0x3E8) * 0.001f;
|
||||||
|
var_r31->unk40.r = (60.0f * temp_f31) + 80.0f;
|
||||||
|
var_r31->unk40.g = (60.0f * temp_f31) + 61.0f;
|
||||||
|
var_r31->unk40.b = (60.0f * temp_f31) + 54.0f;
|
||||||
|
|
||||||
|
var_r29--;
|
||||||
|
if (var_r29 < 1) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_D3FC(ModelData* model, ParticleData* particle, Mtx matrix) {
|
||||||
|
HsfanimStruct01* var_r31;
|
||||||
|
s32 var_r29;
|
||||||
|
u16 temp_r0;
|
||||||
|
|
||||||
|
lbl_1_bss_E2C = 0;
|
||||||
|
var_r31 = particle->unk_48;
|
||||||
|
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
|
||||||
|
if (var_r31->unk00_s16 != 0) {
|
||||||
|
PSVECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34);
|
||||||
|
var_r31->unk08.y += -0.27222225f;
|
||||||
|
if (var_r31->unk00_s16 < 12.0f) {
|
||||||
|
var_r31->unk40.a = (0.8f * var_r31->unk40.a);
|
||||||
|
}
|
||||||
|
if (--var_r31->unk00_s16 == 0) {
|
||||||
|
var_r31->unk00_s16 = 0;
|
||||||
|
var_r31->unk2C = 0.0f;
|
||||||
|
var_r31->unk40.a = 0;
|
||||||
|
}
|
||||||
|
lbl_1_bss_E2C++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DCStoreRange(particle->unk_48, particle->unk_30 * 0x44);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_D57C(Vec* arg0, f32 arg1) {
|
||||||
|
Vec sp8;
|
||||||
|
f32 temp_f31;
|
||||||
|
f32 temp_f29;
|
||||||
|
HsfanimStruct01* var_r31;
|
||||||
|
s32 var_r30;
|
||||||
|
u32 var_r29;
|
||||||
|
|
||||||
|
var_r31 = ((ParticleData*)(Hu3DData[lbl_1_bss_108C[0]->model[7]].unk_120))->unk_48;
|
||||||
|
var_r29 = (u32)(3.0f + (15.0f * arg1));
|
||||||
|
|
||||||
|
for (var_r30 = 0; var_r30 < 0x1F4; var_r30++, var_r31++) {
|
||||||
|
if (var_r31->unk00_s16 == 0) {
|
||||||
|
var_r31->unk00_s16 = 60.0f * (0.3f + (0.0003f * frandmod(0x3E8)));
|
||||||
|
var_r31->unk34 = *arg0;
|
||||||
|
var_r31->unk34.x += arg1 * (0.07f * (frandmod(0x3E8) - 0x1F4));
|
||||||
|
var_r31->unk34.z += arg1 * (0.07f * (frandmod(0x3E8) - 0x1F4));
|
||||||
|
|
||||||
|
temp_f31 = frandmod(0x168);
|
||||||
|
sp8.x = sind(temp_f31);
|
||||||
|
sp8.y = 0.0f;
|
||||||
|
sp8.z = cosd(temp_f31);
|
||||||
|
|
||||||
|
temp_f29 = 1.6666667f * (0.5f + (0.001f * frandmod(0x3E8)));
|
||||||
|
var_r31->unk08.x = sp8.x * temp_f29;
|
||||||
|
var_r31->unk08.z = sp8.z * temp_f29;
|
||||||
|
var_r31->unk08.y = 1.6666667f * ((2.0f * arg1) + (1.0f + (0.002f * frandmod(0x3E8))));
|
||||||
|
var_r31->unk30 = frandmod(0x168);
|
||||||
|
var_r31->unk2C = (20.0f + frandmod(0x14));
|
||||||
|
var_r31->unk40.a = (frandmod(0x46) + 0x64);
|
||||||
|
|
||||||
|
temp_f31 = 0.001f * frandmod(0x3E8);
|
||||||
|
var_r31->unk40.r = 177.0f + (78.0f * temp_f31);
|
||||||
|
var_r31->unk40.g = 60.0f + (129.0f * temp_f31);
|
||||||
|
var_r31->unk40.b = 30.0f + (122.0f * temp_f31);
|
||||||
|
|
||||||
|
var_r29--;
|
||||||
|
if (var_r29 < 1) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 fn_1_DA64(f32 arg8) {
|
||||||
|
M438MapStruct3* var_r28;
|
||||||
|
s32 var_r29;
|
||||||
|
s32 var_r30;
|
||||||
|
M438MapStruct2* var_r31;
|
||||||
|
float var_f31;
|
||||||
|
float var_f29;
|
||||||
|
|
||||||
|
var_r28 = lbl_1_bss_108C[0]->data;
|
||||||
|
var_r29 = 0;
|
||||||
|
var_r31 = &var_r28->unk4;
|
||||||
|
|
||||||
|
for (var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) {
|
||||||
|
var_f31 = fn_1_E5A4(var_r31->unk8, arg8);
|
||||||
|
if ((fabs(var_f31) < 12.0) && (var_r31->unk0 != 0)) {
|
||||||
|
var_r31->unk0 = 0;
|
||||||
|
var_r31->unk4 = 1;
|
||||||
|
var_r31->unk30 = var_r31->unk24;
|
||||||
|
var_r31->unk3C.y = (1.6666667f * (2.0f + (0.002f * frandmod(0x3E8))));
|
||||||
|
var_r31->unk3C.x = (1.6666667461395264f * (sind(var_r31->unk8) * (10.0f + (0.006f * frandmod(0x3E8)))));
|
||||||
|
var_r31->unk3C.z = (1.6666667461395264f * (cosd(var_r31->unk8) * (10.0f + (0.006f * frandmod(0x3E8)))));
|
||||||
|
var_r31->unkC = var_r31->unk14 = var_r31->unk1C = 0.0f;
|
||||||
|
var_r31->unk10 = (0.016666668f * (10.0f + (0.05f * frandmod(0x3E8))));
|
||||||
|
var_r31->unk18 = (0.016666668f * (30.0f + (0.05f * frandmod(0x3E8))));
|
||||||
|
var_r31->unk20 = (0.016666668f * (10.0f + (0.02f * frandmod(0x3E8))));
|
||||||
|
if (frandmod(0x64) < 0x50) {
|
||||||
|
var_r31->unk10 *= -1.0f;
|
||||||
|
}
|
||||||
|
if (frandmod(0x64) < 0x32) {
|
||||||
|
var_r31->unk18 *= -1.0f;
|
||||||
|
}
|
||||||
|
if (frandmod(0x64) < 0x32) {
|
||||||
|
var_r31->unk20 *= -1.0f;
|
||||||
|
}
|
||||||
|
fn_1_CAB0(var_r31->unk8);
|
||||||
|
var_r29 = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return var_r29;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 fn_1_DEA0(f32 arg8) {
|
||||||
|
M438MapStruct3* var_r28;
|
||||||
|
s32 var_r29;
|
||||||
|
s32 var_r30;
|
||||||
|
M438MapStruct2* var_r31;
|
||||||
|
f32 var_f31;
|
||||||
|
|
||||||
|
var_r28 = lbl_1_bss_108C[0]->data;
|
||||||
|
var_r29 = 0;
|
||||||
|
var_r31 = &var_r28->unk4;
|
||||||
|
|
||||||
|
for (var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) {
|
||||||
|
var_f31 = fn_1_E5A4(var_r31->unk8, arg8);
|
||||||
|
if ((fabs(var_f31) < 8.0) && (var_r31->unk0 != 0)) {
|
||||||
|
var_r29 = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return var_r29;
|
||||||
|
}
|
||||||
|
|
||||||
|
f32 fn_1_DF70(f32 arg8, f32 arg9) {
|
||||||
|
f32 temp_f30;
|
||||||
|
f32 var_f31;
|
||||||
|
|
||||||
|
temp_f30 = 360.0f;
|
||||||
|
var_f31 = 180.0 * (atan2f(arg9, arg8) / M_PI);
|
||||||
|
if (var_f31 < 0.0f) {
|
||||||
|
var_f31 += temp_f30;
|
||||||
|
} else if (var_f31 >= temp_f30) {
|
||||||
|
var_f31 -= temp_f30;
|
||||||
|
}
|
||||||
|
return var_f31;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_E034(Mtx arg0, Vec* arg1) {
|
||||||
|
f32 var_f26;
|
||||||
|
f32 temp_f25;
|
||||||
|
|
||||||
|
arg1->x = fn_1_DF70(arg0[2][2], arg0[1][2]);
|
||||||
|
arg1->z = fn_1_DF70(arg0[0][0], arg0[0][1]);
|
||||||
|
temp_f25 = -arg0[0][2];
|
||||||
|
var_f26 = sqrtf(fabs(1.0 - (temp_f25 * temp_f25)));
|
||||||
|
if ((arg1->x > 90.0f) && (arg1->x < 270.0f) && (arg1->z > 90.0f) && (arg1->z < 270.0f)) {
|
||||||
|
arg1->x = fmod((180.0f + arg1->x), 360.0);
|
||||||
|
arg1->z = fmod((180.0f + arg1->z), 360.0);
|
||||||
|
var_f26 = -var_f26;
|
||||||
|
}
|
||||||
|
arg1->y = fn_1_DF70(var_f26, temp_f25);
|
||||||
|
}
|
||||||
|
|
||||||
|
f32 fn_1_E488(f32 arg8, f32 arg9, f32 argA) {
|
||||||
|
f32 var_f31;
|
||||||
|
|
||||||
|
var_f31 = fmodf((arg9 - arg8), 360.0);
|
||||||
|
if (var_f31 < 0.0f) {
|
||||||
|
var_f31 += 360.0f;
|
||||||
|
}
|
||||||
|
if (var_f31 > 180.0f) {
|
||||||
|
var_f31 -= 360.0f;
|
||||||
|
}
|
||||||
|
var_f31 = fmodf((arg8 + (argA * var_f31)), 360.0);
|
||||||
|
if (var_f31 < 0.0f) {
|
||||||
|
var_f31 += 360.0f;
|
||||||
|
}
|
||||||
|
return var_f31;
|
||||||
|
}
|
||||||
|
|
||||||
|
f32 fn_1_E5A4(f32 arg8, f32 arg9) {
|
||||||
|
f32 var_f31;
|
||||||
|
|
||||||
|
var_f31 = fmodf((arg9 - arg8), 360.0);
|
||||||
|
if (var_f31 < 0.0f) {
|
||||||
|
var_f31 += 360.0f;
|
||||||
|
}
|
||||||
|
if (var_f31 > 180.0f) {
|
||||||
|
var_f31 -= 360.0f;
|
||||||
|
}
|
||||||
|
return var_f31;
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue