Merge pull request #405 from gamemasterplc/main
Add attribute and camera defines
This commit is contained in:
commit
dc3ada0adc
6 changed files with 280 additions and 204 deletions
|
|
@ -6,6 +6,76 @@
|
||||||
#include "game/memory.h"
|
#include "game/memory.h"
|
||||||
#include "game/data.h"
|
#include "game/data.h"
|
||||||
|
|
||||||
|
#define HU3D_MODEL_MAX 512
|
||||||
|
#define HU3D_MOTION_MAX 256
|
||||||
|
#define HU3D_TEXANIM_MAX 256
|
||||||
|
#define HU3D_TEXSCROLL_MAX 16
|
||||||
|
|
||||||
|
#define HU3D_MOTATTR 0x40000000
|
||||||
|
|
||||||
|
#define HU3D_MOTATTR_LOOP 0x40000001
|
||||||
|
#define HU3D_MOTATTR_PAUSE 0x40000002
|
||||||
|
#define HU3D_MOTATTR_REV 0x40000004
|
||||||
|
#define HU3D_MOTATTR_SHIFT_LOOP 0x40000008
|
||||||
|
#define HU3D_MOTATTR_SHIFT_PAUSE 0x40000010
|
||||||
|
#define HU3D_MOTATTR_SHIFT_REV 0x40000020
|
||||||
|
#define HU3D_MOTATTR_SHAPE_LOOP 0x40000040
|
||||||
|
#define HU3D_MOTATTR_SHAPE_PAUSE 0x40000080
|
||||||
|
#define HU3D_MOTATTR_SHAPE_REV 0x40000100
|
||||||
|
#define HU3D_MOTATTR_OVL_LOOP 0x40000200
|
||||||
|
#define HU3D_MOTATTR_OVL_PAUSE 0x40000400
|
||||||
|
#define HU3D_MOTATTR_OVL_REV 0x40000800
|
||||||
|
|
||||||
|
#define HU3D_CLUSTER_ATTR ((s32)0xC0000000)
|
||||||
|
#define HU3D_CLUSTER_ATTR_LOOP ((s32)0xC0000001)
|
||||||
|
#define HU3D_CLUSTER_ATTR_PAUSE ((s32)0xC0000002)
|
||||||
|
#define HU3D_CLUSTER_ATTR_REV ((s32)0xC0000004)
|
||||||
|
|
||||||
|
#define HU3D_ATTR_NONE 0
|
||||||
|
|
||||||
|
#define HU3D_ATTR_DISPOFF 0x1
|
||||||
|
#define HU3D_ATTR_ZWRITE_OFF 0x2
|
||||||
|
#define HU3D_ATTR_SHADOW 0x4
|
||||||
|
#define HU3D_ATTR_MOTION_OFF 0x8
|
||||||
|
#define HU3D_ATTR_HOOKFUNC 0x10
|
||||||
|
#define HU3D_ATTR_PARTICLE_KILL 0x20
|
||||||
|
#define HU3D_ATTR_TEX_NEAR 0x40
|
||||||
|
#define HU3D_ATTR_ENVELOPE_OFF 0x80
|
||||||
|
#define HU3D_ATTR_MOT_SLOW 0x100
|
||||||
|
#define HU3D_ATTR_TOON_MAP 0x200
|
||||||
|
#define HU3D_ATTR_CLUSTER_ON 0x400
|
||||||
|
#define HU3D_ATTR_MOT_EXEC 0x800
|
||||||
|
#define HU3D_ATTR_LLIGHT 0x1000
|
||||||
|
#define HU3D_ATTR_CAMERA_MOTON 0x2000
|
||||||
|
#define HU3D_ATTR_NOCULL 0x4000
|
||||||
|
#define HU3D_ATTR_HOOK 0x8000
|
||||||
|
#define HU3D_ATTR_CAMERA 0x10000
|
||||||
|
#define HU3D_ATTR_HILITE 0x20000
|
||||||
|
#define HU3D_ATTR_TPLVL_SET 0x40000
|
||||||
|
#define HU3D_ATTR_CURVE_MOTOFF 0x80000
|
||||||
|
#define HU3D_ATTR_LINK 0x100000
|
||||||
|
#define HU3D_ATTR_NOPAUSE 0x200000
|
||||||
|
#define HU3D_ATTR_ZCMP_OFF 0x400000
|
||||||
|
#define HU3D_ATTR_CULL_FRONT 0x800000
|
||||||
|
|
||||||
|
#define HU3D_CAM0 (1 << 0)
|
||||||
|
#define HU3D_CAM1 (1 << 1)
|
||||||
|
#define HU3D_CAM2 (1 << 2)
|
||||||
|
#define HU3D_CAM3 (1 << 3)
|
||||||
|
#define HU3D_CAM4 (1 << 4)
|
||||||
|
#define HU3D_CAM5 (1 << 5)
|
||||||
|
#define HU3D_CAM6 (1 << 6)
|
||||||
|
#define HU3D_CAM7 (1 << 7)
|
||||||
|
#define HU3D_CAM8 (1 << 8)
|
||||||
|
#define HU3D_CAM9 (1 << 9)
|
||||||
|
#define HU3D_CAM10 (1 << 10)
|
||||||
|
#define HU3D_CAM11 (1 << 11)
|
||||||
|
#define HU3D_CAM12 (1 << 12)
|
||||||
|
#define HU3D_CAM13 (1 << 13)
|
||||||
|
#define HU3D_CAM14 (1 << 14)
|
||||||
|
#define HU3D_CAM15 (1 << 15)
|
||||||
|
#define HU3D_CAM_MAX 16
|
||||||
|
|
||||||
#define Hu3DModelCreateFile(data_id) (Hu3DModelCreate(HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA)))
|
#define Hu3DModelCreateFile(data_id) (Hu3DModelCreate(HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA)))
|
||||||
|
|
||||||
typedef struct particle_data ParticleData;
|
typedef struct particle_data ParticleData;
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ u32 frand(void);
|
||||||
|
|
||||||
extern u32 GlobalCounter;
|
extern u32 GlobalCounter;
|
||||||
|
|
||||||
Hu3DTexAnimDataStruct Hu3DTexAnimData[256];
|
Hu3DTexAnimDataStruct Hu3DTexAnimData[HU3D_TEXANIM_MAX];
|
||||||
Hu3DTexScrDataStruct Hu3DTexScrData[16];
|
Hu3DTexScrDataStruct Hu3DTexScrData[16];
|
||||||
static Process *parManProc[64];
|
static Process *parManProc[64];
|
||||||
|
|
||||||
|
|
@ -42,11 +42,11 @@ void Hu3DAnimInit(void) {
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
var_r30 = Hu3DTexAnimData;
|
var_r30 = Hu3DTexAnimData;
|
||||||
for (i = 0; i < 256; i++, var_r30++) {
|
for (i = 0; i < HU3D_TEXANIM_MAX; i++, var_r30++) {
|
||||||
var_r30->unk06 = -1;
|
var_r30->unk06 = -1;
|
||||||
}
|
}
|
||||||
var_r29 = Hu3DTexScrData;
|
var_r29 = Hu3DTexScrData;
|
||||||
for (i = 0; i < 16; i++, var_r29++) {
|
for (i = 0; i < HU3D_TEXSCROLL_MAX; i++, var_r29++) {
|
||||||
var_r29->unk02 = -1;
|
var_r29->unk02 = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -61,12 +61,12 @@ s16 Hu3DAnimCreate(void *arg0, s16 arg1, char *arg2) {
|
||||||
s16 var_r28;
|
s16 var_r28;
|
||||||
|
|
||||||
var_r31 = Hu3DTexAnimData;
|
var_r31 = Hu3DTexAnimData;
|
||||||
for (var_r28 = 0; var_r28 < 256; var_r28++, var_r31++) {
|
for (var_r28 = 0; var_r28 < HU3D_TEXANIM_MAX; var_r28++, var_r31++) {
|
||||||
if (var_r31->unk06 == -1) {
|
if (var_r31->unk06 == -1) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r28 == 256) {
|
if (var_r28 == HU3D_TEXANIM_MAX) {
|
||||||
OSReport("Error: TexAnim Over\n");
|
OSReport("Error: TexAnim Over\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
@ -118,12 +118,12 @@ s16 Hu3DAnimLink(s16 arg0, s16 arg1, char *arg2) {
|
||||||
s16 var_r25;
|
s16 var_r25;
|
||||||
|
|
||||||
var_r31 = Hu3DTexAnimData;
|
var_r31 = Hu3DTexAnimData;
|
||||||
for (var_r28 = 0; var_r28 < 256; var_r28++, var_r31++) {
|
for (var_r28 = 0; var_r28 < HU3D_TEXANIM_MAX; var_r28++, var_r31++) {
|
||||||
if (var_r31->unk06 == -1) {
|
if (var_r31->unk06 == -1) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r28 == 256) {
|
if (var_r28 == HU3D_TEXANIM_MAX) {
|
||||||
OSReport("Error: TexAnim Over\n");
|
OSReport("Error: TexAnim Over\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
@ -190,7 +190,7 @@ void Hu3DAnimModelKill(s16 arg0) {
|
||||||
Hu3DTexAnimDataStruct *var_r26 = &Hu3DTexAnimData[0];
|
Hu3DTexAnimDataStruct *var_r26 = &Hu3DTexAnimData[0];
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
for (i = 0; i < 256; i++, var_r26++) {
|
for (i = 0; i < HU3D_TEXANIM_MAX; i++, var_r26++) {
|
||||||
if (var_r26->unk06 == arg0) {
|
if (var_r26->unk06 == arg0) {
|
||||||
Hu3DAnimKill(i);
|
Hu3DAnimKill(i);
|
||||||
}
|
}
|
||||||
|
|
@ -201,7 +201,7 @@ void Hu3DAnimAllKill(void) {
|
||||||
Hu3DTexAnimDataStruct *var_r26 = &Hu3DTexAnimData[0];
|
Hu3DTexAnimDataStruct *var_r26 = &Hu3DTexAnimData[0];
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
for (i = 0; i < 256; i++, var_r26++) {
|
for (i = 0; i < HU3D_TEXANIM_MAX; i++, var_r26++) {
|
||||||
if (var_r26->unk06 != -1) {
|
if (var_r26->unk06 != -1) {
|
||||||
Hu3DAnimKill(i);
|
Hu3DAnimKill(i);
|
||||||
}
|
}
|
||||||
|
|
@ -265,7 +265,7 @@ s32 Hu3DAnimSet(ModelData *arg0, HsfAttribute *arg1, s16 arg2) {
|
||||||
temp_r31 = temp_r25->layer;
|
temp_r31 = temp_r25->layer;
|
||||||
temp_r28 = &temp_r27->bmp[temp_r31->bmpNo];
|
temp_r28 = &temp_r27->bmp[temp_r31->bmpNo];
|
||||||
HuSprTexLoad(temp_r29->unk10, temp_r31->bmpNo, arg2, var_r23, var_r22,
|
HuSprTexLoad(temp_r29->unk10, temp_r31->bmpNo, arg2, var_r23, var_r22,
|
||||||
(arg0->attr & 0x40) ? GX_NEAR : GX_LINEAR);
|
(arg0->attr & HU3D_ATTR_TEX_NEAR) ? GX_NEAR : GX_LINEAR);
|
||||||
temp_r30->unk2C = (float) temp_r31->sizeX / temp_r28->sizeX;
|
temp_r30->unk2C = (float) temp_r31->sizeX / temp_r28->sizeX;
|
||||||
temp_r30->unk30 = (float) temp_r31->sizeY / temp_r28->sizeY;
|
temp_r30->unk30 = (float) temp_r31->sizeY / temp_r28->sizeY;
|
||||||
temp_r30->unk34.x = (float) temp_r31->startX / temp_r28->sizeX;
|
temp_r30->unk34.x = (float) temp_r31->startX / temp_r28->sizeX;
|
||||||
|
|
@ -283,7 +283,7 @@ void Hu3DAnimExec(void) {
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
var_r30 = Hu3DTexAnimData;
|
var_r30 = Hu3DTexAnimData;
|
||||||
for (i = 0; i < 256; i++, var_r30++) {
|
for (i = 0; i < HU3D_TEXANIM_MAX; i++, var_r30++) {
|
||||||
if (var_r30->unk06 != -1 && (Hu3DPauseF == 0 || (var_r30->unk00 & 0x20))) {
|
if (var_r30->unk06 != -1 && (Hu3DPauseF == 0 || (var_r30->unk00 & 0x20))) {
|
||||||
var_r25 = var_r30->unk10;
|
var_r25 = var_r30->unk10;
|
||||||
temp_r28 = &var_r25->bank[var_r30->unk02];
|
temp_r28 = &var_r25->bank[var_r30->unk02];
|
||||||
|
|
@ -312,7 +312,7 @@ void Hu3DAnimExec(void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var_r31 = Hu3DTexScrData;
|
var_r31 = Hu3DTexScrData;
|
||||||
for (i = 0; i < 16; i++, var_r31++) {
|
for (i = 0; i < HU3D_TEXSCROLL_MAX; i++, var_r31++) {
|
||||||
if (var_r31->unk02 != -1) {
|
if (var_r31->unk02 != -1) {
|
||||||
if (Hu3DPauseF != 0 && !(var_r31->unk00 & 8)) {
|
if (Hu3DPauseF != 0 && !(var_r31->unk00 & 8)) {
|
||||||
PSMTXRotRad(var_r31->unk3C, 'Z', MTXDegToRad(var_r31->unk34));
|
PSMTXRotRad(var_r31->unk3C, 'Z', MTXDegToRad(var_r31->unk34));
|
||||||
|
|
@ -365,12 +365,12 @@ s16 Hu3DTexScrollCreate(s16 arg0, char *arg1) {
|
||||||
s16 var_r28;
|
s16 var_r28;
|
||||||
|
|
||||||
var_r31 = Hu3DTexScrData;
|
var_r31 = Hu3DTexScrData;
|
||||||
for (var_r28 = 0; var_r28 < 16; var_r28++, var_r31++) {
|
for (var_r28 = 0; var_r28 < HU3D_TEXSCROLL_MAX; var_r28++, var_r31++) {
|
||||||
if (var_r31->unk02 == -1) {
|
if (var_r31->unk02 == -1) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r28 == 16) {
|
if (var_r28 == HU3D_TEXSCROLL_MAX) {
|
||||||
OSReport("Error: TexScroll Over\n");
|
OSReport("Error: TexScroll Over\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
@ -434,7 +434,7 @@ void Hu3DTexScrollAllKill(void) {
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
var_r27 = Hu3DTexScrData;
|
var_r27 = Hu3DTexScrData;
|
||||||
for (i = 0; i < 16; i++, var_r27++) {
|
for (i = 0; i < HU3D_TEXSCROLL_MAX; i++, var_r27++) {
|
||||||
if (var_r27->unk02 != -1) {
|
if (var_r27->unk02 != -1) {
|
||||||
Hu3DTexScrollKill(i);
|
Hu3DTexScrollKill(i);
|
||||||
}
|
}
|
||||||
|
|
@ -689,7 +689,7 @@ static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1) {
|
||||||
PSMTXIdentity(sp128);
|
PSMTXIdentity(sp128);
|
||||||
}
|
}
|
||||||
PSMTXReorder(sp128, sp8);
|
PSMTXReorder(sp128, sp8);
|
||||||
if ((Hu3DPauseF == 0 || (arg0->attr & 0x200000)) && temp_r31->unk_54 && temp_r31->unk_38 != GlobalCounter) {
|
if ((Hu3DPauseF == 0 || (arg0->attr & HU3D_ATTR_NOPAUSE)) && temp_r31->unk_54 && temp_r31->unk_38 != GlobalCounter) {
|
||||||
var_r17 = temp_r31->unk_54;
|
var_r17 = temp_r31->unk_54;
|
||||||
var_r17(arg0, temp_r31, arg1);
|
var_r17(arg0, temp_r31, arg1);
|
||||||
}
|
}
|
||||||
|
|
@ -758,7 +758,7 @@ static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1) {
|
||||||
} else {
|
} else {
|
||||||
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO);
|
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO);
|
||||||
}
|
}
|
||||||
if (arg0->attr & 2) {
|
if (arg0->attr & HU3D_ATTR_ZWRITE_OFF) {
|
||||||
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
|
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
|
||||||
} else {
|
} else {
|
||||||
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE);
|
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE);
|
||||||
|
|
@ -774,7 +774,7 @@ static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1) {
|
||||||
var_r28 = &temp_r25->frame[temp_r31->unk_22];
|
var_r28 = &temp_r25->frame[temp_r31->unk_22];
|
||||||
temp_r21 = &temp_r22->pat[var_r28->pat];
|
temp_r21 = &temp_r22->pat[var_r28->pat];
|
||||||
HuSprTexLoad(temp_r31->unk_44, temp_r21->layer->bmpNo, 0, GX_CLAMP, GX_CLAMP, GX_LINEAR);
|
HuSprTexLoad(temp_r31->unk_44, temp_r21->layer->bmpNo, 0, GX_CLAMP, GX_CLAMP, GX_LINEAR);
|
||||||
if (Hu3DPauseF == 0 || (arg0->attr & 0x200000)) {
|
if (Hu3DPauseF == 0 || (arg0->attr & HU3D_ATTR_NOPAUSE)) {
|
||||||
for (i = 0; i < (s32) temp_r31->unk_24 * minimumVcount; i++) {
|
for (i = 0; i < (s32) temp_r31->unk_24 * minimumVcount; i++) {
|
||||||
temp_r31->unk_28 += 1.0f;
|
temp_r31->unk_28 += 1.0f;
|
||||||
if (temp_r31->unk_28 >= var_r28->time) {
|
if (temp_r31->unk_28 >= var_r28->time) {
|
||||||
|
|
@ -1079,7 +1079,7 @@ static void ParManFunc(void) {
|
||||||
temp_r30 = temp_r31->unk3C;
|
temp_r30 = temp_r31->unk3C;
|
||||||
temp_r27 = &Hu3DData[temp_r31->unk00];
|
temp_r27 = &Hu3DData[temp_r31->unk00];
|
||||||
while (1) {
|
while (1) {
|
||||||
if (Hu3DPauseF != 0 && !(temp_r27->attr & 0x200000)) {
|
if (Hu3DPauseF != 0 && !(temp_r27->attr & HU3D_ATTR_NOPAUSE)) {
|
||||||
HuPrcVSleep();
|
HuPrcVSleep();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -1229,7 +1229,7 @@ static void ParManHook(ModelData *model, ParticleData *particle, Mtx matrix) {
|
||||||
s16 sp8;
|
s16 sp8;
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
if (Hu3DPauseF == 0 || (model->attr & 0x200000)) {
|
if (Hu3DPauseF == 0 || (model->attr & HU3D_ATTR_NOPAUSE)) {
|
||||||
var_r29 = particle->unk_48;
|
var_r29 = particle->unk_48;
|
||||||
for (i = 0; i < particle->unk_30; i++, var_r29++) {
|
for (i = 0; i < particle->unk_30; i++, var_r29++) {
|
||||||
if (var_r29->unk2C) {
|
if (var_r29->unk2C) {
|
||||||
|
|
|
||||||
|
|
@ -46,13 +46,13 @@ void GXResetWriteGatherPipe(void);
|
||||||
|
|
||||||
static const Vec lbl_8011DD20 = { 0.0f, 0.0f, -1.0f };
|
static const Vec lbl_8011DD20 = { 0.0f, 0.0f, -1.0f };
|
||||||
|
|
||||||
static HsfDrawObject DrawObjData[512];
|
static HsfDrawObject DrawObjData[HU3D_MODEL_MAX];
|
||||||
static HsfAttribute *BmpPtrBak[8];
|
static HsfAttribute *BmpPtrBak[8];
|
||||||
static Mtx MTXBuf[96];
|
static Mtx MTXBuf[96];
|
||||||
static Vec scaleBuf[96];
|
static Vec scaleBuf[96];
|
||||||
static GXColor texCol[16];
|
static GXColor texCol[16];
|
||||||
static Mtx hiliteMtx;
|
static Mtx hiliteMtx;
|
||||||
static s16 DrawObjNum[512];
|
static s16 DrawObjNum[HU3D_MODEL_MAX];
|
||||||
static Vec NBTB;
|
static Vec NBTB;
|
||||||
static Vec NBTT;
|
static Vec NBTT;
|
||||||
Vec PGMaxPos;
|
Vec PGMaxPos;
|
||||||
|
|
@ -129,7 +129,7 @@ void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2) {
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
temp_r28 = arg0->hsfData;
|
temp_r28 = arg0->hsfData;
|
||||||
if (arg0->attr & 0x10) {
|
if (arg0->attr & HU3D_ATTR_HOOKFUNC) {
|
||||||
temp_r31 = &DrawObjData[DrawObjIdx];
|
temp_r31 = &DrawObjData[DrawObjIdx];
|
||||||
PSMTXCopy(arg1, temp_r31->matrix);
|
PSMTXCopy(arg1, temp_r31->matrix);
|
||||||
sp8.x = temp_r31->matrix[0][3];
|
sp8.x = temp_r31->matrix[0][3];
|
||||||
|
|
@ -267,7 +267,7 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) {
|
||||||
PSMTXCopy(temp_r29->matrix, temp_r25->matrix);
|
PSMTXCopy(temp_r29->matrix, temp_r25->matrix);
|
||||||
if (temp_r25->hook != -1) {
|
if (temp_r25->hook != -1) {
|
||||||
temp_r31 = &Hu3DData[temp_r25->hook];
|
temp_r31 = &Hu3DData[temp_r25->hook];
|
||||||
if (!(temp_r31->attr & 1)) {
|
if (!(temp_r31->attr & HU3D_ATTR_DISPOFF)) {
|
||||||
temp_r21 = attachMotionF;
|
temp_r21 = attachMotionF;
|
||||||
if (temp_r31->unk_08 != -1) {
|
if (temp_r31->unk_08 != -1) {
|
||||||
attachMotionF = 1;
|
attachMotionF = 1;
|
||||||
|
|
@ -293,12 +293,12 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) {
|
||||||
attachMotionF = temp_r21;
|
attachMotionF = temp_r21;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (arg0->attr & 0x4000) {
|
if (arg0->attr & HU3D_ATTR_NOCULL) {
|
||||||
var_r19 = ObjCullCheck(arg0->hsfData, arg1, temp_r29->matrix);
|
var_r19 = ObjCullCheck(arg0->hsfData, arg1, temp_r29->matrix);
|
||||||
} else {
|
} else {
|
||||||
var_r19 = 1;
|
var_r19 = 1;
|
||||||
}
|
}
|
||||||
if ((temp_r25->flags & 0x2000) || (arg1->flags & 0x400)) {
|
if ((temp_r25->flags & 0x2000) || (arg1->flags & HU3D_ATTR_CLUSTER_ON)) {
|
||||||
var_r19 = 0;
|
var_r19 = 0;
|
||||||
}
|
}
|
||||||
if (var_r19 != 0 && (var_r30->scale.x != 0.0f || var_r30->scale.y != 0.0f || var_r30->scale.z != 0.0f)) {
|
if (var_r19 != 0 && (var_r30->scale.x != 0.0f || var_r30->scale.y != 0.0f || var_r30->scale.z != 0.0f)) {
|
||||||
|
|
@ -319,7 +319,7 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) {
|
||||||
OSReport("Error: DrawObjIdx Over\n");
|
OSReport("Error: DrawObjIdx Over\n");
|
||||||
DrawObjIdx--;
|
DrawObjIdx--;
|
||||||
}
|
}
|
||||||
} else if (arg0->attr & 0x400000) {
|
} else if (arg0->attr & HU3D_ATTR_ZCMP_OFF) {
|
||||||
temp_r29->z = -1000000.0f;
|
temp_r29->z = -1000000.0f;
|
||||||
DrawObjIdx++;
|
DrawObjIdx++;
|
||||||
if (DrawObjIdx > 0x200) {
|
if (DrawObjIdx > 0x200) {
|
||||||
|
|
@ -453,12 +453,12 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) {
|
||||||
sp2C.b = temp_r30->color[2];
|
sp2C.b = temp_r30->color[2];
|
||||||
sp2C.a = 0xFF;
|
sp2C.a = 0xFF;
|
||||||
GXSetChanMatColor(GX_COLOR0A0, sp2C);
|
GXSetChanMatColor(GX_COLOR0A0, sp2C);
|
||||||
if (temp_r29->attr & 0x400000) {
|
if (temp_r29->attr & HU3D_ATTR_ZCMP_OFF) {
|
||||||
var_r31 = GX_FALSE;
|
var_r31 = GX_FALSE;
|
||||||
} else {
|
} else {
|
||||||
var_r31 = GX_TRUE;
|
var_r31 = GX_TRUE;
|
||||||
}
|
}
|
||||||
if ((temp_r30->invAlpha != 0.0f || (temp_r30->pass & 0xF) || (temp_r20->flags & 0x800)) && !((temp_r29->attr & 2) | (temp_r19 & 0x1200))) {
|
if ((temp_r30->invAlpha != 0.0f || (temp_r30->pass & 0xF) || (temp_r20->flags & 0x800)) && !((temp_r29->attr & HU3D_ATTR_ZWRITE_OFF) | (temp_r19 & 0x1200))) {
|
||||||
GXSetZMode(var_r31, GX_LEQUAL, GX_FALSE);
|
GXSetZMode(var_r31, GX_LEQUAL, GX_FALSE);
|
||||||
} else {
|
} else {
|
||||||
GXSetZMode(var_r31, GX_LEQUAL, GX_TRUE);
|
GXSetZMode(var_r31, GX_LEQUAL, GX_TRUE);
|
||||||
|
|
@ -468,7 +468,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) {
|
||||||
} else {
|
} else {
|
||||||
GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1);
|
GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1);
|
||||||
}
|
}
|
||||||
if (temp_r29->attr & 0x800000) {
|
if (temp_r29->attr & HU3D_ATTR_CULL_FRONT) {
|
||||||
GXSetCullMode(GX_CULL_FRONT);
|
GXSetCullMode(GX_CULL_FRONT);
|
||||||
} else if (temp_r19 & 2) {
|
} else if (temp_r19 & 2) {
|
||||||
GXSetCullMode(GX_CULL_NONE);
|
GXSetCullMode(GX_CULL_NONE);
|
||||||
|
|
@ -522,7 +522,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) {
|
||||||
SetShadowTex();
|
SetShadowTex();
|
||||||
BmpPtrBak[1] = (HsfAttribute*) -1;
|
BmpPtrBak[1] = (HsfAttribute*) -1;
|
||||||
}
|
}
|
||||||
if (temp_r29->attr & 0x200) {
|
if (temp_r29->attr & HU3D_ATTR_TOON_MAP) {
|
||||||
toonMapNo = 2;
|
toonMapNo = 2;
|
||||||
HuSprTexLoad(toonAnim, 0, toonMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR);
|
HuSprTexLoad(toonAnim, 0, toonMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR);
|
||||||
BmpPtrBak[2] = (HsfAttribute*) -1;
|
BmpPtrBak[2] = (HsfAttribute*) -1;
|
||||||
|
|
@ -540,7 +540,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) {
|
||||||
} else {
|
} else {
|
||||||
hiliteMapNo = 3;
|
hiliteMapNo = 3;
|
||||||
}
|
}
|
||||||
if ((temp_r29->attr & 0x20000) || (temp_r19 & 0x100)) {
|
if ((temp_r29->attr & HU3D_ATTR_HILITE) || (temp_r19 & 0x100)) {
|
||||||
if (temp_r20->hiliteMap == 0) {
|
if (temp_r20->hiliteMap == 0) {
|
||||||
if (temp_r30->flags != 0) {
|
if (temp_r30->flags != 0) {
|
||||||
var_r18 = (temp_r30->pass >> 4) & 0xF;
|
var_r18 = (temp_r30->pass >> 4) & 0xF;
|
||||||
|
|
@ -674,7 +674,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) {
|
||||||
} else {
|
} else {
|
||||||
toonMapNo = shadowMapNo;
|
toonMapNo = shadowMapNo;
|
||||||
}
|
}
|
||||||
if (temp_r29->attr & 0x200) {
|
if (temp_r29->attr & HU3D_ATTR_TOON_MAP) {
|
||||||
HuSprTexLoad(toonAnim, 0, toonMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR);
|
HuSprTexLoad(toonAnim, 0, toonMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR);
|
||||||
BmpPtrBak[toonMapNo] = (HsfAttribute*) -1;
|
BmpPtrBak[toonMapNo] = (HsfAttribute*) -1;
|
||||||
projectionMapNo = toonMapNo + 1;
|
projectionMapNo = toonMapNo + 1;
|
||||||
|
|
@ -692,7 +692,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) {
|
||||||
} else {
|
} else {
|
||||||
hiliteMapNo = projectionMapNo;
|
hiliteMapNo = projectionMapNo;
|
||||||
}
|
}
|
||||||
if ((temp_r29->attr & 0x20000) || (temp_r19 & 0x100)) {
|
if ((temp_r29->attr & HU3D_ATTR_HILITE) || (temp_r19 & 0x100)) {
|
||||||
if (temp_r20->hiliteMap == 0) {
|
if (temp_r20->hiliteMap == 0) {
|
||||||
if (temp_r30->flags != 0) {
|
if (temp_r30->flags != 0) {
|
||||||
var_r18 = (temp_r30->pass >> 4) & 0xF;
|
var_r18 = (temp_r30->pass >> 4) & 0xF;
|
||||||
|
|
@ -761,7 +761,7 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
|
||||||
var_r22 = 0;
|
var_r22 = 0;
|
||||||
}
|
}
|
||||||
sp1C.a = 255.0f * (1.0f - arg1->invAlpha);
|
sp1C.a = 255.0f * (1.0f - arg1->invAlpha);
|
||||||
if (temp_r28->attr & 0x200) {
|
if (temp_r28->attr & HU3D_ATTR_TOON_MAP) {
|
||||||
sp1C.r = arg1->color[0];
|
sp1C.r = arg1->color[0];
|
||||||
sp1C.g = arg1->color[1];
|
sp1C.g = arg1->color[1];
|
||||||
sp1C.b = arg1->color[2];
|
sp1C.b = arg1->color[2];
|
||||||
|
|
@ -792,7 +792,7 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
|
||||||
var_r29++;
|
var_r29++;
|
||||||
}
|
}
|
||||||
if (var_r26 != 0) {
|
if (var_r26 != 0) {
|
||||||
if ((temp_r28->attr & 0x20000) || (sp18 & 0x100)) {
|
if ((temp_r28->attr & HU3D_ATTR_HILITE) || (sp18 & 0x100)) {
|
||||||
GXSetTexCoordGen2(var_r29, GX_TG_MTX2x4, GX_TG_NRM, GX_TEXMTX7, GX_FALSE, GX_PTIDENTITY);
|
GXSetTexCoordGen2(var_r29, GX_TG_MTX2x4, GX_TG_NRM, GX_TEXMTX7, GX_FALSE, GX_PTIDENTITY);
|
||||||
GXSetTevOrder(var_r30, var_r29, hiliteMapNo, GX_COLOR0A0);
|
GXSetTevOrder(var_r30, var_r29, hiliteMapNo, GX_COLOR0A0);
|
||||||
GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_ONE, GX_CC_TEXC, GX_CC_CPREV);
|
GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_ONE, GX_CC_TEXC, GX_CC_CPREV);
|
||||||
|
|
@ -983,7 +983,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
|
||||||
var_r31++;
|
var_r31++;
|
||||||
} else {
|
} else {
|
||||||
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0);
|
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0);
|
||||||
if (!(temp_r25->attr & 0x200)) {
|
if (!(temp_r25->attr & HU3D_ATTR_TOON_MAP)) {
|
||||||
if (texCol[0].a == 1) {
|
if (texCol[0].a == 1) {
|
||||||
sp50 = texCol[0];
|
sp50 = texCol[0];
|
||||||
sp50.a = 0xFF;
|
sp50.a = 0xFF;
|
||||||
|
|
@ -1030,7 +1030,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
|
||||||
} else {
|
} else {
|
||||||
GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
|
GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
|
||||||
}
|
}
|
||||||
if (temp_r25->attr & 0x200) {
|
if (temp_r25->attr & HU3D_ATTR_TOON_MAP) {
|
||||||
GXSetTexCoordGen2(var_r30, GX_TG_SRTG, GX_TG_COLOR0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
|
GXSetTexCoordGen2(var_r30, GX_TG_SRTG, GX_TG_COLOR0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
|
||||||
GXSetTevOrder(var_r31, var_r30, toonMapNo, GX_COLOR0A0);
|
GXSetTevOrder(var_r31, var_r30, toonMapNo, GX_COLOR0A0);
|
||||||
GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_CPREV, GX_CC_ZERO);
|
GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_CPREV, GX_CC_ZERO);
|
||||||
|
|
@ -1053,7 +1053,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
|
||||||
var_r31++;
|
var_r31++;
|
||||||
}
|
}
|
||||||
if (var_r21 != 0) {
|
if (var_r21 != 0) {
|
||||||
if ((temp_r25->attr & 0x20000) || (sp40 & 0x100)) {
|
if ((temp_r25->attr & HU3D_ATTR_HILITE) || (sp40 & 0x100)) {
|
||||||
GXSetTexCoordGen2(var_r30, GX_TG_MTX2x4, GX_TG_NRM, GX_TEXMTX7, GX_FALSE, GX_PTIDENTITY);
|
GXSetTexCoordGen2(var_r30, GX_TG_MTX2x4, GX_TG_NRM, GX_TEXMTX7, GX_FALSE, GX_PTIDENTITY);
|
||||||
GXSetTevOrder(var_r31, var_r30, hiliteMapNo, GX_COLOR0A0);
|
GXSetTevOrder(var_r31, var_r30, hiliteMapNo, GX_COLOR0A0);
|
||||||
GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_ONE, GX_CC_CPREV);
|
GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_ONE, GX_CC_CPREV);
|
||||||
|
|
@ -1270,7 +1270,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
|
||||||
}
|
}
|
||||||
var_r31++;
|
var_r31++;
|
||||||
}
|
}
|
||||||
if (temp_r25->attr & 0x200) {
|
if (temp_r25->attr & HU3D_ATTR_TOON_MAP) {
|
||||||
GXSetTexCoordGen2(var_r30, GX_TG_SRTG, GX_TG_COLOR0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
|
GXSetTexCoordGen2(var_r30, GX_TG_SRTG, GX_TG_COLOR0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
|
||||||
GXSetTevOrder(var_r31, var_r30, toonMapNo, GX_COLOR0A0);
|
GXSetTevOrder(var_r31, var_r30, toonMapNo, GX_COLOR0A0);
|
||||||
GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_CPREV, GX_CC_ZERO);
|
GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_CPREV, GX_CC_ZERO);
|
||||||
|
|
@ -1323,7 +1323,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
|
||||||
sp50.a = (1.0f - arg1->invAlpha) * 255.0f;
|
sp50.a = (1.0f - arg1->invAlpha) * 255.0f;
|
||||||
GXSetTevColor(GX_TEVREG0, sp50);
|
GXSetTevColor(GX_TEVREG0, sp50);
|
||||||
if (var_r21 != 0) {
|
if (var_r21 != 0) {
|
||||||
if ((temp_r25->attr & 0x20000) || (sp40 & 0x100)) {
|
if ((temp_r25->attr & HU3D_ATTR_HILITE) || (sp40 & 0x100)) {
|
||||||
var_f31 = (arg1->hilite_scale / 300.0f) * 6.0f;
|
var_f31 = (arg1->hilite_scale / 300.0f) * 6.0f;
|
||||||
if (var_f31 < 0.1) {
|
if (var_f31 < 0.1) {
|
||||||
var_f31 = 0.1f;
|
var_f31 = 0.1f;
|
||||||
|
|
@ -1835,7 +1835,7 @@ static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16
|
||||||
TL32F = 1;
|
TL32F = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ((arg0->attr & 0x40) || (arg2->flag & 0x40)) {
|
if ((arg0->attr & HU3D_ATTR_TEX_NEAR) || (arg2->flag & 0x40)) {
|
||||||
GXInitTexObjLOD(&sp1C, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1);
|
GXInitTexObjLOD(&sp1C, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1);
|
||||||
} else if (var_r20) {
|
} else if (var_r20) {
|
||||||
GXInitTexObjLOD(&sp1C, GX_LIN_MIP_LIN, GX_LINEAR, 0.0f, arg2->unk78, 0.0f, GX_FALSE, GX_TRUE, GX_ANISO_2);
|
GXInitTexObjLOD(&sp1C, GX_LIN_MIP_LIN, GX_LINEAR, 0.0f, arg2->unk78, 0.0f, GX_FALSE, GX_TRUE, GX_ANISO_2);
|
||||||
|
|
@ -2107,7 +2107,7 @@ void Hu3DDrawPost(void) {
|
||||||
GXSetCullMode(GX_CULL_BACK);
|
GXSetCullMode(GX_CULL_BACK);
|
||||||
for (var_r23 = 0; var_r23 < DrawObjIdx; var_r23++) {
|
for (var_r23 = 0; var_r23 < DrawObjIdx; var_r23++) {
|
||||||
temp_r28 = &DrawObjData[DrawObjNum[var_r23]];
|
temp_r28 = &DrawObjData[DrawObjNum[var_r23]];
|
||||||
if (temp_r28->model->attr & 0x10) {
|
if (temp_r28->model->attr & HU3D_ATTR_HOOKFUNC) {
|
||||||
sp28 = (void*) temp_r28->model->hsfData;
|
sp28 = (void*) temp_r28->model->hsfData;
|
||||||
sp28(temp_r28->model, temp_r28->matrix);
|
sp28(temp_r28->model, temp_r28->matrix);
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < 8; i++) {
|
||||||
|
|
@ -2145,7 +2145,7 @@ void Hu3DDrawPost(void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((temp_r28->model->attr & 0x20000) || (Hu3DObjInfoP->flags & 0x8000)) {
|
if ((temp_r28->model->attr & HU3D_ATTR_HILITE) || (Hu3DObjInfoP->flags & 0x8000)) {
|
||||||
sp54 = lbl_8011DD20;
|
sp54 = lbl_8011DD20;
|
||||||
temp_r22 = &Hu3DGlobalLight[temp_r28->model->unk_03];
|
temp_r22 = &Hu3DGlobalLight[temp_r28->model->unk_03];
|
||||||
sp30 = temp_r22->unk_28;
|
sp30 = temp_r22->unk_28;
|
||||||
|
|
@ -2284,7 +2284,7 @@ static void ObjDraw(HsfDrawObject *arg0) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((arg0->model->attr & 0x20000) || (Hu3DObjInfoP->flags & 0x8000)) {
|
if ((arg0->model->attr & HU3D_ATTR_HILITE) || (Hu3DObjInfoP->flags & 0x8000)) {
|
||||||
sp44 = lbl_8011DD20;
|
sp44 = lbl_8011DD20;
|
||||||
temp_r24 = &Hu3DGlobalLight[arg0->model->unk_03];
|
temp_r24 = &Hu3DGlobalLight[arg0->model->unk_03];
|
||||||
sp20 = temp_r24->unk_28;
|
sp20 = temp_r24->unk_28;
|
||||||
|
|
@ -2379,7 +2379,7 @@ void MakeDisplayList(s16 arg0, u32 arg1) {
|
||||||
faceNumBuf = HuMemDirectMallocNum(HEAP_DATA, 0x800 * sizeof(u16), mallocNo);
|
faceNumBuf = HuMemDirectMallocNum(HEAP_DATA, 0x800 * sizeof(u16), mallocNo);
|
||||||
MDObjCall(temp_r31, temp_r31->root);
|
MDObjCall(temp_r31, temp_r31->root);
|
||||||
HuMemDirectFree(faceNumBuf);
|
HuMemDirectFree(faceNumBuf);
|
||||||
if (var_r30->attr & 4) {
|
if (var_r30->attr & HU3D_ATTR_SHADOW) {
|
||||||
Hu3DShadowCamBit++;
|
Hu3DShadowCamBit++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3067,7 +3067,7 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) {
|
||||||
temp_r28 = arg1->constData;
|
temp_r28 = arg1->constData;
|
||||||
if (temp_r28 && temp_r28->hook != -1) {
|
if (temp_r28 && temp_r28->hook != -1) {
|
||||||
temp_r31 = &Hu3DData[temp_r28->hook];
|
temp_r31 = &Hu3DData[temp_r28->hook];
|
||||||
if (!(temp_r31->attr & 1)) {
|
if (!(temp_r31->attr & HU3D_ATTR_DISPOFF)) {
|
||||||
var_r27 = attachMotionF;
|
var_r27 = attachMotionF;
|
||||||
if (temp_r31->unk_08 != -1) {
|
if (temp_r31->unk_08 != -1) {
|
||||||
attachMotionF = 1;
|
attachMotionF = 1;
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ void CamMotionEx2(s16 arg0, s16 arg1, float arg2, s16 arg3) {
|
||||||
CameraData *temp_r30;
|
CameraData *temp_r30;
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
for (i = 0; i < 16; i++) {
|
for (i = 0; i < HU3D_CAM_MAX; i++) {
|
||||||
if (arg1 & (1 << i)) {
|
if (arg1 & (1 << i)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -57,7 +57,7 @@ void CamMotionEx(s16 arg0, s16 arg1, Vec *arg2, Vec *arg3, Vec *arg4, float arg5
|
||||||
temp_r22 = temp_r23->hsfData;
|
temp_r22 = temp_r23->hsfData;
|
||||||
temp_r18 = temp_r19->unk_04;
|
temp_r18 = temp_r19->unk_04;
|
||||||
temp_r26 = temp_r18->motion;
|
temp_r26 = temp_r18->motion;
|
||||||
for (var_r25 = 0; var_r25 < 16; var_r25++) {
|
for (var_r25 = 0; var_r25 < HU3D_CAM_MAX; var_r25++) {
|
||||||
if (arg1 & (1 << var_r25)) {
|
if (arg1 & (1 << var_r25)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -422,7 +422,7 @@ void Hu3D2Dto3D(Vec *arg0, s16 arg1, Vec *arg2) {
|
||||||
s16 i;
|
s16 i;
|
||||||
Mtx spC;
|
Mtx spC;
|
||||||
|
|
||||||
for (i = 0; i < 16; i++) {
|
for (i = 0; i < HU3D_CAM_MAX; i++) {
|
||||||
if (arg1 & (1 << i)) {
|
if (arg1 & (1 << i)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -449,7 +449,7 @@ void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2) {
|
||||||
s16 i;
|
s16 i;
|
||||||
Mtx sp1C;
|
Mtx sp1C;
|
||||||
|
|
||||||
for (i = 0; i < 16; i++) {
|
for (i = 0; i < HU3D_CAM_MAX; i++) {
|
||||||
if (arg1 & (1 << i)) {
|
if (arg1 & (1 << i)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,8 @@
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "ext_math.h"
|
#include "ext_math.h"
|
||||||
|
|
||||||
ModelData Hu3DData[0x200];
|
ModelData Hu3DData[HU3D_MODEL_MAX];
|
||||||
CameraData Hu3DCamera[0x10];
|
CameraData Hu3DCamera[HU3D_CAM_MAX];
|
||||||
static s16 layerNum[8];
|
static s16 layerNum[8];
|
||||||
static void (*layerHook[8])(s16);
|
static void (*layerHook[8])(s16);
|
||||||
AnimData *reflectAnim[5];
|
AnimData *reflectAnim[5];
|
||||||
|
|
@ -63,11 +63,11 @@ void Hu3DInit(void) {
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
data = Hu3DData;
|
data = Hu3DData;
|
||||||
for (i = 0; i < 0x200; i++, data++) {
|
for (i = 0; i < HU3D_MODEL_MAX; i++, data++) {
|
||||||
data->hsfData = NULL;
|
data->hsfData = NULL;
|
||||||
}
|
}
|
||||||
camera = Hu3DCamera;
|
camera = Hu3DCamera;
|
||||||
for (i = 0; i < 0x10; i++, camera++) {
|
for (i = 0; i < HU3D_CAM_MAX; i++, camera++) {
|
||||||
camera->fov = -1.0f;
|
camera->fov = -1.0f;
|
||||||
}
|
}
|
||||||
Hu3DMotionInit();
|
Hu3DMotionInit();
|
||||||
|
|
@ -111,9 +111,9 @@ void Hu3DPreProc(void) {
|
||||||
|
|
||||||
GXSetCopyClear(BGColor, 0xFFFFFF);
|
GXSetCopyClear(BGColor, 0xFFFFFF);
|
||||||
data = &Hu3DData[0];
|
data = &Hu3DData[0];
|
||||||
for (i = 0; i < 0x200; i++, data++) {
|
for (i = 0; i < HU3D_MODEL_MAX; i++, data++) {
|
||||||
if (data->hsfData != 0) {
|
if (data->hsfData != 0) {
|
||||||
data->attr &= ~0x800;
|
data->attr &= ~HU3D_ATTR_MOT_EXEC;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
totalPolyCnted = totalPolyCnt;
|
totalPolyCnted = totalPolyCnt;
|
||||||
|
|
@ -123,6 +123,8 @@ void Hu3DPreProc(void) {
|
||||||
totalPolyCnt = totalMatCnt = totalTexCnt = totalTexCacheCnt = 0;
|
totalPolyCnt = totalMatCnt = totalTexCnt = totalTexCacheCnt = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define HU3D_ATTR_CAMERA_UPDATE (HU3D_ATTR_CAMERA_MOTON|HU3D_ATTR_DISPOFF)
|
||||||
|
|
||||||
void Hu3DExec(void) {
|
void Hu3DExec(void) {
|
||||||
GXColor unusedColor = {0, 0, 0, 0};
|
GXColor unusedColor = {0, 0, 0, 0};
|
||||||
CameraData* camera;
|
CameraData* camera;
|
||||||
|
|
@ -144,7 +146,7 @@ void Hu3DExec(void) {
|
||||||
shadowModelDrawF = 0;
|
shadowModelDrawF = 0;
|
||||||
HuSprBegin();
|
HuSprBegin();
|
||||||
var_r24 = 0;
|
var_r24 = 0;
|
||||||
for (Hu3DCameraNo = 0; Hu3DCameraNo < 0x10; Hu3DCameraNo++, camera++) {
|
for (Hu3DCameraNo = 0; Hu3DCameraNo < HU3D_CAM_MAX; Hu3DCameraNo++, camera++) {
|
||||||
if (-1.0f != camera->fov) {
|
if (-1.0f != camera->fov) {
|
||||||
GXInvalidateVtxCache();
|
GXInvalidateVtxCache();
|
||||||
temp_r22 = (s16) (1 << Hu3DCameraNo);
|
temp_r22 = (s16) (1 << Hu3DCameraNo);
|
||||||
|
|
@ -186,18 +188,18 @@ void Hu3DExec(void) {
|
||||||
Hu3DCameraSet(Hu3DCameraNo, Hu3DCameraMtx);
|
Hu3DCameraSet(Hu3DCameraNo, Hu3DCameraMtx);
|
||||||
PSMTXInvXpose(Hu3DCameraMtx, Hu3DCameraMtxXPose);
|
PSMTXInvXpose(Hu3DCameraMtx, Hu3DCameraMtxXPose);
|
||||||
data = Hu3DData;
|
data = Hu3DData;
|
||||||
for (i = 0, var_r23 = i; i < 0x200; i++, data++) {
|
for (i = 0, var_r23 = i; i < HU3D_MODEL_MAX; i++, data++) {
|
||||||
if (data->hsfData != 0) {
|
if (data->hsfData != 0) {
|
||||||
if ((data->attr & 0x10000) != 0) {
|
if ((data->attr & HU3D_ATTR_CAMERA) != 0) {
|
||||||
Hu3DCameraMotionExec(i);
|
Hu3DCameraMotionExec(i);
|
||||||
} else {
|
} else {
|
||||||
if ((data->attr & 0x2001) == 0x2001 && data->unk_08 != -1) {
|
if ((data->attr & HU3D_ATTR_CAMERA_UPDATE) == HU3D_ATTR_CAMERA_UPDATE && data->unk_08 != -1) {
|
||||||
Hu3DMotionExec(i, data->unk_08, data->unk_64, 0);
|
Hu3DMotionExec(i, data->unk_08, data->unk_64, 0);
|
||||||
}
|
}
|
||||||
if ((data->attr & 9) == 0 && (data->camera & temp_r22) != 0 && data->layer == j) {
|
if ((data->attr & (HU3D_ATTR_DISPOFF|HU3D_ATTR_MOTION_OFF)) == 0 && (data->camera & temp_r22) != 0 && data->layer == j) {
|
||||||
if (((data->attr & 0x800) == 0 && (data->attr & 0x100) == 0) || ((data->attr & 0x100) != 0 && (data->unk_00 & 1) != 0)) {
|
if (((data->attr & HU3D_ATTR_MOT_EXEC) == 0 && (data->attr & HU3D_ATTR_MOT_SLOW) == 0) || ((data->attr & HU3D_ATTR_MOT_SLOW) != 0 && (data->unk_00 & 1) != 0)) {
|
||||||
var_r25 = 0;
|
var_r25 = 0;
|
||||||
data->motion_attr &= 0xBFFFFFFF;
|
data->motion_attr &= ~HU3D_MOTATTR;
|
||||||
if (data->unk_08 != -1) {
|
if (data->unk_08 != -1) {
|
||||||
Hu3DMotionExec(i, data->unk_08, data->unk_64, 0);
|
Hu3DMotionExec(i, data->unk_08, data->unk_64, 0);
|
||||||
}
|
}
|
||||||
|
|
@ -207,7 +209,7 @@ void Hu3DExec(void) {
|
||||||
if (data->unk_0A != -1) {
|
if (data->unk_0A != -1) {
|
||||||
Hu3DMotionExec(i, data->unk_0A, data->unk_74, 1);
|
Hu3DMotionExec(i, data->unk_0A, data->unk_74, 1);
|
||||||
}
|
}
|
||||||
if ((data->attr & 0x400) != 0) {
|
if ((data->attr & HU3D_ATTR_CLUSTER_ON) != 0) {
|
||||||
ClusterMotionExec(data);
|
ClusterMotionExec(data);
|
||||||
var_r25 = 1;
|
var_r25 = 1;
|
||||||
}
|
}
|
||||||
|
|
@ -219,7 +221,7 @@ void Hu3DExec(void) {
|
||||||
}
|
}
|
||||||
var_r25 = 1;
|
var_r25 = 1;
|
||||||
}
|
}
|
||||||
if ((data->attr & 0x90) == 0 && (data->motion_attr & 0x40000002) == 0) {
|
if ((data->attr & (HU3D_ATTR_ENVELOPE_OFF|HU3D_ATTR_HOOKFUNC)) == 0 && (data->motion_attr & HU3D_MOTATTR_PAUSE) == 0) {
|
||||||
var_r25 = 1;
|
var_r25 = 1;
|
||||||
InitVtxParm(data->hsfData);
|
InitVtxParm(data->hsfData);
|
||||||
if (data->unk_0E != -1) {
|
if (data->unk_0E != -1) {
|
||||||
|
|
@ -238,11 +240,11 @@ void Hu3DExec(void) {
|
||||||
}
|
}
|
||||||
data->attr |= 0x800;
|
data->attr |= 0x800;
|
||||||
}
|
}
|
||||||
if (var_r24 != 0 && (data->attr & 0x10) != 0) {
|
if (var_r24 != 0 && (data->attr & HU3D_ATTR_HOOKFUNC) != 0) {
|
||||||
GXWaitDrawDone();
|
GXWaitDrawDone();
|
||||||
var_r24 = 0;
|
var_r24 = 0;
|
||||||
}
|
}
|
||||||
if ((data->attr & 0x8000) == 0 && (0.0f != data->scale.x || 0.0f != data->scale.y || 0.0f != data->scale.z)) {
|
if ((data->attr & HU3D_ATTR_HOOK) == 0 && (0.0f != data->scale.x || 0.0f != data->scale.y || 0.0f != data->scale.z)) {
|
||||||
mtxRot(sp40, data->rot.x, data->rot.y, data->rot.z);
|
mtxRot(sp40, data->rot.x, data->rot.y, data->rot.z);
|
||||||
mtxScaleCat(sp40, data->scale.x, data->scale.y, data->scale.z);
|
mtxScaleCat(sp40, data->scale.x, data->scale.y, data->scale.z);
|
||||||
mtxTransCat(sp40, data->pos.x, data->pos.y, data->pos.z);
|
mtxTransCat(sp40, data->pos.x, data->pos.y, data->pos.z);
|
||||||
|
|
@ -267,8 +269,8 @@ void Hu3DExec(void) {
|
||||||
HuSprDispInit();
|
HuSprDispInit();
|
||||||
HuSprExec(0);
|
HuSprExec(0);
|
||||||
data = Hu3DData;
|
data = Hu3DData;
|
||||||
for (i = 0; i < 0x200; i++, data++) {
|
for (i = 0; i < HU3D_MODEL_MAX; i++, data++) {
|
||||||
if (data->hsfData != 0 && (data->unk_08 != -1 || (data->attr & 0x400) != 0 || data->unk_0E != -1) && (Hu3DPauseF == 0 || (data->attr & 0x200000) != 0)) {
|
if (data->hsfData != 0 && (data->unk_08 != -1 || (data->attr & HU3D_ATTR_CLUSTER_ON) != 0 || data->unk_0E != -1) && (Hu3DPauseF == 0 || (data->attr & HU3D_ATTR_NOPAUSE) != 0)) {
|
||||||
Hu3DMotionNext(i);
|
Hu3DMotionNext(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -334,19 +336,19 @@ s16 Hu3DModelCreate(void *arg0) {
|
||||||
|
|
||||||
var_r31 = Hu3DData;
|
var_r31 = Hu3DData;
|
||||||
|
|
||||||
for (var_r30 = 0; var_r30 < 0x200; var_r30++, var_r31++) {
|
for (var_r30 = 0; var_r30 < HU3D_MODEL_MAX; var_r30++, var_r31++) {
|
||||||
if (var_r31->hsfData == 0x0) {
|
if (var_r31->hsfData == 0x0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r30 == 0x200) {
|
if (var_r30 == HU3D_MODEL_MAX) {
|
||||||
OSReport("Error: Create Model Over!\n");
|
OSReport("Error: Create Model Over!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
var_r31->hsfData = LoadHSF(arg0);
|
var_r31->hsfData = LoadHSF(arg0);
|
||||||
var_r31->unk_48 = Hu3DMallocNo = (u32)var_r31->hsfData;
|
var_r31->unk_48 = Hu3DMallocNo = (u32)var_r31->hsfData;
|
||||||
var_r31->attr = 0;
|
var_r31->attr = HU3D_ATTR_NONE;
|
||||||
var_r31->motion_attr = 0;
|
var_r31->motion_attr = HU3D_ATTR_NONE;
|
||||||
var_r31->unk_02 = 0;
|
var_r31->unk_02 = 0;
|
||||||
MakeDisplayList(var_r30, var_r31->unk_48);
|
MakeDisplayList(var_r30, var_r31->unk_48);
|
||||||
var_r31->unk_68 = 1.0f;
|
var_r31->unk_68 = 1.0f;
|
||||||
|
|
@ -416,12 +418,12 @@ s16 Hu3DModelLink(s16 arg0) {
|
||||||
|
|
||||||
temp_r30 = &Hu3DData[arg0];
|
temp_r30 = &Hu3DData[arg0];
|
||||||
var_r31 = Hu3DData;
|
var_r31 = Hu3DData;
|
||||||
for (var_r28 = 0; var_r28 < 0x200; var_r28++, var_r31++) {
|
for (var_r28 = 0; var_r28 < HU3D_MODEL_MAX; var_r28++, var_r31++) {
|
||||||
if (var_r31->hsfData == 0x0) {
|
if (var_r31->hsfData == 0x0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r28 == 0x200) {
|
if (var_r28 == HU3D_MODEL_MAX) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
var_r31->unk_C8 = temp_r30->hsfData;
|
var_r31->unk_C8 = temp_r30->hsfData;
|
||||||
|
|
@ -433,7 +435,7 @@ s16 Hu3DModelLink(s16 arg0) {
|
||||||
var_r31->hsfData->object = temp_r3_2;
|
var_r31->hsfData->object = temp_r3_2;
|
||||||
var_r31->unk_48 = temp_r30->unk_48;
|
var_r31->unk_48 = temp_r30->unk_48;
|
||||||
var_r31->attr = temp_r30->attr;
|
var_r31->attr = temp_r30->attr;
|
||||||
temp_r30->attr |= 0x100000;
|
temp_r30->attr |= HU3D_ATTR_LINK;
|
||||||
var_r31->motion_attr = temp_r30->motion_attr;
|
var_r31->motion_attr = temp_r30->motion_attr;
|
||||||
var_r31->pos.x = var_r31->pos.y = var_r31->pos.z = 0.0f;
|
var_r31->pos.x = var_r31->pos.y = var_r31->pos.z = 0.0f;
|
||||||
var_r31->rot.x = var_r31->rot.y = var_r31->rot.z = 0.0f;
|
var_r31->rot.x = var_r31->rot.y = var_r31->rot.z = 0.0f;
|
||||||
|
|
@ -448,7 +450,7 @@ s16 Hu3DModelLink(s16 arg0) {
|
||||||
var_r31->unk_10[i] = temp_r30->unk_10[i];
|
var_r31->unk_10[i] = temp_r30->unk_10[i];
|
||||||
if (var_r31->unk_10[i] != -1) {
|
if (var_r31->unk_10[i] != -1) {
|
||||||
ClusterAdjustObject(var_r31->hsfData, Hu3DMotion[var_r31->unk_10[i]].unk_04);
|
ClusterAdjustObject(var_r31->hsfData, Hu3DMotion[var_r31->unk_10[i]].unk_04);
|
||||||
var_r31->attr |= 0x400;
|
var_r31->attr |= HU3D_ATTR_CLUSTER_ON;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var_r31->unk_64 = temp_r30->unk_64;
|
var_r31->unk_64 = temp_r30->unk_64;
|
||||||
|
|
@ -479,18 +481,18 @@ s16 Hu3DHookFuncCreate(ModelHookFunc hook) {
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
var_r31 = Hu3DData;
|
var_r31 = Hu3DData;
|
||||||
for (var_r29 = 0; var_r29 < 0x200; var_r29++, var_r31++) {
|
for (var_r29 = 0; var_r29 < HU3D_MODEL_MAX; var_r29++, var_r31++) {
|
||||||
if (var_r31->hsfData == 0) {
|
if (var_r31->hsfData == 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r29 == 0x200) {
|
if (var_r29 == HU3D_MODEL_MAX) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
var_r31->hook = hook;
|
var_r31->hook = hook;
|
||||||
var_r31->unk_48 = var_r29+10000;
|
var_r31->unk_48 = var_r29+10000;
|
||||||
var_r31->attr = 0x10;
|
var_r31->attr = HU3D_ATTR_HOOKFUNC;
|
||||||
var_r31->motion_attr = 0;
|
var_r31->motion_attr = HU3D_ATTR_NONE;
|
||||||
var_r31->pos.x = var_r31->pos.y = var_r31->pos.z = 0.0f;
|
var_r31->pos.x = var_r31->pos.y = var_r31->pos.z = 0.0f;
|
||||||
var_r31->rot.x = var_r31->rot.y = var_r31->rot.z = 0.0f;
|
var_r31->rot.x = var_r31->rot.y = var_r31->rot.z = 0.0f;
|
||||||
var_r31->scale.x = var_r31->scale.y = var_r31->scale.z = 1.0f;
|
var_r31->scale.x = var_r31->scale.y = var_r31->scale.z = 1.0f;
|
||||||
|
|
@ -531,14 +533,14 @@ void Hu3DModelKill(s16 arg0) {
|
||||||
temp_r31 = &Hu3DData[arg0];
|
temp_r31 = &Hu3DData[arg0];
|
||||||
var_r28 = temp_r31->hsfData;
|
var_r28 = temp_r31->hsfData;
|
||||||
if (var_r28 != 0) {
|
if (var_r28 != 0) {
|
||||||
if ((temp_r31->attr & 4) != 0) {
|
if ((temp_r31->attr & HU3D_ATTR_SHADOW) != 0) {
|
||||||
Hu3DShadowCamBit -= 1;
|
Hu3DShadowCamBit -= 1;
|
||||||
}
|
}
|
||||||
layerNum[temp_r31->layer] -= 1;
|
layerNum[temp_r31->layer] -= 1;
|
||||||
|
|
||||||
if ((temp_r31->attr & 0x10) != 0) {
|
if ((temp_r31->attr & HU3D_ATTR_HOOKFUNC) != 0) {
|
||||||
HuMemDirectFreeNum(HEAP_DATA, temp_r31->unk_48);
|
HuMemDirectFreeNum(HEAP_DATA, temp_r31->unk_48);
|
||||||
if ((temp_r31->attr & 0x20) != 0) {
|
if ((temp_r31->attr & HU3D_ATTR_PARTICLE_KILL) != 0) {
|
||||||
copy = temp_r31->unk_120;
|
copy = temp_r31->unk_120;
|
||||||
HuSprAnimKill(copy->unk_44);
|
HuSprAnimKill(copy->unk_44);
|
||||||
}
|
}
|
||||||
|
|
@ -548,7 +550,7 @@ void Hu3DModelKill(s16 arg0) {
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((temp_r31->attr & 0x10000) != 0) {
|
if ((temp_r31->attr & HU3D_ATTR_CAMERA) != 0) {
|
||||||
if (temp_r31->unk_08 != -1) {
|
if (temp_r31->unk_08 != -1) {
|
||||||
Hu3DMotionKill(temp_r31->unk_08);
|
Hu3DMotionKill(temp_r31->unk_08);
|
||||||
}
|
}
|
||||||
|
|
@ -564,7 +566,7 @@ void Hu3DModelKill(s16 arg0) {
|
||||||
temp_r31->hsfData = var_r28;
|
temp_r31->hsfData = var_r28;
|
||||||
}
|
}
|
||||||
var_r30 = Hu3DData;
|
var_r30 = Hu3DData;
|
||||||
for (var_r27 = i = 0; i < 0x200; i++, var_r30++) {
|
for (var_r27 = i = 0; i < HU3D_MODEL_MAX; i++, var_r30++) {
|
||||||
if ((var_r30->hsfData != 0) && (var_r30->hsfData == var_r28 || (var_r30->unk_24 != -1 && var_r30->unk_C8 == var_r28))) {
|
if ((var_r30->hsfData != 0) && (var_r30->hsfData == var_r28 || (var_r30->unk_24 != -1 && var_r30->unk_C8 == var_r28))) {
|
||||||
var_r27++;
|
var_r27++;
|
||||||
}
|
}
|
||||||
|
|
@ -573,7 +575,7 @@ void Hu3DModelKill(s16 arg0) {
|
||||||
temp_r31->hsfData = NULL;
|
temp_r31->hsfData = NULL;
|
||||||
var_r30 = Hu3DData;
|
var_r30 = Hu3DData;
|
||||||
if (temp_r31->unk_20 != -1) {
|
if (temp_r31->unk_20 != -1) {
|
||||||
for (i = 0; i < 0x200; i++, var_r30++) {
|
for (i = 0; i < HU3D_MODEL_MAX; i++, var_r30++) {
|
||||||
if (var_r30->hsfData != 0 && var_r30->unk_24 != -1 && var_r30->unk_C8 == var_r28) {
|
if (var_r30->hsfData != 0 && var_r30->unk_24 != -1 && var_r30->unk_C8 == var_r28) {
|
||||||
Hu3DMotion[temp_r31->unk_20].unk_02 = i;
|
Hu3DMotion[temp_r31->unk_20].unk_02 = i;
|
||||||
break;
|
break;
|
||||||
|
|
@ -618,7 +620,7 @@ void Hu3DModelAllKill(void) {
|
||||||
modelKillAllF = 1;
|
modelKillAllF = 1;
|
||||||
var_r30 = Hu3DData;
|
var_r30 = Hu3DData;
|
||||||
|
|
||||||
for (i = 0; i < 0x200; i++, var_r30++) {
|
for (i = 0; i < HU3D_MODEL_MAX; i++, var_r30++) {
|
||||||
if (var_r30->hsfData != 0) {
|
if (var_r30->hsfData != 0) {
|
||||||
Hu3DModelKill(i);
|
Hu3DModelKill(i);
|
||||||
}
|
}
|
||||||
|
|
@ -685,8 +687,8 @@ void Hu3DModelAttrSet(s16 arg0, u32 arg1) {
|
||||||
ModelData* temp_r31;
|
ModelData* temp_r31;
|
||||||
|
|
||||||
temp_r31 = &Hu3DData[arg0];
|
temp_r31 = &Hu3DData[arg0];
|
||||||
if ((arg1 & (1 << 30)) != 0) {
|
if ((arg1 & HU3D_MOTATTR) != 0) {
|
||||||
temp_r31->motion_attr |= arg1 & 0xBFFFFFFF;
|
temp_r31->motion_attr |= arg1 & ~HU3D_MOTATTR;
|
||||||
} else {
|
} else {
|
||||||
temp_r31->attr |= arg1;
|
temp_r31->attr |= arg1;
|
||||||
}
|
}
|
||||||
|
|
@ -696,7 +698,7 @@ void Hu3DModelAttrReset(s16 arg0, u32 arg1) {
|
||||||
ModelData* temp_r31;
|
ModelData* temp_r31;
|
||||||
|
|
||||||
temp_r31 = &Hu3DData[arg0];
|
temp_r31 = &Hu3DData[arg0];
|
||||||
if ((arg1 & (1 << 30)) != 0) {
|
if ((arg1 & HU3D_MOTATTR) != 0) {
|
||||||
temp_r31->motion_attr &= ~arg1;
|
temp_r31->motion_attr &= ~arg1;
|
||||||
} else {
|
} else {
|
||||||
temp_r31->attr &= ~arg1;
|
temp_r31->attr &= ~arg1;
|
||||||
|
|
@ -805,7 +807,7 @@ void Hu3DModelTPLvlSet(s16 arg0, f32 arg8) {
|
||||||
temp_r25->flags |= 1;
|
temp_r25->flags |= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
temp_r28->attr |= 0x40000;
|
temp_r28->attr |= HU3D_ATTR_TPLVL_SET;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hu3DModelHiliteMapSet(s16 arg0, AnimData *arg1) {
|
void Hu3DModelHiliteMapSet(s16 arg0, AnimData *arg1) {
|
||||||
|
|
@ -859,10 +861,10 @@ void Hu3DModelShadowSet(s16 arg0) {
|
||||||
|
|
||||||
temp_r31 = &Hu3DData[arg0];
|
temp_r31 = &Hu3DData[arg0];
|
||||||
temp_r30 = temp_r31->hsfData;
|
temp_r30 = temp_r31->hsfData;
|
||||||
if ((temp_r31->attr & 4) == 0) {
|
if ((temp_r31->attr & HU3D_ATTR_SHADOW) == 0) {
|
||||||
Hu3DShadowCamBit++;
|
Hu3DShadowCamBit++;
|
||||||
}
|
}
|
||||||
temp_r31->attr |= 4;
|
temp_r31->attr |= HU3D_ATTR_SHADOW;
|
||||||
var_r27 = temp_r30->object;
|
var_r27 = temp_r30->object;
|
||||||
|
|
||||||
for (var_r28 = 0; var_r28 < temp_r30->objectCnt; var_r28++, var_r27++) {
|
for (var_r28 = 0; var_r28 < temp_r30->objectCnt; var_r28++, var_r27++) {
|
||||||
|
|
@ -880,7 +882,7 @@ void Hu3DModelShadowReset(s16 arg0) {
|
||||||
|
|
||||||
temp_r31 = &Hu3DData[(s16) arg0];
|
temp_r31 = &Hu3DData[(s16) arg0];
|
||||||
temp_r30 = temp_r31->hsfData;
|
temp_r30 = temp_r31->hsfData;
|
||||||
temp_r31->attr &= ~4;
|
temp_r31->attr &= ~HU3D_ATTR_SHADOW;
|
||||||
Hu3DShadowCamBit -= 1;
|
Hu3DShadowCamBit -= 1;
|
||||||
var_r27 = temp_r30->object;
|
var_r27 = temp_r30->object;
|
||||||
for (var_r28 = 0; var_r28 < temp_r30->objectCnt; var_r28++, var_r27++) {
|
for (var_r28 = 0; var_r28 < temp_r30->objectCnt; var_r28++, var_r27++) {
|
||||||
|
|
@ -892,14 +894,14 @@ void Hu3DModelShadowDispOn(s16 arg0) {
|
||||||
ModelData* temp_r31;
|
ModelData* temp_r31;
|
||||||
|
|
||||||
temp_r31 = &Hu3DData[arg0];
|
temp_r31 = &Hu3DData[arg0];
|
||||||
temp_r31->attr |= 4;
|
temp_r31->attr |= HU3D_ATTR_SHADOW;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hu3DModelShadowDispOff(s16 arg0) {
|
void Hu3DModelShadowDispOff(s16 arg0) {
|
||||||
ModelData* temp_r31;
|
ModelData* temp_r31;
|
||||||
|
|
||||||
temp_r31 = &Hu3DData[arg0];
|
temp_r31 = &Hu3DData[arg0];
|
||||||
temp_r31->attr &= ~4;
|
temp_r31->attr &= ~HU3D_ATTR_SHADOW;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hu3DModelShadowMapSet(s16 arg0) {
|
void Hu3DModelShadowMapSet(s16 arg0) {
|
||||||
|
|
@ -967,7 +969,7 @@ void Hu3DModelHookSet(s16 arg0, char *arg1, s16 arg2) {
|
||||||
constData = copy->constData;
|
constData = copy->constData;
|
||||||
constData->hook = arg2;
|
constData->hook = arg2;
|
||||||
data = &Hu3DData[arg2];
|
data = &Hu3DData[arg2];
|
||||||
data->attr |= 0x8000;
|
data->attr |= HU3D_ATTR_HOOK;
|
||||||
(void)data;
|
(void)data;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -994,7 +996,7 @@ void Hu3DModelHookReset(s16 arg0) {
|
||||||
if (temp_r31->hook != -1) {
|
if (temp_r31->hook != -1) {
|
||||||
temp_r0 = temp_r31->hook;
|
temp_r0 = temp_r31->hook;
|
||||||
temp_r28 = &Hu3DData[temp_r0];
|
temp_r28 = &Hu3DData[temp_r0];
|
||||||
temp_r28->attr &= ~0x8000;
|
temp_r28->attr &= ~HU3D_ATTR_HOOK;
|
||||||
temp_r31->hook = -1;
|
temp_r31->hook = -1;
|
||||||
(void)temp_r28;
|
(void)temp_r28;
|
||||||
}
|
}
|
||||||
|
|
@ -1023,7 +1025,7 @@ void Hu3DModelHookObjReset(s16 arg0, char *arg1) {
|
||||||
temp_r29 = copy->constData;
|
temp_r29 = copy->constData;
|
||||||
temp_r0 = temp_r29->hook;
|
temp_r0 = temp_r29->hook;
|
||||||
temp_r28 = &Hu3DData[temp_r0];
|
temp_r28 = &Hu3DData[temp_r0];
|
||||||
temp_r28->attr &= ~0x8000;
|
temp_r28->attr &= ~HU3D_ATTR_HOOK;
|
||||||
temp_r29->hook = -1;
|
temp_r29->hook = -1;
|
||||||
(void)temp_r28;
|
(void)temp_r28;
|
||||||
return;
|
return;
|
||||||
|
|
@ -1067,7 +1069,7 @@ void Hu3DModelHiliteTypeSet(s16 arg0, s16 arg1) {
|
||||||
var_r31->flags |= 0x100;
|
var_r31->flags |= 0x100;
|
||||||
}
|
}
|
||||||
temp_r29 = &Hu3DData[arg0];
|
temp_r29 = &Hu3DData[arg0];
|
||||||
temp_r29->attr |= 0x20000;
|
temp_r29->attr |= HU3D_ATTR_HILITE;
|
||||||
(void)temp_r29;
|
(void)temp_r29;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1101,7 +1103,7 @@ void Hu3DCameraCreate(s32 cam) {
|
||||||
defCamera.scissor_h = RenderMode->efbHeight;
|
defCamera.scissor_h = RenderMode->efbHeight;
|
||||||
Hu3DCameraExistF |= cam;
|
Hu3DCameraExistF |= cam;
|
||||||
|
|
||||||
for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) {
|
for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) {
|
||||||
if ((cam & mask) != 0) {
|
if ((cam & mask) != 0) {
|
||||||
cam_ptr = &Hu3DCamera[i];
|
cam_ptr = &Hu3DCamera[i];
|
||||||
*cam_ptr = defCamera;
|
*cam_ptr = defCamera;
|
||||||
|
|
@ -1114,7 +1116,7 @@ void Hu3DCameraPerspectiveSet(s32 cam, f32 fov, f32 near, f32 far, f32 aspect) {
|
||||||
s16 i;
|
s16 i;
|
||||||
CameraData* cam_ptr;
|
CameraData* cam_ptr;
|
||||||
|
|
||||||
for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) {
|
for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) {
|
||||||
if ((cam & mask) != 0) {
|
if ((cam & mask) != 0) {
|
||||||
cam_ptr = &Hu3DCamera[i];
|
cam_ptr = &Hu3DCamera[i];
|
||||||
cam_ptr->fov = fov;
|
cam_ptr->fov = fov;
|
||||||
|
|
@ -1130,7 +1132,7 @@ void Hu3DCameraViewportSet(s32 cam, f32 vx, f32 vy, f32 vw, f32 vh, f32 nz, f32
|
||||||
s16 i;
|
s16 i;
|
||||||
CameraData* cam_ptr;
|
CameraData* cam_ptr;
|
||||||
|
|
||||||
for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) {
|
for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) {
|
||||||
if ((cam & mask) != 0) {
|
if ((cam & mask) != 0) {
|
||||||
cam_ptr = &Hu3DCamera[i];
|
cam_ptr = &Hu3DCamera[i];
|
||||||
cam_ptr->viewport_x = vx;
|
cam_ptr->viewport_x = vx;
|
||||||
|
|
@ -1148,7 +1150,7 @@ void Hu3DCameraScissorSet(s32 cam, u32 x, u32 y, u32 w, u32 h) {
|
||||||
s16 i;
|
s16 i;
|
||||||
CameraData* cam_ptr;
|
CameraData* cam_ptr;
|
||||||
|
|
||||||
for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) {
|
for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) {
|
||||||
if ((cam & mask) != 0) {
|
if ((cam & mask) != 0) {
|
||||||
cam_ptr = &Hu3DCamera[i];
|
cam_ptr = &Hu3DCamera[i];
|
||||||
cam_ptr->scissor_x = x;
|
cam_ptr->scissor_x = x;
|
||||||
|
|
@ -1164,7 +1166,7 @@ void Hu3DCameraPosSet(s32 cam, f32 x, f32 y, f32 z, f32 ux, f32 uy, f32 uz, f32
|
||||||
s16 i;
|
s16 i;
|
||||||
CameraData* cam_ptr;
|
CameraData* cam_ptr;
|
||||||
|
|
||||||
for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) {
|
for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) {
|
||||||
if ((cam & mask) != 0) {
|
if ((cam & mask) != 0) {
|
||||||
cam_ptr = &Hu3DCamera[i];
|
cam_ptr = &Hu3DCamera[i];
|
||||||
cam_ptr->pos.x = x;
|
cam_ptr->pos.x = x;
|
||||||
|
|
@ -1185,7 +1187,7 @@ void Hu3DCameraPosSetV(s32 cam, Vec *pos, Vec *up, Vec *target) {
|
||||||
s16 i;
|
s16 i;
|
||||||
CameraData* cam_ptr;
|
CameraData* cam_ptr;
|
||||||
|
|
||||||
for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) {
|
for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) {
|
||||||
if ((cam & mask) != 0) {
|
if ((cam & mask) != 0) {
|
||||||
cam_ptr = &Hu3DCamera[i];
|
cam_ptr = &Hu3DCamera[i];
|
||||||
cam_ptr->pos = *pos;
|
cam_ptr->pos = *pos;
|
||||||
|
|
@ -1200,7 +1202,7 @@ void Hu3DCameraKill(s32 cam) {
|
||||||
s16 i;
|
s16 i;
|
||||||
CameraData* cam_ptr;
|
CameraData* cam_ptr;
|
||||||
|
|
||||||
for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) {
|
for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) {
|
||||||
if ((cam & mask) != 0) {
|
if ((cam & mask) != 0) {
|
||||||
cam_ptr = &Hu3DCamera[i];
|
cam_ptr = &Hu3DCamera[i];
|
||||||
cam_ptr->fov = -1.0f;
|
cam_ptr->fov = -1.0f;
|
||||||
|
|
@ -1217,9 +1219,9 @@ void Hu3DCameraAllKill(void) {
|
||||||
s16 mask2;
|
s16 mask2;
|
||||||
|
|
||||||
cam_ptr = &Hu3DCamera[0];
|
cam_ptr = &Hu3DCamera[0];
|
||||||
for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1, cam_ptr++) {
|
for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1, cam_ptr++) {
|
||||||
if (-1.0f != cam_ptr->fov) {
|
if (-1.0f != cam_ptr->fov) {
|
||||||
for (j = 0, mask2 = 1; j < 0x10; j++, mask2 <<= 1) {
|
for (j = 0, mask2 = 1; j < HU3D_CAM_MAX; j++, mask2 <<= 1) {
|
||||||
if ((mask & mask2) != 0) {
|
if ((mask & mask2) != 0) {
|
||||||
cam_ptr2 = &Hu3DCamera[j];
|
cam_ptr2 = &Hu3DCamera[j];
|
||||||
cam_ptr2->fov = -1.0f;
|
cam_ptr2->fov = -1.0f;
|
||||||
|
|
@ -1291,7 +1293,7 @@ BOOL Hu3DModelCameraInfoSet(s16 arg0, u16 arg1) {
|
||||||
|
|
||||||
temp_r28->unk_01 = arg1;
|
temp_r28->unk_01 = arg1;
|
||||||
temp_r24 = &Hu3DData[arg0];
|
temp_r24 = &Hu3DData[arg0];
|
||||||
temp_r24->attr |= 0x2000;
|
temp_r24->attr |= HU3D_ATTR_CAMERA_MOTON;
|
||||||
(void)temp_r24;
|
(void)temp_r24;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
@ -1305,8 +1307,8 @@ s16 Hu3DModelCameraCreate(s16 arg0, u16 arg1) {
|
||||||
|
|
||||||
temp_r3 = Hu3DHookFuncCreate((ModelHookFunc)-1);
|
temp_r3 = Hu3DHookFuncCreate((ModelHookFunc)-1);
|
||||||
temp_r31 = &Hu3DData[(s16) temp_r3];
|
temp_r31 = &Hu3DData[(s16) temp_r3];
|
||||||
temp_r31->attr &= ~0x10;
|
temp_r31->attr &= ~HU3D_ATTR_HOOKFUNC;
|
||||||
temp_r31->attr |= 0x10000 | 0x2000;
|
temp_r31->attr |= HU3D_ATTR_CAMERA | HU3D_ATTR_CAMERA_MOTON;
|
||||||
temp_r31->unk_08 = arg0;
|
temp_r31->unk_08 = arg0;
|
||||||
temp_r31->unk_01 = arg1;
|
temp_r31->unk_01 = arg1;
|
||||||
return temp_r3;
|
return temp_r3;
|
||||||
|
|
@ -1319,7 +1321,7 @@ void Hu3DCameraMotionOn(s16 arg0, s8 arg1) {
|
||||||
copy2 = &Hu3DData[arg0];
|
copy2 = &Hu3DData[arg0];
|
||||||
copy2->unk_01 = arg1;
|
copy2->unk_01 = arg1;
|
||||||
copy = &Hu3DData[arg0];
|
copy = &Hu3DData[arg0];
|
||||||
copy->attr |= 0x2000;
|
copy->attr |= HU3D_ATTR_CAMERA_MOTON;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hu3DCameraMotionStart(s16 arg0, u16 arg1) {
|
void Hu3DCameraMotionStart(s16 arg0, u16 arg1) {
|
||||||
|
|
@ -1332,9 +1334,9 @@ void Hu3DCameraMotionStart(s16 arg0, u16 arg1) {
|
||||||
temp_r27 = &Hu3DData[arg0];
|
temp_r27 = &Hu3DData[arg0];
|
||||||
temp_r27->unk_01 = arg1;
|
temp_r27->unk_01 = arg1;
|
||||||
temp_r29 = &Hu3DData[arg0];
|
temp_r29 = &Hu3DData[arg0];
|
||||||
temp_r29->attr |= 0x2000;
|
temp_r29->attr |= HU3D_ATTR_CAMERA_MOTON;
|
||||||
temp_r30 = &Hu3DData[arg0];
|
temp_r30 = &Hu3DData[arg0];
|
||||||
temp_r30->motion_attr &= ~0x40000002;
|
temp_r30->motion_attr &= ~HU3D_MOTATTR_PAUSE;
|
||||||
Hu3DMotionStartEndSet(arg0, 0.0f, Hu3DMotionMotionMaxTimeGet(temp_r28->unk_08));
|
Hu3DMotionStartEndSet(arg0, 0.0f, Hu3DMotionMotionMaxTimeGet(temp_r28->unk_08));
|
||||||
Hu3DMotionTimeSet(arg0, 0.0f);
|
Hu3DMotionTimeSet(arg0, 0.0f);
|
||||||
}
|
}
|
||||||
|
|
@ -1343,7 +1345,7 @@ void Hu3DCameraMotionOff(s16 arg0) {
|
||||||
ModelData* temp_r31;
|
ModelData* temp_r31;
|
||||||
|
|
||||||
temp_r31 = &Hu3DData[arg0];
|
temp_r31 = &Hu3DData[arg0];
|
||||||
temp_r31->attr &= ~0x2000;
|
temp_r31->attr &= ~HU3D_ATTR_CAMERA_MOTON;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hu3DLighInit(void) {
|
void Hu3DLighInit(void) {
|
||||||
|
|
@ -1456,7 +1458,7 @@ s16 Hu3DLLightCreateV(s16 arg0, Vec* arg1, Vec* arg2, GXColor* arg3) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
temp_r29->unk_38[var_r30] = var_r28;
|
temp_r29->unk_38[var_r30] = var_r28;
|
||||||
temp_r29->attr |= 0x1000;
|
temp_r29->attr |= HU3D_ATTR_LLIGHT;
|
||||||
return var_r30;
|
return var_r30;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1544,7 +1546,7 @@ void Hu3DLLightKill(s16 dataIndex, s16 lightIndex) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r30 == 8) {
|
if (var_r30 == 8) {
|
||||||
temp_r31->attr &= ~0x1000;
|
temp_r31->attr &= ~HU3D_ATTR_LLIGHT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1789,7 +1791,7 @@ s16 Hu3DLightSet(ModelData* arg0, Mtx *arg1, Mtx *arg2, f32 arg8) {
|
||||||
var_r30 <<= 1;
|
var_r30 <<= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((arg0->attr & 0x1000) != 0) {
|
if ((arg0->attr & HU3D_ATTR_LLIGHT) != 0) {
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < 8; i++) {
|
||||||
if (arg0->unk_38[i] != -1) {
|
if (arg0->unk_38[i] != -1) {
|
||||||
var_r29 = &Hu3DLocalLight[arg0->unk_38[i]];
|
var_r29 = &Hu3DLocalLight[arg0->unk_38[i]];
|
||||||
|
|
@ -1939,9 +1941,9 @@ void Hu3DShadowExec(void) {
|
||||||
GXInvalidateTexAll();
|
GXInvalidateTexAll();
|
||||||
GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, BGColor);
|
GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, BGColor);
|
||||||
|
|
||||||
for (var_r30 = 0; var_r30 < 0x200; var_r30++, var_r31++) {
|
for (var_r30 = 0; var_r30 < HU3D_MODEL_MAX; var_r30++, var_r31++) {
|
||||||
if (var_r31->hsfData != 0 && (var_r31->attr & 4) != 0 && (var_r31->attr & 1) == 0 && (var_r31->attr & 0x8000) == 0) {
|
if (var_r31->hsfData != 0 && (var_r31->attr & HU3D_ATTR_SHADOW) != 0 && (var_r31->attr & HU3D_ATTR_DISPOFF) == 0 && (var_r31->attr & HU3D_ATTR_HOOK) == 0) {
|
||||||
if ((var_r31->attr & 8) != 0) {
|
if ((var_r31->attr & HU3D_ATTR_MOTION_OFF) != 0) {
|
||||||
test2 = 0;
|
test2 = 0;
|
||||||
if (var_r31->unk_08 != -1) {
|
if (var_r31->unk_08 != -1) {
|
||||||
Hu3DMotionExec(var_r30, var_r31->unk_08, var_r31->unk_64, 0);
|
Hu3DMotionExec(var_r30, var_r31->unk_08, var_r31->unk_64, 0);
|
||||||
|
|
@ -1952,7 +1954,7 @@ void Hu3DShadowExec(void) {
|
||||||
if (var_r31->unk_0A != -1) {
|
if (var_r31->unk_0A != -1) {
|
||||||
Hu3DMotionExec(var_r30, var_r31->unk_0A, var_r31->unk_74, 1);
|
Hu3DMotionExec(var_r30, var_r31->unk_0A, var_r31->unk_74, 1);
|
||||||
}
|
}
|
||||||
if ((var_r31->attr & 0x400) != 0) {
|
if ((var_r31->attr & HU3D_ATTR_CLUSTER_ON) != 0) {
|
||||||
ClusterMotionExec(var_r31);
|
ClusterMotionExec(var_r31);
|
||||||
test2 = 1;
|
test2 = 1;
|
||||||
}
|
}
|
||||||
|
|
@ -1963,13 +1965,13 @@ void Hu3DShadowExec(void) {
|
||||||
Hu3DMotionExec(var_r30, var_r31->unk_0E, var_r31->unk_94, 1);
|
Hu3DMotionExec(var_r30, var_r31->unk_0E, var_r31->unk_94, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((var_r31->attr & 0x90) == 0 || (var_r31->motion_attr & 0x40000002) == 0) {
|
if ((var_r31->attr & (HU3D_ATTR_HOOKFUNC|HU3D_ATTR_ENVELOPE_OFF)) == 0 || (var_r31->motion_attr & HU3D_MOTATTR_PAUSE) == 0) {
|
||||||
test2 = 1;
|
test2 = 1;
|
||||||
InitVtxParm(var_r31->hsfData);
|
InitVtxParm(var_r31->hsfData);
|
||||||
if (var_r31->unk_0E != -1) {
|
if (var_r31->unk_0E != -1) {
|
||||||
ShapeProc(var_r31->hsfData);
|
ShapeProc(var_r31->hsfData);
|
||||||
}
|
}
|
||||||
if ((var_r31->attr & 0x400) != 0) {
|
if ((var_r31->attr & HU3D_ATTR_CLUSTER_ON) != 0) {
|
||||||
ClusterProc(var_r31);
|
ClusterProc(var_r31);
|
||||||
}
|
}
|
||||||
if (var_r31->hsfData->cenvCnt != 0) {
|
if (var_r31->hsfData->cenvCnt != 0) {
|
||||||
|
|
@ -1977,7 +1979,7 @@ void Hu3DShadowExec(void) {
|
||||||
}
|
}
|
||||||
PPCSync();
|
PPCSync();
|
||||||
}
|
}
|
||||||
var_r31->attr |= 0x800;
|
var_r31->attr |= HU3D_ATTR_MOT_EXEC;
|
||||||
}
|
}
|
||||||
mtxRot(sp58, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z);
|
mtxRot(sp58, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z);
|
||||||
PSMTXScale(spB8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z);
|
PSMTXScale(spB8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z);
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,14 @@
|
||||||
#include "ext_math.h"
|
#include "ext_math.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
|
||||||
|
#define HU3D_MOTATTR_SHIFT_ALL (HU3D_MOTATTR_SHIFT_LOOP|HU3D_MOTATTR_SHIFT_PAUSE|HU3D_MOTATTR_SHIFT_REV)
|
||||||
|
#define HU3D_MOTATTR_NOSHIFT_ALL (HU3D_MOTATTR_LOOP|HU3D_MOTATTR_PAUSE|HU3D_MOTATTR_REV)
|
||||||
|
#define HU3D_MOTATTR_ALL (HU3D_MOTATTR_SHIFT_ALL|HU3D_MOTATTR_NOSHIFT_ALL)
|
||||||
|
|
||||||
static s32 SearchObjectIndex(HsfData *arg0, u32 arg1);
|
static s32 SearchObjectIndex(HsfData *arg0, u32 arg1);
|
||||||
static s32 SearchAttributeIndex(HsfData *arg0, u32 arg1);
|
static s32 SearchAttributeIndex(HsfData *arg0, u32 arg1);
|
||||||
|
|
||||||
MotionData Hu3DMotion[256];
|
MotionData Hu3DMotion[HU3D_MOTION_MAX];
|
||||||
|
|
||||||
static HsfBitmap *bitMapPtr;
|
static HsfBitmap *bitMapPtr;
|
||||||
|
|
||||||
|
|
@ -22,7 +26,7 @@ void Hu3DMotionInit(void) {
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
var_r31 = (MotionData*) Hu3DData;
|
var_r31 = (MotionData*) Hu3DData;
|
||||||
for (i = 0; i < 256; i++, var_r31++) {
|
for (i = 0; i < HU3D_MOTION_MAX; i++, var_r31++) {
|
||||||
var_r31->unk_04 = 0;
|
var_r31->unk_04 = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -32,12 +36,12 @@ s16 Hu3DMotionCreate(void *arg0) {
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
var_r31 = Hu3DMotion;
|
var_r31 = Hu3DMotion;
|
||||||
for (i = 0; i < 256; i++, var_r31++) {
|
for (i = 0; i < HU3D_MOTION_MAX; i++, var_r31++) {
|
||||||
if (var_r31->unk_04 == 0) {
|
if (var_r31->unk_04 == 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (i == 256) {
|
if (i == HU3D_MOTION_MAX) {
|
||||||
OSReport("Error: Create Motion Over!\n");
|
OSReport("Error: Create Motion Over!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
@ -53,12 +57,12 @@ s16 Hu3DMotionModelCreate(s16 arg0) {
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
var_r31 = Hu3DMotion;
|
var_r31 = Hu3DMotion;
|
||||||
for (i = 0; i < 256; i++, var_r31++) {
|
for (i = 0; i < HU3D_MOTION_MAX; i++, var_r31++) {
|
||||||
if (var_r31->unk_04 == 0) {
|
if (var_r31->unk_04 == 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (i == 256) {
|
if (i == HU3D_MOTION_MAX) {
|
||||||
OSReport("Error: Create Motion Over!\n");
|
OSReport("Error: Create Motion Over!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
@ -101,7 +105,7 @@ void Hu3DMotionAllKill(void) {
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
var_r27 = Hu3DMotion;
|
var_r27 = Hu3DMotion;
|
||||||
for (i = 0; i < 256; i++, var_r27++) {
|
for (i = 0; i < HU3D_MOTION_MAX; i++, var_r27++) {
|
||||||
if (var_r27->unk_04) {
|
if (var_r27->unk_04) {
|
||||||
Hu3DMotionKill(i);
|
Hu3DMotionKill(i);
|
||||||
}
|
}
|
||||||
|
|
@ -143,7 +147,7 @@ void Hu3DMotionShiftSet(s16 arg0, s16 arg1, float arg2, float arg3, u32 arg4) {
|
||||||
MotionData *sp10 = &Hu3DMotion[arg1];
|
MotionData *sp10 = &Hu3DMotion[arg1];
|
||||||
s32 var_r30;
|
s32 var_r30;
|
||||||
|
|
||||||
arg4 &= ~0x40000000;
|
arg4 &= ~HU3D_MOTATTR;
|
||||||
var_r30 = 0;
|
var_r30 = 0;
|
||||||
if (temp_r31->unk_0C != -1) {
|
if (temp_r31->unk_0C != -1) {
|
||||||
temp_r31->unk_08 = temp_r31->unk_0C;
|
temp_r31->unk_08 = temp_r31->unk_0C;
|
||||||
|
|
@ -151,20 +155,20 @@ void Hu3DMotionShiftSet(s16 arg0, s16 arg1, float arg2, float arg3, u32 arg4) {
|
||||||
temp_r31->unk_68 = temp_r31->unk_88;
|
temp_r31->unk_68 = temp_r31->unk_88;
|
||||||
temp_r31->unk_6C = temp_r31->unk_8C;
|
temp_r31->unk_6C = temp_r31->unk_8C;
|
||||||
temp_r31->unk_70 = temp_r31->unk_90;
|
temp_r31->unk_70 = temp_r31->unk_90;
|
||||||
if (arg4 & 0x40000008) {
|
if (arg4 & HU3D_MOTATTR_SHIFT_LOOP) {
|
||||||
var_r30 |= 0x40000000 | 1;
|
var_r30 |= HU3D_MOTATTR_LOOP;
|
||||||
}
|
}
|
||||||
if (arg4 & 0x40000010) {
|
if (arg4 & HU3D_MOTATTR_SHIFT_PAUSE) {
|
||||||
var_r30 |= 0x40000000 | 2;
|
var_r30 |= HU3D_MOTATTR_PAUSE;
|
||||||
}
|
}
|
||||||
if (arg4 & 0x40000020) {
|
if (arg4 & HU3D_MOTATTR_SHIFT_REV) {
|
||||||
var_r30 |= 0x40000000 | 4;
|
var_r30 |= HU3D_MOTATTR_REV;
|
||||||
}
|
}
|
||||||
temp_r31->motion_attr &= ~0x4000003F;
|
temp_r31->motion_attr &= ~HU3D_MOTATTR_ALL;
|
||||||
temp_r31->motion_attr |= var_r30;
|
temp_r31->motion_attr |= var_r30;
|
||||||
temp_r31->motion_attr &= ~0x40000000;
|
temp_r31->motion_attr &= ~HU3D_MOTATTR;
|
||||||
} else {
|
} else {
|
||||||
temp_r31->motion_attr &= ~0x40000038;
|
temp_r31->motion_attr &= ~HU3D_MOTATTR_SHIFT_ALL;
|
||||||
}
|
}
|
||||||
temp_r31->unk_0C = arg1;
|
temp_r31->unk_0C = arg1;
|
||||||
temp_r31->unk_84 = arg2;
|
temp_r31->unk_84 = arg2;
|
||||||
|
|
@ -173,18 +177,18 @@ void Hu3DMotionShiftSet(s16 arg0, s16 arg1, float arg2, float arg3, u32 arg4) {
|
||||||
temp_r31->unk_80 = arg3;
|
temp_r31->unk_80 = arg3;
|
||||||
temp_r31->unk_8C = 0.0f;
|
temp_r31->unk_8C = 0.0f;
|
||||||
temp_r31->unk_90 = Hu3DMotionShiftMaxTimeGet(arg0);
|
temp_r31->unk_90 = Hu3DMotionShiftMaxTimeGet(arg0);
|
||||||
if (arg4 & 0x40000001) {
|
if (arg4 & HU3D_MOTATTR_LOOP) {
|
||||||
var_r30 |= 0x40000000 | 8;
|
var_r30 |= HU3D_MOTATTR_SHIFT_LOOP;
|
||||||
}
|
}
|
||||||
if (arg4 & 0x40000002) {
|
if (arg4 & HU3D_MOTATTR_PAUSE) {
|
||||||
var_r30 |= 0x40000000 | 0x10;
|
var_r30 |= HU3D_MOTATTR_SHIFT_PAUSE;
|
||||||
}
|
}
|
||||||
if (arg4 & 0x40000004) {
|
if (arg4 & HU3D_MOTATTR_REV) {
|
||||||
var_r30 |= 0x40000000 | 0x20;
|
var_r30 |= HU3D_MOTATTR_SHIFT_REV;
|
||||||
}
|
}
|
||||||
arg4 &= ~0x40000007;
|
arg4 &= ~HU3D_MOTATTR_NOSHIFT_ALL;
|
||||||
temp_r31->motion_attr |= var_r30 | arg4;
|
temp_r31->motion_attr |= var_r30 | arg4;
|
||||||
temp_r31->motion_attr &= ~0x40000000;
|
temp_r31->motion_attr &= ~HU3D_MOTATTR;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hu3DMotionShapeSet(s16 arg0, s16 arg1) {
|
void Hu3DMotionShapeSet(s16 arg0, s16 arg1) {
|
||||||
|
|
@ -231,8 +235,8 @@ s16 Hu3DMotionClusterSet(s16 arg0, s16 arg1) {
|
||||||
temp_r31->unk_10[i] = arg1;
|
temp_r31->unk_10[i] = arg1;
|
||||||
temp_r31->unk_A4[i] = 0.0f;
|
temp_r31->unk_A4[i] = 0.0f;
|
||||||
temp_r31->unk_B4[i] = 1.0f;
|
temp_r31->unk_B4[i] = 1.0f;
|
||||||
temp_r31->cluster_attr[i] = 0;
|
temp_r31->cluster_attr[i] = HU3D_ATTR_NONE;
|
||||||
temp_r31->attr |= 0x400;
|
temp_r31->attr |= HU3D_ATTR_CLUSTER_ON;
|
||||||
ClusterAdjustObject(temp_r31->hsfData, Hu3DMotion[arg1].unk_04);
|
ClusterAdjustObject(temp_r31->hsfData, Hu3DMotion[arg1].unk_04);
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
@ -248,7 +252,7 @@ s16 Hu3DMotionClusterNoSet(s16 arg0, s16 arg1, s16 arg2) {
|
||||||
temp_r31->unk_10[arg2] = arg1;
|
temp_r31->unk_10[arg2] = arg1;
|
||||||
temp_r31->unk_A4[arg2] = 0.0f;
|
temp_r31->unk_A4[arg2] = 0.0f;
|
||||||
temp_r31->unk_B4[arg2] = 1.0f;
|
temp_r31->unk_B4[arg2] = 1.0f;
|
||||||
temp_r31->attr |= 0x400;
|
temp_r31->attr |= HU3D_ATTR_CLUSTER_ON;
|
||||||
ClusterAdjustObject(temp_r31->hsfData, Hu3DMotion[arg1].unk_04);
|
ClusterAdjustObject(temp_r31->hsfData, Hu3DMotion[arg1].unk_04);
|
||||||
return arg2;
|
return arg2;
|
||||||
}
|
}
|
||||||
|
|
@ -265,7 +269,7 @@ void Hu3DMotionClusterReset(s16 arg0, s16 arg1) {
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
temp_r31->unk_10[i] = -1;
|
temp_r31->unk_10[i] = -1;
|
||||||
}
|
}
|
||||||
temp_r31->attr &= ~0x400;
|
temp_r31->attr &= ~HU3D_ATTR_CLUSTER_ON;
|
||||||
} else {
|
} else {
|
||||||
temp_r31->unk_10[arg1] = -1;
|
temp_r31->unk_10[arg1] = -1;
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
|
|
@ -273,7 +277,7 @@ void Hu3DMotionClusterReset(s16 arg0, s16 arg1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
temp_r31->attr &= ~0x400;
|
temp_r31->attr &= ~HU3D_ATTR_CLUSTER_ON;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -299,7 +303,7 @@ void Hu3DMotionTimeSet(s16 arg0, float arg1) {
|
||||||
arg1 = 0.0f;
|
arg1 = 0.0f;
|
||||||
}
|
}
|
||||||
temp_r31->unk_64 = arg1;
|
temp_r31->unk_64 = arg1;
|
||||||
if (temp_r31->hsfData != (HsfData*) -1 && temp_r31->hsfData->cenvCnt != 0 && (temp_r31->motion_attr & 0x40000002)) {
|
if (temp_r31->hsfData != (HsfData*) -1 && temp_r31->hsfData->cenvCnt != 0 && (temp_r31->motion_attr & HU3D_MOTATTR_PAUSE)) {
|
||||||
Hu3DMotionExec(arg0, temp_r31->unk_08, arg1, 0);
|
Hu3DMotionExec(arg0, temp_r31->unk_08, arg1, 0);
|
||||||
if (temp_r31->unk_0C != -1) {
|
if (temp_r31->unk_0C != -1) {
|
||||||
Hu3DSubMotionExec(arg0);
|
Hu3DSubMotionExec(arg0);
|
||||||
|
|
@ -378,7 +382,7 @@ void Hu3DMotionStartEndSet(s16 arg0, float arg1, float arg2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 Hu3DMotionEndCheck(s16 arg0) {
|
s32 Hu3DMotionEndCheck(s16 arg0) {
|
||||||
if (!(Hu3DData[arg0].motion_attr & 0x40000004)) {
|
if (!(Hu3DData[arg0].motion_attr & HU3D_MOTATTR_REV)) {
|
||||||
return (Hu3DMotionMaxTimeGet(arg0) <= Hu3DMotionTimeGet(arg0));
|
return (Hu3DMotionMaxTimeGet(arg0) <= Hu3DMotionTimeGet(arg0));
|
||||||
} else {
|
} else {
|
||||||
return (Hu3DMotionTimeGet(arg0) <= 0.0f);
|
return (Hu3DMotionTimeGet(arg0) <= 0.0f);
|
||||||
|
|
@ -480,13 +484,13 @@ void Hu3DMotionNext(s16 arg0) {
|
||||||
temp_r28 = temp_r31->motion_attr;
|
temp_r28 = temp_r31->motion_attr;
|
||||||
if (temp_r31->unk_08 != -1) {
|
if (temp_r31->unk_08 != -1) {
|
||||||
temp_r27 = &Hu3DMotion[temp_r31->unk_08];
|
temp_r27 = &Hu3DMotion[temp_r31->unk_08];
|
||||||
if (!(temp_r28 & 0x40000002)) {
|
if (!(temp_r28 & HU3D_MOTATTR_PAUSE)) {
|
||||||
if (!(temp_r28 & 0x40000004)) {
|
if (!(temp_r28 & HU3D_MOTATTR_REV)) {
|
||||||
temp_r31->unk_64 += temp_r31->unk_68 * minimumVcountf;
|
temp_r31->unk_64 += temp_r31->unk_68 * minimumVcountf;
|
||||||
} else {
|
} else {
|
||||||
temp_r31->unk_64 -= temp_r31->unk_68 * minimumVcountf;
|
temp_r31->unk_64 -= temp_r31->unk_68 * minimumVcountf;
|
||||||
}
|
}
|
||||||
if (temp_r28 & 0x40000001) {
|
if (temp_r28 & HU3D_MOTATTR_LOOP) {
|
||||||
if (temp_r31->unk_64 < temp_r31->unk_6C) {
|
if (temp_r31->unk_64 < temp_r31->unk_6C) {
|
||||||
temp_r31->unk_64 = temp_r31->unk_70 - (temp_r31->unk_6C - temp_r31->unk_64);
|
temp_r31->unk_64 = temp_r31->unk_70 - (temp_r31->unk_6C - temp_r31->unk_64);
|
||||||
} else if (temp_r31->unk_64 >= temp_r31->unk_70) {
|
} else if (temp_r31->unk_64 >= temp_r31->unk_70) {
|
||||||
|
|
@ -502,13 +506,13 @@ void Hu3DMotionNext(s16 arg0) {
|
||||||
if (temp_r31->unk_0A != -1) {
|
if (temp_r31->unk_0A != -1) {
|
||||||
temp_r27 = &Hu3DMotion[temp_r31->unk_0A];
|
temp_r27 = &Hu3DMotion[temp_r31->unk_0A];
|
||||||
temp_r29 = temp_r27->unk_04->motion;
|
temp_r29 = temp_r27->unk_04->motion;
|
||||||
if (!(temp_r28 & 0x40000400)) {
|
if (!(temp_r28 & HU3D_MOTATTR_OVL_PAUSE)) {
|
||||||
if (!(temp_r28 & 0x40000800)) {
|
if (!(temp_r28 & HU3D_MOTATTR_OVL_REV)) {
|
||||||
temp_r31->unk_74 += temp_r31->unk_78 * minimumVcountf;
|
temp_r31->unk_74 += temp_r31->unk_78 * minimumVcountf;
|
||||||
} else {
|
} else {
|
||||||
temp_r31->unk_74 -= temp_r31->unk_78 * minimumVcountf;
|
temp_r31->unk_74 -= temp_r31->unk_78 * minimumVcountf;
|
||||||
}
|
}
|
||||||
if (temp_r28 & 0x40000200) {
|
if (temp_r28 & HU3D_MOTATTR_OVL_LOOP) {
|
||||||
if (temp_r31->unk_74 < 0.0f) {
|
if (temp_r31->unk_74 < 0.0f) {
|
||||||
temp_r31->unk_74 = temp_r29->len;
|
temp_r31->unk_74 = temp_r29->len;
|
||||||
} else if (temp_r31->unk_74 >= temp_r29->len) {
|
} else if (temp_r31->unk_74 >= temp_r29->len) {
|
||||||
|
|
@ -531,28 +535,28 @@ void Hu3DMotionNext(s16 arg0) {
|
||||||
temp_r31->unk_70 = temp_r31->unk_90;
|
temp_r31->unk_70 = temp_r31->unk_90;
|
||||||
temp_r31->unk_0C = -1;
|
temp_r31->unk_0C = -1;
|
||||||
temp_r28 = 0;
|
temp_r28 = 0;
|
||||||
if (temp_r31->motion_attr & 0x40000008) {
|
if (temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_LOOP) {
|
||||||
temp_r28 |= 0x40000000 | 1;
|
temp_r28 |= HU3D_MOTATTR_LOOP;
|
||||||
}
|
}
|
||||||
if (temp_r31->motion_attr & 0x40000010) {
|
if (temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_PAUSE) {
|
||||||
temp_r28 |= 0x40000000 | 2;
|
temp_r28 |= HU3D_MOTATTR_PAUSE;
|
||||||
}
|
}
|
||||||
if (temp_r31->motion_attr & 0x40000020) {
|
if (temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_REV) {
|
||||||
temp_r28 |= 0x40000000 | 4;
|
temp_r28 |= HU3D_MOTATTR_REV;
|
||||||
}
|
}
|
||||||
temp_r31->motion_attr &= ~0x4000003F;
|
temp_r31->motion_attr &= ~HU3D_MOTATTR_ALL;
|
||||||
temp_r31->motion_attr |= temp_r28;
|
temp_r31->motion_attr |= temp_r28;
|
||||||
temp_r31->motion_attr &= ~0x40000000;
|
temp_r31->motion_attr &= ~HU3D_MOTATTR;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!(temp_r31->motion_attr & 0x40000010)) {
|
if (!(temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_PAUSE)) {
|
||||||
temp_r27 = &Hu3DMotion[temp_r31->unk_0C];
|
temp_r27 = &Hu3DMotion[temp_r31->unk_0C];
|
||||||
if (!(temp_r31->motion_attr & 0x40000020)) {
|
if (!(temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_REV)) {
|
||||||
temp_r31->unk_84 += temp_r31->unk_88 * minimumVcountf;
|
temp_r31->unk_84 += temp_r31->unk_88 * minimumVcountf;
|
||||||
} else {
|
} else {
|
||||||
temp_r31->unk_84 -= temp_r31->unk_88 * minimumVcountf;
|
temp_r31->unk_84 -= temp_r31->unk_88 * minimumVcountf;
|
||||||
}
|
}
|
||||||
if (temp_r31->motion_attr & 0x40000008) {
|
if (temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_LOOP) {
|
||||||
if (temp_r31->unk_84 < temp_r31->unk_8C) {
|
if (temp_r31->unk_84 < temp_r31->unk_8C) {
|
||||||
temp_r31->unk_84 = temp_r31->unk_90;
|
temp_r31->unk_84 = temp_r31->unk_90;
|
||||||
} else if (temp_r31->unk_84 >= temp_r31->unk_90) {
|
} else if (temp_r31->unk_84 >= temp_r31->unk_90) {
|
||||||
|
|
@ -565,15 +569,15 @@ void Hu3DMotionNext(s16 arg0) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (temp_r31->unk_0E != -1 && !(temp_r28 & 0x40000080)) {
|
if (temp_r31->unk_0E != -1 && !(temp_r28 & HU3D_MOTATTR_SHAPE_PAUSE)) {
|
||||||
temp_r27 = &Hu3DMotion[temp_r31->unk_0E];
|
temp_r27 = &Hu3DMotion[temp_r31->unk_0E];
|
||||||
temp_r29 = temp_r27->unk_04->motion;
|
temp_r29 = temp_r27->unk_04->motion;
|
||||||
if (!(temp_r28 & 0x40000100)) {
|
if (!(temp_r28 & HU3D_MOTATTR_SHAPE_REV)) {
|
||||||
temp_r31->unk_94 += temp_r31->unk_98 * minimumVcountf;
|
temp_r31->unk_94 += temp_r31->unk_98 * minimumVcountf;
|
||||||
} else {
|
} else {
|
||||||
temp_r31->unk_94 -= temp_r31->unk_98 * minimumVcountf;
|
temp_r31->unk_94 -= temp_r31->unk_98 * minimumVcountf;
|
||||||
}
|
}
|
||||||
if (temp_r28 & 0x40000040) {
|
if (temp_r28 & HU3D_MOTATTR_SHAPE_LOOP) {
|
||||||
if (temp_r31->unk_94 < temp_r31->unk_9C) {
|
if (temp_r31->unk_94 < temp_r31->unk_9C) {
|
||||||
temp_r31->unk_94 = temp_r31->unk_A0;
|
temp_r31->unk_94 = temp_r31->unk_A0;
|
||||||
} else if (temp_r31->unk_94 >= temp_r31->unk_A0) {
|
} else if (temp_r31->unk_94 >= temp_r31->unk_A0) {
|
||||||
|
|
@ -585,17 +589,17 @@ void Hu3DMotionNext(s16 arg0) {
|
||||||
temp_r31->unk_94 = temp_r31->unk_A0;
|
temp_r31->unk_94 = temp_r31->unk_A0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (temp_r31->attr & 0x400) {
|
if (temp_r31->attr & HU3D_ATTR_CLUSTER_ON) {
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
if (temp_r31->unk_10[i] != -1 && !(temp_r31->cluster_attr[i] & (s32) 0xC0000002)) {
|
if (temp_r31->unk_10[i] != -1 && !(temp_r31->cluster_attr[i] & HU3D_CLUSTER_ATTR_PAUSE)) {
|
||||||
temp_r27 = &Hu3DMotion[temp_r31->unk_10[i]];
|
temp_r27 = &Hu3DMotion[temp_r31->unk_10[i]];
|
||||||
temp_r29 = temp_r27->unk_04->motion;
|
temp_r29 = temp_r27->unk_04->motion;
|
||||||
if (!(temp_r31->cluster_attr[i] & (s32) 0xC0000004)) {
|
if (!(temp_r31->cluster_attr[i] & HU3D_CLUSTER_ATTR_REV)) {
|
||||||
temp_r31->unk_A4[i] += temp_r31->unk_B4[i] * minimumVcountf;
|
temp_r31->unk_A4[i] += temp_r31->unk_B4[i] * minimumVcountf;
|
||||||
} else {
|
} else {
|
||||||
temp_r31->unk_A4[i] -= temp_r31->unk_B4[i] * minimumVcountf;
|
temp_r31->unk_A4[i] -= temp_r31->unk_B4[i] * minimumVcountf;
|
||||||
}
|
}
|
||||||
if (temp_r31->cluster_attr[i] & (s32) 0xC0000001) {
|
if (temp_r31->cluster_attr[i] & HU3D_CLUSTER_ATTR_LOOP) {
|
||||||
if (temp_r31->unk_A4[i] < 0.0f) {
|
if (temp_r31->unk_A4[i] < 0.0f) {
|
||||||
temp_r31->unk_A4[i] = temp_r29->len;
|
temp_r31->unk_A4[i] = temp_r29->len;
|
||||||
} else if (temp_r31->unk_A4[i] >= temp_r29->len) {
|
} else if (temp_r31->unk_A4[i] >= temp_r29->len) {
|
||||||
|
|
@ -679,7 +683,7 @@ void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3) {
|
||||||
if (var_r30->channel == 0x28) {
|
if (var_r30->channel == 0x28) {
|
||||||
temp_r31->data.mesh.baseMorph = GetCurve(var_r30, arg2);
|
temp_r31->data.mesh.baseMorph = GetCurve(var_r30, arg2);
|
||||||
} else if (temp_r31->type == 7) {
|
} else if (temp_r31->type == 7) {
|
||||||
if (temp_r27->attr & 0x2000) {
|
if (temp_r27->attr & HU3D_ATTR_CAMERA_MOTON) {
|
||||||
SetObjCameraMotion(arg0, var_r30, GetCurve(var_r30, arg2));
|
SetObjCameraMotion(arg0, var_r30, GetCurve(var_r30, arg2));
|
||||||
}
|
}
|
||||||
} else if (temp_r31->type == 8) {
|
} else if (temp_r31->type == 8) {
|
||||||
|
|
@ -718,20 +722,20 @@ void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
if (!(temp_r27->attr & 0x80000)) {
|
if (!(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) {
|
||||||
if (var_r30->param < temp_r29->materialCnt) {
|
if (var_r30->param < temp_r29->materialCnt) {
|
||||||
SetObjMatMotion(arg0, var_r30, GetCurve(var_r30, arg2));
|
SetObjMatMotion(arg0, var_r30, GetCurve(var_r30, arg2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
if (!(temp_r27->attr & 0x80000)) {
|
if (!(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) {
|
||||||
var_r23 = &temp_r29->cluster[var_r30->target_s16];
|
var_r23 = &temp_r29->cluster[var_r30->target_s16];
|
||||||
var_r23->unk10 = GetClusterCurve(var_r30, arg2);
|
var_r23->unk10 = GetClusterCurve(var_r30, arg2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
if (!(temp_r27->attr & 0x80000)) {
|
if (!(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) {
|
||||||
temp_r22 = var_r30;
|
temp_r22 = var_r30;
|
||||||
var_r23 = &temp_r29->cluster[temp_r22->target_s16];
|
var_r23 = &temp_r29->cluster[temp_r22->target_s16];
|
||||||
var_r23->unk14[temp_r22->unk04] = GetClusterWeightCurve(temp_r22, arg2);
|
var_r23->unk14[temp_r22->unk04] = GetClusterWeightCurve(temp_r22, arg2);
|
||||||
|
|
@ -739,7 +743,7 @@ void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3) {
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
var_r26 = var_r30;
|
var_r26 = var_r30;
|
||||||
if (var_r26->target_s16 != -1 || !(temp_r27->attr & 0x80000)) {
|
if (var_r26->target_s16 != -1 || !(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) {
|
||||||
if (var_r26->param != -1 && var_r26->param < temp_r29->attributeCnt) {
|
if (var_r26->param != -1 && var_r26->param < temp_r29->attributeCnt) {
|
||||||
SetObjAttrMotion(arg0, var_r26, GetCurve(var_r26, arg2));
|
SetObjAttrMotion(arg0, var_r26, GetCurve(var_r26, arg2));
|
||||||
}
|
}
|
||||||
|
|
@ -762,7 +766,7 @@ void Hu3DCameraMotionExec(s16 arg0) {
|
||||||
temp_r27 = temp_r28->unk_04;
|
temp_r27 = temp_r28->unk_04;
|
||||||
temp_r29 = temp_r27->motion;
|
temp_r29 = temp_r27->motion;
|
||||||
var_r31 = temp_r29->track;
|
var_r31 = temp_r29->track;
|
||||||
if (temp_r30->attr & 0x2000) {
|
if (temp_r30->attr & HU3D_ATTR_CAMERA_MOTON) {
|
||||||
temp_r26 = &var_r31[temp_r29->numTracks];
|
temp_r26 = &var_r31[temp_r29->numTracks];
|
||||||
for (; var_r31 < temp_r26; var_r31++) {
|
for (; var_r31 < temp_r26; var_r31++) {
|
||||||
if (var_r31->type == 2 && var_r31->param_u16 == 7) {
|
if (var_r31->type == 2 && var_r31->param_u16 == 7) {
|
||||||
|
|
@ -928,7 +932,7 @@ void SetObjMatMotion(s16 arg0, HsfTrack *arg1, float arg2) {
|
||||||
temp_r31->shadowColor[2] = var_f31 * 255.0f;
|
temp_r31->shadowColor[2] = var_f31 * 255.0f;
|
||||||
break;
|
break;
|
||||||
case 0x39:
|
case 0x39:
|
||||||
if (!(temp_r30->attr & 0x40000)) {
|
if (!(temp_r30->attr & HU3D_ATTR_TPLVL_SET)) {
|
||||||
temp_r31->invAlpha = var_f31;
|
temp_r31->invAlpha = var_f31;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -1047,7 +1051,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) {
|
||||||
switch (arg1->channel) {
|
switch (arg1->channel) {
|
||||||
case 8:
|
case 8:
|
||||||
var_f30 = temp_r29->scale.x * (arg2 + temp_r29->pos.x);
|
var_f30 = temp_r29->scale.x * (arg2 + temp_r29->pos.x);
|
||||||
for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) {
|
for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) {
|
||||||
if (var_r30 & temp_r28) {
|
if (var_r30 & temp_r28) {
|
||||||
Hu3DCamera[i].pos.x = var_f30;
|
Hu3DCamera[i].pos.x = var_f30;
|
||||||
}
|
}
|
||||||
|
|
@ -1055,7 +1059,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) {
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
var_f30 = temp_r29->scale.y * (arg2 + temp_r29->pos.y);
|
var_f30 = temp_r29->scale.y * (arg2 + temp_r29->pos.y);
|
||||||
for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) {
|
for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) {
|
||||||
if (var_r30 & temp_r28) {
|
if (var_r30 & temp_r28) {
|
||||||
Hu3DCamera[i].pos.y = var_f30;
|
Hu3DCamera[i].pos.y = var_f30;
|
||||||
}
|
}
|
||||||
|
|
@ -1063,7 +1067,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) {
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
var_f30 = temp_r29->scale.z * (arg2 + temp_r29->pos.z);
|
var_f30 = temp_r29->scale.z * (arg2 + temp_r29->pos.z);
|
||||||
for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) {
|
for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) {
|
||||||
if (var_r30 & temp_r28) {
|
if (var_r30 & temp_r28) {
|
||||||
Hu3DCamera[i].pos.z = var_f30;
|
Hu3DCamera[i].pos.z = var_f30;
|
||||||
}
|
}
|
||||||
|
|
@ -1071,7 +1075,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) {
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
var_f30 = temp_r29->scale.x * (arg2 + temp_r29->pos.x);
|
var_f30 = temp_r29->scale.x * (arg2 + temp_r29->pos.x);
|
||||||
for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) {
|
for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) {
|
||||||
if (var_r30 & temp_r28) {
|
if (var_r30 & temp_r28) {
|
||||||
Hu3DCamera[i].target.x = var_f30;
|
Hu3DCamera[i].target.x = var_f30;
|
||||||
}
|
}
|
||||||
|
|
@ -1079,7 +1083,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) {
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
var_f30 = temp_r29->scale.y * (arg2 + temp_r29->pos.y);
|
var_f30 = temp_r29->scale.y * (arg2 + temp_r29->pos.y);
|
||||||
for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) {
|
for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) {
|
||||||
if (var_r30 & temp_r28) {
|
if (var_r30 & temp_r28) {
|
||||||
Hu3DCamera[i].target.y = var_f30;
|
Hu3DCamera[i].target.y = var_f30;
|
||||||
}
|
}
|
||||||
|
|
@ -1087,14 +1091,14 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) {
|
||||||
break;
|
break;
|
||||||
case 13:
|
case 13:
|
||||||
var_f30 = temp_r29->scale.z * (arg2 + temp_r29->pos.z);
|
var_f30 = temp_r29->scale.z * (arg2 + temp_r29->pos.z);
|
||||||
for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) {
|
for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) {
|
||||||
if (var_r30 & temp_r28) {
|
if (var_r30 & temp_r28) {
|
||||||
Hu3DCamera[i].target.z = var_f30;
|
Hu3DCamera[i].target.z = var_f30;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 14:
|
case 14:
|
||||||
for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) {
|
for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) {
|
||||||
if (var_r30 & temp_r28) {
|
if (var_r30 & temp_r28) {
|
||||||
VECSubtract(&Hu3DCamera[i].pos, &Hu3DCamera[i].target, &spC);
|
VECSubtract(&Hu3DCamera[i].pos, &Hu3DCamera[i].target, &spC);
|
||||||
VECNormalize(&spC, &spC);
|
VECNormalize(&spC, &spC);
|
||||||
|
|
@ -1107,7 +1111,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 15:
|
case 15:
|
||||||
for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) {
|
for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) {
|
||||||
if (var_r30 & temp_r28) {
|
if (var_r30 & temp_r28) {
|
||||||
Hu3DCamera[i].fov = arg2;
|
Hu3DCamera[i].fov = arg2;
|
||||||
}
|
}
|
||||||
|
|
@ -1357,7 +1361,7 @@ void JointModel_Motion(s16 arg0, s16 arg1) {
|
||||||
void Hu3DMotionCalc(s16 arg0) {
|
void Hu3DMotionCalc(s16 arg0) {
|
||||||
ModelData *temp_r31 = &Hu3DData[arg0];
|
ModelData *temp_r31 = &Hu3DData[arg0];
|
||||||
|
|
||||||
if ((temp_r31->attr & 1) || (temp_r31->attr & 0x8000)) {
|
if ((temp_r31->attr & HU3D_ATTR_DISPOFF) || (temp_r31->attr & HU3D_ATTR_HOOK)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (temp_r31->unk_08 != -1) {
|
if (temp_r31->unk_08 != -1) {
|
||||||
|
|
@ -1369,7 +1373,7 @@ void Hu3DMotionCalc(s16 arg0) {
|
||||||
if (temp_r31->unk_0A != -1) {
|
if (temp_r31->unk_0A != -1) {
|
||||||
Hu3DMotionExec(arg0, temp_r31->unk_0A, temp_r31->unk_74, 1);
|
Hu3DMotionExec(arg0, temp_r31->unk_0A, temp_r31->unk_74, 1);
|
||||||
}
|
}
|
||||||
if (temp_r31->attr & 0x400) {
|
if (temp_r31->attr & HU3D_ATTR_CLUSTER_ON) {
|
||||||
ClusterMotionExec(temp_r31);
|
ClusterMotionExec(temp_r31);
|
||||||
}
|
}
|
||||||
if (temp_r31->unk_0E != -1) {
|
if (temp_r31->unk_0E != -1) {
|
||||||
|
|
@ -1379,12 +1383,12 @@ void Hu3DMotionCalc(s16 arg0) {
|
||||||
Hu3DMotionExec(arg0, temp_r31->unk_0E, temp_r31->unk_94, 1);
|
Hu3DMotionExec(arg0, temp_r31->unk_0E, temp_r31->unk_94, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!(temp_r31->attr & 0x90) || !(temp_r31->motion_attr & 0x40000002)) {
|
if (!(temp_r31->attr & (HU3D_ATTR_ENVELOPE_OFF|HU3D_ATTR_HOOKFUNC)) || !(temp_r31->motion_attr & HU3D_MOTATTR_PAUSE)) {
|
||||||
InitVtxParm(temp_r31->hsfData);
|
InitVtxParm(temp_r31->hsfData);
|
||||||
if (temp_r31->unk_0E != -1) {
|
if (temp_r31->unk_0E != -1) {
|
||||||
ShapeProc(temp_r31->hsfData);
|
ShapeProc(temp_r31->hsfData);
|
||||||
}
|
}
|
||||||
if (temp_r31->attr & 0x400) {
|
if (temp_r31->attr & HU3D_ATTR_CLUSTER_ON) {
|
||||||
ClusterProc(temp_r31);
|
ClusterProc(temp_r31);
|
||||||
}
|
}
|
||||||
if (temp_r31->hsfData->cenvCnt != 0) {
|
if (temp_r31->hsfData->cenvCnt != 0) {
|
||||||
|
|
@ -1392,7 +1396,7 @@ void Hu3DMotionCalc(s16 arg0) {
|
||||||
}
|
}
|
||||||
PPCSync();
|
PPCSync();
|
||||||
}
|
}
|
||||||
temp_r31->attr |= 0x800;
|
temp_r31->attr |= HU3D_ATTR_MOT_EXEC;
|
||||||
}
|
}
|
||||||
|
|
||||||
static s32 SearchObjectIndex(HsfData *arg0, u32 arg1) {
|
static s32 SearchObjectIndex(HsfData *arg0, u32 arg1) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue