Merge pull request #410 from gamemasterplc/main
Match first TU of m455dll
This commit is contained in:
commit
6dc3e823f2
5 changed files with 826 additions and 12 deletions
|
|
@ -225,25 +225,25 @@ lbl_1_data_0 = .data:0x00000000; // type:object size:0x38 data:float
|
||||||
lbl_1_data_38 = .data:0x00000038; // type:object size:0xC data:float
|
lbl_1_data_38 = .data:0x00000038; // type:object size:0xC data:float
|
||||||
lbl_1_data_44 = .data:0x00000044; // type:object size:0xC data:float
|
lbl_1_data_44 = .data:0x00000044; // type:object size:0xC data:float
|
||||||
lbl_1_data_50 = .data:0x00000050; // type:object size:0x4
|
lbl_1_data_50 = .data:0x00000050; // type:object size:0x4
|
||||||
lbl_1_data_54 = .data:0x00000054; // type:object size:0xC
|
lbl_1_data_54 = .data:0x00000054; // type:object size:0xC data:float
|
||||||
lbl_1_data_60 = .data:0x00000060; // type:object size:0xC
|
lbl_1_data_60 = .data:0x00000060; // type:object size:0xC data:float
|
||||||
lbl_1_data_6C = .data:0x0000006C; // type:object size:0x24
|
lbl_1_data_6C = .data:0x0000006C; // type:object size:0x23 data:string
|
||||||
lbl_1_data_90 = .data:0x00000090; // type:object size:0x2 data:2byte
|
lbl_1_data_90 = .data:0x00000090; // type:object size:0x2 data:2byte
|
||||||
lbl_1_data_94 = .data:0x00000094; // type:object size:0x4 data:4byte
|
lbl_1_data_94 = .data:0x00000094; // type:object size:0x4 data:4byte
|
||||||
lbl_1_data_98 = .data:0x00000098; // type:object size:0x4 data:4byte
|
lbl_1_data_98 = .data:0x00000098; // type:object size:0x4 data:4byte
|
||||||
jumptable_1_data_9C = .data:0x0000009C; // type:object size:0x28 scope:local
|
jumptable_1_data_9C = .data:0x0000009C; // type:object size:0x28 scope:local
|
||||||
lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x1C data:string
|
lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x1C data:string
|
||||||
lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x28
|
lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x28
|
||||||
lbl_1_data_108 = .data:0x00000108; // type:object size:0x30
|
lbl_1_data_108 = .data:0x00000108; // type:object size:0x30 data:float
|
||||||
lbl_1_data_138 = .data:0x00000138; // type:object size:0x1C
|
lbl_1_data_138 = .data:0x00000138; // type:object size:0x19 data:string
|
||||||
lbl_1_data_154 = .data:0x00000154; // type:object size:0x10
|
lbl_1_data_154 = .data:0x00000154; // type:object size:0x10 data:float
|
||||||
lbl_1_data_164 = .data:0x00000164; // type:object size:0xC
|
lbl_1_data_164 = .data:0x00000164; // type:object size:0xC data:float
|
||||||
lbl_1_data_170 = .data:0x00000170; // type:object size:0x1 data:byte
|
lbl_1_data_170 = .data:0x00000170; // type:object size:0x4 data:byte
|
||||||
lbl_1_data_174 = .data:0x00000174; // type:object size:0x5 data:string
|
lbl_1_data_174 = .data:0x00000174; // type:object size:0x5 data:string
|
||||||
lbl_1_data_179 = .data:0x00000179; // type:object size:0xB data:string
|
lbl_1_data_179 = .data:0x00000179; // type:object size:0xB data:string
|
||||||
lbl_1_data_184 = .data:0x00000184; // type:object size:0x8 data:float
|
lbl_1_data_184 = .data:0x00000184; // type:object size:0x8 data:float
|
||||||
lbl_1_data_18C = .data:0x0000018C; // type:object size:0x10
|
lbl_1_data_18C = .data:0x0000018C; // type:object size:0x10
|
||||||
lbl_1_data_19C = .data:0x0000019C; // type:object size:0x3C
|
lbl_1_data_19C = .data:0x0000019C; // type:object size:0x3C data:float
|
||||||
lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x30
|
lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x30
|
||||||
lbl_1_data_208 = .data:0x00000208; // type:object size:0x1 data:byte
|
lbl_1_data_208 = .data:0x00000208; // type:object size:0x1 data:byte
|
||||||
lbl_1_data_20C = .data:0x0000020C; // type:object size:0x50
|
lbl_1_data_20C = .data:0x0000020C; // type:object size:0x50
|
||||||
|
|
@ -265,6 +265,7 @@ lbl_1_data_694 = .data:0x00000694; // type:object size:0x8 data:byte
|
||||||
lbl_1_data_69C = .data:0x0000069C; // type:object size:0x1 data:byte
|
lbl_1_data_69C = .data:0x0000069C; // type:object size:0x1 data:byte
|
||||||
lbl_1_data_6A0 = .data:0x000006A0; // type:object size:0x10
|
lbl_1_data_6A0 = .data:0x000006A0; // type:object size:0x10
|
||||||
lbl_1_data_6B0 = .data:0x000006B0; // type:object size:0x10
|
lbl_1_data_6B0 = .data:0x000006B0; // type:object size:0x10
|
||||||
|
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte
|
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte
|
||||||
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0xC data:float
|
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0xC data:float
|
||||||
lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte
|
lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte
|
||||||
|
|
|
||||||
|
|
@ -10,13 +10,13 @@ REL/executor.c:
|
||||||
.text start:0x00000000 end:0x000000A0
|
.text start:0x00000000 end:0x000000A0
|
||||||
|
|
||||||
REL/m456Dll/main.c:
|
REL/m456Dll/main.c:
|
||||||
.text start:0x000000A0 end:0x00002FAC
|
.text start:0x000000A0 end:0x00002DF4
|
||||||
.rodata start:0x00000000 end:0x000000F0
|
.rodata start:0x00000000 end:0x000000F0
|
||||||
.data start:0x00000000 end:0x000002E8
|
.data start:0x00000000 end:0x000002E8
|
||||||
.bss start:0x00000000 end:0x00000090
|
.bss start:0x00000000 end:0x00000090
|
||||||
|
|
||||||
REL/m456Dll/stage.c:
|
REL/m456Dll/stage.c:
|
||||||
.text start:0x00002FAC end:0x00009C68
|
.text start:0x00002DF4 end:0x00009C68
|
||||||
.rodata start:0x000000F0 end:0x00000318
|
.rodata start:0x000000F0 end:0x00000318
|
||||||
.data start:0x000002E8 end:0x000007D0
|
.data start:0x000002E8 end:0x000007D0
|
||||||
.bss start:0x00000090 end:0x000000BC
|
.bss start:0x00000090 end:0x000000BC
|
||||||
|
|
|
||||||
|
|
@ -1250,7 +1250,7 @@ config.libs = [
|
||||||
"m455Dll", # Rumble Fishing
|
"m455Dll", # Rumble Fishing
|
||||||
objects={
|
objects={
|
||||||
Object(Matching, "REL/executor.c"),
|
Object(Matching, "REL/executor.c"),
|
||||||
Object(NonMatching, "REL/m455Dll/main.c"),
|
Object(Matching, "REL/m455Dll/main.c"),
|
||||||
Object(NonMatching, "REL/m455Dll/stage.c"),
|
Object(NonMatching, "REL/m455Dll/stage.c"),
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
#include "dolphin.h"
|
#include "dolphin.h"
|
||||||
#include "game/hsfformat.h"
|
#include "game/hsfformat.h"
|
||||||
|
|
||||||
|
#define Hu3DMotionCreateFile(data_id) (Hu3DMotionCreate(HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA)))
|
||||||
|
|
||||||
#define Hu3DJointMotionFile(model, data_id) (Hu3DJointMotion((model), HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA)))
|
#define Hu3DJointMotionFile(model, data_id) (Hu3DJointMotion((model), HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA)))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
811
src/REL/m455Dll/main.c
Normal file
811
src/REL/m455Dll/main.c
Normal file
|
|
@ -0,0 +1,811 @@
|
||||||
|
#include "game/object.h"
|
||||||
|
#include "game/objsub.h"
|
||||||
|
#include "game/hsfman.h"
|
||||||
|
#include "game/hsfdraw.h"
|
||||||
|
|
||||||
|
#include "game/hsfmotion.h"
|
||||||
|
#include "game/pad.h"
|
||||||
|
|
||||||
|
#include "game/wipe.h"
|
||||||
|
#include "game/frand.h"
|
||||||
|
#include "game/audio.h"
|
||||||
|
#include "game/minigame_seq.h"
|
||||||
|
#include "game/gamework_data.h"
|
||||||
|
#include "game/chrman.h"
|
||||||
|
|
||||||
|
#include "ext_math.h"
|
||||||
|
#include "math.h"
|
||||||
|
|
||||||
|
#include "rel_sqrt_consts.h"
|
||||||
|
|
||||||
|
void fn_1_32C4(Process *objman);
|
||||||
|
void fn_1_340C(void);
|
||||||
|
void fn_1_6698(Vec *arg0, float arg1, float arg2, s32 arg3);
|
||||||
|
float fn_1_687C(void);
|
||||||
|
void fn_1_6CB0(Vec *arg0, float arg1);
|
||||||
|
|
||||||
|
typedef struct camera_view_params {
|
||||||
|
float zoom;
|
||||||
|
Vec pos;
|
||||||
|
Vec rot;
|
||||||
|
} CameraViewParams;
|
||||||
|
|
||||||
|
CameraViewParams lbl_1_data_0[2] = { { 500, { 0, 1000, 0 }, { 40, 0, 0 } }, { 1985, { 0, 300, 0 }, { -6, 0, 0 } } };
|
||||||
|
Vec lbl_1_data_38 = { 700, 2500, -700 };
|
||||||
|
Vec lbl_1_data_44 = { 0, 0, 0 };
|
||||||
|
GXColor lbl_1_data_50 = { 255, 255, 255, 255 };
|
||||||
|
Vec lbl_1_data_54 = { 200, 15000, -200 };
|
||||||
|
Vec lbl_1_data_60 = { 0, 1, 0 };
|
||||||
|
|
||||||
|
omObjData *lbl_1_bss_40;
|
||||||
|
omObjData *lbl_1_bss_3C;
|
||||||
|
omObjData *lbl_1_bss_38;
|
||||||
|
s32 lbl_1_bss_34;
|
||||||
|
s32 lbl_1_bss_30;
|
||||||
|
s32 lbl_1_bss_2C;
|
||||||
|
s32 lbl_1_bss_28;
|
||||||
|
s16 lbl_1_bss_26;
|
||||||
|
s16 lbl_1_bss_24;
|
||||||
|
s16 lbl_1_bss_22;
|
||||||
|
s16 lbl_1_bss_20;
|
||||||
|
s16 lbl_1_bss_18[4];
|
||||||
|
s16 lbl_1_bss_16;
|
||||||
|
s16 lbl_1_bss_14;
|
||||||
|
Vec lbl_1_bss_8;
|
||||||
|
s16 lbl_1_bss_4;
|
||||||
|
s32 lbl_1_bss_0;
|
||||||
|
|
||||||
|
|
||||||
|
void fn_1_330(omObjData *object);
|
||||||
|
void fn_1_B94(Process *objman);
|
||||||
|
void fn_1_2A90(Process *objman);
|
||||||
|
|
||||||
|
void ObjectSetup(void)
|
||||||
|
{
|
||||||
|
Process *objman;
|
||||||
|
CameraData *camera = &Hu3DCamera[0];
|
||||||
|
s16 light;
|
||||||
|
OSReport("******* M455ObjectSetup *********\n");
|
||||||
|
objman = omInitObjMan(50, 8192);
|
||||||
|
omGameSysInit(objman);
|
||||||
|
Hu3DCameraCreate(HU3D_CAM0);
|
||||||
|
Hu3DCameraPerspectiveSet(HU3D_CAM0, -1, 20, 25000, 1.2f);
|
||||||
|
Hu3DCameraViewportSet(HU3D_CAM0, 0, 0, 640, 480, 0, 1);
|
||||||
|
lbl_1_bss_3C = omAddObjEx(objman, 32730, 0, 0, -1, omOutView);
|
||||||
|
lbl_1_bss_8.x = lbl_1_data_44.x-lbl_1_data_38.x;
|
||||||
|
lbl_1_bss_8.y = lbl_1_data_44.y-lbl_1_data_38.y;
|
||||||
|
lbl_1_bss_8.z = lbl_1_data_44.z-lbl_1_data_38.z;
|
||||||
|
PSVECNormalize(&lbl_1_bss_8, &lbl_1_bss_8);
|
||||||
|
light = Hu3DGLightCreateV(&lbl_1_data_38, &lbl_1_bss_8, &lbl_1_data_50);
|
||||||
|
Hu3DGLightInfinitytSet(light);
|
||||||
|
Hu3DGLightStaticSet(light, 1);
|
||||||
|
Hu3DShadowCreate(10, camera->near, camera->far);
|
||||||
|
Hu3DShadowTPLvlSet(0.7f);
|
||||||
|
Hu3DShadowPosSet(&lbl_1_data_54, &lbl_1_data_60, &lbl_1_data_44);
|
||||||
|
HuAudSndGrpSet(77);
|
||||||
|
lbl_1_bss_38 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_330);
|
||||||
|
fn_1_2A90(objman);
|
||||||
|
fn_1_B94(objman);
|
||||||
|
fn_1_32C4(objman);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_310(s32 arg0)
|
||||||
|
{
|
||||||
|
lbl_1_bss_34 = arg0;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 fn_1_320(void)
|
||||||
|
{
|
||||||
|
return lbl_1_bss_34;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_478(omObjData *object);
|
||||||
|
|
||||||
|
void fn_1_330(omObjData *object)
|
||||||
|
{
|
||||||
|
CameraData *camera = &Hu3DCamera[0];
|
||||||
|
lbl_1_bss_34 = 0;
|
||||||
|
lbl_1_bss_2C = 60;
|
||||||
|
lbl_1_bss_30 = -1;
|
||||||
|
lbl_1_bss_26 = 30;
|
||||||
|
lbl_1_bss_24 = 60;
|
||||||
|
lbl_1_bss_22 = -1;
|
||||||
|
lbl_1_bss_20 = 0;
|
||||||
|
lbl_1_bss_16 = ((frand16()*270.0f)/65536.0f)+30.0f;
|
||||||
|
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
|
||||||
|
camera->fov = 30.0f;
|
||||||
|
object->func = fn_1_478;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_B38(omObjData *object);
|
||||||
|
void fn_1_C28(void);
|
||||||
|
s32 fn_1_C90(void);
|
||||||
|
|
||||||
|
typedef struct m455_player {
|
||||||
|
u8 field0 : 1;
|
||||||
|
u8 field1 : 1;
|
||||||
|
u8 field2 : 1;
|
||||||
|
s16 unk2;
|
||||||
|
s16 unk4;
|
||||||
|
s8 unk6;
|
||||||
|
s8 unk7;
|
||||||
|
u16 unk8;
|
||||||
|
u16 unkA;
|
||||||
|
s32 unkC;
|
||||||
|
s16 unk10;
|
||||||
|
s16 unk12;
|
||||||
|
s16 unk14;
|
||||||
|
s16 unk16;
|
||||||
|
s32 unk18;
|
||||||
|
s32 unk1C;
|
||||||
|
u32 unk20;
|
||||||
|
s16 unk24;
|
||||||
|
s16 unk26;
|
||||||
|
s16 unk28;
|
||||||
|
s16 unk2A;
|
||||||
|
s16 unk2C;
|
||||||
|
s16 unk2E;
|
||||||
|
s16 unk30;
|
||||||
|
Vec unk34[2];
|
||||||
|
Vec unk4C;
|
||||||
|
s16 unk58;
|
||||||
|
s32 unk5C[4];
|
||||||
|
} M455Player;
|
||||||
|
|
||||||
|
s16 lbl_1_data_90 = -1;
|
||||||
|
s32 lbl_1_data_94 = -1;
|
||||||
|
s32 lbl_1_data_98 = -1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void fn_1_478(omObjData *object)
|
||||||
|
{
|
||||||
|
s32 i;
|
||||||
|
omObjData **playerList;
|
||||||
|
M455Player *player;
|
||||||
|
|
||||||
|
switch(fn_1_320()) {
|
||||||
|
case 0:
|
||||||
|
if(lbl_1_data_98 < 0) {
|
||||||
|
lbl_1_data_98 = HuAudFXPlay(1985);
|
||||||
|
}
|
||||||
|
if(--lbl_1_bss_2C == 0) {
|
||||||
|
fn_1_310(1);
|
||||||
|
lbl_1_bss_2C = 120;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
if(--lbl_1_bss_2C == 0) {
|
||||||
|
fn_1_310(2);
|
||||||
|
lbl_1_bss_4 = MGSeqStartCreate();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
if(!MGSeqStatGet(lbl_1_bss_4)) {
|
||||||
|
fn_1_310(3);
|
||||||
|
}
|
||||||
|
if(lbl_1_data_94 < 0 && (MGSeqStatGet(lbl_1_bss_4) & 0x10)) {
|
||||||
|
lbl_1_data_94 = HuAudSeqPlay(60);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
if(--lbl_1_bss_24 == 0) {
|
||||||
|
lbl_1_bss_26--;
|
||||||
|
if(lbl_1_data_90 >= 0) {
|
||||||
|
MGSeqParamSet(lbl_1_data_90, 1, lbl_1_bss_26);
|
||||||
|
}
|
||||||
|
lbl_1_bss_24 = 60;
|
||||||
|
if(lbl_1_bss_26 == 10) {
|
||||||
|
lbl_1_data_90 = MGSeqTimerCreate(10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(lbl_1_bss_16 >= 0) {
|
||||||
|
lbl_1_bss_16--;
|
||||||
|
}
|
||||||
|
if(lbl_1_bss_26 == 0 || fn_1_C90()) {
|
||||||
|
fn_1_310(4);
|
||||||
|
lbl_1_bss_4 = MGSeqFinishCreate();
|
||||||
|
HuAudSeqFadeOut(lbl_1_data_94, 100);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
if(lbl_1_data_90 >= 0) {
|
||||||
|
MGSeqParamSet(lbl_1_data_90, 2, -1);
|
||||||
|
lbl_1_data_90 = -1;
|
||||||
|
}
|
||||||
|
if(!MGSeqStatGet(lbl_1_bss_4)) {
|
||||||
|
fn_1_310(7);
|
||||||
|
lbl_1_bss_2C = 120;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 7:
|
||||||
|
if(--lbl_1_bss_2C == 0) {
|
||||||
|
fn_1_310(9);
|
||||||
|
if(lbl_1_bss_30 >= 0) {
|
||||||
|
HuAudSStreamPlay(1);
|
||||||
|
playerList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0);
|
||||||
|
for(i=0; i<4; i++) {
|
||||||
|
player = playerList[i]->data;
|
||||||
|
if(player->unk28 < 0) {
|
||||||
|
GWPlayerCoinWinSet(i, lbl_1_bss_22+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
HuAudSStreamPlay(4);
|
||||||
|
for(i=0; i<4; i++) {
|
||||||
|
GWPlayerCoinWinSet(i, 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lbl_1_bss_2C = 210;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 9:
|
||||||
|
if(--lbl_1_bss_2C == 0) {
|
||||||
|
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
|
||||||
|
HuAudFXStop(lbl_1_data_98);
|
||||||
|
object->func = fn_1_B38;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(lbl_1_bss_20) {
|
||||||
|
if(lbl_1_bss_20 >= 2) {
|
||||||
|
for(i=0; i<100; i++){
|
||||||
|
s32 srcIdx = (frand8()*lbl_1_bss_20) >> 8;
|
||||||
|
s32 dstIdx = (frand8()*lbl_1_bss_20) >> 8;
|
||||||
|
s32 temp = lbl_1_bss_18[srcIdx];
|
||||||
|
lbl_1_bss_18[srcIdx] = lbl_1_bss_18[dstIdx];
|
||||||
|
lbl_1_bss_18[dstIdx] = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
playerList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0);
|
||||||
|
for(i=0; i<lbl_1_bss_20; i++) {
|
||||||
|
lbl_1_bss_22++;
|
||||||
|
GWPlayerCoinWinSet(lbl_1_bss_18[i], lbl_1_bss_22);
|
||||||
|
player = playerList[lbl_1_bss_18[i]]->data;
|
||||||
|
player->unk28 = lbl_1_bss_22;
|
||||||
|
}
|
||||||
|
lbl_1_bss_20 = 0;
|
||||||
|
}
|
||||||
|
if(omSysExitReq && !WipeStatGet()) {
|
||||||
|
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
|
||||||
|
object->func = fn_1_B38;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_B38(omObjData *object)
|
||||||
|
{
|
||||||
|
if(WipeStatGet()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fn_1_C28();
|
||||||
|
fn_1_340C();
|
||||||
|
MGSeqKillAll();
|
||||||
|
HuAudFadeOut(1);
|
||||||
|
omOvlReturnEx(1, 1);
|
||||||
|
OSReport("******* M455Exit *********\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_D14(omObjData *object);
|
||||||
|
|
||||||
|
void fn_1_B94(Process *objman)
|
||||||
|
{
|
||||||
|
s32 i;
|
||||||
|
lbl_1_bss_28 = 0;
|
||||||
|
lbl_1_bss_14 = 3;
|
||||||
|
omMakeGroupEx(objman, 0, 4);
|
||||||
|
for(i=0; i<4; i++) {
|
||||||
|
omAddObjEx(objman, 5, 10, 50, 0, fn_1_D14);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_2010(omObjData *object);
|
||||||
|
|
||||||
|
void fn_1_C28(void)
|
||||||
|
{
|
||||||
|
s32 i;
|
||||||
|
omObjData **playerList;
|
||||||
|
playerList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0);
|
||||||
|
if(playerList == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for(i=0; i<4; i++) {
|
||||||
|
fn_1_2010(playerList[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 fn_1_C90(void)
|
||||||
|
{
|
||||||
|
s32 i;
|
||||||
|
omObjData **playerList;
|
||||||
|
playerList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0);
|
||||||
|
for(i=0; i<4; i++) {
|
||||||
|
M455Player *player = playerList[i]->data;
|
||||||
|
if(!player->field1) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 fn_1_3214(void);
|
||||||
|
|
||||||
|
u32 lbl_1_data_E0[5][2] = {
|
||||||
|
0x5F0000, 0,
|
||||||
|
0x540024, 1,
|
||||||
|
0x54001C, 1,
|
||||||
|
0x5F0017, 0,
|
||||||
|
0x5F0018, 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
Vec lbl_1_data_108[4] = {
|
||||||
|
{ -300, 0, -100 },
|
||||||
|
{ -100, 0, -100 },
|
||||||
|
{ 100, 0, -100 },
|
||||||
|
{ 300, 0, -100 },
|
||||||
|
};
|
||||||
|
|
||||||
|
void fn_1_1444(omObjData *object);
|
||||||
|
|
||||||
|
void fn_1_2060(ModelData *arg0, Mtx arg1);
|
||||||
|
|
||||||
|
void fn_1_D14(omObjData *object)
|
||||||
|
{
|
||||||
|
M455Player *player;
|
||||||
|
s32 charNo;
|
||||||
|
u32 i;
|
||||||
|
player = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M455Player), MEMORY_DEFAULT_NUM);
|
||||||
|
object->data = player;
|
||||||
|
memset(player, 0, sizeof(M455Player));
|
||||||
|
player->unk2 = lbl_1_bss_28++;
|
||||||
|
player->unk4 = GWPlayerCfg[player->unk2].pad_idx;
|
||||||
|
player->unkC = fn_1_3214();
|
||||||
|
charNo = GWPlayerCfg[player->unk2].character;
|
||||||
|
player->unk10 = charNo;
|
||||||
|
player->unk12 = GWPlayerCfg[player->unk2].diff;
|
||||||
|
player->unk14 = GWPlayerCfg[player->unk2].group;
|
||||||
|
object->model[0] = CharModelCreate(charNo, 8);
|
||||||
|
Hu3DModelShadowSet(object->model[0]);
|
||||||
|
Hu3DModelLayerSet(object->model[0], 3);
|
||||||
|
Hu3DModelCameraSet(object->model[0], HU3D_CAM0);
|
||||||
|
object->model[1] = Hu3DModelCreateFile(0x540002);
|
||||||
|
Hu3DModelHookSet(object->model[0], "test11_tex_we-itemhook-r", object->model[1]);
|
||||||
|
Hu3DModelAttrSet(object->model[1], HU3D_MOTATTR_SHAPE_PAUSE|HU3D_MOTATTR_PAUSE);
|
||||||
|
player->unk1C = 1;
|
||||||
|
for(i=0; i<5; i++) {
|
||||||
|
if(lbl_1_data_E0[i][1] == 0) {
|
||||||
|
object->motion[i] = CharModelMotionCreate(player->unk10, lbl_1_data_E0[i][0]);
|
||||||
|
} else {
|
||||||
|
object->motion[i] = CharModelMotionCreate(player->unk10, player->unk10+lbl_1_data_E0[i][0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Hu3DMotionSet(object->model[0], object->motion[player->unk1C]);
|
||||||
|
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP);
|
||||||
|
object->trans.x = lbl_1_data_108[player->unk2].x;
|
||||||
|
object->trans.y = lbl_1_data_108[player->unk2].y;
|
||||||
|
object->trans.z = lbl_1_data_108[player->unk2].z;
|
||||||
|
player->unk2A = espEntry(0x54000C, 0x8000, 0);
|
||||||
|
espDispOff(player->unk2A);
|
||||||
|
object->model[3] = Hu3DHookFuncCreate(fn_1_2060);
|
||||||
|
Hu3DModelLayerSet(object->model[3], 3);
|
||||||
|
Hu3DModelCameraSet(object->model[3], HU3D_CAM0);
|
||||||
|
Hu3DData[object->model[3]].unk_120 = object;
|
||||||
|
object->model[4] = Hu3DModelCreateFile(0x54000A);
|
||||||
|
Hu3DModelLayerSet(object->model[4], 3);
|
||||||
|
Hu3DModelCameraSet(object->model[4], HU3D_CAM0);
|
||||||
|
Hu3DModelShadowSet(object->model[4]);
|
||||||
|
i = Hu3DMotionCreateFile(0x54000B);
|
||||||
|
Hu3DMotionSet(object->model[4], i);
|
||||||
|
Hu3DModelAttrSet(object->model[4], HU3D_MOTATTR_LOOP);
|
||||||
|
Hu3DModelAttrSet(object->model[4], HU3D_MOTATTR_PAUSE);
|
||||||
|
player->unk4C.x = object->trans.x+(50.0f*((((s32)frand() & 0x1FF)-256.0f)/256.0f));
|
||||||
|
player->unk4C.y = -200;
|
||||||
|
player->unk4C.z = -1500;
|
||||||
|
Hu3DModelPosSetV(object->model[4], &player->unk4C);
|
||||||
|
Hu3DModelAttrSet(object->model[4], HU3D_ATTR_DISPOFF);
|
||||||
|
player->unk34[0].x = object->trans.x;
|
||||||
|
player->unk34[0].y = 0;
|
||||||
|
player->unk34[0].z = -500;
|
||||||
|
player->unk34[1].x = object->trans.x;
|
||||||
|
player->unk34[1].y = -200;
|
||||||
|
player->unk34[1].z = -1000;
|
||||||
|
CharModelDataClose(player->unk10);
|
||||||
|
object->rot.y = 180;
|
||||||
|
if(((s32)frand() & 0x1F) < 4-player->unk12) {
|
||||||
|
player->unk58 = lbl_1_bss_16-(60.0f*(0.05f*(4-player->unk12)))-((frand8()/256.0f)*6.0f);
|
||||||
|
if(player->unk58 < 0) {
|
||||||
|
player->unk58 = 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
player->unk58 = lbl_1_bss_16+(60.0f*(0.1f*(4-player->unk12)))+((frand8()/256.0f)*30.0f)+6.0f;
|
||||||
|
}
|
||||||
|
player->unk28 = -1;
|
||||||
|
object->func = fn_1_1444;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_1400(omObjData *object)
|
||||||
|
{
|
||||||
|
M455Player *player = object->data;
|
||||||
|
if(player->unk58 != 0) {
|
||||||
|
player->unk58--;
|
||||||
|
} else {
|
||||||
|
player->unkA |= PAD_BUTTON_A;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float lbl_1_data_154[4] = {
|
||||||
|
-350,
|
||||||
|
-170,
|
||||||
|
170,
|
||||||
|
350
|
||||||
|
};
|
||||||
|
|
||||||
|
float lbl_1_data_164[3] = {
|
||||||
|
1.5f,
|
||||||
|
1.0f,
|
||||||
|
0.5f
|
||||||
|
};
|
||||||
|
|
||||||
|
float fn_1_2390(float arg0, float arg1, float arg2);
|
||||||
|
s32 fn_1_24F0(Vec *arg0, Vec *arg1, float arg2);
|
||||||
|
|
||||||
|
void fn_1_1444(omObjData *object)
|
||||||
|
{
|
||||||
|
M455Player *temp_r31;
|
||||||
|
s32 temp_r29;
|
||||||
|
u32 temp_r28;
|
||||||
|
Vec sp24[3];
|
||||||
|
Vec sp18;
|
||||||
|
Vec spC;
|
||||||
|
float temp_f31;
|
||||||
|
|
||||||
|
|
||||||
|
temp_r31 = object->data;
|
||||||
|
temp_r29 = temp_r31->unk1C;
|
||||||
|
temp_r28 = temp_r31->unk20;
|
||||||
|
object->trans.y = fn_1_687C();
|
||||||
|
if(fn_1_320() < 3) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch(temp_r31->unk16) {
|
||||||
|
case 0:
|
||||||
|
if(fn_1_320() == 4 || lbl_1_bss_14 == 0) {
|
||||||
|
temp_r31->field1 = 1;
|
||||||
|
temp_r31->unk16 = 2;
|
||||||
|
espDispOff(temp_r31->unk2A);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(!GWPlayerCfg[temp_r31->unk2].iscom) {
|
||||||
|
temp_r31->unk6 = HuPadStkX[temp_r31->unk4];
|
||||||
|
temp_r31->unk7 = HuPadStkY[temp_r31->unk4];
|
||||||
|
temp_r31->unk8 = HuPadBtn[temp_r31->unk4];
|
||||||
|
temp_r31->unkA = HuPadBtnDown[temp_r31->unk4];
|
||||||
|
} else {
|
||||||
|
temp_r31->unk8 = temp_r31->unkA = 0;
|
||||||
|
temp_r31->unk6 = temp_r31->unk7 = 0;
|
||||||
|
fn_1_1400(object);
|
||||||
|
}
|
||||||
|
if(lbl_1_bss_16 == 0) {
|
||||||
|
if(temp_r31->unkC) {
|
||||||
|
omVibrate(temp_r31->unk2, 12, 12, 0);
|
||||||
|
} else {
|
||||||
|
sp18.x = object->trans.x;
|
||||||
|
sp18.y = object->trans.y+300;
|
||||||
|
sp18.z = object->trans.z;
|
||||||
|
Hu3D3Dto2D(&sp18, HU3D_CAM0, &sp18);
|
||||||
|
espPosSet(temp_r31->unk2A, sp18.x, sp18.y);
|
||||||
|
espDispOn(temp_r31->unk2A);
|
||||||
|
temp_r31->unk30 = 0;
|
||||||
|
}
|
||||||
|
temp_r31->unk2C = temp_r31->unk2E = 30;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(temp_r31->unkA & PAD_BUTTON_A) {
|
||||||
|
temp_r31->unk16 = 1;
|
||||||
|
temp_r31->unk24 = temp_r31->unk26 = 90;
|
||||||
|
temp_r31->unk2C = -1;
|
||||||
|
if(lbl_1_bss_16 <= 0) {
|
||||||
|
lbl_1_bss_18[lbl_1_bss_20++] = temp_r31->unk2;
|
||||||
|
}
|
||||||
|
Hu3DModelAttrReset(object->model[1], HU3D_MOTATTR_SHAPE_PAUSE|HU3D_MOTATTR_PAUSE);
|
||||||
|
Hu3DMotionSpeedSet(object->model[1], 1.2f);
|
||||||
|
Hu3DMotionShapeSpeedSet(object->model[1], 1.2f);
|
||||||
|
HuAudFXPlay(1986);
|
||||||
|
|
||||||
|
}
|
||||||
|
temp_r29 = 1;
|
||||||
|
temp_r28 = HU3D_MOTATTR_LOOP;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
temp_r29 = 2;
|
||||||
|
temp_r28 = HU3D_MOTATTR_NONE;
|
||||||
|
if(!temp_r31->field0) {
|
||||||
|
if(temp_r31->unk28 >= 0 && temp_r31->unk28 < 3) {
|
||||||
|
temp_r31->field0 = 1;
|
||||||
|
if(temp_r31->unk28 == 0) {
|
||||||
|
lbl_1_bss_30 = temp_r31->unk2;
|
||||||
|
}
|
||||||
|
temp_f31 = lbl_1_data_164[temp_r31->unk28];
|
||||||
|
Hu3DModelScaleSet(object->model[4], temp_f31, temp_f31, temp_f31);
|
||||||
|
Hu3DModelAttrReset(object->model[4], HU3D_ATTR_DISPOFF);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
temp_f31 = 1.0f-((float)temp_r31->unk24/temp_r31->unk26);
|
||||||
|
sp24[0].x = temp_r31->unk4C.x;
|
||||||
|
sp24[0].y = temp_r31->unk4C.y;
|
||||||
|
sp24[0].z = temp_r31->unk4C.z;
|
||||||
|
sp24[1].x = object->trans.x;
|
||||||
|
sp24[1].y = object->trans.y+1500;
|
||||||
|
sp24[1].z = object->trans.z-200;
|
||||||
|
sp24[2].x = lbl_1_data_154[temp_r31->unk2];
|
||||||
|
sp24[2].y = 0;
|
||||||
|
sp24[2].z = 150;
|
||||||
|
fn_1_24F0(sp24, &sp18, temp_f31);
|
||||||
|
VECSubtract(&sp18, &Hu3DData[object->model[4]].pos, &spC);
|
||||||
|
Hu3DModelRotSet(object->model[4], atan2d(-spC.y, VECMagXZ(&spC)), atan2d(spC.x, spC.z), 0);
|
||||||
|
Hu3DModelPosSetV(object->model[4], &sp18);
|
||||||
|
if(sp18.y > 0.0f) {
|
||||||
|
if(!temp_r31->field2 && temp_r31->field0) {
|
||||||
|
fn_1_6CB0(&sp18, -1);
|
||||||
|
fn_1_6698(&sp18, -1, -1, -1);
|
||||||
|
temp_r31->field2 = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
temp_r31->unk34[0].x = temp_f31*(2.0f*lbl_1_data_154[temp_r31->unk2]);
|
||||||
|
temp_r31->unk34[0].y = -200.0f+(-400.0f*temp_f31);
|
||||||
|
temp_r31->unk34[0].z = -500.0f+(-1500.0f*temp_f31);
|
||||||
|
temp_r31->unk34[1].x = temp_f31*lbl_1_data_154[temp_r31->unk2];
|
||||||
|
temp_r31->unk34[1].y = -200.0f+(400.0f*temp_f31);
|
||||||
|
temp_r31->unk34[1].z = -1000.0f+(750.0f*temp_f31);
|
||||||
|
if(--temp_r31->unk24 == 0) {
|
||||||
|
temp_r31->unk16 = 2;
|
||||||
|
temp_r31->field1 = 1;
|
||||||
|
if(temp_r31->field0) {
|
||||||
|
Hu3DModelAttrReset(object->model[4], HU3D_MOTATTR_PAUSE);
|
||||||
|
Hu3DModelRotSet(object->model[4], 0, 0, 0);
|
||||||
|
lbl_1_bss_14--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
if(fn_1_320() == 7) {
|
||||||
|
temp_r31->unk16 = 3;
|
||||||
|
Hu3DModelObjPosGet(object->model[0], "test11_tex_we-itemhook-r", &sp18);
|
||||||
|
CharModelEffectCreate(1, &sp18);
|
||||||
|
Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF);
|
||||||
|
Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
if(fn_1_320() < 9) {
|
||||||
|
temp_r29 = 0;
|
||||||
|
temp_r28 = HU3D_MOTATTR_LOOP;
|
||||||
|
} else {
|
||||||
|
object->rot.y = fn_1_2390(object->rot.y, 0, 0.2f);
|
||||||
|
if(temp_r31->unk2 == lbl_1_bss_30) {
|
||||||
|
temp_r29 = 3;
|
||||||
|
temp_r28 = HU3D_MOTATTR_NONE;
|
||||||
|
} else {
|
||||||
|
temp_r29 = 4;
|
||||||
|
temp_r28 = HU3D_MOTATTR_NONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(temp_r31->unk2C) {
|
||||||
|
if(temp_r31->unk2C >= 0) {
|
||||||
|
temp_f31 = (0.5*sind((90.0f*(float)temp_r31->unk2C)/(float)temp_r31->unk2E))+0.5;
|
||||||
|
espScaleSet(temp_r31->unk2A, temp_f31, temp_f31);
|
||||||
|
if(--temp_r31->unk2C == 0) {
|
||||||
|
temp_r31->unk2C = temp_r31->unk2E;
|
||||||
|
}
|
||||||
|
temp_r31->unk30++;
|
||||||
|
} else {
|
||||||
|
if(temp_r31->unk30 > 30.0f) {
|
||||||
|
espDispOff(temp_r31->unk2A);
|
||||||
|
temp_r31->unk2C = 0;
|
||||||
|
} else {
|
||||||
|
temp_r31->unk30++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(temp_r31->unk16 >= 2 && temp_r31->unk16 <= 3 && temp_r31->field0) {
|
||||||
|
Hu3DData[object->model[4]].rot.y += 2.0f;
|
||||||
|
if(0.0f == Hu3DData[object->model[4]].unk_64) {
|
||||||
|
HuAudFXPlay(1987);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((temp_r29 >= 0 && temp_r29 != temp_r31->unk1C) || temp_r28 != temp_r31->unk20) {
|
||||||
|
temp_r31->unk1C = temp_r29;
|
||||||
|
temp_r31->unk20 = temp_r28;
|
||||||
|
CharModelMotionShiftSet(temp_r31->unk10, object->motion[temp_r31->unk1C], 0, 8, temp_r28);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_2010(omObjData *object)
|
||||||
|
{
|
||||||
|
M455Player *player = object->data;
|
||||||
|
if(object->data != NULL) {
|
||||||
|
HuMemDirectFree(object->data);
|
||||||
|
object->data = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GXColor lbl_1_data_170 = { 255, 255, 255, 255 };
|
||||||
|
|
||||||
|
void fn_1_27A0(Vec *arg0, Vec *arg1, float arg2);
|
||||||
|
|
||||||
|
void fn_1_2060(ModelData *arg0, Mtx arg1)
|
||||||
|
{
|
||||||
|
Vec vtxPos[4];
|
||||||
|
Mtx mtxHook;
|
||||||
|
|
||||||
|
Vec pos;
|
||||||
|
Vec itemHookPos;
|
||||||
|
s32 i;
|
||||||
|
omObjData *object = arg0->unk_120;
|
||||||
|
M455Player *player = object->data;
|
||||||
|
ModelData *modelPuku = &Hu3DData[object->model[4]];
|
||||||
|
GXLoadPosMtxImm(arg1, GX_PNMTX0);
|
||||||
|
GXSetNumChans(1);
|
||||||
|
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE);
|
||||||
|
GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_170);
|
||||||
|
GXSetNumTexGens(0);
|
||||||
|
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
|
||||||
|
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
|
||||||
|
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0);
|
||||||
|
GXSetNumTevStages(1);
|
||||||
|
GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
|
||||||
|
GXClearVtxDesc();
|
||||||
|
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
|
||||||
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
|
||||||
|
Hu3DModelObjMtxGet(object->model[0], "test11_tex_we-itemhook-r", mtxHook);
|
||||||
|
Hu3DModelObjPosGet(object->model[1], "hook", &pos);
|
||||||
|
MTXMultVec(mtxHook, &pos, &vtxPos[0]);
|
||||||
|
for(i=0; i<2; i++) {
|
||||||
|
vtxPos[i+1].x = player->unk34[i].x;
|
||||||
|
vtxPos[i+1].y = player->unk34[i].y;
|
||||||
|
vtxPos[i+1].z = player->unk34[i].z;
|
||||||
|
}
|
||||||
|
if(player->field0) {
|
||||||
|
Mtx hookMtx;
|
||||||
|
Vec hookPos;
|
||||||
|
Hu3DModelObjMtxGet(object->model[4], "itemhook_C", hookMtx);
|
||||||
|
hookPos.x = 0;
|
||||||
|
hookPos.y = -60.000004f;
|
||||||
|
hookPos.z = 35.0f;
|
||||||
|
MTXMultVec(hookMtx, &hookPos, &vtxPos[3]);
|
||||||
|
} else {
|
||||||
|
vtxPos[3].x = modelPuku->pos.x;
|
||||||
|
vtxPos[3].y = modelPuku->pos.y;
|
||||||
|
vtxPos[3].z = modelPuku->pos.z;
|
||||||
|
}
|
||||||
|
GXBegin(GX_LINESTRIP, GX_VTXFMT0, 20);
|
||||||
|
for(i=0; i<20; i++) {
|
||||||
|
fn_1_27A0(vtxPos, &pos, i/19.0f);
|
||||||
|
GXPosition3f32(pos.x, pos.y, pos.z);
|
||||||
|
}
|
||||||
|
GXEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
float fn_1_2390(float arg0, float arg1, float arg2)
|
||||||
|
{
|
||||||
|
float temp_f31 = fmod(arg1-arg0, 360);
|
||||||
|
float temp_f30;
|
||||||
|
if(temp_f31 < 0) {
|
||||||
|
temp_f31 += 360.0f;
|
||||||
|
}
|
||||||
|
if(temp_f31 > 180) {
|
||||||
|
temp_f31 -= 360.0f;
|
||||||
|
}
|
||||||
|
temp_f30 = fmod(arg0+(arg2*temp_f31), 360);
|
||||||
|
if(temp_f30 < 0) {
|
||||||
|
temp_f30 += 360.0f;
|
||||||
|
}
|
||||||
|
return temp_f30;
|
||||||
|
}
|
||||||
|
|
||||||
|
float fn_1_2494(float arg0, float arg1, float arg2, float arg3)
|
||||||
|
{
|
||||||
|
float temp_f31 = 1.0f-arg3;
|
||||||
|
return (arg0*(temp_f31*temp_f31))+((2.0f*temp_f31)*arg3*arg1)+(arg2*(arg3*arg3));
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 fn_1_24F0(Vec *arg0, Vec *arg1, float arg2)
|
||||||
|
{
|
||||||
|
arg1->x = fn_1_2494(arg0[0].x, arg0[1].x, arg0[2].x, arg2);
|
||||||
|
arg1->y = fn_1_2494(arg0[0].y, arg0[1].y, arg0[2].y, arg2);
|
||||||
|
arg1->z = fn_1_2494(arg0[0].z, arg0[1].z, arg0[2].z, arg2);
|
||||||
|
}
|
||||||
|
|
||||||
|
float fn_1_26F8(float arg0, float arg1, float arg2, float arg3, float arg4)
|
||||||
|
{
|
||||||
|
float temp_f31 = 1.0f-arg0;
|
||||||
|
float temp_f30 = temp_f31*temp_f31;
|
||||||
|
float temp_f29 = temp_f31*temp_f31*temp_f31;
|
||||||
|
return (arg4 * (arg0 * (arg0 * arg0))) + ((arg3 * (arg0 * (3.0f * temp_f31 * arg0))) + ((temp_f29 * arg1) + (arg2 * (3.0f * temp_f30 * arg0))));
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_27A0(Vec *arg0, Vec *arg1, float arg2)
|
||||||
|
{
|
||||||
|
arg1->x = fn_1_26F8(arg2, arg0[0].x, arg0[1].x, arg0[2].x, arg0[3].x);
|
||||||
|
arg1->y = fn_1_26F8(arg2, arg0[0].y, arg0[1].y, arg0[2].y, arg0[3].y);
|
||||||
|
arg1->z = fn_1_26F8(arg2, arg0[0].z, arg0[1].z, arg0[2].z, arg0[3].z);
|
||||||
|
}
|
||||||
|
|
||||||
|
float lbl_1_data_184[2] = {};
|
||||||
|
|
||||||
|
void fn_1_2AF4(s32 arg0, s32 arg1, float arg2);
|
||||||
|
|
||||||
|
void fn_1_2D44(omObjData *object);
|
||||||
|
|
||||||
|
void fn_1_2A90(Process *objman)
|
||||||
|
{
|
||||||
|
fn_1_2AF4(0, 0, 0);
|
||||||
|
lbl_1_bss_40 = omAddObjEx(objman, 10, 0, 0, -1, fn_1_2D44);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_2AF4(s32 arg0, s32 arg1, float arg2)
|
||||||
|
{
|
||||||
|
CZoom = lbl_1_data_0[arg0].zoom+(arg2*(lbl_1_data_0[arg1].zoom-lbl_1_data_0[arg0].zoom));
|
||||||
|
Center.x = lbl_1_data_0[arg0].pos.x+(arg2*(lbl_1_data_0[arg1].pos.x-lbl_1_data_0[arg0].pos.x));
|
||||||
|
Center.y = lbl_1_data_0[arg0].pos.y+(arg2*(lbl_1_data_0[arg1].pos.y-lbl_1_data_0[arg0].pos.y));
|
||||||
|
Center.z = lbl_1_data_0[arg0].pos.z+(arg2*(lbl_1_data_0[arg1].pos.z-lbl_1_data_0[arg0].pos.z));
|
||||||
|
CRot.x = lbl_1_data_0[arg0].rot.x+(arg2*(lbl_1_data_0[arg1].rot.x-lbl_1_data_0[arg0].rot.x));
|
||||||
|
CRot.y = lbl_1_data_0[arg0].rot.y+(arg2*(lbl_1_data_0[arg1].rot.y-lbl_1_data_0[arg0].rot.y));
|
||||||
|
CRot.z = lbl_1_data_0[arg0].rot.z+(arg2*(lbl_1_data_0[arg1].rot.z-lbl_1_data_0[arg0].rot.z));
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_2D44(omObjData *object)
|
||||||
|
{
|
||||||
|
CameraData *camera = &Hu3DCamera[0];
|
||||||
|
switch(fn_1_320()) {
|
||||||
|
case 1:
|
||||||
|
fn_1_2AF4(0, 1, sind(lbl_1_data_184[0]*90.0f));
|
||||||
|
if(lbl_1_data_184[0] < 1.0f) {
|
||||||
|
lbl_1_data_184[0] += 1.0f/60.0f;
|
||||||
|
if(lbl_1_data_184[0] > 1.0f) {
|
||||||
|
lbl_1_data_184[0] = 1.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 6:
|
||||||
|
fn_1_2AF4(1, 1, 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
case 5:
|
||||||
|
case 7:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 lbl_1_data_18C[4] = { PAD_CHAN0_BIT, PAD_CHAN1_BIT, PAD_CHAN2_BIT, PAD_CHAN3_BIT };
|
||||||
|
s32 fn_1_3214(void)
|
||||||
|
{
|
||||||
|
s32 rumble = HuPadRumbleGet();
|
||||||
|
s32 i;
|
||||||
|
for(i=0; i<4; i++) {
|
||||||
|
if(!GWPlayerCfg[i].iscom) {
|
||||||
|
if((rumble & lbl_1_data_18C[GWPlayerCfg[i].pad_idx]) == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return GWGameStat.rumble;
|
||||||
|
}
|
||||||
|
|
||||||
|
float lbl_1_data_19C[] = { 0,355,0,0,0,275,128,950,6,0,0,0,190,0,550 };
|
||||||
Loading…
Add table
Add a link
Reference in a new issue