Matched m460Dll
This commit is contained in:
parent
fb98d348e2
commit
8e91e6ecf6
8 changed files with 2639 additions and 172 deletions
547
src/REL/m460Dll/map.c
Normal file
547
src/REL/m460Dll/map.c
Normal file
|
|
@ -0,0 +1,547 @@
|
|||
#include "datadir_enum.h"
|
||||
#include "dolphin/gx/GXEnum.h"
|
||||
#include "dolphin/gx/GXVert.h"
|
||||
#include "ext_math.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/chrman.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/hsfanim.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/memory.h"
|
||||
#include "game/object.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/sprite.h"
|
||||
#include "string.h"
|
||||
|
||||
#include "REL/m460Dll.h"
|
||||
|
||||
#ifndef __MWERKS__
|
||||
#include "game/frand.h"
|
||||
#endif
|
||||
|
||||
typedef struct UnkM460MapWork {
|
||||
s32 unk_00;
|
||||
u32 unk_04;
|
||||
s32 unk_08;
|
||||
s32 unk_0C;
|
||||
s32 unk_10;
|
||||
s32 unk_14;
|
||||
s32 unk_18;
|
||||
s32 unk_1C;
|
||||
char unk20[4];
|
||||
u32 unk_24;
|
||||
s32 unk_28;
|
||||
s32 unk_2C;
|
||||
u32 unk_30;
|
||||
float unk_34;
|
||||
float unk_38;
|
||||
Vec unk_3C;
|
||||
Vec unk_48;
|
||||
HsfObject *unk_54;
|
||||
u32 unk_58;
|
||||
void *unk_5C;
|
||||
} UnkM460MapWork; /* size = 0x60 */
|
||||
|
||||
void fn_1_6818(omObjData *object);
|
||||
void fn_1_6C00(omObjData *object);
|
||||
void fn_1_73F8(omObjData *object);
|
||||
u32 fn_1_76C4(u32 arg0, u32 arg1);
|
||||
void fn_1_7724(ModelData *model, Mtx mtx);
|
||||
void fn_1_7790(ModelData *model, Mtx mtx);
|
||||
void fn_1_7B94(s32 arg0);
|
||||
void fn_1_7DA8(omObjData *object, Vec *arg1, u32 arg2);
|
||||
|
||||
float lbl_1_data_1E8[8][8] = {
|
||||
{ 0.0f, 325.0f, -387.0f, -8.25f, 15.0f, 0.0f, 1208.0f, 38.65f },
|
||||
{ 0.0f, 325.0f, -387.0f, -8.25f, -15.0f, 0.0f, 1208.0f, 38.65f },
|
||||
{ 0.0f, 325.0f, -700.0f, -45.0f, 18.0f, 0.0f, 1500.0f, 41.5f },
|
||||
{ 0.0f, 325.0f, -700.0f, -45.0f, 0.0f, 0.0f, 1500.0f, 41.5f },
|
||||
{ 0.0f, 325.0f, -700.0f, -45.0f, -18.0f, 0.0f, 925.0f, 68.0f },
|
||||
{ 0.0f, 302.0f, -783.0f, 14.25f, 28.5f, 0.0f, 833.0f, 61.0f },
|
||||
{ 0.0f, 302.0f, -783.0f, 14.25f, 0.0f, 0.0f, 833.0f, 61.0f },
|
||||
{ 0.0f, 302.0f, -783.0f, 14.25f, -28.5f, 0.0f, 833.0f, 61.0f },
|
||||
};
|
||||
float lbl_1_data_2E8[2][8] = {
|
||||
{ -250.0f, 200.0f, -1000.0f, -10.0f, 0.0f, 0.0f, 1200.0f, 41.5f },
|
||||
{ 250.0f, 200.0f, -1000.0f, -10.0f, 0.0f, 0.0f, 1200.0f, 41.5f },
|
||||
};
|
||||
s32 lbl_1_data_328[3] = { DATA_MAKE_NUM(DATADIR_M460, 0x00), DATA_MAKE_NUM(DATADIR_M460, 0x01), DATA_MAKE_NUM(DATADIR_M460, 0x02) };
|
||||
s32 lbl_1_data_334[3] = { DATA_MAKE_NUM(DATADIR_M460, 0x03), DATA_MAKE_NUM(DATADIR_M460, 0x04), DATA_MAKE_NUM(DATADIR_M460, 0x05) };
|
||||
s32 lbl_1_data_340[3] = { DATA_MAKE_NUM(DATADIR_M460, 0x06), DATA_MAKE_NUM(DATADIR_M460, 0x07), DATA_MAKE_NUM(DATADIR_M460, 0x08) };
|
||||
s32 lbl_1_data_34C[2] = { DATA_MAKE_NUM(DATADIR_M460, 0x09), DATA_MAKE_NUM(DATADIR_M460, 0x0A) };
|
||||
s32 lbl_1_data_354[2] = { DATA_MAKE_NUM(DATADIR_M460, 0x0B), DATA_MAKE_NUM(DATADIR_M460, 0x0C) };
|
||||
|
||||
// UnkM460MapWork
|
||||
omObjData *lbl_1_bss_48;
|
||||
|
||||
void fn_1_67B4(Process *process)
|
||||
{
|
||||
omObjData *var_r31 = omAddObjEx(process, 0x1E, 0x10, 0, -1, fn_1_6818);
|
||||
lbl_1_bss_48 = var_r31;
|
||||
var_r31->work[0] = 0;
|
||||
}
|
||||
|
||||
void fn_1_6814(void) { }
|
||||
|
||||
void fn_1_6818(omObjData *object)
|
||||
{
|
||||
s32 var_r31;
|
||||
s32 var_r30;
|
||||
UnkM460MapWork *var_r28;
|
||||
HsfanimStruct01 *var_r27;
|
||||
|
||||
var_r28 = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM460MapWork), MEMORY_DEFAULT_NUM);
|
||||
memset(var_r28, 0, sizeof(UnkM460MapWork));
|
||||
omSetTra(object, 0.0f, 0.0f, 0.0f);
|
||||
for (var_r31 = 0; var_r31 < 3; var_r31++) {
|
||||
var_r30 = Hu3DModelCreateFile(lbl_1_data_328[var_r31]);
|
||||
object->model[var_r31] = var_r30;
|
||||
Hu3DModelLayerSet(var_r30, 1);
|
||||
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
|
||||
}
|
||||
for (var_r31 = 0; var_r31 < 3; var_r31++) {
|
||||
var_r30 = Hu3DModelCreateFile(lbl_1_data_334[var_r31]);
|
||||
object->model[var_r31 + 3] = var_r30;
|
||||
Hu3DModelLayerSet(var_r30, 1);
|
||||
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
|
||||
}
|
||||
for (var_r31 = 0; var_r31 < 3; var_r31++) {
|
||||
var_r30 = Hu3DModelCreateFile(lbl_1_data_340[var_r31]);
|
||||
object->model[var_r31 + 6] = var_r30;
|
||||
Hu3DModelLayerSet(var_r30, 1);
|
||||
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
|
||||
}
|
||||
for (var_r31 = 0; var_r31 < 2; var_r31++) {
|
||||
var_r30 = Hu3DModelCreateFile(lbl_1_data_34C[var_r31]);
|
||||
object->model[var_r31 + 9] = var_r30;
|
||||
Hu3DModelLayerSet(var_r30, 1);
|
||||
Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP);
|
||||
}
|
||||
for (var_r31 = 0; var_r31 < 2; var_r31++) {
|
||||
var_r30 = Hu3DModelCreateFile(lbl_1_data_354[var_r31]);
|
||||
object->model[var_r31 + 0xB] = var_r30;
|
||||
Hu3DModelLayerSet(var_r30, 3);
|
||||
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
|
||||
}
|
||||
var_r28->unk_08 = 8;
|
||||
fn_1_73F8(object);
|
||||
var_r30 = Hu3DHookFuncCreate(fn_1_7724);
|
||||
object->model[13] = var_r30;
|
||||
Hu3DModelCameraSet(var_r30, 1);
|
||||
Hu3DModelLayerSet(var_r30, 7);
|
||||
var_r30 = Hu3DHookFuncCreate(fn_1_7790);
|
||||
object->model[14] = var_r30;
|
||||
Hu3DModelCameraSet(var_r30, 2);
|
||||
Hu3DModelLayerSet(var_r30, 7);
|
||||
var_r28->unk_58 = GXGetTexBufferSize(0x280, 0x1E0, 5, 0, 0);
|
||||
var_r28->unk_5C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r28->unk_58, MEMORY_DEFAULT_NUM);
|
||||
DCFlushRange(var_r28->unk_5C, var_r28->unk_58);
|
||||
var_r30 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M460, 0x23)), 0x100);
|
||||
object->model[15] = var_r30;
|
||||
Hu3DModelLayerSet(var_r30, 4);
|
||||
for (var_r27 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_48, var_r31 = 0; var_r31 < 0x100; var_r31++, var_r27++) {
|
||||
var_r27->unk2C = 0.0f;
|
||||
var_r27->unk40.a = 0;
|
||||
var_r27->unk00 = 0;
|
||||
}
|
||||
DCStoreRange(((ParticleData *)Hu3DData[var_r30].unk_120)->unk_48, 0x4400);
|
||||
var_r28->unk_28 = 1;
|
||||
var_r28->unk_2C = -1;
|
||||
object->func = fn_1_6C00;
|
||||
}
|
||||
|
||||
void fn_1_6C00(omObjData *object)
|
||||
{
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
float var_f31;
|
||||
UnkM460MapWork *var_r31;
|
||||
M460DllCameraStruct *var_r30;
|
||||
M460DllCameraStruct *var_r28;
|
||||
u32 var_r27;
|
||||
s32 var_r26;
|
||||
s32 var_r25;
|
||||
|
||||
var_r31 = object->data;
|
||||
var_r30 = fn_1_3E90(1);
|
||||
var_r28 = fn_1_3E90(2);
|
||||
switch (fn_1_4164()) {
|
||||
case 1:
|
||||
var_r31->unk_18 = 0;
|
||||
var_r31->unk_1C = 0;
|
||||
var_r31->unk_24 = 0;
|
||||
if (var_r31->unk_00 != 0) {
|
||||
fn_1_73F8(object);
|
||||
var_r31->unk_00 = 0;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
var_r27 = fn_1_42F0();
|
||||
Hu3DMotionSpeedSet(object->model[var_r27 + 9], 1.5f);
|
||||
if (var_r31->unk_18 == 0) {
|
||||
if (fn_1_4324() != 0) {
|
||||
var_r31->unk_18 = 1;
|
||||
if (var_r27 == 0) {
|
||||
var_r31->unk_2C = object->model[var_r31->unk_14 + 3];
|
||||
var_r31->unk_54 = Hu3DModelObjPtrGet(var_r31->unk_2C, "door_l");
|
||||
}
|
||||
else if (var_r27 == 1) {
|
||||
var_r31->unk_2C = object->model[var_r31->unk_10 + 6];
|
||||
var_r31->unk_54 = Hu3DModelObjPtrGet(var_r31->unk_2C, "door_r");
|
||||
}
|
||||
var_r31->unk_28 = 0;
|
||||
var_r31->unk_30 = 0;
|
||||
Hu3DModelAttrReset(object->model[var_r27 + 0xB], HU3D_ATTR_DISPOFF);
|
||||
}
|
||||
}
|
||||
else if (var_r31->unk_28 != 0) {
|
||||
fn_1_433C();
|
||||
var_r30->unk_10 -= 0.116666675f;
|
||||
}
|
||||
if (var_r31->unk_1C == 0) {
|
||||
var_r31->unk_24++;
|
||||
if (var_r31->unk_24 > 102.0f) {
|
||||
var_r31->unk_1C = 1;
|
||||
fn_1_8BA0(0.041666668f);
|
||||
var_r30->unk_1C.x = lbl_1_data_2E8[var_r27][0];
|
||||
var_r30->unk_1C.y = lbl_1_data_2E8[var_r27][1];
|
||||
var_r30->unk_1C.z = lbl_1_data_2E8[var_r27][2];
|
||||
var_r30->unk_28.x = lbl_1_data_2E8[var_r27][3];
|
||||
var_r30->unk_28.y = lbl_1_data_2E8[var_r27][4];
|
||||
var_r30->unk_28.z = lbl_1_data_2E8[var_r27][5];
|
||||
var_r30->unk_34 = lbl_1_data_2E8[var_r27][6];
|
||||
var_r30->unk_10 = lbl_1_data_2E8[var_r27][7];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
var_r30->unk_10 -= 0.116666675f;
|
||||
var_r31->unk_00 = 1;
|
||||
break;
|
||||
}
|
||||
if ((var_r31->unk_28 == 0) && (var_r31->unk_2C >= 0)) {
|
||||
if (var_r31->unk_30 == 0) {
|
||||
var_r31->unk_34 = 0.0f;
|
||||
var_r31->unk_38 = 0.0f;
|
||||
var_r31->unk_3C.x = var_r31->unk_3C.y = var_r31->unk_3C.z = 0.0f;
|
||||
var_r31->unk_48 = var_r31->unk_3C;
|
||||
var_r31->unk_38 = 2.9166667f;
|
||||
if (var_r31->unk_54) {
|
||||
sp14.x = var_r31->unk_54->data.base.pos.x;
|
||||
sp14.y = 10.0f + var_r31->unk_54->data.base.pos.y;
|
||||
sp14.z = 20.0f + var_r31->unk_54->data.base.pos.z;
|
||||
fn_1_7DA8(object, &sp14, 0);
|
||||
}
|
||||
HuAudFXPlay(0x818);
|
||||
}
|
||||
if (var_r31->unk_30 < 24.0f) {
|
||||
var_r31->unk_38 *= 0.93f;
|
||||
}
|
||||
else {
|
||||
var_f31 = 3.888889f;
|
||||
var_r31->unk_38 = var_r31->unk_38 + (0.033333335f * var_f31);
|
||||
if (var_r31->unk_38 > var_f31) {
|
||||
var_r31->unk_38 = var_f31;
|
||||
}
|
||||
}
|
||||
var_r26 = 0.5f + (0.2f * var_r31->unk_34);
|
||||
var_r31->unk_34 = var_r31->unk_34 + var_r31->unk_38;
|
||||
if (var_r31->unk_34 >= 350.0f) {
|
||||
var_r31->unk_34 = 350.0f;
|
||||
var_r31->unk_28 = 1;
|
||||
HuAudFXPlay(0x819);
|
||||
if (var_r31->unk_54) {
|
||||
sp14.x = var_r31->unk_54->data.base.pos.x;
|
||||
sp14.y = (var_r31->unk_54->data.base.pos.y + var_r31->unk_34) - 15.000001f;
|
||||
sp14.z = 10.0f + var_r31->unk_54->data.base.pos.z;
|
||||
fn_1_7DA8(object, &sp14, 2);
|
||||
}
|
||||
}
|
||||
var_r25 = 0.5f + (0.2f * var_r31->unk_34);
|
||||
if (var_r26 != var_r25) {
|
||||
var_r31->unk_48.x = 100.0f * ((0.00003f * frandmod(0x3E8)) - 0.015f);
|
||||
var_r31->unk_48.y = 100.0f * ((0.00006f * frandmod(0x3E8)) - 0.03f);
|
||||
var_r31->unk_48.z = 100.0f * ((0.00006f * frandmod(0x3E8)) - 0.03f);
|
||||
if (var_r31->unk_54) {
|
||||
sp14.x = var_r31->unk_54->data.base.pos.x;
|
||||
sp14.y = (var_r31->unk_54->data.base.pos.y + var_r31->unk_34) - 15.000001f;
|
||||
sp14.z = 15.000001f + var_r31->unk_54->data.base.pos.z;
|
||||
fn_1_7DA8(object, &sp14, 1);
|
||||
}
|
||||
}
|
||||
PSVECSubtract(&var_r31->unk_48, &var_r31->unk_3C, &sp8);
|
||||
PSVECScale(&sp8, &sp8, 0.4f);
|
||||
PSVECAdd(&var_r31->unk_3C, &sp8, &sp14);
|
||||
sp14.y += var_r31->unk_34;
|
||||
Hu3DModelPosSetV(var_r31->unk_2C, &sp14);
|
||||
var_r31->unk_30++;
|
||||
}
|
||||
fn_1_7B94(object->model[15]);
|
||||
if (var_r28->unk_00 != 0) {
|
||||
var_r28->unk_90 = var_r28->unk_90 + var_r28->unk_8C;
|
||||
if (var_r28->unk_90 > 1.0f) {
|
||||
var_r28->unk_00 = 0;
|
||||
var_r28->unk_90 = 1.0f;
|
||||
fn_1_3E68(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vec lbl_1_data_36C = { 0.0f, 0.0f, 0.0f };
|
||||
GXColor lbl_1_data_378 = { 0, 0, 0, 0x80 };
|
||||
|
||||
void fn_1_73F8(omObjData *object)
|
||||
{
|
||||
UnkM460MapWork *var_r31;
|
||||
M460DllCameraStruct *var_r29;
|
||||
u32 var_r28;
|
||||
|
||||
var_r31 = object->data;
|
||||
Hu3DModelAttrSet(object->model[var_r31->unk_0C], HU3D_ATTR_DISPOFF);
|
||||
Hu3DModelAttrSet(object->model[var_r31->unk_10 + 6], HU3D_ATTR_DISPOFF);
|
||||
Hu3DModelAttrSet(object->model[var_r31->unk_14 + 3], HU3D_ATTR_DISPOFF);
|
||||
Hu3DModelAttrSet(object->model[11], HU3D_ATTR_DISPOFF);
|
||||
Hu3DModelAttrSet(object->model[12], HU3D_ATTR_DISPOFF);
|
||||
if (var_r31->unk_04 != 0) {
|
||||
var_r31->unk_0C = fn_1_76C4(3, var_r31->unk_0C);
|
||||
var_r31->unk_14 = fn_1_76C4(3, var_r31->unk_14);
|
||||
var_r31->unk_10 = fn_1_76C4(3, var_r31->unk_10);
|
||||
var_r29 = fn_1_3E90(1);
|
||||
var_r28 = var_r31->unk_08 = fn_1_76C4(8, var_r31->unk_08);
|
||||
var_r29->unk_1C.x = lbl_1_data_1E8[var_r28][0];
|
||||
var_r29->unk_1C.y = lbl_1_data_1E8[var_r28][1];
|
||||
var_r29->unk_1C.z = lbl_1_data_1E8[var_r28][2];
|
||||
var_r29->unk_28.x = lbl_1_data_1E8[var_r28][3];
|
||||
var_r29->unk_28.y = lbl_1_data_1E8[var_r28][4];
|
||||
var_r29->unk_28.z = lbl_1_data_1E8[var_r28][5];
|
||||
var_r29->unk_34 = lbl_1_data_1E8[var_r28][6];
|
||||
var_r29->unk_10 = lbl_1_data_1E8[var_r28][7];
|
||||
}
|
||||
Hu3DMotionTimeSet(object->model[9], 0.0f);
|
||||
Hu3DMotionSpeedSet(object->model[9], 0.0f);
|
||||
Hu3DMotionTimeSet(object->model[10], 0.0f);
|
||||
Hu3DMotionSpeedSet(object->model[10], 0.0f);
|
||||
Hu3DModelAttrReset(object->model[var_r31->unk_0C], HU3D_ATTR_DISPOFF);
|
||||
Hu3DModelAttrReset(object->model[var_r31->unk_14 + 3], HU3D_ATTR_DISPOFF);
|
||||
Hu3DModelAttrReset(object->model[var_r31->unk_10 + 6], HU3D_ATTR_DISPOFF);
|
||||
Hu3DModelPosSetV(object->model[var_r31->unk_14 + 3], &lbl_1_data_36C);
|
||||
Hu3DModelPosSetV(object->model[var_r31->unk_10 + 6], &lbl_1_data_36C);
|
||||
var_r31->unk_04++;
|
||||
}
|
||||
|
||||
u32 fn_1_76C4(u32 arg0, u32 arg8)
|
||||
{
|
||||
u32 var_r31 = frandmod(arg0);
|
||||
if (var_r31 == arg8) {
|
||||
var_r31++;
|
||||
}
|
||||
var_r31 %= arg0;
|
||||
return var_r31;
|
||||
}
|
||||
|
||||
void fn_1_7724(ModelData *model, Mtx mtx)
|
||||
{
|
||||
UnkM460MapWork *var_r31 = lbl_1_bss_48->data;
|
||||
GXSetTexCopySrc(0, 0, 0x280, 0x1E0);
|
||||
GXSetTexCopyDst(0x280, 0x1E0, GX_TF_RGB5A3, 0);
|
||||
GXCopyTex(var_r31->unk_5C, 0);
|
||||
GXPixModeSync();
|
||||
}
|
||||
|
||||
void fn_1_7790(ModelData *model, Mtx mtx)
|
||||
{
|
||||
Mtx sp5C;
|
||||
Mtx sp2C;
|
||||
GXTexObj spC;
|
||||
float var_f31;
|
||||
float var_f30;
|
||||
float var_f29;
|
||||
UnkM460MapWork *var_r31;
|
||||
M460DllCameraStruct *var_r30;
|
||||
|
||||
var_r31 = lbl_1_bss_48->data;
|
||||
var_r30 = fn_1_3F2C(2);
|
||||
lbl_1_data_378.a = 255.0f * var_r30->unk_90;
|
||||
DCStoreRange(&lbl_1_data_378, 4);
|
||||
C_MTXPerspective(sp2C, 41.5f, 1.2f, 100.0f, 5500.0f);
|
||||
GXSetProjection(sp2C, GX_PERSPECTIVE);
|
||||
PSMTXIdentity(sp5C);
|
||||
GXLoadPosMtxImm(sp5C, 0);
|
||||
GXSetNumChans(1);
|
||||
GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE);
|
||||
GXInitTexObj(&spC, var_r31->unk_5C, 0x280, 0x1E0, 5, GX_CLAMP, GX_CLAMP, 0);
|
||||
GXInitTexObjLOD(&spC, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1);
|
||||
GXLoadTexObj(&spC, GX_TEXMAP0);
|
||||
C_MTXLightPerspective(sp2C, 41.5f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f);
|
||||
GXLoadTexMtxImm(sp2C, 0x1E, GX_MTX3x4);
|
||||
GXSetNumTexGens(1);
|
||||
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, 0x1E, 0, 0x7D);
|
||||
GXSetNumTevStages(1);
|
||||
GXSetTevColor(GX_TEVREG0, lbl_1_data_378);
|
||||
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
|
||||
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC);
|
||||
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 0, GX_TEVPREV);
|
||||
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0);
|
||||
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 0, GX_TEVPREV);
|
||||
GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1);
|
||||
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
|
||||
GXSetZMode(0, GX_LEQUAL, 0);
|
||||
GXClearVtxDesc();
|
||||
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
|
||||
var_f31 = 4125.0f;
|
||||
var_f30 = 2750.0f;
|
||||
var_f29 = 2530.0f;
|
||||
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
||||
GXPosition3f32(-var_f31, var_f30, -var_f29);
|
||||
GXPosition3f32(var_f31, var_f30, -var_f29);
|
||||
GXPosition3f32(var_f31, -var_f30, -var_f29);
|
||||
GXPosition3f32(-var_f31, -var_f30, -var_f29);
|
||||
}
|
||||
|
||||
void fn_1_7B94(s32 arg0)
|
||||
{
|
||||
HsfanimStruct01 *var_r31;
|
||||
ParticleData *var_r30;
|
||||
s32 var_r29;
|
||||
|
||||
var_r30 = Hu3DData[arg0].unk_120;
|
||||
for (var_r31 = var_r30->unk_48, var_r29 = 0; var_r29 < var_r30->unk_30; var_r29++, var_r31++) {
|
||||
if (var_r31->unk00_s16 != 0) {
|
||||
PSVECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34);
|
||||
switch (var_r31->unk02) {
|
||||
case 0:
|
||||
var_r31->unk2C += 1.0f;
|
||||
var_r31->unk20 *= 0.99f;
|
||||
var_r31->unk08.y += 0.019444447f;
|
||||
break;
|
||||
case 1:
|
||||
var_r31->unk2C += 2.0f;
|
||||
var_r31->unk20 *= 0.98f;
|
||||
break;
|
||||
case 2:
|
||||
var_r31->unk2C += 1.0f;
|
||||
var_r31->unk20 *= 0.995f;
|
||||
break;
|
||||
}
|
||||
if (var_r31->unk00_s16 < 12.0f) {
|
||||
var_r31->unk20 = 0.9f * var_r31->unk20;
|
||||
}
|
||||
var_r31->unk40.a = var_r31->unk20;
|
||||
if (--var_r31->unk00_s16 == 0) {
|
||||
var_r31->unk00 = 0;
|
||||
var_r31->unk2C = 0.0f;
|
||||
var_r31->unk40.a = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
DCStoreRange(var_r30->unk_48, var_r30->unk_30 * 0x44);
|
||||
}
|
||||
|
||||
void fn_1_7DA8(omObjData *object, Vec *arg1, u32 arg2)
|
||||
{
|
||||
Vec sp1C;
|
||||
float var_f31;
|
||||
|
||||
HsfanimStruct01 *var_r31;
|
||||
ParticleData *var_r30;
|
||||
s32 var_r28;
|
||||
u32 var_r27;
|
||||
|
||||
GXColor spC = { 0xA2, 0x97, 0x7B, 0x80 };
|
||||
GXColor sp8 = { 0xE7, 0xDD, 0xC0, 0xFF };
|
||||
s32 sp10[3] = { 0x00000032, 4, 0x00000046 };
|
||||
|
||||
var_r30 = Hu3DData[object->model[15]].unk_120;
|
||||
if (arg2 > 2) {
|
||||
arg2 = 1;
|
||||
}
|
||||
var_r27 = sp10[arg2];
|
||||
for (var_r31 = var_r30->unk_48, var_r28 = 0; var_r28 < var_r30->unk_30; var_r28++, var_r31++) {
|
||||
if (var_r31->unk00_s16 == 0) {
|
||||
var_r31->unk02 = arg2;
|
||||
sp1C.x = 100.0f * ((0.0026f * frandmod(0x3E8)) - 1.3f);
|
||||
sp1C.y = 0.0f;
|
||||
sp1C.z = 100.0f * ((0.000100000005f * frandmod(0x3E8)) - 0.05f);
|
||||
PSVECAdd(&sp1C, arg1, &var_r31->unk34);
|
||||
var_r31->unk30 = 0.0031415902f * frandmod(0x3E8);
|
||||
switch (arg2) {
|
||||
case 0:
|
||||
var_r31->unk00_s16 = 60.0f * (0.8f + (0.0007f * frandmod(0x3E8)));
|
||||
var_r31->unk08.x = 1.6666667f * (0.000100000005f * frandmod(0x3E8) - 0.05f);
|
||||
var_r31->unk08.y = 1.6666667f * (0.05f + (0.00020000001f * frandmod(0x3E8)));
|
||||
var_r31->unk08.z = 1.6666667f * (0.1f + (0.0006f * frandmod(0x3E8)));
|
||||
var_f31 = 0.001f * frandmod(0x3E8);
|
||||
var_r31->unk2C = 30.0f + (30.0f * var_f31);
|
||||
var_r31->unk40.a = 40.0f + (40.0f * (1.0f - var_f31));
|
||||
var_r31->unk40.r = spC.r + (var_f31 * (sp8.r - spC.r));
|
||||
var_r31->unk40.g = spC.g + (var_f31 * (sp8.g - spC.g));
|
||||
var_r31->unk40.b = spC.b + (var_f31 * (sp8.b - spC.b));
|
||||
break;
|
||||
case 1:
|
||||
sp1C.x = 100.0f * (1.1f + (0.00020000001f * frandmod(0x3E8)));
|
||||
sp1C.y = 100.0f * (0.2f + (0.0005f * frandmod(0x3E8)));
|
||||
if (frandmod(0x3E8) < 0x1F4) {
|
||||
sp1C.x *= -1.0f;
|
||||
}
|
||||
PSVECAdd(&sp1C, arg1, &var_r31->unk34);
|
||||
var_r31->unk00 = 60.0f * (0.2f + (0.0005f * frandmod(0x3E8)));
|
||||
var_r31->unk08.x = 1.6666667f * ((0.000100000005f * frandmod(0x3E8)) - 0.05f);
|
||||
var_r31->unk08.y = -1.6666667f * (0.2f + (0.0003f * frandmod(0x3E8)));
|
||||
var_r31->unk08.z = 1.6666667f * (0.05f + (0.000100000005f * frandmod(0x3E8)));
|
||||
var_f31 = 0.001f * frandmod(0x3E8);
|
||||
var_r31->unk2C = 20.0f + (30.0f * var_f31);
|
||||
var_r31->unk40.a = 8.0f + (13.0f * (1.0f - var_f31));
|
||||
var_r31->unk40.r = spC.r + (var_f31 * (sp8.r - spC.r));
|
||||
var_r31->unk40.g = spC.g + (var_f31 * (sp8.g - spC.g));
|
||||
var_r31->unk40.b = spC.b + (var_f31 * (sp8.b - spC.b));
|
||||
break;
|
||||
case 2:
|
||||
var_r31->unk00 = 60.0f * (0.9f + (0.00080000004f * frandmod(0x3E8)));
|
||||
var_r31->unk08.x = 1.6666667f * ((0.00020000001f * frandmod(0x3E8)) - 0.1f);
|
||||
var_r31->unk08.y = -1.6666667f * (0.1f + (0.0007f * frandmod(0x3E8)));
|
||||
var_r31->unk08.z = 1.6666667f * ((0.00020000001f * frandmod(0x3E8)) - 0.1f);
|
||||
var_f31 = 0.001f * frandmod(0x3E8);
|
||||
var_r31->unk2C = 40.0f + (60.0f * var_f31);
|
||||
var_r31->unk40.a = 8.0f + (10.0f * (1.0f - var_f31));
|
||||
var_r31->unk40.r = spC.r + (var_f31 * (sp8.r - spC.r));
|
||||
var_r31->unk40.g = spC.g + (var_f31 * (sp8.g - spC.g));
|
||||
var_r31->unk40.b = spC.b + (var_f31 * (sp8.b - spC.b));
|
||||
break;
|
||||
}
|
||||
var_r31->unk20 = var_r31->unk40.a;
|
||||
var_r27--;
|
||||
if (var_r27 < 1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DCStoreRange(var_r30->unk_48, var_r30->unk_30 * sizeof(HsfanimStruct01));
|
||||
}
|
||||
|
||||
void fn_1_8BA0(float arg8)
|
||||
{
|
||||
M460DllCameraStruct *var_r31;
|
||||
M460DllCameraStruct *var_r30;
|
||||
|
||||
var_r30 = fn_1_3E90(1);
|
||||
var_r31 = fn_1_3E90(2);
|
||||
var_r31->unk_00 = 1;
|
||||
var_r31->unk_1C = var_r30->unk_1C;
|
||||
var_r31->unk_28 = var_r30->unk_28;
|
||||
var_r31->unk_34 = var_r30->unk_34;
|
||||
var_r31->unk_10 = var_r30->unk_10;
|
||||
var_r31->unk_44 = var_r30->unk_44;
|
||||
var_r31->unk_40 = var_r30->unk_40;
|
||||
var_r31->unk_8C = arg8;
|
||||
var_r31->unk_90 = 0.0f;
|
||||
fn_1_3E68(2);
|
||||
}
|
||||
|
||||
s32 fn_1_8C78(void)
|
||||
{
|
||||
M460DllCameraStruct *var_r31 = fn_1_3E90(2);
|
||||
return var_r31->unk_00;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue