Use macro for some MTX functions

This commit is contained in:
dbalatoni13 2025-04-04 17:41:55 +02:00
parent 6a92b96c64
commit aad91097cd
31 changed files with 1777 additions and 1696 deletions

View file

@ -2956,7 +2956,7 @@ void fn_1_BC18(ModelData *arg0, float (*arg1)[4])
if (HmfInverseMtxF3X3(arg1, sp128) == 0) { if (HmfInverseMtxF3X3(arg1, sp128) == 0) {
MTXIdentity(sp128); MTXIdentity(sp128);
} }
PSMTXReorder(sp128, sp8); Reorder(sp128, sp8);
if (var_r31->unk_4C) { if (var_r31->unk_4C) {
var_r18 = var_r31->unk_4C; var_r18 = var_r31->unk_4C;
var_r18(arg0, var_r31, arg1); var_r18(arg0, var_r31, arg1);
@ -2964,7 +2964,7 @@ void fn_1_BC18(ModelData *arg0, float (*arg1)[4])
var_r29 = var_r31->unk_3C; var_r29 = var_r31->unk_3C;
var_r30 = var_r31->unk_40; var_r30 = var_r31->unk_40;
var_r28 = var_r31->unk_44; var_r28 = var_r31->unk_44;
PSMTXROMultVecArray(sp8, lbl_1_data_8E0, &sp38[0], 4); ROMultVecArray(sp8, lbl_1_data_8E0, &sp38[0], 4);
for (var_r26 = 0; var_r26 < var_r31->unk_26; var_r26++, var_r29++) { for (var_r26 = 0; var_r26 < var_r31->unk_26; var_r26++, var_r29++) {
if (!var_r29->unk_28) { if (!var_r29->unk_28) {
var_r30->x = var_r30->y = var_r30->z = 0.0f; var_r30->x = var_r30->y = var_r30->z = 0.0f;
@ -3169,7 +3169,7 @@ void fn_1_C86C(ModelData *arg0, Mtx arg1)
if (HmfInverseMtxF3X3(arg1, sp9C) == 0) { if (HmfInverseMtxF3X3(arg1, sp9C) == 0) {
MTXIdentity(sp9C); MTXIdentity(sp9C);
} }
PSMTXReorder(sp9C, spC); Reorder(sp9C, spC);
if (var_r31->unk_4C) { if (var_r31->unk_4C) {
var_r23 = var_r31->unk_4C; var_r23 = var_r31->unk_4C;
var_r23(arg0, var_r31, arg1); var_r23(arg0, var_r31, arg1);
@ -3177,7 +3177,7 @@ void fn_1_C86C(ModelData *arg0, Mtx arg1)
var_r29 = var_r31->unk_3C; var_r29 = var_r31->unk_3C;
var_r30 = var_r31->unk_40; var_r30 = var_r31->unk_40;
sp8 = var_r31->unk_44; sp8 = var_r31->unk_44;
PSMTXROMultVecArray(spC, lbl_1_data_930, (Vec *)sp3C, 4); ROMultVecArray(spC, lbl_1_data_930, (Vec *)sp3C, 4);
for (var_r25 = 0; var_r25 < var_r31->unk_26; var_r25++, var_r29++) { for (var_r25 = 0; var_r25 < var_r31->unk_26; var_r25++, var_r29++) {
if (!var_r29->unk_28) { if (!var_r29->unk_28) {
var_r30->x = var_r30->y = var_r30->z = 0.0f; var_r30->x = var_r30->y = var_r30->z = 0.0f;

View file

@ -1385,7 +1385,7 @@ void fn_1_602C(ModelData *arg0, f32 (*arg1)[4])
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, temp_r30->unk20, 8); GXSetArray(GX_VA_TEX0, temp_r30->unk20, 8);
fn_1_40A4(arg1, sp128); fn_1_40A4(arg1, sp128);
PSMTXReorder(sp128, spF8); Reorder(sp128, spF8);
if (((u8)omPauseChk() == 0) && (temp_r30->unkC)) { if (((u8)omPauseChk() == 0) && (temp_r30->unkC)) {
var_r23 = temp_r30->unkC; var_r23 = temp_r30->unkC;
var_r23(arg0, temp_r30, arg1); var_r23(arg0, temp_r30, arg1);
@ -1393,7 +1393,7 @@ void fn_1_602C(ModelData *arg0, f32 (*arg1)[4])
var_r29 = temp_r30->unk18; var_r29 = temp_r30->unk18;
var_r31 = temp_r30->unk1C; var_r31 = temp_r30->unk1C;
var_r26 = temp_r30->unk20; var_r26 = temp_r30->unk20;
PSMTXROMultVecArray(spF8, &temp_r30->unk2C, &sp68[0], 4); ROMultVecArray(spF8, &temp_r30->unk2C, &sp68[0], 4);
for (var_r25 = 0; var_r25 < temp_r30->unk0; var_r25++, var_r29++, var_r26 += 4) { for (var_r25 = 0; var_r25 < temp_r30->unk0; var_r25++, var_r29++, var_r26 += 4) {
if (var_r29->unk4E == 0) { if (var_r29->unk4E == 0) {

View file

@ -574,8 +574,8 @@ void fn_1_4E64(omObjData *object)
MTXScale(spC8, var_f31, var_f31, var_f31 * var_r31->unk_28); MTXScale(spC8, var_f31, var_f31, var_f31 * var_r31->unk_28);
MTXConcat(sp68, spC8, sp98); MTXConcat(sp68, spC8, sp98);
MTXInverse(sp98, spC8); MTXInverse(sp98, spC8);
PSMTXReorder(spC8, sp38); Reorder(spC8, sp38);
PSMTXROMultVecArray(sp38, lbl_1_bss_178.unk_2C, lbl_1_bss_178.unk_34, lbl_1_bss_178.unk_18); ROMultVecArray(sp38, lbl_1_bss_178.unk_2C, lbl_1_bss_178.unk_34, lbl_1_bss_178.unk_18);
sp2C.x = (0.15f * var_r31->unk_18) * (var_r31->unk_24 * sind(var_r31->unk_10)); sp2C.x = (0.15f * var_r31->unk_18) * (var_r31->unk_24 * sind(var_r31->unk_10));
sp2C.y = 0.0f; sp2C.y = 0.0f;
sp2C.z = (0.15f * var_r31->unk_18) * (var_r31->unk_24 * cosd(var_r31->unk_10)); sp2C.z = (0.15f * var_r31->unk_18) * (var_r31->unk_24 * cosd(var_r31->unk_10));

View file

@ -5148,7 +5148,7 @@ void fn_1_11900(ModelData *arg0, Mtx arg1)
if (HmfInverseMtxF3X3(arg1, sp128) == 0) { if (HmfInverseMtxF3X3(arg1, sp128) == 0) {
MTXIdentity(sp128); MTXIdentity(sp128);
} }
PSMTXReorder(sp128, sp8); Reorder(sp128, sp8);
if (temp_r31->unk4C) { if (temp_r31->unk4C) {
var_r18 = temp_r31->unk4C; var_r18 = temp_r31->unk4C;
var_r18(arg0, temp_r31, arg1); var_r18(arg0, temp_r31, arg1);
@ -5156,7 +5156,7 @@ void fn_1_11900(ModelData *arg0, Mtx arg1)
var_r29 = temp_r31->unk3C; var_r29 = temp_r31->unk3C;
var_r30 = temp_r31->unk40; var_r30 = temp_r31->unk40;
var_r28 = temp_r31->unk44; var_r28 = temp_r31->unk44;
PSMTXROMultVecArray(sp8, lbl_1_data_8C4, sp38, 4); ROMultVecArray(sp8, lbl_1_data_8C4, sp38, 4);
for (i = 0; i < temp_r31->unk26; i++, var_r29++) { for (i = 0; i < temp_r31->unk26; i++, var_r29++) {
if (!var_r29->unk30) { if (!var_r29->unk30) {
var_r30->x = var_r30->y = var_r30->z = 0.0f; var_r30->x = var_r30->y = var_r30->z = 0.0f;

View file

@ -2131,7 +2131,7 @@ void fn_1_101C4(ModelData *var_r29, Mtx var_r28)
if (HmfInverseMtxF3X3(var_r28, sp50) == 0) { if (HmfInverseMtxF3X3(var_r28, sp50) == 0) {
MTXIdentity(sp50); MTXIdentity(sp50);
} }
PSMTXReorder(sp50, sp20); Reorder(sp50, sp20);
GXClearVtxDesc(); GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
@ -2694,7 +2694,7 @@ void fn_1_11EE0(ModelData *var_r24, Mtx var_r21)
if (HmfInverseMtxF3X3(var_r21, sp128) == 0) { if (HmfInverseMtxF3X3(var_r21, sp128) == 0) {
MTXIdentity(sp128); MTXIdentity(sp128);
} }
PSMTXReorder(sp128, &sp8[0]); Reorder(sp128, &sp8[0]);
if (var_r31->unk_4C) { if (var_r31->unk_4C) {
var_r18 = var_r31->unk_4C; var_r18 = var_r31->unk_4C;
var_r18(var_r24, var_r31, var_r21); var_r18(var_r24, var_r31, var_r21);
@ -2702,7 +2702,7 @@ void fn_1_11EE0(ModelData *var_r24, Mtx var_r21)
var_r29 = var_r31->unk_3C; var_r29 = var_r31->unk_3C;
var_r30 = var_r31->unk_40; var_r30 = var_r31->unk_40;
var_r26 = var_r31->unk_44; var_r26 = var_r31->unk_44;
PSMTXROMultVecArray(sp8, lbl_1_data_19C, &sp38[0], 4); ROMultVecArray(sp8, lbl_1_data_19C, &sp38[0], 4);
for (var_r23 = 0; var_r23 < var_r31->unk_24; var_r23++, var_r29++) { for (var_r23 = 0; var_r23 < var_r31->unk_24; var_r23++, var_r29++) {
if (!var_r29->unk_28) { if (!var_r29->unk_28) {
var_r30->x = var_r30->y = var_r30->z = 0.0f; var_r30->x = var_r30->y = var_r30->z = 0.0f;

View file

@ -3045,7 +3045,7 @@ void fn_1_80DC(ModelData *arg0, Mtx arg1)
if (!HmfInverseMtxF3X3(arg1, sp128)) { if (!HmfInverseMtxF3X3(arg1, sp128)) {
MTXIdentity(sp128); MTXIdentity(sp128);
} }
PSMTXReorder(sp128, sp8); Reorder(sp128, sp8);
if (var_r31->unk_4C) { if (var_r31->unk_4C) {
var_r18 = var_r31->unk_4C; var_r18 = var_r31->unk_4C;
var_r18(arg0, var_r31, arg1); var_r18(arg0, var_r31, arg1);
@ -3053,7 +3053,7 @@ void fn_1_80DC(ModelData *arg0, Mtx arg1)
var_r29 = var_r31->unk_3C; var_r29 = var_r31->unk_3C;
var_r30 = var_r31->unk_40; var_r30 = var_r31->unk_40;
var_r26 = var_r31->unk_44; var_r26 = var_r31->unk_44;
PSMTXROMultVecArray(sp8, lbl_1_data_22C, &sp38[0], 4); ROMultVecArray(sp8, lbl_1_data_22C, &sp38[0], 4);
for (var_r23 = 0; var_r23 < var_r31->unk_24; var_r23++, var_r29++) { for (var_r23 = 0; var_r23 < var_r31->unk_24; var_r23++, var_r29++) {
if (!var_r29->unk_28) { if (!var_r29->unk_28) {
var_r30->x = var_r30->y = var_r30->z = 0.0f; var_r30->x = var_r30->y = var_r30->z = 0.0f;
@ -3135,7 +3135,7 @@ void fn_1_88B4(ModelData *arg0, Mtx arg1)
var_f27 = var_r30->pos.y - arg0->pos.y; var_f27 = var_r30->pos.y - arg0->pos.y;
var_f30 = var_r30->pos.z - arg0->pos.z; var_f30 = var_r30->pos.z - arg0->pos.z;
var_f26 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); var_f26 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30));
arg0->rot.x = (atan2d(var_f26, var_f27)) - 90.0; arg0->rot.x = (atan2d(var_f26, var_f27))-90.0;
arg0->rot.y = atan2d(var_f31, var_f30); arg0->rot.y = atan2d(var_f31, var_f30);
var_r29 = arg0->unk_120; var_r29 = arg0->unk_120;
GXLoadPosMtxImm(arg1, 0); GXLoadPosMtxImm(arg1, 0);

View file

@ -3028,7 +3028,7 @@ void fn_1_DCD4(ModelData *model, Mtx matrix)
sp128[0][3] = 0.0f; sp128[0][3] = 0.0f;
sp128[1][3] = 0.0f; sp128[1][3] = 0.0f;
sp128[2][3] = 0.0f; sp128[2][3] = 0.0f;
PSMTXReorder(sp128, spF8); Reorder(sp128, spF8);
if ((omPauseChk() == 0) && (var_r30->unk_0C)) { if ((omPauseChk() == 0) && (var_r30->unk_0C)) {
var_r23 = var_r30->unk_0C; var_r23 = var_r30->unk_0C;
var_r23(model, var_r30, matrix); var_r23(model, var_r30, matrix);
@ -3036,7 +3036,7 @@ void fn_1_DCD4(ModelData *model, Mtx matrix)
var_r29 = var_r30->unk_18; var_r29 = var_r30->unk_18;
var_r31 = var_r30->unk_1C; var_r31 = var_r30->unk_1C;
var_r26 = var_r30->unk_20; var_r26 = var_r30->unk_20;
PSMTXROMultVecArray(spF8, &var_r30->unk_2C, sp68, 4); ROMultVecArray(spF8, &var_r30->unk_2C, sp68, 4);
for (var_r25 = 0; var_r25 < var_r30->unk_00; var_r25++, var_r29++, var_r26 += 4) { for (var_r25 = 0; var_r25 < var_r30->unk_00; var_r25++, var_r29++, var_r26 += 4) {
if (var_r29->unk_62 == 0) { if (var_r29->unk_62 == 0) {
var_r31->x = var_r31->y = var_r31->z = 0.0f; var_r31->x = var_r31->y = var_r31->z = 0.0f;
@ -3058,9 +3058,9 @@ void fn_1_DCD4(ModelData *model, Mtx matrix)
} }
else { else {
fn_1_E420(&var_r30->unk_2C, &sp38, &var_r29->unk_48, 4); fn_1_E420(&var_r30->unk_2C, &sp38, &var_r29->unk_48, 4);
PSMTXRotRad(spC8, 0x5A, MTXDegToRad(var_r29->unk_44)); RotRad(spC8, 0x5A, MTXDegToRad(var_r29->unk_44));
PSMTXConcat(sp128, spC8, sp98); Concat(sp128, spC8, sp98);
PSMTXMultVecArray(sp98, &sp38, &sp8, 4); MultVecArray(sp98, &sp38, &sp8, 4);
PSVECAdd(&sp8, &var_r29->unk_54, var_r31++); PSVECAdd(&sp8, &var_r29->unk_54, var_r31++);
PSVECAdd(&sp14, &var_r29->unk_54, var_r31++); PSVECAdd(&sp14, &var_r29->unk_54, var_r31++);
PSVECAdd(&sp20, &var_r29->unk_54, var_r31++); PSVECAdd(&sp20, &var_r29->unk_54, var_r31++);

View file

@ -1645,7 +1645,7 @@ void fn_1_13FBC(ModelData *model, Mtx matrix)
var_r27 = &lbl_1_bss_578[*var_r25]; var_r27 = &lbl_1_bss_578[*var_r25];
var_r24 = lbl_1_bss_56C[*var_r25]; var_r24 = lbl_1_bss_56C[*var_r25];
GXLoadPosMtxImm(matrix, 0); GXLoadPosMtxImm(matrix, 0);
PSMTXInvXpose(matrix, sp70); InvXpose(matrix, sp70);
GXLoadNrmMtxImm(sp70, 0); GXLoadNrmMtxImm(sp70, 0);
GXSetNumTevStages(1); GXSetNumTevStages(1);
GXSetNumTexGens(1); GXSetNumTexGens(1);

View file

@ -3109,7 +3109,7 @@ void fn_1_134C0(ModelData *var_r23, Mtx var_r22)
if (HmfInverseMtxF3X3(var_r22, &sp128[0]) == 0) { if (HmfInverseMtxF3X3(var_r22, &sp128[0]) == 0) {
MTXIdentity(sp128); MTXIdentity(sp128);
} }
PSMTXReorder(sp128, sp8); Reorder(sp128, sp8);
if (var_r31->unk_4C) { if (var_r31->unk_4C) {
var_r18 = var_r31->unk_4C; var_r18 = var_r31->unk_4C;
var_r18(var_r23, var_r31, var_r22); var_r18(var_r23, var_r31, var_r22);
@ -3117,7 +3117,7 @@ void fn_1_134C0(ModelData *var_r23, Mtx var_r22)
var_r29 = var_r31->unk_3C; var_r29 = var_r31->unk_3C;
var_r30 = var_r31->unk_40; var_r30 = var_r31->unk_40;
var_r28 = var_r31->unk_44; var_r28 = var_r31->unk_44;
PSMTXROMultVecArray(sp8, lbl_1_data_6A4, &sp38[0], 4); ROMultVecArray(sp8, lbl_1_data_6A4, &sp38[0], 4);
for (var_r26 = 0; var_r26 < var_r31->unk_26; var_r26++, var_r29++) { for (var_r26 = 0; var_r26 < var_r31->unk_26; var_r26++, var_r29++) {
if (!var_r29->unk_30) { if (!var_r29->unk_30) {
var_r30->x = var_r30->y = var_r30->z = 0.0f; var_r30->x = var_r30->y = var_r30->z = 0.0f;

View file

@ -2095,7 +2095,7 @@ void fn_1_72B4(ModelData *model, Mtx mtx)
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, temp_r30->unk20, sizeof(HsfVector2f)); GXSetArray(GX_VA_TEX0, temp_r30->unk20, sizeof(HsfVector2f));
fn_1_79FC(mtx, sp128); fn_1_79FC(mtx, sp128);
PSMTXReorder(sp128, spF8); Reorder(sp128, spF8);
if (!omPauseChk() && temp_r30->unkC) { if (!omPauseChk() && temp_r30->unkC) {
temp_r23 = temp_r30->unkC; temp_r23 = temp_r30->unkC;
temp_r23(model, temp_r30, mtx); temp_r23(model, temp_r30, mtx);
@ -2103,7 +2103,7 @@ void fn_1_72B4(ModelData *model, Mtx mtx)
temp_r29 = temp_r30->unk18; temp_r29 = temp_r30->unk18;
temp_r31 = temp_r30->unk1C; temp_r31 = temp_r30->unk1C;
temp_r27 = temp_r30->unk20; temp_r27 = temp_r30->unk20;
PSMTXROMultVecArray(spF8, temp_r30->unk2C, sp68, 4); ROMultVecArray(spF8, temp_r30->unk2C, sp68, 4);
for (temp_r26 = 0; temp_r26 < temp_r30->unk0; temp_r26++, temp_r29++, temp_r27 += 4) { for (temp_r26 = 0; temp_r26 < temp_r30->unk0; temp_r26++, temp_r29++, temp_r27 += 4) {
if (temp_r29->unk56 == 0) { if (temp_r29->unk56 == 0) {
temp_r31->x = temp_r31->y = temp_r31->z = 0; temp_r31->x = temp_r31->y = temp_r31->z = 0;

File diff suppressed because it is too large Load diff

View file

@ -2460,7 +2460,7 @@ void fn_1_9C04(ModelData *arg0, Mtx arg1)
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, temp_r30->unk20, 8); GXSetArray(GX_VA_TEX0, temp_r30->unk20, 8);
fn_1_9344(arg1, sp128); fn_1_9344(arg1, sp128);
PSMTXReorder(sp128, spF8); Reorder(sp128, spF8);
if (((u8)omPauseChk() == 0) && (temp_r30->unkC)) { if (((u8)omPauseChk() == 0) && (temp_r30->unkC)) {
var_r23 = temp_r30->unkC; var_r23 = temp_r30->unkC;
var_r23(arg0, temp_r30, arg1); var_r23(arg0, temp_r30, arg1);
@ -2468,7 +2468,7 @@ void fn_1_9C04(ModelData *arg0, Mtx arg1)
var_r29 = temp_r30->unk18; var_r29 = temp_r30->unk18;
var_r31 = temp_r30->unk1C; var_r31 = temp_r30->unk1C;
var_r27 = temp_r30->unk20; var_r27 = temp_r30->unk20;
PSMTXROMultVecArray(spF8, &temp_r30->unk2C, (Vec *)&sp68[0], 4); ROMultVecArray(spF8, &temp_r30->unk2C, (Vec *)&sp68[0], 4);
for (var_r26 = 0; var_r26 < temp_r30->unk0; var_r26++, var_r29++, var_r27 += 4) { for (var_r26 = 0; var_r26 < temp_r30->unk0; var_r26++, var_r29++, var_r27 += 4) {
if (var_r29->unk62 == 0) { if (var_r29->unk62 == 0) {

View file

@ -1531,8 +1531,8 @@ void fn_1_485C(ModelData *model, Mtx mtx)
GXSetProjection(sp40, GX_PERSPECTIVE); GXSetProjection(sp40, GX_PERSPECTIVE);
MTXInverse(mtx, spA0); MTXInverse(mtx, spA0);
spA0[0][3] = spA0[1][3] = spA0[2][3] = 0.0f; spA0[0][3] = spA0[1][3] = spA0[2][3] = 0.0f;
PSMTXReorder(spA0, sp70); Reorder(spA0, sp70);
PSMTXROMultVecArray(sp70, &lbl_1_data_1C0[0], &sp10, 4); ROMultVecArray(sp70, &lbl_1_data_1C0[0], &sp10, 4);
GXLoadPosMtxImm(mtx, 0); GXLoadPosMtxImm(mtx, 0);
var_r31 = lbl_1_bss_5C; var_r31 = lbl_1_bss_5C;
for (var_r30 = 0; var_r30 < 1024; var_r30++, var_r31++) { for (var_r30 = 0; var_r30 < 1024; var_r30++, var_r31++) {

View file

@ -1608,7 +1608,7 @@ void fn_1_56C4(ModelData *arg0, Mtx arg1)
sp130[0][3] = 0.0f; sp130[0][3] = 0.0f;
sp130[1][3] = 0.0f; sp130[1][3] = 0.0f;
sp130[2][3] = 0.0f; sp130[2][3] = 0.0f;
PSMTXReorder(sp130, sp100); Reorder(sp130, sp100);
if ((omPauseChk() == 0) && (var_r31->unk_00)) { if ((omPauseChk() == 0) && (var_r31->unk_00)) {
spC = var_r31->unk_00; spC = var_r31->unk_00;
spC(arg0, var_r31, arg1); spC(arg0, var_r31, arg1);
@ -1616,7 +1616,7 @@ void fn_1_56C4(ModelData *arg0, Mtx arg1)
var_r29 = var_r31->unk_10; var_r29 = var_r31->unk_10;
var_r30 = var_r31->unk_14; var_r30 = var_r31->unk_14;
var_r27 = var_r31->unk_18; var_r27 = var_r31->unk_18;
PSMTXROMultVecArray(sp100, &var_r31->unk_28, sp70, 4); ROMultVecArray(sp100, &var_r31->unk_28, sp70, 4);
for (var_r19 = 0; var_r19 < var_r31->unk_64; var_r19++, var_r29++, var_r27 += 4) { for (var_r19 = 0; var_r19 < var_r31->unk_64; var_r19++, var_r29++, var_r27 += 4) {
if (var_r29->unk_3E < 0) { if (var_r29->unk_3E < 0) {
var_r30->x = var_r30->y = var_r30->z = 0.0f; var_r30->x = var_r30->y = var_r30->z = 0.0f;
@ -5048,7 +5048,7 @@ void fn_1_15BAC(Vec *arg0, Vec *arg1, float arg8, s32 arg2, float *arg3, float *
else if (0.0f > arg8) { else if (0.0f > arg8) {
arg8 += 360.0f; arg8 += 360.0f;
} }
*arg3 = (atan2d(sp14.z, sp14.x)) - 90.0; *arg3 = (atan2d(sp14.z, sp14.x))-90.0;
*arg4 = atan2d(sp14.y, sqrtf((sp14.x * sp14.x) + (sp14.z * sp14.z))); *arg4 = atan2d(sp14.y, sqrtf((sp14.x * sp14.x) + (sp14.z * sp14.z)));
if (arg2 == 0) { if (arg2 == 0) {
*arg3 *= -1.0f; *arg3 *= -1.0f;

View file

@ -76,7 +76,7 @@ void InitEnvelope(HsfData *arg0) {
nObj = temp_r28->count; nObj = temp_r28->count;
nMesh = temp_r28->base_idx; nMesh = temp_r28->base_idx;
} }
PSMTXIdentity(sp10); MTXIdentity(sp10);
SetMtx(arg0->root, sp10); SetMtx(arg0->root, sp10);
SetRevMtx(); SetRevMtx();
} }
@ -89,19 +89,19 @@ static void SetEnvelopMtx(HsfObject *arg0, HsfObject *arg1, Mtx arg2) {
s32 var_r29; s32 var_r29;
s32 i; s32 i;
PSMTXTrans(spC, arg1->data.curr.pos.x, arg1->data.curr.pos.y, arg1->data.curr.pos.z); MTXTrans(spC, arg1->data.curr.pos.x, arg1->data.curr.pos.y, arg1->data.curr.pos.z);
PSMTXConcat(arg2, spC, sp3C); MTXConcat(arg2, spC, sp3C);
if (arg1->data.curr.rot.z) { if (arg1->data.curr.rot.z) {
PSMTXRotRad(sp6C, 'z', MTXDegToRad(arg1->data.curr.rot.z)); MTXRotRad(sp6C, 'z', MTXDegToRad(arg1->data.curr.rot.z));
PSMTXConcat(sp3C, sp6C, sp3C); MTXConcat(sp3C, sp6C, sp3C);
} }
if (arg1->data.curr.rot.y) { if (arg1->data.curr.rot.y) {
PSMTXRotRad(sp6C, 'y', MTXDegToRad(arg1->data.curr.rot.y)); MTXRotRad(sp6C, 'y', MTXDegToRad(arg1->data.curr.rot.y));
PSMTXConcat(sp3C, sp6C, sp3C); MTXConcat(sp3C, sp6C, sp3C);
} }
if (arg1->data.curr.rot.x) { if (arg1->data.curr.rot.x) {
PSMTXRotRad(sp6C, 'x', MTXDegToRad(arg1->data.curr.rot.x)); MTXRotRad(sp6C, 'x', MTXDegToRad(arg1->data.curr.rot.x));
PSMTXConcat(sp3C, sp6C, sp3C); MTXConcat(sp3C, sp6C, sp3C);
} }
if (arg1->data.curr.scale.x != 1.0f) { if (arg1->data.curr.scale.x != 1.0f) {
sp3C[0][0] *= arg1->data.curr.scale.x; sp3C[0][0] *= arg1->data.curr.scale.x;
@ -119,7 +119,7 @@ static void SetEnvelopMtx(HsfObject *arg0, HsfObject *arg1, Mtx arg2) {
sp3C[2][2] *= arg1->data.curr.scale.z; sp3C[2][2] *= arg1->data.curr.scale.z;
} }
var_r29 = arg1 - arg0; var_r29 = arg1 - arg0;
PSMTXCopy(sp3C, MtxTop[nMesh + var_r29]); MTXCopy(sp3C, MtxTop[nMesh + var_r29]);
for (i = 0; i < arg1->data.childrenCount; i++) { for (i = 0; i < arg1->data.childrenCount; i++) {
SetEnvelopMtx(arg0, arg1->data.children[i], sp3C); SetEnvelopMtx(arg0, arg1->data.children[i], sp3C);
} }
@ -136,7 +136,7 @@ void EnvelopeProc(HsfData *arg0) {
nObj = temp_r31->count; nObj = temp_r31->count;
nMesh = temp_r31->base_idx; nMesh = temp_r31->base_idx;
temp_r29 = arg0->root; temp_r29 = arg0->root;
PSMTXIdentity(sp8); MTXIdentity(sp8);
SetEnvelopMtx(arg0->object, temp_r29, sp8); SetEnvelopMtx(arg0->object, temp_r29, sp8);
SetEnvelopMain(arg0); SetEnvelopMain(arg0);
} }
@ -167,7 +167,7 @@ static void SetEnvelopMain(HsfData *arg0) {
var_r31 = arg0->object; var_r31 = arg0->object;
for (Meshno = i = 0; i < arg0->objectCnt; i++, var_r31++) { for (Meshno = i = 0; i < arg0->objectCnt; i++, var_r31++) {
if (var_r31->type == 2) { if (var_r31->type == 2) {
PSMTXInverse(MtxTop[&var_r31[nMesh] - arg0->object], MtxTop[Meshno]); MTXInverse(MtxTop[&var_r31[nMesh] - arg0->object], MtxTop[Meshno]);
temp_r30 = var_r31->data.vertex; temp_r30 = var_r31->data.vertex;
temp_r28 = var_r31->data.normal; temp_r28 = var_r31->data.normal;
if (var_r31->data.unk120[0] != 0) { if (var_r31->data.unk120[0] != 0) {
@ -233,37 +233,37 @@ static void SetEnvelop(HsfCenv *arg0) {
temp_r31 = &Vertextop[temp_r21]; temp_r31 = &Vertextop[temp_r21];
temp_r22 = &normenv[temp_r18]; temp_r22 = &normenv[temp_r18];
temp_r26 = &normtop[temp_r18]; temp_r26 = &normtop[temp_r18];
PSMTXConcat(MtxTop[nMesh + var_r27->target], MtxTop[nMesh + nObj + nObj * Meshno + var_r27->target], sp140); MTXConcat(MtxTop[nMesh + var_r27->target], MtxTop[nMesh + nObj + nObj * Meshno + var_r27->target], sp140);
PSMTXConcat(MtxTop[Meshno], sp140, sp1A0); MTXConcat(MtxTop[Meshno], sp140, sp1A0);
Hu3DMtxScaleGet(&sp1A0[0], &sp14); Hu3DMtxScaleGet(&sp1A0[0], &sp14);
if (sp14.x != 1.0f || sp14.y != 1.0f || sp14.z != 1.0f) { if (sp14.x != 1.0f || sp14.y != 1.0f || sp14.z != 1.0f) {
PSMTXScale(spE0, 1.0 / sp14.x, 1.0 / sp14.y, 1.0 / sp14.z); MTXScale(spE0, 1.0 / sp14.x, 1.0 / sp14.y, 1.0 / sp14.z);
PSMTXConcat(spE0, sp1A0, sp170); MTXConcat(spE0, sp1A0, sp170);
PSMTXInvXpose(sp170, sp170); MTXInvXpose(sp170, sp170);
} else { } else {
PSMTXInvXpose(sp1A0, sp170); MTXInvXpose(sp1A0, sp170);
} }
if (var_r27->posCnt == 1) { if (var_r27->posCnt == 1) {
PSMTXMultVec(sp1A0, temp_r31, temp_r28); MTXMultVec(sp1A0, temp_r31, temp_r28);
PSMTXMultVec(sp170, temp_r26, temp_r22); MTXMultVec(sp170, temp_r26, temp_r22);
} else if (var_r27->posCnt <= 6) { } else if (var_r27->posCnt <= 6) {
PSMTXMultVecArray(sp1A0, temp_r31, temp_r28, var_r27->posCnt); MTXMultVecArray(sp1A0, temp_r31, temp_r28, var_r27->posCnt);
PSMTXMultVecArray(sp170, temp_r26, temp_r22, var_r27->normalCnt); MTXMultVecArray(sp170, temp_r26, temp_r22, var_r27->normalCnt);
} else { } else {
PSMTXReorder(sp1A0, (ROMtxPtr) sp140); MTXReorder(sp1A0, (ROMtxPtr) sp140);
PSMTXReorder(sp170, (ROMtxPtr) sp110); MTXReorder(sp170, (ROMtxPtr) sp110);
PSMTXROMultVecArray((ROMtxPtr) sp140, temp_r31, temp_r28, var_r27->posCnt); MTXROMultVecArray((ROMtxPtr) sp140, temp_r31, temp_r28, var_r27->posCnt);
PSMTXROMultVecArray((ROMtxPtr) sp110, temp_r26, temp_r22, var_r27->normalCnt); MTXROMultVecArray((ROMtxPtr) sp110, temp_r26, temp_r22, var_r27->normalCnt);
} }
} }
var_r20 = arg0->dualData; var_r20 = arg0->dualData;
for (i = 0; i < arg0->dualCount; i++, var_r20++) { for (i = 0; i < arg0->dualCount; i++, var_r20++) {
spC = var_r20->target1; spC = var_r20->target1;
sp8 = var_r20->target2; sp8 = var_r20->target2;
PSMTXConcat(MtxTop[nMesh + spC], MtxTop[nMesh + nObj + nObj * Meshno + spC], sp140); MTXConcat(MtxTop[nMesh + spC], MtxTop[nMesh + nObj + nObj * Meshno + spC], sp140);
PSMTXConcat(MtxTop[Meshno], sp140, sp1A0); MTXConcat(MtxTop[Meshno], sp140, sp1A0);
PSMTXConcat(MtxTop[nMesh + sp8], MtxTop[nMesh + nObj + nObj * Meshno + sp8], sp140); MTXConcat(MtxTop[nMesh + sp8], MtxTop[nMesh + nObj + nObj * Meshno + sp8], sp140);
PSMTXConcat(MtxTop[Meshno], sp140, (float (*)[4]) &spB0[0]); MTXConcat(MtxTop[Meshno], sp140, (float (*)[4]) &spB0[0]);
var_r30 = var_r20->weight; var_r30 = var_r20->weight;
for (j = 0; j < var_r20->weightCnt; j++, var_r30++) { for (j = 0; j < var_r20->weightCnt; j++, var_r30++) {
temp_r18 = var_r30->normal; temp_r18 = var_r30->normal;
@ -316,32 +316,32 @@ static void SetEnvelop(HsfCenv *arg0) {
var_r29[2][2] = sp110[2][2] + sp140[2][2]; var_r29[2][2] = sp110[2][2] + sp140[2][2];
var_r29[2][3] = sp110[2][3] + sp140[2][3]; var_r29[2][3] = sp110[2][3] + sp140[2][3];
if (var_r29 == sp50) { if (var_r29 == sp50) {
PSMTXCopy(sp50, sp80); MTXCopy(sp50, sp80);
} }
Hu3DMtxScaleGet(&sp80[0], &sp14); Hu3DMtxScaleGet(&sp80[0], &sp14);
if (sp14.x != 1.0f || sp14.y != 1.0f || sp14.z != 1.0f) { if (sp14.x != 1.0f || sp14.y != 1.0f || sp14.z != 1.0f) {
PSMTXScale(spE0, 1.0 / sp14.x, 1.0 / sp14.y, 1.0 / sp14.z); MTXScale(spE0, 1.0 / sp14.x, 1.0 / sp14.y, 1.0 / sp14.z);
PSMTXConcat(spE0, sp80, sp110); MTXConcat(spE0, sp80, sp110);
PSMTXInvXpose(sp110, sp110); MTXInvXpose(sp110, sp110);
} else { } else {
PSMTXInvXpose(sp80, sp110); MTXInvXpose(sp80, sp110);
} }
if (var_r30->posCnt == 1) { if (var_r30->posCnt == 1) {
PSMTXMultVec(sp80, temp_r31, temp_r28); MTXMultVec(sp80, temp_r31, temp_r28);
} else if (var_r30->posCnt <= 6) { } else if (var_r30->posCnt <= 6) {
PSMTXMultVecArray(sp80, temp_r31, temp_r28, var_r30->posCnt); MTXMultVecArray(sp80, temp_r31, temp_r28, var_r30->posCnt);
} else { } else {
PSMTXReorder(sp80, (ROMtxPtr) sp140); MTXReorder(sp80, (ROMtxPtr) sp140);
PSMTXROMultVecArray((ROMtxPtr) sp140, temp_r31, temp_r28, var_r30->posCnt); MTXROMultVecArray((ROMtxPtr) sp140, temp_r31, temp_r28, var_r30->posCnt);
} }
if (var_r30->normalCnt != 0) { if (var_r30->normalCnt != 0) {
if (var_r30->normalCnt == 1) { if (var_r30->normalCnt == 1) {
PSMTXMultVec(sp110, temp_r26, temp_r22); MTXMultVec(sp110, temp_r26, temp_r22);
} else if (var_r30->normalCnt <= 6) { } else if (var_r30->normalCnt <= 6) {
PSMTXMultVecArray(sp110, temp_r26, temp_r22, var_r30->normalCnt); MTXMultVecArray(sp110, temp_r26, temp_r22, var_r30->normalCnt);
} else { } else {
PSMTXReorder(sp110, (ROMtxPtr) sp140); MTXReorder(sp110, (ROMtxPtr) sp140);
PSMTXROMultVecArray((ROMtxPtr) sp140, temp_r26, temp_r22, var_r30->normalCnt); MTXROMultVecArray((ROMtxPtr) sp140, temp_r26, temp_r22, var_r30->normalCnt);
} }
} }
} }
@ -359,11 +359,11 @@ static void SetEnvelop(HsfCenv *arg0) {
sp20.x = sp20.y = sp20.z = 0.0f; sp20.x = sp20.y = sp20.z = 0.0f;
sp10 = 0; sp10 = 0;
for (j = 0; j < var_r19->weightCnt; j++, var_r25++) { for (j = 0; j < var_r19->weightCnt; j++, var_r25++) {
PSMTXConcat(MtxTop[nMesh + var_r25->target], MtxTop[nMesh + nObj + nObj * Meshno + var_r25->target], sp1A0); MTXConcat(MtxTop[nMesh + var_r25->target], MtxTop[nMesh + nObj + nObj * Meshno + var_r25->target], sp1A0);
PSMTXConcat(MtxTop[Meshno], sp1A0, sp1A0); MTXConcat(MtxTop[Meshno], sp1A0, sp1A0);
PSMTXInvXpose(sp1A0, sp170); MTXInvXpose(sp1A0, sp170);
PSMTXMultVec(sp1A0, temp_r31, &sp44); MTXMultVec(sp1A0, temp_r31, &sp44);
PSMTXMultVec(sp170, temp_r26, &sp2C); MTXMultVec(sp170, temp_r26, &sp2C);
sp44.x = var_r25->value * (sp44.x - temp_r31->x); sp44.x = var_r25->value * (sp44.x - temp_r31->x);
sp44.y = var_r25->value * (sp44.y - temp_r31->y); sp44.y = var_r25->value * (sp44.y - temp_r31->y);
sp44.z = var_r25->value * (sp44.z - temp_r31->z); sp44.z = var_r25->value * (sp44.z - temp_r31->z);
@ -410,18 +410,18 @@ static void SetMtx(HsfObject *arg0, Mtx arg1) {
arg0->data.base.scale.y = temp_r3->transform.scale.y; arg0->data.base.scale.y = temp_r3->transform.scale.y;
arg0->data.base.scale.z = temp_r3->transform.scale.z; arg0->data.base.scale.z = temp_r3->transform.scale.z;
} }
PSMTXTrans(spFC, arg0->data.base.pos.x, arg0->data.base.pos.y, arg0->data.base.pos.z); MTXTrans(spFC, arg0->data.base.pos.x, arg0->data.base.pos.y, arg0->data.base.pos.z);
PSMTXScale(spCC, arg0->data.base.scale.x, arg0->data.base.scale.y, arg0->data.base.scale.z); MTXScale(spCC, arg0->data.base.scale.x, arg0->data.base.scale.y, arg0->data.base.scale.z);
PSMTXConcat(arg1, spFC, spFC); MTXConcat(arg1, spFC, spFC);
PSMTXRotRad(sp9C, 'z', MTXDegToRad(arg0->data.base.rot.z)); MTXRotRad(sp9C, 'z', MTXDegToRad(arg0->data.base.rot.z));
PSMTXConcat(spFC, sp9C, spFC); MTXConcat(spFC, sp9C, spFC);
PSMTXRotRad(sp9C, 'y', MTXDegToRad(arg0->data.base.rot.y)); MTXRotRad(sp9C, 'y', MTXDegToRad(arg0->data.base.rot.y));
PSMTXConcat(spFC, sp9C, spFC); MTXConcat(spFC, sp9C, spFC);
PSMTXRotRad(sp9C, 'x', MTXDegToRad(arg0->data.base.rot.x)); MTXRotRad(sp9C, 'x', MTXDegToRad(arg0->data.base.rot.x));
PSMTXConcat(spFC, sp9C, spFC); MTXConcat(spFC, sp9C, spFC);
PSMTXConcat(spFC, spCC, spFC); MTXConcat(spFC, spCC, spFC);
temp_r25 = arg0 - objtop; temp_r25 = arg0 - objtop;
PSMTXCopy(spFC, MtxTop[nMesh + temp_r25]); MTXCopy(spFC, MtxTop[nMesh + temp_r25]);
for (i = 0; i < arg0->data.childrenCount; i++) { for (i = 0; i < arg0->data.childrenCount; i++) {
SetMtx(arg0->data.children[i], spFC); SetMtx(arg0->data.children[i], spFC);
} }
@ -438,12 +438,12 @@ static void SetRevMtx(void) {
var_r29 = CurHsf->object; var_r29 = CurHsf->object;
for (var_r28 = i = 0; i < CurHsf->objectCnt; i++, var_r29++) { for (var_r28 = i = 0; i < CurHsf->objectCnt; i++, var_r29++) {
if (var_r29->type == 2) { if (var_r29->type == 2) {
PSMTXCopy(MtxTop[nMesh + i], sp8); MTXCopy(MtxTop[nMesh + i], sp8);
for (var_r30 = 0; var_r30 < CurHsf->objectCnt; var_r30++) { for (var_r30 = 0; var_r30 < CurHsf->objectCnt; var_r30++) {
PSMTXInverse(MtxTop[nMesh + var_r30], sp38); MTXInverse(MtxTop[nMesh + var_r30], sp38);
PSMTXConcat(sp38, sp8, MtxTop[nMesh + nObj + nObj * var_r28 + var_r30]); MTXConcat(sp38, sp8, MtxTop[nMesh + nObj + nObj * var_r28 + var_r30]);
} }
PSMTXInverse(MtxTop[nMesh + i], sp8); MTXInverse(MtxTop[nMesh + i], sp8);
var_r28++; var_r28++;
} }
} }

View file

@ -478,7 +478,7 @@ static void UpdateExplode(omObjData *arg0) {
break; break;
case 2: case 2:
BoardCameraRotGet(&sp8); BoardCameraRotGet(&sp8);
PSMTXRotRad(sp20, 'x', MTXDegToRad(sp8.x + 10.0f)); MTXRotRad(sp20, 'x', MTXDegToRad(sp8.x + 10.0f));
BoardModelMtxSet(temp_r30->unk02, &sp20); BoardModelMtxSet(temp_r30->unk02, &sp20);
BoardModelRotSet(temp_r30->unk02, 0.0f, 0.0f, 0.0f); BoardModelRotSet(temp_r30->unk02, 0.0f, 0.0f, 0.0f);
sp14.x = arg0->scale.x; sp14.x = arg0->scale.x;

View file

@ -1035,7 +1035,7 @@ static void ExecItemSwap(void)
} }
BoardModelRotGet(suitMdl, &sp3C); BoardModelRotGet(suitMdl, &sp3C);
Hu3DCameraSet(0, sp108); Hu3DCameraSet(0, sp108);
PSMTXInverse(sp108, spD8); Inverse(sp108, spD8);
Hu3DMtxRotGet(spD8, &sp48); Hu3DMtxRotGet(spD8, &sp48);
sp3C.x = sp48.x; sp3C.x = sp48.x;
for (var_r31 = 0; var_r31 < var_r28 / 2; var_r31++) { for (var_r31 = 0; var_r31 < var_r28 / 2; var_r31++) {

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,11 @@
#include "game/board/pause.h" #include "game/board/pause.h"
#include "game/audio.h" #include "game/audio.h"
#include "game/board/main.h"
#include "game/board/model.h"
#include "game/board/player.h"
#include "game/board/roll.h"
#include "game/board/star.h"
#include "game/board/ui.h"
#include "game/data.h" #include "game/data.h"
#include "game/flag.h" #include "game/flag.h"
#include "game/gamework_data.h" #include "game/gamework_data.h"
@ -11,12 +17,7 @@
#include "game/sprite.h" #include "game/sprite.h"
#include "game/window.h" #include "game/window.h"
#include "game/wipe.h" #include "game/wipe.h"
#include "game/board/main.h"
#include "game/board/model.h"
#include "game/board/player.h"
#include "game/board/roll.h"
#include "game/board/star.h"
#include "game/board/ui.h"
typedef struct { typedef struct {
struct { struct {
@ -39,7 +40,6 @@ typedef struct {
u32 unk0C; u32 unk0C;
} ConfigWork; } ConfigWork;
static void PauseExit(void); static void PauseExit(void);
static void PauseProcess(void); static void PauseProcess(void);
static void CreatePauseScreen(void); static void CreatePauseScreen(void);
@ -91,56 +91,25 @@ static s16 controlWin = -1;
static s16 quitWin = -1; static s16 quitWin = -1;
static s16 settingsWin = -1; static s16 settingsWin = -1;
static s16 boxModelID[8] = { static s16 boxModelID[8] = { -1, -1, -1, -1, -1, -1, -1, -1 };
-1, -1, -1, -1, -1, -1, -1, -1
};
static float boxPosTbl[8][2] = { static float boxPosTbl[8][2] = { { 120.0f, 120.0f }, { 232.0f, 120.0f }, { 344.0f, 120.0f }, { 456.0f, 120.0f }, { 120.0f, 232.0f },
{ 120.0f, 120.0f }, { 232.0f, 232.0f }, { 344.0f, 232.0f }, { 456.0f, 232.0f } };
{ 232.0f, 120.0f },
{ 344.0f, 120.0f },
{ 456.0f, 120.0f },
{ 120.0f, 232.0f },
{ 232.0f, 232.0f },
{ 344.0f, 232.0f },
{ 456.0f, 232.0f }
};
static float padConfigPosTbl[4][2] = { static float padConfigPosTbl[4][2] = { { 170.0f, 160.0f }, { 266.0f, 160.0f }, { 362.0f, 160.0f }, { 458.0f, 160.0f } };
{ 170.0f, 160.0f },
{ 266.0f, 160.0f },
{ 362.0f, 160.0f },
{ 458.0f, 160.0f }
};
static s32 boardLogoTbl[] = { static s32 boardLogoTbl[] = { DATA_MAKE_NUM(DATADIR_BOARD, 87), DATA_MAKE_NUM(DATADIR_BOARD, 88), DATA_MAKE_NUM(DATADIR_BOARD, 89),
DATA_MAKE_NUM(DATADIR_BOARD, 87), DATA_MAKE_NUM(DATADIR_BOARD, 90), DATA_MAKE_NUM(DATADIR_BOARD, 91), DATA_MAKE_NUM(DATADIR_BOARD, 92), DATA_MAKE_NUM(DATADIR_BOARD, 87),
DATA_MAKE_NUM(DATADIR_BOARD, 88), DATA_MAKE_NUM(DATADIR_BOARD, 93), DATA_MAKE_NUM(DATADIR_BOARD, 94) };
DATA_MAKE_NUM(DATADIR_BOARD, 89),
DATA_MAKE_NUM(DATADIR_BOARD, 90),
DATA_MAKE_NUM(DATADIR_BOARD, 91),
DATA_MAKE_NUM(DATADIR_BOARD, 92),
DATA_MAKE_NUM(DATADIR_BOARD, 87),
DATA_MAKE_NUM(DATADIR_BOARD, 93),
DATA_MAKE_NUM(DATADIR_BOARD, 94)
};
static float turnDigitPosTbl[] = { static float turnDigitPosTbl[] = { 145.0f, 188.0f, 285.0f, 328.0f };
145.0f, 188.0f, 285.0f, 328.0f
};
static s32 boxMdlTbl[] = { static s32 boxMdlTbl[] = { DATA_MAKE_NUM(DATADIR_BPAUSE, 8), DATA_MAKE_NUM(DATADIR_BPAUSE, 9), DATA_MAKE_NUM(DATADIR_BPAUSE, 10),
DATA_MAKE_NUM(DATADIR_BPAUSE, 8), DATA_MAKE_NUM(DATADIR_BPAUSE, 11), DATA_MAKE_NUM(DATADIR_BPAUSE, 12), DATA_MAKE_NUM(DATADIR_BPAUSE, 13), DATA_MAKE_NUM(DATADIR_BPAUSE, 14),
DATA_MAKE_NUM(DATADIR_BPAUSE, 9), DATA_MAKE_NUM(DATADIR_BPAUSE, 15) };
DATA_MAKE_NUM(DATADIR_BPAUSE, 10),
DATA_MAKE_NUM(DATADIR_BPAUSE, 11),
DATA_MAKE_NUM(DATADIR_BPAUSE, 12),
DATA_MAKE_NUM(DATADIR_BPAUSE, 13),
DATA_MAKE_NUM(DATADIR_BPAUSE, 14),
DATA_MAKE_NUM(DATADIR_BPAUSE, 15)
};
void BoardPauseStart(void) { void BoardPauseStart(void)
{
mainProcess = HuPrcChildCreate(PauseProcess, 0x2001, 0x3800, 0, boardMainProc); mainProcess = HuPrcChildCreate(PauseProcess, 0x2001, 0x3800, 0, boardMainProc);
hostMdl = BoardStarHostMdlGet(); hostMdl = BoardStarHostMdlGet();
BoardModelMotionStart(hostMdl, 1, 0x40000001); BoardModelMotionStart(hostMdl, 1, 0x40000001);
@ -151,7 +120,8 @@ void BoardPauseStart(void) {
HuPrcDestructorSet2(mainProcess, PauseExit); HuPrcDestructorSet2(mainProcess, PauseExit);
} }
static void PauseExit(void) { static void PauseExit(void)
{
if (pauseQuitF == 0) { if (pauseQuitF == 0) {
BoardRollWinDispSet(1); BoardRollWinDispSet(1);
BoardRollDispSet(1); BoardRollDispSet(1);
@ -160,7 +130,8 @@ static void PauseExit(void) {
BoardLast5GfxShowSet(1); BoardLast5GfxShowSet(1);
HuAudFXPauseAll(0); HuAudFXPauseAll(0);
HuAudSeqPauseAll(0); HuAudSeqPauseAll(0);
} else { }
else {
BoardConfettiKill(); BoardConfettiKill();
BoardAudSeqFadeOutAll(); BoardAudSeqFadeOutAll();
HuAudAllStop(); HuAudAllStop();
@ -173,7 +144,8 @@ static void PauseExit(void) {
omSysPauseCtrl(0); omSysPauseCtrl(0);
if (GWMGExplainGet()) { if (GWMGExplainGet()) {
_SetFlag(FLAG_ID_MAKE(0, 11)); _SetFlag(FLAG_ID_MAKE(0, 11));
} else { }
else {
_ClearFlag(FLAG_ID_MAKE(0, 11)); _ClearFlag(FLAG_ID_MAKE(0, 11));
} }
if (GWPartyGet() == 0) { if (GWPartyGet() == 0) {
@ -182,7 +154,8 @@ static void PauseExit(void) {
GWGameStat.story_pause.mg_list = GWMGListGet(); GWGameStat.story_pause.mg_list = GWMGListGet();
GWGameStat.story_pause.mess_speed = GWMessSpeedGet(); GWGameStat.story_pause.mess_speed = GWMessSpeedGet();
GWGameStat.story_pause.save_mode = GWSaveModeGet(); GWGameStat.story_pause.save_mode = GWSaveModeGet();
} else { }
else {
GWGameStat.party_pause.explain_mg = GWMGExplainGet(); GWGameStat.party_pause.explain_mg = GWMGExplainGet();
GWGameStat.party_pause.show_com_mg = GWMGShowComGet(); GWGameStat.party_pause.show_com_mg = GWMGShowComGet();
GWGameStat.party_pause.mg_list = GWMGListGet(); GWGameStat.party_pause.mg_list = GWMGListGet();
@ -192,7 +165,8 @@ static void PauseExit(void) {
mainProcess = NULL; mainProcess = NULL;
} }
static void PauseProcess(void) { static void PauseProcess(void)
{
s32 temp_r31; s32 temp_r31;
pauseQuitF = 0; pauseQuitF = 0;
@ -222,14 +196,16 @@ static void PauseProcess(void) {
HuPrcSleep(20); HuPrcSleep(20);
WipeColorSet(0, 0, 0); WipeColorSet(0, 0, 0);
BoardKill(); BoardKill();
} else { }
else {
BoardFilterFadeOut(30); BoardFilterFadeOut(30);
HuPrcSleep(30); HuPrcSleep(30);
} }
HuPrcEnd(); HuPrcEnd();
} }
void CreatePauseScreen(void) { void CreatePauseScreen(void)
{
Mtx sp30; Mtx sp30;
Vec sp24; Vec sp24;
Vec sp18; Vec sp18;
@ -294,10 +270,12 @@ void CreatePauseScreen(void) {
if (GWPartyGet() == 1) { if (GWPartyGet() == 1) {
if (GWTeamGet()) { if (GWTeamGet()) {
HuSprBankSet(pauseSprGrp, 2, 2); HuSprBankSet(pauseSprGrp, 2, 2);
} else { }
else {
HuSprBankSet(pauseSprGrp, 2, 0); HuSprBankSet(pauseSprGrp, 2, 0);
} }
} else { }
else {
HuSprBankSet(pauseSprGrp, 2, 1); HuSprBankSet(pauseSprGrp, 2, 1);
} }
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
@ -334,7 +312,8 @@ void CreatePauseScreen(void) {
sp24.x = 68.0f; sp24.x = 68.0f;
if (GWBoardGet() == 3) { if (GWBoardGet() == 3) {
sp24.y = 464.0f; sp24.y = 464.0f;
} else { }
else {
sp24.y = 434.0f; sp24.y = 434.0f;
} }
sp24.z = 1100.0f; sp24.z = 1100.0f;
@ -436,7 +415,8 @@ void CreatePauseScreen(void) {
SetBoxVisible(0); SetBoxVisible(0);
} }
static void DeletePauseScreen(void) { static void DeletePauseScreen(void)
{
ConfigWork *temp_r30; ConfigWork *temp_r30;
Mtx sp8; Mtx sp8;
s32 i; s32 i;
@ -461,7 +441,7 @@ static void DeletePauseScreen(void) {
HuSprGrpKill(pauseCursorPos); HuSprGrpKill(pauseCursorPos);
pauseCursorPos = -1; pauseCursorPos = -1;
} }
PSMTXIdentity(sp8); Identity(sp8);
BoardModelLayerSet(hostMdl, hostOldLayer); BoardModelLayerSet(hostMdl, hostOldLayer);
BoardModelVisibilitySet(hostMdl, 1); BoardModelVisibilitySet(hostMdl, 1);
BoardModelMtxSet(hostMdl, &sp8); BoardModelMtxSet(hostMdl, &sp8);
@ -471,7 +451,8 @@ static void DeletePauseScreen(void) {
} }
} }
static void SetBoxVisible(s32 arg0) { static void SetBoxVisible(s32 arg0)
{
s32 i; s32 i;
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
@ -479,7 +460,8 @@ static void SetBoxVisible(s32 arg0) {
} }
} }
static void PauseConfigObjFunc(omObjData *arg0) { static void PauseConfigObjFunc(omObjData *arg0)
{
ConfigWork *temp_r31; ConfigWork *temp_r31;
s16 temp_r28; s16 temp_r28;
s32 var_r29; s32 var_r29;
@ -578,7 +560,8 @@ static void PauseConfigObjFunc(omObjData *arg0) {
InitPauseQuit(arg0, temp_r31); InitPauseQuit(arg0, temp_r31);
break; break;
} }
} else { }
else {
cursorPos = ExecPauseConfig(arg0, temp_r31); cursorPos = ExecPauseConfig(arg0, temp_r31);
if (temp_r28 != cursorPos) { if (temp_r28 != cursorPos) {
arg0->trans.x = -40.0f + boxPosTbl[cursorPos][0]; arg0->trans.x = -40.0f + boxPosTbl[cursorPos][0];
@ -590,7 +573,8 @@ static void PauseConfigObjFunc(omObjData *arg0) {
} }
} }
static void UpdatePauseText(s32 arg0) { static void UpdatePauseText(s32 arg0)
{
s32 var_r28; s32 var_r28;
s32 j; s32 j;
s32 i; s32 i;
@ -603,7 +587,8 @@ static void UpdatePauseText(s32 arg0) {
if (i == GWPlayer[j].port) { if (i == GWPlayer[j].port) {
if (GWPlayer[j].com) { if (GWPlayer[j].com) {
var_r28 = MAKE_MESSID(16, 30); var_r28 = MAKE_MESSID(16, 30);
} else { }
else {
var_r28 = MAKE_MESSID(16, 29); var_r28 = MAKE_MESSID(16, 29);
} }
HuWinInsertMesSet(settingsWin, var_r28, i); HuWinInsertMesSet(settingsWin, var_r28, i);
@ -615,14 +600,16 @@ static void UpdatePauseText(s32 arg0) {
case 1: case 1:
if (boxState[arg0] != 0) { if (boxState[arg0] != 0) {
HuWinMesSet(settingsWin, MAKE_MESSID(16, 33)); HuWinMesSet(settingsWin, MAKE_MESSID(16, 33));
} else { }
else {
HuWinMesSet(settingsWin, MAKE_MESSID(16, 34)); HuWinMesSet(settingsWin, MAKE_MESSID(16, 34));
} }
break; break;
case 2: case 2:
if (boxState[arg0] != 0) { if (boxState[arg0] != 0) {
HuWinMesSet(settingsWin, MAKE_MESSID(16, 35)); HuWinMesSet(settingsWin, MAKE_MESSID(16, 35));
} else { }
else {
HuWinMesSet(settingsWin, MAKE_MESSID(16, 36)); HuWinMesSet(settingsWin, MAKE_MESSID(16, 36));
} }
break; break;
@ -642,7 +629,8 @@ static void UpdatePauseText(s32 arg0) {
case 4: case 4:
if (boxState[arg0] != 0) { if (boxState[arg0] != 0) {
HuWinMesSet(settingsWin, MAKE_MESSID(16, 40)); HuWinMesSet(settingsWin, MAKE_MESSID(16, 40));
} else { }
else {
HuWinMesSet(settingsWin, MAKE_MESSID(16, 41)); HuWinMesSet(settingsWin, MAKE_MESSID(16, 41));
} }
break; break;
@ -678,7 +666,8 @@ static void UpdatePauseText(s32 arg0) {
} }
} }
static void InitPauseQuit(omObjData *arg0, ConfigWork *arg1) { static void InitPauseQuit(omObjData *arg0, ConfigWork *arg1)
{
float var_f31; float var_f31;
switch (arg1->unk01) { switch (arg1->unk01) {
@ -696,7 +685,8 @@ static void InitPauseQuit(omObjData *arg0, ConfigWork *arg1) {
if (quitWin != -1 && HuWinStatGet(quitWin) == 3) { if (quitWin != -1 && HuWinStatGet(quitWin) == 3) {
if (HuWinChoiceNowGet(quitWin) != 0) { if (HuWinChoiceNowGet(quitWin) != 0) {
HuWinMesSet(settingsWin, MAKE_MESSID(16, 51)); HuWinMesSet(settingsWin, MAKE_MESSID(16, 51));
} else { }
else {
HuWinMesSet(settingsWin, MAKE_MESSID(16, 50)); HuWinMesSet(settingsWin, MAKE_MESSID(16, 50));
} }
} }
@ -725,7 +715,8 @@ static void InitPauseQuit(omObjData *arg0, ConfigWork *arg1) {
} }
} }
static void PauseQuitProcess(void) { static void PauseQuitProcess(void)
{
WindowData *temp_r31; WindowData *temp_r31;
float sp10[2]; float sp10[2];
float sp8[2]; float sp8[2];
@ -748,7 +739,8 @@ static void PauseQuitProcess(void) {
HuPrcEnd(); HuPrcEnd();
} }
static void DeletePauseQuit(void) { static void DeletePauseQuit(void)
{
if (quitWin != -1) { if (quitWin != -1) {
HuWinExCleanup(quitWin); HuWinExCleanup(quitWin);
quitWin = -1; quitWin = -1;
@ -757,7 +749,8 @@ static void DeletePauseQuit(void) {
quitProcess = NULL; quitProcess = NULL;
} }
static s32 UpdatePadConfig(omObjData *arg0, ConfigWork *arg1) { static s32 UpdatePadConfig(omObjData *arg0, ConfigWork *arg1)
{
switch (arg1->unk01) { switch (arg1->unk01) {
case 0: case 0:
CreatePadConfig(arg0, arg1); CreatePadConfig(arg0, arg1);
@ -777,12 +770,14 @@ static s32 UpdatePadConfig(omObjData *arg0, ConfigWork *arg1) {
} }
if (arg1->unk00_field1 != 0) { if (arg1->unk00_field1 != 0) {
return 0; return 0;
} else { }
else {
return 1; return 1;
} }
} }
static void CreatePadConfig(omObjData *arg0, ConfigWork *arg1) { static void CreatePadConfig(omObjData *arg0, ConfigWork *arg1)
{
Vec sp14; Vec sp14;
Vec sp8; Vec sp8;
s32 i; s32 i;
@ -817,7 +812,8 @@ static void CreatePadConfig(omObjData *arg0, ConfigWork *arg1) {
arg1->unk01 = 1; arg1->unk01 = 1;
} }
static void ScrollInPadConfig(omObjData *arg0, ConfigWork *arg1) { static void ScrollInPadConfig(omObjData *arg0, ConfigWork *arg1)
{
Vec sp8; Vec sp8;
s32 i; s32 i;
@ -834,7 +830,8 @@ static void ScrollInPadConfig(omObjData *arg0, ConfigWork *arg1) {
arg1->unk04 = 0; arg1->unk04 = 0;
arg1->unk05 = 0; arg1->unk05 = 0;
arg1->unk01 = 0; arg1->unk01 = 0;
} else { }
else {
arg1->unk01 = 2; arg1->unk01 = 2;
} }
return; return;
@ -848,7 +845,8 @@ static void ScrollInPadConfig(omObjData *arg0, ConfigWork *arg1) {
arg1->unk07--; arg1->unk07--;
} }
static void CursorMovePadConfig(omObjData *arg0, ConfigWork *arg1) { static void CursorMovePadConfig(omObjData *arg0, ConfigWork *arg1)
{
float sp8[4]; float sp8[4];
s32 temp_r29; s32 temp_r29;
u32 temp_r30; u32 temp_r30;
@ -861,16 +859,19 @@ static void CursorMovePadConfig(omObjData *arg0, ConfigWork *arg1) {
if (GWPlayer[temp_r29].com) { if (GWPlayer[temp_r29].com) {
arg1->unk00_field3 = GWPlayer[temp_r29].diff + 1; arg1->unk00_field3 = GWPlayer[temp_r29].diff + 1;
arg1->unk05 = GWPlayer[temp_r29].diff + 1; arg1->unk05 = GWPlayer[temp_r29].diff + 1;
} else { }
else {
arg1->unk00_field3 = 0; arg1->unk00_field3 = 0;
arg1->unk05 = 0; arg1->unk05 = 0;
} }
HuSprBankSet(padConfigSprGrp, arg1->unk04 + 8, 1); HuSprBankSet(padConfigSprGrp, arg1->unk04 + 8, 1);
HuAudFXPlay(2); HuAudFXPlay(2);
} else if (temp_r30 == 0x200) { }
else if (temp_r30 == 0x200) {
HuAudFXPlay(3); HuAudFXPlay(3);
arg1->unk01 = 4; arg1->unk01 = 4;
} else { }
else {
if (temp_r30 == 1) { if (temp_r30 == 1) {
arg1->unk04--; arg1->unk04--;
} }
@ -879,9 +880,11 @@ static void CursorMovePadConfig(omObjData *arg0, ConfigWork *arg1) {
} }
if (arg1->unk04 < 0) { if (arg1->unk04 < 0) {
arg1->unk04 = 0; arg1->unk04 = 0;
} else if (arg1->unk04 >= 4) { }
else if (arg1->unk04 >= 4) {
arg1->unk04 = 3; arg1->unk04 = 3;
} else if (temp_r30 == 1 || temp_r30 == 2) { }
else if (temp_r30 == 1 || temp_r30 == 2) {
HuAudFXPlay(0); HuAudFXPlay(0);
arg1->unk06 = 4; arg1->unk06 = 4;
} }
@ -891,7 +894,8 @@ static void CursorMovePadConfig(omObjData *arg0, ConfigWork *arg1) {
} }
} }
static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) { static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1)
{
s32 temp_r29; s32 temp_r29;
s32 var_r28; s32 var_r28;
s32 var_r26; s32 var_r26;
@ -901,13 +905,15 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) {
var_r30 = 0; var_r30 = 0;
if (HuPadStkX[pausePad] < -20) { if (HuPadStkX[pausePad] < -20) {
var_r30 |= 1; var_r30 |= 1;
} else if (HuPadStkX[pausePad] > 20) { }
else if (HuPadStkX[pausePad] > 20) {
var_r30 |= 2; var_r30 |= 2;
} }
temp_r29 = CheckPort(arg1->unk04); temp_r29 = CheckPort(arg1->unk04);
if (GWGameStat.veryHardUnlock != 0) { if (GWGameStat.veryHardUnlock != 0) {
var_r27 = 4; var_r27 = 4;
} else { }
else {
var_r27 = 3; var_r27 = 3;
} }
HuWinMesSet(settingsWin, MAKE_MESSID(16, 32)); HuWinMesSet(settingsWin, MAKE_MESSID(16, 32));
@ -916,13 +922,15 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) {
if (arg1->unk09++ < 10) { if (arg1->unk09++ < 10) {
return; return;
} }
} else { }
else {
if (arg1->unk09++ < 2) { if (arg1->unk09++ < 2) {
return; return;
} }
arg1->unk0C = var_r30; arg1->unk0C = var_r30;
} }
} else { }
else {
arg1->unk0C = 0; arg1->unk0C = 0;
} }
arg1->unk09 = 0; arg1->unk09 = 0;
@ -936,7 +944,8 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) {
if (var_r28 != 0) { if (var_r28 != 0) {
HuAudFXPlay(0); HuAudFXPlay(0);
arg1->unk06 = 4; arg1->unk06 = 4;
} else { }
else {
if (HuPadBtnDown[pausePad] == 0x100) { if (HuPadBtnDown[pausePad] == 0x100) {
arg1->unk01 = 2; arg1->unk01 = 2;
if (arg1->unk05 != 0) { if (arg1->unk05 != 0) {
@ -944,7 +953,8 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) {
GWPlayerCfg[temp_r29].iscom = 1; GWPlayerCfg[temp_r29].iscom = 1;
GWPlayer[temp_r29].diff = arg1->unk05 - 1; GWPlayer[temp_r29].diff = arg1->unk05 - 1;
GWPlayerCfg[temp_r29].diff = arg1->unk05 - 1; GWPlayerCfg[temp_r29].diff = arg1->unk05 - 1;
} else { }
else {
GWPlayer[temp_r29].com = 0; GWPlayer[temp_r29].com = 0;
GWPlayerCfg[temp_r29].iscom = 0; GWPlayerCfg[temp_r29].iscom = 0;
} }
@ -967,18 +977,21 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) {
} }
if (arg1->unk05 > var_r27) { if (arg1->unk05 > var_r27) {
arg1->unk05 = 0; arg1->unk05 = 0;
} else if (arg1->unk05 < 0) { }
else if (arg1->unk05 < 0) {
arg1->unk05 = var_r27; arg1->unk05 = var_r27;
} }
if (arg1->unk05 != 0) { if (arg1->unk05 != 0) {
var_r26 = arg1->unk05 + 3; var_r26 = arg1->unk05 + 3;
} else { }
else {
var_r26 = arg1->unk04; var_r26 = arg1->unk04;
} }
HuSprBankSet(padConfigSprGrp, arg1->unk04 + 4, var_r26); HuSprBankSet(padConfigSprGrp, arg1->unk04 + 4, var_r26);
} }
static void ScrollOutPadConfig(omObjData *arg0, ConfigWork *arg1) { static void ScrollOutPadConfig(omObjData *arg0, ConfigWork *arg1)
{
Vec sp14; Vec sp14;
Vec sp8; Vec sp8;
@ -1003,7 +1016,8 @@ static void ScrollOutPadConfig(omObjData *arg0, ConfigWork *arg1) {
arg1->unk00_field2 = 1; arg1->unk00_field2 = 1;
} }
static s32 UpdatePauseBox(omObjData *arg0, ConfigWork *arg1, s32 arg2) { static s32 UpdatePauseBox(omObjData *arg0, ConfigWork *arg1, s32 arg2)
{
float var_f31; float var_f31;
float var_f30; float var_f30;
float var_f29; float var_f29;
@ -1031,21 +1045,26 @@ static s32 UpdatePauseBox(omObjData *arg0, ConfigWork *arg1, s32 arg2) {
} }
if (arg1->unk04 < 0) { if (arg1->unk04 < 0) {
arg1->unk04 = 0; arg1->unk04 = 0;
} else if (arg1->unk04 > 1) { }
else if (arg1->unk04 > 1) {
arg1->unk04 = 1; arg1->unk04 = 1;
} else if (temp_r28 == 1 || temp_r28 == 2) { }
else if (temp_r28 == 1 || temp_r28 == 2) {
HuAudFXPlay(0); HuAudFXPlay(0);
} }
if (temp_r28 == 0x100) { if (temp_r28 == 0x100) {
arg1->unk01 = 3; arg1->unk01 = 3;
HuAudFXPlay(2); HuAudFXPlay(2);
} else if (temp_r28 == 0x200) { }
else if (temp_r28 == 0x200) {
arg1->unk01 = 4; arg1->unk01 = 4;
HuAudFXPlay(3); HuAudFXPlay(3);
} else if (temp_r27 != arg1->unk04) { }
else if (temp_r27 != arg1->unk04) {
if (arg1->unk04 != 0) { if (arg1->unk04 != 0) {
var_f30 = 0.0f; var_f30 = 0.0f;
} else { }
else {
var_f30 = -90.0f; var_f30 = -90.0f;
} }
var_f29 = arg0->rot.x; var_f29 = arg0->rot.x;
@ -1058,7 +1077,8 @@ static s32 UpdatePauseBox(omObjData *arg0, ConfigWork *arg1, s32 arg2) {
if (arg1->unk07 != 0) { if (arg1->unk07 != 0) {
arg0->rot.x += arg0->rot.y; arg0->rot.x += arg0->rot.y;
arg1->unk07--; arg1->unk07--;
} else { }
else {
arg1->unk01 = 1; arg1->unk01 = 1;
} }
break; break;
@ -1091,7 +1111,8 @@ static s32 UpdatePauseBox(omObjData *arg0, ConfigWork *arg1, s32 arg2) {
return 0; return 0;
} }
static s32 UpdatePauseBoxExt(omObjData *arg0, ConfigWork *arg1, s32 arg2) { static s32 UpdatePauseBoxExt(omObjData *arg0, ConfigWork *arg1, s32 arg2)
{
float var_f31; float var_f31;
float var_f30; float var_f30;
float var_f29; float var_f29;
@ -1102,7 +1123,8 @@ static s32 UpdatePauseBoxExt(omObjData *arg0, ConfigWork *arg1, s32 arg2) {
if (arg2 == 3 && GWGameStat.customPackEnable == 0) { if (arg2 == 3 && GWGameStat.customPackEnable == 0) {
var_r27 = 1; var_r27 = 1;
} else { }
else {
var_r27 = 2; var_r27 = 2;
} }
switch (arg1->unk01) { switch (arg1->unk01) {
@ -1125,18 +1147,22 @@ static s32 UpdatePauseBoxExt(omObjData *arg0, ConfigWork *arg1, s32 arg2) {
} }
if (arg1->unk04 < 0) { if (arg1->unk04 < 0) {
arg1->unk04 = 0; arg1->unk04 = 0;
} else if (arg1->unk04 > var_r27) { }
else if (arg1->unk04 > var_r27) {
arg1->unk04 = var_r27; arg1->unk04 = var_r27;
} else if (temp_r28 == 1 || temp_r28 == 2) { }
else if (temp_r28 == 1 || temp_r28 == 2) {
HuAudFXPlay(0); HuAudFXPlay(0);
} }
if (temp_r28 == 0x100) { if (temp_r28 == 0x100) {
arg1->unk01 = 3; arg1->unk01 = 3;
HuAudFXPlay(2); HuAudFXPlay(2);
} else if (temp_r28 == 0x200) { }
else if (temp_r28 == 0x200) {
arg1->unk01 = 4; arg1->unk01 = 4;
HuAudFXPlay(3); HuAudFXPlay(3);
} else if (temp_r26 != arg1->unk04) { }
else if (temp_r26 != arg1->unk04) {
switch (arg1->unk04) { switch (arg1->unk04) {
case 0: case 0:
var_f30 = 90.0f; var_f30 = 90.0f;
@ -1158,7 +1184,8 @@ static s32 UpdatePauseBoxExt(omObjData *arg0, ConfigWork *arg1, s32 arg2) {
if (arg1->unk07 != 0) { if (arg1->unk07 != 0) {
arg0->rot.x += arg0->rot.y; arg0->rot.x += arg0->rot.y;
arg1->unk07--; arg1->unk07--;
} else { }
else {
arg1->unk01 = 1; arg1->unk01 = 1;
} }
break; break;
@ -1191,7 +1218,8 @@ static s32 UpdatePauseBoxExt(omObjData *arg0, ConfigWork *arg1, s32 arg2) {
return 0; return 0;
} }
static s32 ExecPauseConfig(omObjData *arg0, ConfigWork *arg1) { static s32 ExecPauseConfig(omObjData *arg0, ConfigWork *arg1)
{
s32 var_r27; s32 var_r27;
s32 var_r26; s32 var_r26;
s32 var_r29; s32 var_r29;
@ -1218,17 +1246,21 @@ static s32 ExecPauseConfig(omObjData *arg0, ConfigWork *arg1) {
arg1->unk03 += var_r28; arg1->unk03 += var_r28;
if (arg1->unk03 < 0) { if (arg1->unk03 < 0) {
arg1->unk03 = 0; arg1->unk03 = 0;
} else if (arg1->unk03 >= 2) { }
else if (arg1->unk03 >= 2) {
arg1->unk03 = 1; arg1->unk03 = 1;
} else if (var_r28 != 0) { }
else if (var_r28 != 0) {
HuAudFXPlay(0); HuAudFXPlay(0);
arg1->unk06 = 4; arg1->unk06 = 4;
} }
if (arg1->unk02 < 0) { if (arg1->unk02 < 0) {
arg1->unk02 = 0; arg1->unk02 = 0;
} else if (arg1->unk02 >= 4) { }
else if (arg1->unk02 >= 4) {
arg1->unk02 = 3; arg1->unk02 = 3;
} else if (var_r29 != 0) { }
else if (var_r29 != 0) {
HuAudFXPlay(0); HuAudFXPlay(0);
arg1->unk06 = 4; arg1->unk06 = 4;
} }
@ -1251,7 +1283,8 @@ static s32 ExecPauseConfig(omObjData *arg0, ConfigWork *arg1) {
} }
if (var_r26 != 0) { if (var_r26 != 0) {
HuAudFXPlay(4); HuAudFXPlay(4);
} else if (var_r27 != 0) { }
else if (var_r27 != 0) {
HuAudFXPlay(2); HuAudFXPlay(2);
arg1->unk00_field1 = 1; arg1->unk00_field1 = 1;
} }
@ -1263,7 +1296,8 @@ static s32 ExecPauseConfig(omObjData *arg0, ConfigWork *arg1) {
return arg1->unk02 + arg1->unk03 * 4; return arg1->unk02 + arg1->unk03 * 4;
} }
static void CreatePauseControlWin(void) { static void CreatePauseControlWin(void)
{
float sp8[2]; float sp8[2];
float var_f31; float var_f31;
float var_f30; float var_f30;
@ -1280,7 +1314,8 @@ static void CreatePauseControlWin(void) {
HuWinDispOff(settingsControlWin); HuWinDispOff(settingsControlWin);
if (GWBoardGet() == 7 || GWBoardGet() == 8) { if (GWBoardGet() == 7 || GWBoardGet() == 8) {
var_r31 = MAKE_MESSID(16, 73); var_r31 = MAKE_MESSID(16, 73);
} else { }
else {
var_r31 = MAKE_MESSID(16, 52); var_r31 = MAKE_MESSID(16, 52);
} }
HuWinMesMaxSizeGet(1, sp8, var_r31); HuWinMesMaxSizeGet(1, sp8, var_r31);
@ -1304,7 +1339,8 @@ static void CreatePauseControlWin(void) {
sp8[1] = 128.0f; sp8[1] = 128.0f;
} }
static void DeletePauseControlWin(void) { static void DeletePauseControlWin(void)
{
if (settingsControlWin != -1) { if (settingsControlWin != -1) {
HuWinKill(settingsControlWin); HuWinKill(settingsControlWin);
settingsControlWin = -1; settingsControlWin = -1;
@ -1319,7 +1355,8 @@ static void DeletePauseControlWin(void) {
} }
} }
static s32 WaitPauseInput(void) { static s32 WaitPauseInput(void)
{
s32 var_r28; s32 var_r28;
s32 var_r31; s32 var_r31;
u32 temp_r30; u32 temp_r30;
@ -1327,7 +1364,8 @@ static s32 WaitPauseInput(void) {
mainScreenF = 1; mainScreenF = 1;
if (GWBoardGet() == 7 || GWBoardGet() == 8) { if (GWBoardGet() == 7 || GWBoardGet() == 8) {
var_r28 = 1; var_r28 = 1;
} else { }
else {
var_r28 = 0; var_r28 = 0;
} }
HuWinDispOn(controlWin); HuWinDispOn(controlWin);
@ -1344,13 +1382,15 @@ static s32 WaitPauseInput(void) {
var_r31 = 0; var_r31 = 0;
HuAudFXPlay(0x1C); HuAudFXPlay(0x1C);
break; break;
} else if (var_r28 == 0) { }
else if (var_r28 == 0) {
if (temp_r30 == 0x100) { if (temp_r30 == 0x100) {
var_r31 = 1; var_r31 = 1;
HuAudFXPlay(1); HuAudFXPlay(1);
break; break;
} }
} else if (temp_r30 == 0x10) { }
else if (temp_r30 == 0x10) {
pauseQuitF = 1; pauseQuitF = 1;
var_r31 = 2; var_r31 = 2;
mgQuitExtraF = 1; mgQuitExtraF = 1;
@ -1368,7 +1408,8 @@ static s32 WaitPauseInput(void) {
return var_r31; return var_r31;
} }
static void ShowPauseConfig(void) { static void ShowPauseConfig(void)
{
float var_f31; float var_f31;
float var_f30; float var_f30;
@ -1383,7 +1424,8 @@ static void ShowPauseConfig(void) {
var_f30 = boxPosTbl[0][1]; var_f30 = boxPosTbl[0][1];
HuSprPosSet(pauseCursorPos, 1, var_f31, var_f30); HuSprPosSet(pauseCursorPos, 1, var_f31, var_f30);
HuSprAttrReset(pauseCursorPos, 1, HUSPR_ATTR_DISPOFF); HuSprAttrReset(pauseCursorPos, 1, HUSPR_ATTR_DISPOFF);
} else { }
else {
HuSprAttrSet(pauseCursorPos, 1, HUSPR_ATTR_DISPOFF); HuSprAttrSet(pauseCursorPos, 1, HUSPR_ATTR_DISPOFF);
} }
while (configObj) { while (configObj) {
@ -1391,7 +1433,8 @@ static void ShowPauseConfig(void) {
} }
} }
static void CreatePadConfigSprite(void) { static void CreatePadConfigSprite(void)
{
float temp_f31; float temp_f31;
float temp_f30; float temp_f30;
s32 var_r29; s32 var_r29;
@ -1415,7 +1458,8 @@ static void CreatePadConfigSprite(void) {
HuSprBankSet(padConfigSprGrp, i, temp_r28); HuSprBankSet(padConfigSprGrp, i, temp_r28);
if (temp_r26 != 0) { if (temp_r26 != 0) {
var_r29 = temp_r27 + 4; var_r29 = temp_r27 + 4;
} else { }
else {
var_r29 = i; var_r29 = i;
} }
HuSprBankSet(padConfigSprGrp, i + 4, var_r29); HuSprBankSet(padConfigSprGrp, i + 4, var_r29);
@ -1427,7 +1471,8 @@ static void CreatePadConfigSprite(void) {
HuSprGrpPosSet(padConfigSprGrp, 0.0f, 0.0f); HuSprGrpPosSet(padConfigSprGrp, 0.0f, 0.0f);
} }
static void ShowPadConfigSprite(s32 arg0) { static void ShowPadConfigSprite(s32 arg0)
{
s32 temp_r31; s32 temp_r31;
s32 i; s32 i;
@ -1437,7 +1482,8 @@ static void ShowPadConfigSprite(s32 arg0) {
HuSprAttrReset(padConfigSprGrp, temp_r31, HUSPR_ATTR_DISPOFF); HuSprAttrReset(padConfigSprGrp, temp_r31, HUSPR_ATTR_DISPOFF);
HuSprAttrReset(padConfigSprGrp, temp_r31 + 4, HUSPR_ATTR_DISPOFF); HuSprAttrReset(padConfigSprGrp, temp_r31 + 4, HUSPR_ATTR_DISPOFF);
HuSprAttrReset(padConfigSprGrp, temp_r31 + 8, HUSPR_ATTR_DISPOFF); HuSprAttrReset(padConfigSprGrp, temp_r31 + 8, HUSPR_ATTR_DISPOFF);
} else { }
else {
HuSprAttrSet(padConfigSprGrp, temp_r31, HUSPR_ATTR_DISPOFF); HuSprAttrSet(padConfigSprGrp, temp_r31, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(padConfigSprGrp, temp_r31 + 4, HUSPR_ATTR_DISPOFF); HuSprAttrSet(padConfigSprGrp, temp_r31 + 4, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(padConfigSprGrp, temp_r31 + 8, HUSPR_ATTR_DISPOFF); HuSprAttrSet(padConfigSprGrp, temp_r31 + 8, HUSPR_ATTR_DISPOFF);
@ -1445,12 +1491,14 @@ static void ShowPadConfigSprite(s32 arg0) {
} }
if (arg0 != 0) { if (arg0 != 0) {
HuSprAttrReset(padConfigSprGrp, 12, HUSPR_ATTR_DISPOFF); HuSprAttrReset(padConfigSprGrp, 12, HUSPR_ATTR_DISPOFF);
} else { }
else {
HuSprAttrSet(padConfigSprGrp, 12, HUSPR_ATTR_DISPOFF); HuSprAttrSet(padConfigSprGrp, 12, HUSPR_ATTR_DISPOFF);
} }
} }
static void PauseCreateNumber(s32 arg0, s8 arg1) { static void PauseCreateNumber(s32 arg0, s8 arg1)
{
s32 var_r31; s32 var_r31;
s32 temp_r30; s32 temp_r30;
s32 temp_r29; s32 temp_r29;
@ -1459,22 +1507,26 @@ static void PauseCreateNumber(s32 arg0, s8 arg1) {
temp_r30 = arg1 / 10; temp_r30 = arg1 / 10;
if (arg0 == 0) { if (arg0 == 0) {
var_r31 = 3; var_r31 = 3;
} else { }
else {
var_r31 = 5; var_r31 = 5;
} }
if (temp_r30 != 0) { if (temp_r30 != 0) {
HuSprBankSet(pauseSprGrp, var_r31, temp_r30); HuSprBankSet(pauseSprGrp, var_r31, temp_r30);
} else { }
else {
HuSprAttrSet(pauseSprGrp, var_r31, 4); HuSprAttrSet(pauseSprGrp, var_r31, 4);
} }
HuSprBankSet(pauseSprGrp, var_r31 + 1, temp_r29); HuSprBankSet(pauseSprGrp, var_r31 + 1, temp_r29);
} }
BOOL BoardPauseActiveCheck(void) { BOOL BoardPauseActiveCheck(void)
{
return (mainProcess != NULL) ? TRUE : FALSE; return (mainProcess != NULL) ? TRUE : FALSE;
} }
BOOL BoardPauseReqCheck(void) { BOOL BoardPauseReqCheck(void)
{
s32 temp_r30; s32 temp_r30;
s32 i; s32 i;
@ -1495,7 +1547,8 @@ BOOL BoardPauseReqCheck(void) {
return FALSE; return FALSE;
} }
static s32 CheckPort(s32 arg0) { static s32 CheckPort(s32 arg0)
{
s32 i; s32 i;
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
@ -1506,7 +1559,8 @@ static s32 CheckPort(s32 arg0) {
return i; return i;
} }
static void RotateBox(float arg0, float arg1, Mtx arg2) { static void RotateBox(float arg0, float arg1, Mtx arg2)
{
Vec sp14; Vec sp14;
Mtx spB0; Mtx spB0;
Mtx sp80; Mtx sp80;
@ -1514,11 +1568,11 @@ static void RotateBox(float arg0, float arg1, Mtx arg2) {
Mtx sp20; Mtx sp20;
BoardCameraRotGet(&sp14); BoardCameraRotGet(&sp14);
PSMTXRotRad(spB0, 'x', MTXDegToRad(sp14.x)); RotRad(spB0, 'x', MTXDegToRad(sp14.x));
PSMTXRotRad(sp80, 'y', MTXDegToRad(sp14.y)); RotRad(sp80, 'y', MTXDegToRad(sp14.y));
PSMTXRotRad(sp50, 'x', MTXDegToRad(arg0)); RotRad(sp50, 'x', MTXDegToRad(arg0));
PSMTXRotRad(sp20, 'y', MTXDegToRad(arg1)); RotRad(sp20, 'y', MTXDegToRad(arg1));
PSMTXConcat(sp80, spB0, sp80); Concat(sp80, spB0, sp80);
PSMTXConcat(sp50, sp20, sp20); Concat(sp50, sp20, sp20);
PSMTXConcat(sp80, sp20, arg2); Concat(sp80, sp20, arg2);
} }

View file

@ -1,13 +1,5 @@
#include "game/board/shop.h" #include "game/board/shop.h"
#include "game/audio.h" #include "game/audio.h"
#include "game/gamework.h"
#include "game/gamework_data.h"
#include "game/object.h"
#include "game/objsub.h"
#include "game/disp.h"
#include "game/pad.h"
#include "game/process.h"
#include "game/sprite.h"
#include "game/board/audio.h" #include "game/board/audio.h"
#include "game/board/com.h" #include "game/board/com.h"
#include "game/board/com_path.h" #include "game/board/com_path.h"
@ -20,6 +12,15 @@
#include "game/board/ui.h" #include "game/board/ui.h"
#include "game/board/view.h" #include "game/board/view.h"
#include "game/board/window.h" #include "game/board/window.h"
#include "game/disp.h"
#include "game/gamework.h"
#include "game/gamework_data.h"
#include "game/object.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/process.h"
#include "game/sprite.h"
#include "dolphin.h" #include "dolphin.h"
#include "ext_math.h" #include "ext_math.h"
@ -103,39 +104,20 @@ static Process *shopProc;
static s16 itemMdl = -1; static s16 itemMdl = -1;
static s8 itemChoice = -1; static s8 itemChoice = -1;
static BoardModelParam shopMdlParam[1] = { static BoardModelParam shopMdlParam[1] = { { 0x00070094, { 0, 1, 0, 0, 0 }, -1 } };
{ 0x00070094, { 0, 1, 0, 0, 0 }, -1 }
};
static s16 hostMdl = -1; static s16 hostMdl = -1;
static s16 shopMot[3] = { -1, -1, -1 }; static s16 shopMot[3] = { -1, -1, -1 };
static s8 itemCurChoice = -1; static s8 itemCurChoice = -1;
static s8 defaultItemTbl[5] = { static s8 defaultItemTbl[5] = { 0x05, 0x07, 0x02, 0x03, 0x00 };
0x05, 0x07, 0x02, 0x03, 0x00
};
static s32 hostMessTbl[] = { static s32 hostMessTbl[] = { MAKE_MESSID(0x0F, 0x04), MAKE_MESSID(0x0F, 0x07), MAKE_MESSID(0x0F, 0x0A), MAKE_MESSID(0x0F, 0x0D),
MAKE_MESSID(0x0F, 0x04), MAKE_MESSID(0x0F, 0x10), MAKE_MESSID(0x0F, 0x13), MAKE_MESSID(0x0F, 0x04), MAKE_MESSID(0x0F, 0x24), MAKE_MESSID(0x0F, 0x24) };
MAKE_MESSID(0x0F, 0x07),
MAKE_MESSID(0x0F, 0x0A),
MAKE_MESSID(0x0F, 0x0D),
MAKE_MESSID(0x0F, 0x10),
MAKE_MESSID(0x0F, 0x13),
MAKE_MESSID(0x0F, 0x04),
MAKE_MESSID(0x0F, 0x24),
MAKE_MESSID(0x0F, 0x24)
};
static s8 itemPriceTbl[] = { static s8 itemPriceTbl[] = { 5, 5, 15, 15, 10, 10, 15, 15, 15, 15, 0, 25, 30, 30, 0, 0 };
5, 5, 15, 15,
10, 10, 15, 15,
15, 15, 0, 25,
30, 30, 0, 0
};
static s32 shopMotTbl[9][3] = { static s32 shopMotTbl[9][3] = { { DATA_MAKE_NUM(DATADIR_BGUEST, 0x01), DATA_MAKE_NUM(DATADIR_BGUEST, 0x03), DATA_MAKE_NUM(DATADIR_BGUEST, 0x04) },
{ DATA_MAKE_NUM(DATADIR_BGUEST, 0x01), DATA_MAKE_NUM(DATADIR_BGUEST, 0x03), DATA_MAKE_NUM(DATADIR_BGUEST, 0x04) },
{ DATA_MAKE_NUM(DATADIR_BGUEST, 0x09), DATA_MAKE_NUM(DATADIR_BGUEST, 0x0B), DATA_MAKE_NUM(DATADIR_BGUEST, 0x0C) }, { DATA_MAKE_NUM(DATADIR_BGUEST, 0x09), DATA_MAKE_NUM(DATADIR_BGUEST, 0x0B), DATA_MAKE_NUM(DATADIR_BGUEST, 0x0C) },
{ DATA_MAKE_NUM(DATADIR_BGUEST, 0x0E), DATA_MAKE_NUM(DATADIR_BGUEST, 0x10), DATA_MAKE_NUM(DATADIR_BGUEST, 0x11) }, { DATA_MAKE_NUM(DATADIR_BGUEST, 0x0E), DATA_MAKE_NUM(DATADIR_BGUEST, 0x10), DATA_MAKE_NUM(DATADIR_BGUEST, 0x11) },
{ DATA_MAKE_NUM(DATADIR_BGUEST, 0x18), DATA_MAKE_NUM(DATADIR_BGUEST, 0x1A), DATA_MAKE_NUM(DATADIR_BGUEST, 0x1B) }, { DATA_MAKE_NUM(DATADIR_BGUEST, 0x18), DATA_MAKE_NUM(DATADIR_BGUEST, 0x1A), DATA_MAKE_NUM(DATADIR_BGUEST, 0x1B) },
@ -143,27 +125,26 @@ static s32 shopMotTbl[9][3] = {
{ DATA_MAKE_NUM(DATADIR_BGUEST, 0x22), DATA_MAKE_NUM(DATADIR_BGUEST, 0x24), DATA_MAKE_NUM(DATADIR_BGUEST, 0x25) }, { DATA_MAKE_NUM(DATADIR_BGUEST, 0x22), DATA_MAKE_NUM(DATADIR_BGUEST, 0x24), DATA_MAKE_NUM(DATADIR_BGUEST, 0x25) },
{ DATA_MAKE_NUM(DATADIR_BGUEST, 0x09), DATA_MAKE_NUM(DATADIR_BGUEST, 0x0B), DATA_MAKE_NUM(DATADIR_BGUEST, 0x0C) }, { DATA_MAKE_NUM(DATADIR_BGUEST, 0x09), DATA_MAKE_NUM(DATADIR_BGUEST, 0x0B), DATA_MAKE_NUM(DATADIR_BGUEST, 0x0C) },
{ DATA_MAKE_NUM(DATADIR_BGUEST, 0x2A), DATA_MAKE_NUM(DATADIR_BGUEST, 0x2C), DATA_MAKE_NUM(DATADIR_BGUEST, 0x2D) }, { DATA_MAKE_NUM(DATADIR_BGUEST, 0x2A), DATA_MAKE_NUM(DATADIR_BGUEST, 0x2C), DATA_MAKE_NUM(DATADIR_BGUEST, 0x2D) },
{ DATA_MAKE_NUM(DATADIR_BGUEST, 0x2A), DATA_MAKE_NUM(DATADIR_BGUEST, 0x2C), DATA_MAKE_NUM(DATADIR_BGUEST, 0x2D) } { DATA_MAKE_NUM(DATADIR_BGUEST, 0x2A), DATA_MAKE_NUM(DATADIR_BGUEST, 0x2C), DATA_MAKE_NUM(DATADIR_BGUEST, 0x2D) } };
};
void BoardShopHostSet(s16 arg0) { void BoardShopHostSet(s16 arg0)
{
hostMdl = arg0; hostMdl = arg0;
} }
s16 BoardShopHostGet(void) { s16 BoardShopHostGet(void)
{
return hostMdl; return hostMdl;
} }
void BoardShopInit(void) { void BoardShopInit(void)
{
BoardModelParam *var_r29; BoardModelParam *var_r29;
Vec sp1C; Vec sp1C;
Vec sp10; Vec sp10;
s32 j; s32 j;
s32 i; s32 i;
s32 sp8[2] = { s32 sp8[2] = { 0x00080000, 0x00100000 };
0x00080000,
0x00100000
};
for (i = 0; i < 2; i++) { for (i = 0; i < 2; i++) {
BoardSpaceLinkTransformGet(sp8[i], &sp1C, &sp10, 0); BoardSpaceLinkTransformGet(sp8[i], &sp1C, &sp10, 0);
@ -176,7 +157,8 @@ void BoardShopInit(void) {
BoardModelVisibilitySet(hostMdl, 0); BoardModelVisibilitySet(hostMdl, 0);
} }
void BoardShopKill(void) { void BoardShopKill(void)
{
s32 i; s32 i;
s32 j; s32 j;
@ -190,7 +172,8 @@ void BoardShopKill(void) {
} }
} }
void BoardShopExec(s32 player, s32 space) { void BoardShopExec(s32 player, s32 space)
{
if (BoardPlayerSizeGet(GWSystem.player_curr) == 2) { if (BoardPlayerSizeGet(GWSystem.player_curr) == 2) {
return; return;
} }
@ -204,7 +187,8 @@ void BoardShopExec(s32 player, s32 space) {
BoardRollDispSet(1); BoardRollDispSet(1);
} }
static void ExecShop(void) { static void ExecShop(void)
{
Vec sp38; Vec sp38;
Vec sp2C; Vec sp2C;
Vec sp20; Vec sp20;
@ -229,7 +213,8 @@ static void ExecShop(void) {
temp_r28 = GWPlayer[shopPlayer].space_curr; temp_r28 = GWPlayer[shopPlayer].space_curr;
if (BoardSpaceFlagGet(0, temp_r28) & 0x80000) { if (BoardSpaceFlagGet(0, temp_r28) & 0x80000) {
shopMdlPtr = shopMdlIdx[0]; shopMdlPtr = shopMdlIdx[0];
} else { }
else {
shopMdlPtr = shopMdlIdx[1]; shopMdlPtr = shopMdlIdx[1];
} }
BoardPlayerIdleSet(shopPlayer); BoardPlayerIdleSet(shopPlayer);
@ -315,7 +300,8 @@ static void ExecShop(void) {
if (var_r29 > BoardPlayerCoinsGet(shopPlayer)) { if (var_r29 > BoardPlayerCoinsGet(shopPlayer)) {
BoardWinChoiceDisable(i); BoardWinChoiceDisable(i);
choiceEnableTbl[i] = 0; choiceEnableTbl[i] = 0;
} else { }
else {
choiceEnableTbl[i] = 1; choiceEnableTbl[i] = 1;
} }
} }
@ -332,7 +318,8 @@ static void ExecShop(void) {
HuPrcSleep(0xF); HuPrcSleep(0xF);
if (itemCurChoice == -1 || itemCurChoice == 5 || itemCurChoice == 0x7F) { if (itemCurChoice == -1 || itemCurChoice == 5 || itemCurChoice == 0x7F) {
PauseShopWin(); PauseShopWin();
} else { }
else {
PauseShopWin(); PauseShopWin();
while (!BoardStatusStopCheck(shopPlayer)) { while (!BoardStatusStopCheck(shopPlayer)) {
HuPrcVSleep(); HuPrcVSleep();
@ -346,7 +333,8 @@ static void ExecShop(void) {
temp_r24 = itemPriceTbl[activeItemTbl[itemCurChoice]]; temp_r24 = itemPriceTbl[activeItemTbl[itemCurChoice]];
if (temp_r24 >= 20) { if (temp_r24 >= 20) {
var_r23 = 3; var_r23 = 3;
} else { }
else {
var_r23 = 6; var_r23 = 6;
} }
var_f30 = BoardDAngleCalc(180.0f + BoardPlayerRotYGet(shopPlayer)); var_f30 = BoardDAngleCalc(180.0f + BoardPlayerRotYGet(shopPlayer));
@ -391,7 +379,8 @@ static void ExecShop(void) {
HuPrcEnd(); HuPrcEnd();
} }
static void DestroyShop(void) { static void DestroyShop(void)
{
s16 temp_r30; s16 temp_r30;
s32 i; s32 i;
@ -413,7 +402,8 @@ static void DestroyShop(void) {
shopProc = NULL; shopProc = NULL;
} }
static void PopupShop(void) { static void PopupShop(void)
{
s32 i; s32 i;
for (i = 0; i < 2; i++) { for (i = 0; i < 2; i++) {
@ -443,7 +433,8 @@ static void PopupShop(void) {
} }
} }
static void CloseShop(void) { static void CloseShop(void)
{
BoardModelMotionStart(shopMdlPtr[0], 0, 0x40000004); BoardModelMotionStart(shopMdlPtr[0], 0, 0x40000004);
while (BoardModelMotionTimeGet(shopMdlPtr[0]) > 28.0f) { while (BoardModelMotionTimeGet(shopMdlPtr[0]) > 28.0f) {
HuPrcVSleep(); HuPrcVSleep();
@ -458,7 +449,8 @@ static void CloseShop(void) {
BoardModelVisibilitySet(BoardShopHostGet(), 0); BoardModelVisibilitySet(BoardShopHostGet(), 0);
} }
static void CreateShopWin(void) { static void CreateShopWin(void)
{
Vec sp8; Vec sp8;
omObjData *var_r31; omObjData *var_r31;
ShopWinWork *var_r30; ShopWinWork *var_r30;
@ -473,12 +465,12 @@ static void CreateShopWin(void) {
var_r30->unk01 = 0xC; var_r30->unk01 = 0xC;
var_r30->unk04 = 0; var_r30->unk04 = 0;
shopWinObj = var_r31; shopWinObj = var_r31;
var_r30->unk06 = HuWinCreate(36.0f, HU_DISP_HEIGHT-136, 0x1F8, 0x60, 0); var_r30->unk06 = HuWinCreate(36.0f, HU_DISP_HEIGHT - 136, 0x1F8, 0x60, 0);
HuWinMesSpeedSet(var_r30->unk06, 0); HuWinMesSpeedSet(var_r30->unk06, 0);
HuWinDrawNoSet(var_r30->unk06, 0x40); HuWinDrawNoSet(var_r30->unk06, 0x40);
HuWinExAnimIn(var_r30->unk06); HuWinExAnimIn(var_r30->unk06);
sp8.x = 84.0f; sp8.x = 84.0f;
sp8.y = HU_DISP_HEIGHT-88; sp8.y = HU_DISP_HEIGHT - 88;
sp8.z = 400.0f; sp8.z = 400.0f;
var_r31->scale.x = var_r31->scale.y = var_r31->scale.z = 0.25f; var_r31->scale.x = var_r31->scale.y = var_r31->scale.z = 0.25f;
Hu3D2Dto3D(&sp8, 1, &sp8); Hu3D2Dto3D(&sp8, 1, &sp8);
@ -488,7 +480,8 @@ static void CreateShopWin(void) {
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;
} }
static void UpdateShopWin(omObjData *arg0) { static void UpdateShopWin(omObjData *arg0)
{
Vec spC; Vec spC;
float var_f29; float var_f29;
float var_f28; float var_f28;
@ -517,7 +510,8 @@ static void UpdateShopWin(omObjData *arg0) {
if (temp_r28->unk00_field0 == 0) { if (temp_r28->unk00_field0 == 0) {
BoardModelVisibilitySet(itemMdl, 0); BoardModelVisibilitySet(itemMdl, 0);
} }
} else { }
else {
HuWinDispOn(temp_r28->unk06); HuWinDispOn(temp_r28->unk06);
SetShopWinItem(temp_r28, arg0); SetShopWinItem(temp_r28, arg0);
BoardModelVisibilitySet(itemMdl, 1); BoardModelVisibilitySet(itemMdl, 1);
@ -543,9 +537,9 @@ static void UpdateShopWin(omObjData *arg0) {
} }
arg0->rot.y = BoardDAngleCalc(arg0->rot.y + 2.0f); arg0->rot.y = BoardDAngleCalc(arg0->rot.y + 2.0f);
BoardCameraRotGet(&spC); BoardCameraRotGet(&spC);
PSMTXRotRad(sp48, 'y', MTXDegToRad(arg0->rot.y)); RotRad(sp48, 'y', MTXDegToRad(arg0->rot.y));
PSMTXRotRad(sp18, 'x', MTXDegToRad(spC.x + 10.0f)); RotRad(sp18, 'x', MTXDegToRad(spC.x + 10.0f));
PSMTXConcat(sp18, sp48, sp48); Concat(sp18, sp48, sp48);
BoardModelMtxSet(itemMdl, &sp48); BoardModelMtxSet(itemMdl, &sp48);
BoardModelRotSet(itemMdl, 0.0f, 0.0f, 0.0f); BoardModelRotSet(itemMdl, 0.0f, 0.0f, 0.0f);
BoardModelPosSet(itemMdl, arg0->trans.x, arg0->trans.y + var_f29, arg0->trans.z); BoardModelPosSet(itemMdl, arg0->trans.x, arg0->trans.y + var_f29, arg0->trans.z);
@ -554,7 +548,8 @@ static void UpdateShopWin(omObjData *arg0) {
} }
} }
static void SetShopWinItem(ShopWinWork *arg0, omObjData *arg1) { static void SetShopWinItem(ShopWinWork *arg0, omObjData *arg1)
{
Vec spC; Vec spC;
s32 var_r26; s32 var_r26;
s8 temp_r28; s8 temp_r28;
@ -581,14 +576,16 @@ static void SetShopWinItem(ShopWinWork *arg0, omObjData *arg1) {
} }
} }
static void PauseShopWin(void) { static void PauseShopWin(void)
{
if (shopWinObj) { if (shopWinObj) {
OM_GET_WORK_PTR(shopWinObj, ShopWinWork)->unk00_field0 = 1; OM_GET_WORK_PTR(shopWinObj, ShopWinWork)->unk00_field0 = 1;
shopWinObj = NULL; shopWinObj = NULL;
} }
} }
void StartItemGive(void) { void StartItemGive(void)
{
Vec sp14; Vec sp14;
Vec sp8; Vec sp8;
omObjData *temp_r30; omObjData *temp_r30;
@ -605,7 +602,7 @@ void StartItemGive(void) {
BoardModelMotionStart(itemMdl, 0, 0); BoardModelMotionStart(itemMdl, 0, 0);
BoardModelMotionSpeedSet(itemMdl, 0.0f); BoardModelMotionSpeedSet(itemMdl, 0.0f);
BoardModelPosGet(itemMdl, &sp14); BoardModelPosGet(itemMdl, &sp14);
PSMTXIdentity(sp20); Identity(sp20);
BoardModelMtxSet(itemMdl, &sp20); BoardModelMtxSet(itemMdl, &sp20);
OSs16tof32(&angleVal, &temp_r30->scale.z); OSs16tof32(&angleVal, &temp_r30->scale.z);
temp_r30->scale.z = -temp_r30->scale.z / 40.0f; temp_r30->scale.z = -temp_r30->scale.z / 40.0f;
@ -621,7 +618,8 @@ void StartItemGive(void) {
itemGiveObj = temp_r30; itemGiveObj = temp_r30;
} }
static void ExecItemGive(omObjData *arg0) { static void ExecItemGive(omObjData *arg0)
{
ItemGiveWork *temp_r29; ItemGiveWork *temp_r29;
float var_f30; float var_f30;
@ -653,7 +651,8 @@ static void ExecItemGive(omObjData *arg0) {
BoardModelRotYSet(itemMdl, var_f30); BoardModelRotYSet(itemMdl, var_f30);
} }
static void MoveItemGive(omObjData *arg0, ItemGiveWork *arg1) { static void MoveItemGive(omObjData *arg0, ItemGiveWork *arg1)
{
Vec sp1C; Vec sp1C;
Vec sp10; Vec sp10;
float temp_f27; float temp_f27;
@ -665,13 +664,15 @@ static void MoveItemGive(omObjData *arg0, ItemGiveWork *arg1) {
arg1->unk00_field1 = 2; arg1->unk00_field1 = 2;
BoardMakeRandomItem(); BoardMakeRandomItem();
BoardItemStart(GWSystem.player_curr, 0xD); BoardItemStart(GWSystem.player_curr, 0xD);
} else { }
else {
arg1->unk00_field1 = 1; arg1->unk00_field1 = 1;
arg1->unk04 = 0xF; arg1->unk04 = 0xF;
BoardPlayerPosGet(shopPlayer, &sp1C); BoardPlayerPosGet(shopPlayer, &sp1C);
if (BoardPlayerSizeGet(shopPlayer) == 1) { if (BoardPlayerSizeGet(shopPlayer) == 1) {
arg0->rot.x = (sp1C.y + 30.0f - arg0->trans.y) / 22.5f; arg0->rot.x = (sp1C.y + 30.0f - arg0->trans.y) / 22.5f;
} else { }
else {
arg0->rot.x = (sp1C.y + 70.0f - arg0->trans.y) / 22.5f; arg0->rot.x = (sp1C.y + 70.0f - arg0->trans.y) / 22.5f;
} }
arg0->trans.y = arg0->rot.y; arg0->trans.y = arg0->rot.y;
@ -692,7 +693,8 @@ static void MoveItemGive(omObjData *arg0, ItemGiveWork *arg1) {
BoardCameraDirGet(&sp10); BoardCameraDirGet(&sp10);
var_f26 = BoardDAngleCalc(atan2d(-sp10.x, -sp10.z)); var_f26 = BoardDAngleCalc(atan2d(-sp10.x, -sp10.z));
OSf32tos16(&var_f26, &angleVal); OSf32tos16(&var_f26, &angleVal);
} else { }
else {
arg0->scale.x += arg0->scale.y; arg0->scale.x += arg0->scale.y;
arg0->trans.x += arg0->rot.x; arg0->trans.x += arg0->rot.x;
arg0->trans.z += arg0->rot.z; arg0->trans.z += arg0->rot.z;
@ -706,7 +708,8 @@ static void MoveItemGive(omObjData *arg0, ItemGiveWork *arg1) {
arg1->unk02++; arg1->unk02++;
} }
static void ShrinkItemGive(omObjData *arg0, ItemGiveWork *arg1) { static void ShrinkItemGive(omObjData *arg0, ItemGiveWork *arg1)
{
float var_f30; float var_f30;
if (arg1->unk02 == 0) { if (arg1->unk02 == 0) {
@ -733,10 +736,12 @@ static void ShrinkItemGive(omObjData *arg0, ItemGiveWork *arg1) {
arg1->unk02 += 4; arg1->unk02 += 4;
} }
static void WaitItemGive(omObjData *arg0, ItemGiveWork *arg1) { static void WaitItemGive(omObjData *arg0, ItemGiveWork *arg1)
{
if (arg1->unk02 > 20) { if (arg1->unk02 > 20) {
BoardModelVisibilitySet(itemMdl, 0); BoardModelVisibilitySet(itemMdl, 0);
} else { }
else {
arg1->unk02++; arg1->unk02++;
} }
if (BoardItemDoneCheck()) { if (BoardItemDoneCheck()) {
@ -744,44 +749,25 @@ static void WaitItemGive(omObjData *arg0, ItemGiveWork *arg1) {
} }
} }
static s8 itemPrioTbl[2][5][14] = { static s8 itemPrioTbl[2][5][14] = { { { 0x14, 0x14, 0x0F, 0x0F, 0x05, 0x07, 0x05, 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, 0x00 },
{ { 0x0F, 0x0F, 0x0D, 0x0A, 0x0A, 0x0A, 0x0A, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x00 },
{ 0x14, 0x14, 0x0F, 0x0F, 0x05, 0x07, 0x05, 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, 0x00 }, { 0x07, 0x07, 0x0E, 0x0C, 0x0A, 0x0A, 0x0A, 0x08, 0x05, 0x09, 0x00, 0x08, 0x00, 0x00 },
{ 0x0F, 0x0F, 0x0D, 0x0A, 0x0A, 0x0A, 0x0A, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x00 }, { 0x0A, 0x0A, 0x0D, 0x0C, 0x0A, 0x0A, 0x07, 0x0A, 0x05, 0x05, 0x00, 0x08, 0x00, 0x00 },
{ 0x07, 0x07, 0x0E, 0x0C, 0x0A, 0x0A, 0x0A, 0x08, 0x05, 0x09, 0x00, 0x08, 0x00, 0x00 }, { 0x07, 0x07, 0x0D, 0x0A, 0x0D, 0x07, 0x0A, 0x0A, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00 } },
{ 0x0A, 0x0A, 0x0D, 0x0C, 0x0A, 0x0A, 0x07, 0x0A, 0x05, 0x05, 0x00, 0x08, 0x00, 0x00 }, { { 0x0F, 0x0F, 0x12, 0x0F, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x02, 0x05, 0x05 },
{ 0x07, 0x07, 0x0D, 0x0A, 0x0D, 0x07, 0x0A, 0x0A, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00 }
},
{
{ 0x0F, 0x0F, 0x12, 0x0F, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x02, 0x05, 0x05 },
{ 0x0F, 0x0F, 0x0D, 0x0A, 0x07, 0x0A, 0x07, 0x03, 0x00, 0x07, 0x00, 0x00, 0x05, 0x08 }, { 0x0F, 0x0F, 0x0D, 0x0A, 0x07, 0x0A, 0x07, 0x03, 0x00, 0x07, 0x00, 0x00, 0x05, 0x08 },
{ 0x05, 0x04, 0x0D, 0x0C, 0x0A, 0x05, 0x0A, 0x08, 0x05, 0x05, 0x00, 0x05, 0x08, 0x0A }, { 0x05, 0x04, 0x0D, 0x0C, 0x0A, 0x05, 0x0A, 0x08, 0x05, 0x05, 0x00, 0x05, 0x08, 0x0A },
{ 0x07, 0x04, 0x0D, 0x0C, 0x08, 0x08, 0x07, 0x0A, 0x05, 0x05, 0x00, 0x05, 0x08, 0x08 }, { 0x07, 0x04, 0x0D, 0x0C, 0x08, 0x08, 0x07, 0x0A, 0x05, 0x05, 0x00, 0x05, 0x08, 0x08 },
{ 0x03, 0x02, 0x0D, 0x0A, 0x0D, 0x03, 0x08, 0x08, 0x07, 0x07, 0x00, 0x08, 0x08, 0x0A } { 0x03, 0x02, 0x0D, 0x0A, 0x0D, 0x03, 0x08, 0x08, 0x07, 0x07, 0x00, 0x08, 0x08, 0x0A } } };
}
};
static s8 rankItemGroupTbl[2][4][3] = { static s8 rankItemGroupTbl[2][4][3] = { { { 0x00, 0x01, 0x03 }, { 0x00, 0x02, 0x04 }, { 0x00, 0x02, 0x04 }, { 0x00, 0x02, 0x04 } },
{ { { 0x00, 0x01, 0x03 }, { 0x00, 0x02, 0x04 }, { 0x00, 0x02, 0x04 }, { 0x00, 0x02, 0x04 } } };
{ 0x00, 0x01, 0x03 }, { 0x00, 0x02, 0x04 },
{ 0x00, 0x02, 0x04 }, { 0x00, 0x02, 0x04 }
},
{
{ 0x00, 0x01, 0x03 }, { 0x00, 0x02, 0x04 },
{ 0x00, 0x02, 0x04 }, { 0x00, 0x02, 0x04 }
}
};
static float cursorPosTbl[6][2] = { static float cursorPosTbl[6][2]
{ 190.0f, 182.0f }, = { { 190.0f, 182.0f }, { 190.0f, 208.0f }, { 190.0f, 234.0f }, { 190.0f, 260.0f }, { 190.0f, 286.0f }, { 190.0f, 312.0f } };
{ 190.0f, 208.0f },
{ 190.0f, 234.0f },
{ 190.0f, 260.0f },
{ 190.0f, 286.0f },
{ 190.0f, 312.0f }
};
static void GetShopItems(s32 arg0) { static void GetShopItems(s32 arg0)
{
s32 temp_r25; s32 temp_r25;
s32 temp_r20; s32 temp_r20;
s32 temp_r19; s32 temp_r19;
@ -795,10 +781,11 @@ static void GetShopItems(s32 arg0) {
s32 var_r29; s32 var_r29;
s32 var_r30; s32 var_r30;
temp_r22 = 3.0f * ((float) GWSystem.turn / GWSystem.max_turn); temp_r22 = 3.0f * ((float)GWSystem.turn / GWSystem.max_turn);
if (BoardPlayerCoinsGet(arg0) < 30) { if (BoardPlayerCoinsGet(arg0) < 30) {
var_r27 = 0; var_r27 = 0;
} else { }
else {
var_r27 = 1; var_r27 = 1;
} }
temp_r19 = rankItemGroupTbl[var_r27][GWPlayer[arg0].rank][temp_r22]; temp_r19 = rankItemGroupTbl[var_r27][GWPlayer[arg0].rank][temp_r22];
@ -839,7 +826,8 @@ static void GetShopItems(s32 arg0) {
} }
} }
static void GetDefaultShopItems(s32 arg0) { static void GetDefaultShopItems(s32 arg0)
{
s32 temp_r29; s32 temp_r29;
s32 var_r31; s32 var_r31;
s32 var_r30; s32 var_r30;
@ -847,9 +835,11 @@ static void GetDefaultShopItems(s32 arg0) {
temp_r29 = BoardRandMod(100); temp_r29 = BoardRandMod(100);
if (temp_r29 > 90) { if (temp_r29 > 90) {
var_r30 = 3; var_r30 = 3;
} else if (temp_r29 > 40) { }
else if (temp_r29 > 40) {
var_r30 = BoardRandMod(2) + 1; var_r30 = BoardRandMod(2) + 1;
} else { }
else {
var_r30 = 0; var_r30 = 0;
} }
for (var_r31 = 0; var_r31 < 5; var_r31++) { for (var_r31 = 0; var_r31 < 5; var_r31++) {
@ -857,7 +847,8 @@ static void GetDefaultShopItems(s32 arg0) {
} }
} }
static void SortShopItems(void) { static void SortShopItems(void)
{
s32 sp8[5]; s32 sp8[5];
s32 var_r29; s32 var_r29;
s32 i; s32 i;
@ -880,7 +871,8 @@ static void SortShopItems(void) {
} }
} }
static void DecideComEnter(s32 arg0) { static void DecideComEnter(s32 arg0)
{
s32 temp_r27; s32 temp_r27;
s32 temp_r30; s32 temp_r30;
s32 temp_r29; s32 temp_r29;
@ -910,14 +902,13 @@ static void DecideComEnter(s32 arg0) {
BoardComKeySetRight(); BoardComKeySetRight();
return; return;
} }
} else { }
else {
temp_r27 = GWPlayer[arg0].space_curr; temp_r27 = GWPlayer[arg0].space_curr;
temp_r30 = BoardComPathShortcutLenGet(temp_r27, 8, 0); temp_r30 = BoardComPathShortcutLenGet(temp_r27, 8, 0);
temp_r29 = BoardComPathShortcutLenGet(temp_r27, 8, 1); temp_r29 = BoardComPathShortcutLenGet(temp_r27, 8, 1);
if ((temp_r30 != 0 || temp_r29 != 0) if ((temp_r30 != 0 || temp_r29 != 0) && (BoardPlayerCoinsGet(arg0) >= 17 || (temp_r29 >= temp_r26 && temp_r30 >= temp_r26))
&& (BoardPlayerCoinsGet(arg0) >= 17 || (temp_r29 >= temp_r26 && temp_r30 >= temp_r26)) && BoardPlayerCoinsGet(arg0) < 40 && ((temp_r30 < 20 && temp_r30 > 0) || (temp_r29 < 10 && temp_r29 > 0))
&& BoardPlayerCoinsGet(arg0) < 40
&& ((temp_r30 < 20 && temp_r30 > 0) || (temp_r29 < 10 && temp_r29 > 0))
&& BoardRandMod(100) > var_r28) { && BoardRandMod(100) > var_r28) {
BoardComKeySetRight(); BoardComKeySetRight();
return; return;
@ -926,18 +917,21 @@ static void DecideComEnter(s32 arg0) {
BoardComKeySetLeft(); BoardComKeySetLeft();
} }
static void DecideComBuy(s32 arg0) { static void DecideComBuy(s32 arg0)
{
if (!GWPlayer[arg0].com) { if (!GWPlayer[arg0].com) {
return; return;
} }
if (comF != 0) { if (comF != 0) {
BoardComKeySetDown(); BoardComKeySetDown();
} else { }
else {
BoardComKeySetUp(); BoardComKeySetUp();
} }
} }
static s32 GetComItemChoice(s32 arg0) { static s32 GetComItemChoice(s32 arg0)
{
s16 sp8; s16 sp8;
s32 temp_r26; s32 temp_r26;
s32 var_r28 = 0; s32 var_r28 = 0;
@ -954,7 +948,8 @@ static s32 GetComItemChoice(s32 arg0) {
for (var_r27 = i = 0; i < 5; i++) { for (var_r27 = i = 0; i < 5; i++) {
if (temp_r26 >= itemPriceTbl[activeItemTbl[i]]) { if (temp_r26 >= itemPriceTbl[activeItemTbl[i]]) {
var_r30 = BoardComItemWeightGet(arg0, activeItemTbl[i]); var_r30 = BoardComItemWeightGet(arg0, activeItemTbl[i]);
} else { }
else {
var_r30 = 0; var_r30 = 0;
} }
if (BoardPlayerItemFind(arg0, activeItemTbl[i]) != -1) { if (BoardPlayerItemFind(arg0, activeItemTbl[i]) != -1) {
@ -968,28 +963,31 @@ static s32 GetComItemChoice(s32 arg0) {
if (var_r27 == 0) { if (var_r27 == 0) {
comF = 1; comF = 1;
var_r28 = 5; var_r28 = 5;
} else { }
else {
var_r28 = var_r25; var_r28 = var_r25;
} }
return var_r28; return var_r28;
} }
static void WaitItemChoice(void) { static void WaitItemChoice(void)
{
while (itemChoiceObj) { while (itemChoiceObj) {
HuPrcVSleep(); HuPrcVSleep();
} }
} }
static void CreateShopItemChoice(s32 arg0, s32 arg1) { static void CreateShopItemChoice(s32 arg0, s32 arg1)
{
omObjData *temp_r30; omObjData *temp_r30;
ItemChoiceWork *var_r31; ItemChoiceWork *var_r31;
s16 spC; s16 spC;
s16 i; s16 i;
#if VERSION_PAL #if VERSION_PAL
for(i=0; i<6; i++) { for (i = 0; i < 6; i++) {
cursorPosTbl[i][0] = 190; cursorPosTbl[i][0] = 190;
} }
#endif #endif
temp_r30 = omAddObjEx(boardObjMan, 0x7E01, 0, 0, -1, UpdateShopItemChoice); temp_r30 = omAddObjEx(boardObjMan, 0x7E01, 0, 0, -1, UpdateShopItemChoice);
itemChoiceObj = temp_r30; itemChoiceObj = temp_r30;
itemChoice = -1; itemChoice = -1;
@ -1001,29 +999,30 @@ static void CreateShopItemChoice(s32 arg0, s32 arg1) {
var_r31->unk02 = 0; var_r31->unk02 = 0;
var_r31->unk03 = arg1; var_r31->unk03 = arg1;
var_r31->unk06 = HuSprGrpCreate(1); var_r31->unk06 = HuSprGrpCreate(1);
#if VERSION_PAL #if VERSION_PAL
if (GWLanguageGet() != 0) { if (GWLanguageGet() != 0) {
s16 winId = BoardWinIDGet(); s16 winId = BoardWinIDGet();
if(winId != -1) { if (winId != -1) {
WindowData *winP = &winData[winId]; WindowData *winP = &winData[winId];
for(i=0; i<6; i++) { for (i = 0; i < 6; i++) {
cursorPosTbl[i][0] = winP->pos_x+96; cursorPosTbl[i][0] = winP->pos_x + 96;
} }
} else { }
for(i=0; i<6; i++) { else {
for (i = 0; i < 6; i++) {
cursorPosTbl[i][0] = 166; cursorPosTbl[i][0] = 166;
} }
} }
} }
temp_r30->trans.x = cursorPosTbl[0][0]; temp_r30->trans.x = cursorPosTbl[0][0];
temp_r30->trans.y = cursorPosTbl[0][1]; temp_r30->trans.y = cursorPosTbl[0][1];
#else #else
temp_r30->trans.x = cursorPosTbl[0][0]; temp_r30->trans.x = cursorPosTbl[0][0];
temp_r30->trans.y = cursorPosTbl[0][1]; temp_r30->trans.y = cursorPosTbl[0][1];
if (GWLanguageGet() != 0) { if (GWLanguageGet() != 0) {
temp_r30->trans.x -= 24.0f; temp_r30->trans.x -= 24.0f;
} }
#endif #endif
if (GWPlayer[arg0].com) { if (GWPlayer[arg0].com) {
var_r31->unk01 = GWMessDelayGet(); var_r31->unk01 = GWMessDelayGet();
} }
@ -1033,11 +1032,13 @@ static void CreateShopItemChoice(s32 arg0, s32 arg1) {
HuSprPosSet(var_r31->unk06, 0, temp_r30->trans.x, temp_r30->trans.y); HuSprPosSet(var_r31->unk06, 0, temp_r30->trans.x, temp_r30->trans.y);
} }
static s32 GetShopItemChoice(void) { static s32 GetShopItemChoice(void)
{
return itemChoice; return itemChoice;
} }
static s32 GetShopItemWinChoice(void) { static s32 GetShopItemWinChoice(void)
{
ItemChoiceWork *var_r31; ItemChoiceWork *var_r31;
if (!itemChoiceObj) { if (!itemChoiceObj) {
@ -1047,7 +1048,8 @@ static s32 GetShopItemWinChoice(void) {
return var_r31->unk02; return var_r31->unk02;
} }
static void MoveShopItemChoice(omObjData *arg0, ItemChoiceWork *arg1) { static void MoveShopItemChoice(omObjData *arg0, ItemChoiceWork *arg1)
{
u32 sp8; u32 sp8;
s32 temp_r28; s32 temp_r28;
s32 temp_r29; s32 temp_r29;
@ -1055,14 +1057,15 @@ static void MoveShopItemChoice(omObjData *arg0, ItemChoiceWork *arg1) {
temp_r28 = arg1->unk02; temp_r28 = arg1->unk02;
arg0->trans.x = cursorPosTbl[arg1->unk02][0]; arg0->trans.x = cursorPosTbl[arg1->unk02][0];
arg0->trans.y = cursorPosTbl[arg1->unk02][1]; arg0->trans.y = cursorPosTbl[arg1->unk02][1];
#if VERSION_NTSC #if VERSION_NTSC
if (GWLanguageGet() != 0) { if (GWLanguageGet() != 0) {
arg0->trans.x -= 24.0f; arg0->trans.x -= 24.0f;
} }
#endif #endif
if (GWPlayer[arg1->unk00_field1].com) { if (GWPlayer[arg1->unk00_field1].com) {
GetShopItemChoiceInput(arg1, arg0, &sp8); GetShopItemChoiceInput(arg1, arg0, &sp8);
} else { }
else {
temp_r29 = GWPlayer[arg1->unk00_field1].port; temp_r29 = GWPlayer[arg1->unk00_field1].port;
sp8 = HuPadDStkRep[temp_r29] | HuPadBtnDown[temp_r29]; sp8 = HuPadDStkRep[temp_r29] | HuPadBtnDown[temp_r29];
} }
@ -1077,7 +1080,8 @@ static void MoveShopItemChoice(omObjData *arg0, ItemChoiceWork *arg1) {
HuAudFXPlay(2); HuAudFXPlay(2);
if (GWPlayer[arg1->unk00_field1].com) { if (GWPlayer[arg1->unk00_field1].com) {
arg1->unk05 = 0x32; arg1->unk05 = 0x32;
} else { }
else {
arg1->unk05 = 5; arg1->unk05 = 5;
} }
return; return;
@ -1105,7 +1109,8 @@ static void MoveShopItemChoice(omObjData *arg0, ItemChoiceWork *arg1) {
} }
} }
static void UpdateShopItemChoice(omObjData *arg0) { static void UpdateShopItemChoice(omObjData *arg0)
{
ItemChoiceWork *temp_r31; ItemChoiceWork *temp_r31;
temp_r31 = OM_GET_WORK_PTR(arg0, ItemChoiceWork); temp_r31 = OM_GET_WORK_PTR(arg0, ItemChoiceWork);
@ -1120,25 +1125,31 @@ static void UpdateShopItemChoice(omObjData *arg0) {
if (temp_r31->unk05 == 0) { if (temp_r31->unk05 == 0) {
temp_r31->unk00_field0 = 1; temp_r31->unk00_field0 = 1;
} }
} else if (temp_r31->unk01 != 0) { }
else if (temp_r31->unk01 != 0) {
temp_r31->unk01--; temp_r31->unk01--;
} else if (temp_r31->unk04 != 0) { }
else if (temp_r31->unk04 != 0) {
temp_r31->unk04--; temp_r31->unk04--;
} else { }
else {
MoveShopItemChoice(arg0, temp_r31); MoveShopItemChoice(arg0, temp_r31);
} }
HuSprPosSet(temp_r31->unk06, 0, arg0->trans.x, arg0->trans.y); HuSprPosSet(temp_r31->unk06, 0, arg0->trans.x, arg0->trans.y);
} }
static void GetShopItemChoiceInput(ItemChoiceWork *arg0, omObjData *arg1, u32 *arg2) { static void GetShopItemChoiceInput(ItemChoiceWork *arg0, omObjData *arg1, u32 *arg2)
{
if (arg0->unk02 == arg0->unk03) { if (arg0->unk02 == arg0->unk03) {
*arg2 = 0x100; *arg2 = 0x100;
} else { }
else {
*arg2 = 4; *arg2 = 4;
} }
} }
void BoardShopTutorialExec(s32 arg0) { void BoardShopTutorialExec(s32 arg0)
{
Vec sp48; Vec sp48;
Vec sp3C; Vec sp3C;
Vec sp30; Vec sp30;
@ -1155,7 +1166,8 @@ void BoardShopTutorialExec(s32 arg0) {
sp10 = BoardWinPortraitGet(); sp10 = BoardWinPortraitGet();
if (BoardSpaceFlagGet(0, arg0) & 0x80000) { if (BoardSpaceFlagGet(0, arg0) & 0x80000) {
shopMdlPtr = shopMdlIdx[0]; shopMdlPtr = shopMdlIdx[0];
} else { }
else {
shopMdlPtr = shopMdlIdx[1]; shopMdlPtr = shopMdlIdx[1];
} }
temp_r27 = BoardSpaceLinkFlagSearch(0, arg0, 0x02000000); temp_r27 = BoardSpaceLinkFlagSearch(0, arg0, 0x02000000);

View file

@ -3,15 +3,6 @@
#include "game/data.h" #include "game/data.h"
#include "game/disp.h" #include "game/disp.h"
#include "game/flag.h"
#include "game/gamework.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfman.h"
#include "game/msm.h"
#include "game/objsub.h"
#include "game/window.h"
#include "game/wipe.h"
#include "game/board/audio.h" #include "game/board/audio.h"
#include "game/board/com.h" #include "game/board/com.h"
#include "game/board/main.h" #include "game/board/main.h"
@ -21,6 +12,16 @@
#include "game/board/tutorial.h" #include "game/board/tutorial.h"
#include "game/board/ui.h" #include "game/board/ui.h"
#include "game/board/window.h" #include "game/board/window.h"
#include "game/flag.h"
#include "game/gamework.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfman.h"
#include "game/msm.h"
#include "game/objsub.h"
#include "game/window.h"
#include "game/wipe.h"
#include "ext_math.h" #include "ext_math.h"
@ -74,77 +75,28 @@ static Process *starProc;
static s16 starParman = -1; static s16 starParman = -1;
static s16 hostMdl = -1; static s16 hostMdl = -1;
static const s32 starMesTbl1[9] = { static const s32 starMesTbl1[9] = { MAKE_MESSID(12, 0), MAKE_MESSID(12, 9), MAKE_MESSID(12, 18), MAKE_MESSID(12, 27), MAKE_MESSID(12, 36),
MAKE_MESSID(12, 0), MAKE_MESSID(12, 45), MAKE_MESSID(12, 0), MAKE_MESSID(12, 0), MAKE_MESSID(12, 0) };
MAKE_MESSID(12, 9),
MAKE_MESSID(12, 18),
MAKE_MESSID(12, 27),
MAKE_MESSID(12, 36),
MAKE_MESSID(12, 45),
MAKE_MESSID(12, 0),
MAKE_MESSID(12, 0),
MAKE_MESSID(12, 0)
};
static const s32 starMesTbl2[9][2] = { static const s32 starMesTbl2[9][2]
{ MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) }, = { { MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) }, { MAKE_MESSID(21, 35), MAKE_MESSID(21, 41) }, { MAKE_MESSID(21, 36), MAKE_MESSID(21, 42) },
{ MAKE_MESSID(21, 35), MAKE_MESSID(21, 41) }, { MAKE_MESSID(21, 37), MAKE_MESSID(21, 43) }, { MAKE_MESSID(21, 38), MAKE_MESSID(21, 44) }, { MAKE_MESSID(21, 39), MAKE_MESSID(21, 45) },
{ MAKE_MESSID(21, 36), MAKE_MESSID(21, 42) }, { MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) }, { MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) }, { MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) } };
{ MAKE_MESSID(21, 37), MAKE_MESSID(21, 43) },
{ MAKE_MESSID(21, 38), MAKE_MESSID(21, 44) },
{ MAKE_MESSID(21, 39), MAKE_MESSID(21, 45) },
{ MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) },
{ MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) },
{ MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) }
};
s32 boardStarSndTbl[] = { s32 boardStarSndTbl[] = { 0x00000120, 0x00000160, 0x000001A0, 0x000001E0, 0x00000220, 0x00000260, 0x000002A0, 0x000002E0 };
0x00000120,
0x00000160,
0x000001A0,
0x000001E0,
0x00000220,
0x00000260,
0x000002A0,
0x000002E0
};
static s32 hostMotTbl[9][2] = { static s32 hostMotTbl[9][2] = { { DATA_MAKE_NUM(DATADIR_W01, 33), DATA_MAKE_NUM(DATADIR_BOARD, 157) },
{ DATA_MAKE_NUM(DATADIR_W01, 33), DATA_MAKE_NUM(DATADIR_BOARD, 157) }, { DATA_MAKE_NUM(DATADIR_W02, 7), DATA_MAKE_NUM(DATADIR_BOARD, 158) }, { DATA_MAKE_NUM(DATADIR_W03, 31), DATA_MAKE_NUM(DATADIR_BOARD, 159) },
{ DATA_MAKE_NUM(DATADIR_W02, 7), DATA_MAKE_NUM(DATADIR_BOARD, 158) }, { DATA_MAKE_NUM(DATADIR_W04, 11), DATA_MAKE_NUM(DATADIR_BOARD, 160) }, { DATA_MAKE_NUM(DATADIR_W05, 9), DATA_MAKE_NUM(DATADIR_BOARD, 161) },
{ DATA_MAKE_NUM(DATADIR_W03, 31), DATA_MAKE_NUM(DATADIR_BOARD, 159) }, { DATA_MAKE_NUM(DATADIR_W06, 21), DATA_MAKE_NUM(DATADIR_BOARD, 162) } };
{ DATA_MAKE_NUM(DATADIR_W04, 11), DATA_MAKE_NUM(DATADIR_BOARD, 160) },
{ DATA_MAKE_NUM(DATADIR_W05, 9), DATA_MAKE_NUM(DATADIR_BOARD, 161) },
{ DATA_MAKE_NUM(DATADIR_W06, 21), DATA_MAKE_NUM(DATADIR_BOARD, 162) }
};
static HsfanimStruct00 starEffParam = { static HsfanimStruct00 starEffParam = { 0x001E, { 0x00, 0x00 }, // padding?
0x001E, 3.3f, 70.0f, 7.0f, { 0.0f, -0.05f, 0.0f }, 2.0f, 1.0f, 20.0f, 0.98f, 0x0002,
{ 0x00, 0x00 }, // padding? { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3.3f, { 0xFF, 0x80, 0x80, 0x00, 0xFF, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } };
70.0f,
7.0f,
{ 0.0f, -0.05f, 0.0f },
2.0f,
1.0f,
20.0f,
0.98f,
0x0002,
{
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x40, 0xFF,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00
},
{
0xFF, 0x80, 0x80, 0x00,
0xFF, 0x40, 0x20, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00
}
};
void BoardStarHostSet(s16 arg0) { void BoardStarHostSet(s16 arg0)
{
hostMdl = arg0; hostMdl = arg0;
if (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { if (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) {
return; return;
@ -154,11 +106,13 @@ void BoardStarHostSet(s16 arg0) {
} }
} }
s16 BoardStarHostMdlGet(void) { s16 BoardStarHostMdlGet(void)
{
return hostMdl; return hostMdl;
} }
void BoardStarExec(s32 arg0, s32 arg1) { void BoardStarExec(s32 arg0, s32 arg1)
{
if (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { if (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) {
return; return;
} }
@ -173,7 +127,8 @@ void BoardStarExec(s32 arg0, s32 arg1) {
} }
} }
static void ExecStar(void) { static void ExecStar(void)
{
Vec sp24; Vec sp24;
Vec sp18; Vec sp18;
Vec spC; Vec spC;
@ -215,22 +170,23 @@ static void ExecStar(void) {
BoardPlayerIdleSet(temp_r31); BoardPlayerIdleSet(temp_r31);
if (BoardDAngleCalc(temp_f30 - temp_f29) < 0.0f) { if (BoardDAngleCalc(temp_f30 - temp_f29) < 0.0f) {
var_f28 = -BoardDAngleCalc(temp_f30 - temp_f29); var_f28 = -BoardDAngleCalc(temp_f30 - temp_f29);
} else { }
else {
var_f28 = BoardDAngleCalc(temp_f30 - temp_f29); var_f28 = BoardDAngleCalc(temp_f30 - temp_f29);
} }
if (var_f28 > 90.0f) { if (var_f28 > 90.0f) {
var_r25 = 30; var_r25 = 30;
} else { }
else {
var_r25 = 15; var_r25 = 15;
} }
BoardPlayerMotBlendSet(temp_r31, temp_f30, var_r25); BoardPlayerMotBlendSet(temp_r31, temp_f30, var_r25);
temp_f27 = BoardModelRotYGet(temp_r30); temp_f27 = BoardModelRotYGet(temp_r30);
var_f31 = BoardDAngleCalc(temp_f30 + 180.0f) - temp_f27; var_f31 = BoardDAngleCalc(temp_f30 + 180.0f) - temp_f27;
if ((var_f31 <= 4.0f && var_f31 >= 0.0f) if ((var_f31 <= 4.0f && var_f31 >= 0.0f) || (var_f31 <= 360.0f && var_f31 >= 355.0f) || (var_f31 <= 0.0f && var_f31 >= -4.0f)) {
|| (var_f31 <= 360.0f && var_f31 >= 355.0f)
|| (var_f31 <= 0.0f && var_f31 >= -4.0f)) {
var_r26 = 0; var_r26 = 0;
} else { }
else {
var_r26 = 1; var_r26 = 1;
} }
if (var_r26 != 0) { if (var_r26 != 0) {
@ -253,12 +209,14 @@ static void ExecStar(void) {
BoardWinCreate(0, temp_r29, BoardWinPortraitGetStar()); BoardWinCreate(0, temp_r29, BoardWinPortraitGetStar());
BoardWinWait(); BoardWinWait();
BoardWinKill(); BoardWinKill();
} else if (BoardPlayerCoinsGet(temp_r31) < 20 && GWSystem.last5_effect != 4) { }
else if (BoardPlayerCoinsGet(temp_r31) < 20 && GWSystem.last5_effect != 4) {
temp_r29 = starMesTbl1[temp_r27] + 2; temp_r29 = starMesTbl1[temp_r27] + 2;
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar()); BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
BoardWinWait(); BoardWinWait();
BoardWinKill(); BoardWinKill();
} else { }
else {
BoardStatusShowSetAll(0); BoardStatusShowSetAll(0);
while (!BoardStatusStopCheck(0) || !BoardStatusStopCheck(1) || !BoardStatusStopCheck(2) || !BoardStatusStopCheck(3)) { while (!BoardStatusStopCheck(0) || !BoardStatusStopCheck(1) || !BoardStatusStopCheck(2) || !BoardStatusStopCheck(3)) {
HuPrcVSleep(); HuPrcVSleep();
@ -286,7 +244,8 @@ static void ExecStar(void) {
if (GWPlayer[temp_r31].com) { if (GWPlayer[temp_r31].com) {
if (BoardPlayerCoinsGet(temp_r31) >= 20) { if (BoardPlayerCoinsGet(temp_r31) >= 20) {
BoardComKeySetUp(); BoardComKeySetUp();
} else { }
else {
BoardComKeySetDown(); BoardComKeySetDown();
} }
} }
@ -325,7 +284,7 @@ static void ExecStar(void) {
break; break;
} }
} }
block_A: block_A:
temp_r29 = starMesTbl1[temp_r27] + 3; temp_r29 = starMesTbl1[temp_r27] + 3;
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar()); BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
BoardWinWait(); BoardWinWait();
@ -381,7 +340,8 @@ block_B:
HuPrcEnd(); HuPrcEnd();
} }
static void DestroyStar(void) { static void DestroyStar(void)
{
s32 i; s32 i;
_ClearFlag(0x10017); _ClearFlag(0x10017);
@ -394,7 +354,8 @@ static void DestroyStar(void) {
starProc = NULL; starProc = NULL;
} }
static void GiveStarMain(omObjData *arg0) { static void GiveStarMain(omObjData *arg0)
{
GiveStarWork *temp_r30; GiveStarWork *temp_r30;
temp_r30 = OM_GET_WORK_PTR(arg0, GiveStarWork); temp_r30 = OM_GET_WORK_PTR(arg0, GiveStarWork);
@ -407,7 +368,8 @@ static void GiveStarMain(omObjData *arg0) {
} }
if (temp_r30->unk04 != 0) { if (temp_r30->unk04 != 0) {
temp_r30->unk04--; temp_r30->unk04--;
} else { }
else {
switch (temp_r30->unk01) { switch (temp_r30->unk01) {
case 4: case 4:
break; break;
@ -431,7 +393,8 @@ static void GiveStarMain(omObjData *arg0) {
} }
} }
static void UpdateStarAngle(GiveStarWork *arg0, omObjData *arg1) { static void UpdateStarAngle(GiveStarWork *arg0, omObjData *arg1)
{
float var_f31; float var_f31;
if (arg0->unk00_field1 != 0) { if (arg0->unk00_field1 != 0) {
@ -446,7 +409,8 @@ static void UpdateStarAngle(GiveStarWork *arg0, omObjData *arg1) {
} }
} }
static void InitGiveStar(GiveStarWork *arg0, omObjData *arg1) { static void InitGiveStar(GiveStarWork *arg0, omObjData *arg1)
{
Vec sp8; Vec sp8;
BoardPlayerPosGet(arg0->unk00_field3, &sp8); BoardPlayerPosGet(arg0->unk00_field3, &sp8);
@ -465,7 +429,8 @@ static void InitGiveStar(GiveStarWork *arg0, omObjData *arg1) {
InitGiveStarEffect(); InitGiveStarEffect();
} }
static void MoveGiveStar(GiveStarWork *arg0, omObjData *arg1) { static void MoveGiveStar(GiveStarWork *arg0, omObjData *arg1)
{
Vec sp8; Vec sp8;
float temp_f31; float temp_f31;
@ -482,7 +447,8 @@ static void MoveGiveStar(GiveStarWork *arg0, omObjData *arg1) {
arg1->trans.z += arg1->rot.z; arg1->trans.z += arg1->rot.z;
arg1->trans.y += -0.08166667f * temp_f31 * temp_f31 * 0.97f + 50.0f; arg1->trans.y += -0.08166667f * temp_f31 * temp_f31 * 0.97f + 50.0f;
arg0->unk0A++; arg0->unk0A++;
} else { }
else {
arg1->trans.y += -4.0f; arg1->trans.y += -4.0f;
if (arg1->trans.y <= sp8.y + 300.0f) { if (arg1->trans.y <= sp8.y + 300.0f) {
arg1->trans.y = sp8.y + 300.0f; arg1->trans.y = sp8.y + 300.0f;
@ -491,7 +457,8 @@ static void MoveGiveStar(GiveStarWork *arg0, omObjData *arg1) {
} }
} }
static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1) { static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1)
{
Vec sp8; Vec sp8;
float var_f30; float var_f30;
@ -505,7 +472,8 @@ static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1) {
if (arg0->unk08 < 90) { if (arg0->unk08 < 90) {
if (BoardPlayerSizeGet(arg0->unk00_field3) != 1) { if (BoardPlayerSizeGet(arg0->unk00_field3) != 1) {
arg0->unk08 += 2; arg0->unk08 += 2;
} else { }
else {
arg0->unk08 += 1.4f; arg0->unk08 += 1.4f;
} }
if (arg0->unk08 > 90) { if (arg0->unk08 > 90) {
@ -519,7 +487,8 @@ static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1) {
} }
arg1->scale.y = arg1->scale.x; arg1->scale.y = arg1->scale.x;
arg1->scale.z = arg1->scale.x; arg1->scale.z = arg1->scale.x;
} else { }
else {
omVibrate(arg0->unk00_field3, 12, 0xC, 0); omVibrate(arg0->unk00_field3, 12, 0xC, 0);
arg0->unk00_field0 = 1; arg0->unk00_field0 = 1;
arg0->unk01 = 4; arg0->unk01 = 4;
@ -529,7 +498,8 @@ static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1) {
} }
} }
static void StopGiveStar(void) { static void StopGiveStar(void)
{
GiveStarWork *temp_r31; GiveStarWork *temp_r31;
if (giveStarObj) { if (giveStarObj) {
@ -538,7 +508,8 @@ static void StopGiveStar(void) {
} }
} }
static void InitGiveStarEffect(void) { static void InitGiveStarEffect(void)
{
s16 temp_r3; s16 temp_r3;
void *var_r30; void *var_r30;
@ -553,7 +524,8 @@ static void InitGiveStarEffect(void) {
HuDataDirClose(DATADIR_EFFECT); HuDataDirClose(DATADIR_EFFECT);
} }
static void KillGiveStarEffect(void) { static void KillGiveStarEffect(void)
{
if (starParman != -1) { if (starParman != -1) {
Hu3DParManKill(starParman); Hu3DParManKill(starParman);
starParman = -1; starParman = -1;
@ -561,13 +533,15 @@ static void KillGiveStarEffect(void) {
} }
} }
static inline void StarInlineFunc00(void) { static inline void StarInlineFunc00(void)
{
GiveStarWork *temp_r28 = OM_GET_WORK_PTR(giveStarObj, GiveStarWork); GiveStarWork *temp_r28 = OM_GET_WORK_PTR(giveStarObj, GiveStarWork);
temp_r28->unk01 = 0; temp_r28->unk01 = 0;
} }
static inline void StarInlineFunc01(void) { static inline void StarInlineFunc01(void)
{
GiveStarWork *temp_r27 = OM_GET_WORK_PTR(giveStarObj, GiveStarWork); GiveStarWork *temp_r27 = OM_GET_WORK_PTR(giveStarObj, GiveStarWork);
while (temp_r27->unk01 != 4) { while (temp_r27->unk01 != 4) {
@ -575,7 +549,8 @@ static inline void StarInlineFunc01(void) {
} }
} }
static inline void StarInlineFunc02(void) { static inline void StarInlineFunc02(void)
{
GiveStarWork *temp_r29 = OM_GET_WORK_PTR(giveStarObj, GiveStarWork); GiveStarWork *temp_r29 = OM_GET_WORK_PTR(giveStarObj, GiveStarWork);
temp_r29->unk00_field1 = 1; temp_r29->unk00_field1 = 1;
@ -584,7 +559,8 @@ static inline void StarInlineFunc02(void) {
temp_r29->unk01 = 2; temp_r29->unk01 = 2;
} }
void BoardStarGive(s32 arg0, Vec *arg1) { void BoardStarGive(s32 arg0, Vec *arg1)
{
Vec sp8; Vec sp8;
s32 temp_r25; s32 temp_r25;
GiveStarWork *temp_r31; GiveStarWork *temp_r31;
@ -631,7 +607,8 @@ void BoardStarGive(s32 arg0, Vec *arg1) {
HuPrcSleep(10); HuPrcSleep(10);
if (_CheckFlag(FLAG_ID_MAKE(1, 11))) { if (_CheckFlag(FLAG_ID_MAKE(1, 11))) {
BoardPlayerMotionEndWait(arg0); BoardPlayerMotionEndWait(arg0);
} else { }
else {
temp_r25 = HuAudSStreamPlay(6); temp_r25 = HuAudSStreamPlay(6);
BoardPlayerMotionEndWait(arg0); BoardPlayerMotionEndWait(arg0);
while (msmStreamGetStatus(temp_r25) != 0) { while (msmStreamGetStatus(temp_r25) != 0) {
@ -641,7 +618,8 @@ void BoardStarGive(s32 arg0, Vec *arg1) {
BoardPlayerVoiceEnableSet(arg0, 7, 1); BoardPlayerVoiceEnableSet(arg0, 7, 1);
} }
void BoardStarShowNext(s32 arg0) { void BoardStarShowNext(s32 arg0)
{
Mtx spBC; Mtx spBC;
Mtx sp8C; Mtx sp8C;
Mtx sp5C; Mtx sp5C;
@ -669,7 +647,8 @@ void BoardStarShowNext(s32 arg0) {
while (WipeStatGet() != 0) { while (WipeStatGet() != 0) {
HuPrcVSleep(); HuPrcVSleep();
} }
} else { }
else {
HuPrcSleep(18); HuPrcSleep(18);
} }
BoardStatusItemSet(0); BoardStatusItemSet(0);
@ -703,14 +682,16 @@ void BoardStarShowNext(s32 arg0) {
temp_f31 = VECMag(&sp20); temp_f31 = VECMag(&sp20);
if (temp_f31 > 3000.0f) { if (temp_f31 > 3000.0f) {
var_r27 = 0xF0; var_r27 = 0xF0;
} else if (temp_f31 > 1500.0f) { }
else if (temp_f31 > 1500.0f) {
var_r27 = 0x78; var_r27 = 0x78;
} else { }
else {
var_r27 = 0x78; var_r27 = 0x78;
} }
BoardViewMoveStart(&sp38, &sp50, var_r27); BoardViewMoveStart(&sp38, &sp50, var_r27);
showNextObj->trans.x = 68.0f; showNextObj->trans.x = 68.0f;
showNextObj->trans.y = HU_DISP_HEIGHT-50; showNextObj->trans.y = HU_DISP_HEIGHT - 50;
showNextObj->trans.z = 100.0f; showNextObj->trans.z = 100.0f;
sp44.x = showNextObj->trans.x; sp44.x = showNextObj->trans.x;
sp44.y = showNextObj->trans.y; sp44.y = showNextObj->trans.y;
@ -718,9 +699,9 @@ void BoardStarShowNext(s32 arg0) {
Hu3D2Dto3D(&sp44, 1, &sp44); Hu3D2Dto3D(&sp44, 1, &sp44);
BoardModelPosSetV(BoardStarHostMdlGet(), &sp44); BoardModelPosSetV(BoardStarHostMdlGet(), &sp44);
BoardCameraRotGet(&sp2C); BoardCameraRotGet(&sp2C);
PSMTXRotRad(sp5C, 'y', MTXDegToRad(10.0f)); RotRad(sp5C, 'y', MTXDegToRad(10.0f));
PSMTXRotRad(sp8C, 'x', MTXDegToRad(sp2C.x)); RotRad(sp8C, 'x', MTXDegToRad(sp2C.x));
PSMTXConcat(sp8C, sp5C, spBC); Concat(sp8C, sp5C, spBC);
BoardModelMtxSet(BoardStarHostMdlGet(), &spBC); BoardModelMtxSet(BoardStarHostMdlGet(), &spBC);
BoardModelRotSet(BoardStarHostMdlGet(), 0.0f, 0.0f, 0.0f); BoardModelRotSet(BoardStarHostMdlGet(), 0.0f, 0.0f, 0.0f);
BoardModelScaleSet(BoardStarHostMdlGet(), 0.09f, 0.09f, 0.09f); BoardModelScaleSet(BoardStarHostMdlGet(), 0.09f, 0.09f, 0.09f);
@ -735,7 +716,8 @@ void BoardStarShowNext(s32 arg0) {
} }
if (var_r28 == 0) { if (var_r28 == 0) {
var_r30 = starMesTbl1[GWBoardGet()] + 6; var_r30 = starMesTbl1[GWBoardGet()] + 6;
} else { }
else {
var_r30 = starMesTbl2[GWBoardGet()][0]; var_r30 = starMesTbl2[GWBoardGet()][0];
} }
BoardWinCreate(3, var_r30, -1); BoardWinCreate(3, var_r30, -1);
@ -749,7 +731,8 @@ void BoardStarShowNext(s32 arg0) {
HuPrcSleep(3); HuPrcSleep(3);
if (var_r28 == 0) { if (var_r28 == 0) {
var_r30 = starMesTbl1[GWBoardGet()] + 7; var_r30 = starMesTbl1[GWBoardGet()] + 7;
} else { }
else {
var_r30 = starMesTbl2[GWBoardGet()][1]; var_r30 = starMesTbl2[GWBoardGet()][1];
} }
BoardWinCreate(3, var_r30, -1); BoardWinCreate(3, var_r30, -1);
@ -765,7 +748,7 @@ void BoardStarShowNext(s32 arg0) {
HuPrcVSleep(); HuPrcVSleep();
} }
BoardViewWait(); BoardViewWait();
PSMTXIdentity(spBC); Identity(spBC);
BoardModelMtxSet(BoardStarHostMdlGet(), &spBC); BoardModelMtxSet(BoardStarHostMdlGet(), &spBC);
HideNextHost(1); HideNextHost(1);
while (showNextObj) { while (showNextObj) {
@ -786,7 +769,8 @@ void BoardStarShowNext(s32 arg0) {
_ClearFlag(FLAG_ID_MAKE(1, 28)); _ClearFlag(FLAG_ID_MAKE(1, 28));
} }
static void ShowNextUpdate(omObjData *arg0) { static void ShowNextUpdate(omObjData *arg0)
{
ShowNextWork *temp_r30 = OM_GET_WORK_PTR(arg0, ShowNextWork); ShowNextWork *temp_r30 = OM_GET_WORK_PTR(arg0, ShowNextWork);
Vec sp8; Vec sp8;
@ -815,7 +799,8 @@ static void ShowNextUpdate(omObjData *arg0) {
BoardModelPosSetV(BoardStarHostMdlGet(), &sp8); BoardModelPosSetV(BoardStarHostMdlGet(), &sp8);
} }
static void HideNextHost(s32 arg0) { static void HideNextHost(s32 arg0)
{
ShowNextWork *temp_r31 = OM_GET_WORK_PTR(showNextObj, ShowNextWork); ShowNextWork *temp_r31 = OM_GET_WORK_PTR(showNextObj, ShowNextWork);
temp_r31->unk01 = arg0; temp_r31->unk01 = arg0;

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,6 @@
#include "game/board/view.h" #include "game/board/view.h"
#include "game/audio.h" #include "game/audio.h"
#include "game/disp.h"
#include "game/gamework.h" #include "game/gamework.h"
#include "game/gamework_data.h" #include "game/gamework_data.h"
#include "game/hsfex.h" #include "game/hsfex.h"
@ -7,7 +8,7 @@
#include "game/pad.h" #include "game/pad.h"
#include "game/sprite.h" #include "game/sprite.h"
#include "game/wipe.h" #include "game/wipe.h"
#include "game/disp.h"
#include "game/board/main.h" #include "game/board/main.h"
#include "game/board/model.h" #include "game/board/model.h"
@ -54,55 +55,28 @@ static Process *viewProc;
static s16 buttonWin = -1; static s16 buttonWin = -1;
static s16 focusMdl = -1; static s16 focusMdl = -1;
static float overhead2DPos[][2] = { static float overhead2DPos[][2] = { { 48.0f, 72.0f }, { HU_DISP_WIDTH - 48, 72.0f }, { 48.0f, HU_DISP_HEIGHT - 72 },
{ 48.0f, 72.0f }, { HU_DISP_WIDTH - 48, HU_DISP_HEIGHT - 72 }, { HU_DISP_CENTERX, 72.0f } };
{ HU_DISP_WIDTH-48, 72.0f },
{ 48.0f, HU_DISP_HEIGHT-72 },
{ HU_DISP_WIDTH-48, HU_DISP_HEIGHT-72 },
{ HU_DISP_CENTERX, 72.0f }
};
static float mapViewMinZ[] = { static float mapViewMinZ[] = { -2000.0f, -1500.0f, -2200.0f, -1800.0f, -2100.0f, -3000.0f, -3000.0f, -1800.0f, -1800.0f };
-2000.0f, -1500.0f, -2200.0f,
-1800.0f, -2100.0f, -3000.0f,
-3000.0f, -1800.0f, -1800.0f
};
static float mapViewMaxZ[] = { static float mapViewMaxZ[] = { 2300.0f, 2500.0f, 2600.0f, 2000.0f, 2300.0f, 2500.0f, 2500.0f, 2000.0f, 2000.0f };
2300.0f, 2500.0f, 2600.0f,
2000.0f, 2300.0f, 2500.0f,
2500.0f, 2000.0f, 2000.0f
};
static float mapViewMinX[] = { static float mapViewMinX[] = { -3000.0f, -3000.0f, -3000.0f, -3000.0f, -3000.0f, -3000.0f, -3000.0f, -2000.0f, -2000.0f };
-3000.0f, -3000.0f, -3000.0f,
-3000.0f, -3000.0f, -3000.0f,
-3000.0f, -2000.0f, -2000.0f
};
static float mapViewMaxX[] = { static float mapViewMaxX[] = { 3000.0f, 3000.0f, 3000.0f, 3000.0f, 3000.0f, 3000.0f, 3000.0f, 1600.0f, 2000.0f };
3000.0f, 3000.0f, 3000.0f,
3000.0f, 3000.0f, 3000.0f,
3000.0f, 1600.0f, 2000.0f
};
static float overheadCamZoom[] = { static float overheadCamZoom[] = { 14370.0f, 14500.0f, 15000.0f, 15000.0f, 13000.0f, 15000.0f, 100.0f, 10000.0f, 10000.0f };
14370.0f, 14500.0f, 15000.0f,
15000.0f, 13000.0f, 15000.0f,
100.0f, 10000.0f, 10000.0f
};
static float overheadCamPosZ[] = { static float overheadCamPosZ[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -160.0f, 0.0f };
0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f,
0.0f, -160.0f, 0.0f
};
void BoardViewOverheadExec(s32 arg0) { void BoardViewOverheadExec(s32 arg0)
{
if (BoardPauseDisableGet() == 0) { if (BoardPauseDisableGet() == 0) {
BoardPauseDisableSet(1); BoardPauseDisableSet(1);
pauseDisableF = 1; pauseDisableF = 1;
} else { }
else {
pauseDisableF = 0; pauseDisableF = 0;
} }
_SetFlag(0x1001C); _SetFlag(0x1001C);
@ -128,13 +102,15 @@ void BoardViewOverheadExec(s32 arg0) {
_ClearFlag(0x1001C); _ClearFlag(0x1001C);
} }
void BoardViewFocusGetPos(Vec *arg0) { void BoardViewFocusGetPos(Vec *arg0)
{
if (arg0) { if (arg0) {
BoardModelPosGet(focusMdl, arg0); BoardModelPosGet(focusMdl, arg0);
} }
} }
static inline void BoardViewInlineFunc00(Vec *arg0, Vec *arg1, u16 arg2) { static inline void BoardViewInlineFunc00(Vec *arg0, Vec *arg1, u16 arg2)
{
if (arg2 == 0) { if (arg2 == 0) {
arg2 = 1; arg2 = 1;
} }
@ -150,13 +126,15 @@ static inline void BoardViewInlineFunc00(Vec *arg0, Vec *arg1, u16 arg2) {
} }
} }
void BoardViewFocusSet(Vec *arg0, u16 arg1) { void BoardViewFocusSet(Vec *arg0, u16 arg1)
{
u16 var_r31; u16 var_r31;
if (BoardPauseDisableGet() == 0) { if (BoardPauseDisableGet() == 0) {
BoardPauseDisableSet(1); BoardPauseDisableSet(1);
pauseDisableF = 1; pauseDisableF = 1;
} else { }
else {
pauseDisableF = 0; pauseDisableF = 0;
} }
focusDestroyF = 1; focusDestroyF = 1;
@ -164,13 +142,15 @@ void BoardViewFocusSet(Vec *arg0, u16 arg1) {
HuPrcSleep(2); HuPrcSleep(2);
} }
void BoardViewMoveStart(Vec *arg0, Vec *arg1, u16 arg2) { void BoardViewMoveStart(Vec *arg0, Vec *arg1, u16 arg2)
{
u16 var_r31; u16 var_r31;
if (BoardPauseDisableGet() == 0) { if (BoardPauseDisableGet() == 0) {
BoardPauseDisableSet(1); BoardPauseDisableSet(1);
pauseDisableF = 1; pauseDisableF = 1;
} else { }
else {
pauseDisableF = 0; pauseDisableF = 0;
} }
viewProc = HuPrcChildCreate(ExecStarView, 0x200A, 0x3800, 0, boardMainProc); viewProc = HuPrcChildCreate(ExecStarView, 0x200A, 0x3800, 0, boardMainProc);
@ -180,26 +160,31 @@ void BoardViewMoveStart(Vec *arg0, Vec *arg1, u16 arg2) {
HuPrcSleep(2); HuPrcSleep(2);
} }
BOOL BoardViewMoveCheck(void) { BOOL BoardViewMoveCheck(void)
{
return (viewMoveF != 0) ? TRUE : FALSE; return (viewMoveF != 0) ? TRUE : FALSE;
} }
void BoardViewMoveEnd(void) { void BoardViewMoveEnd(void)
{
viewMoveF = 0; viewMoveF = 0;
} }
void BoardViewWait(void) { void BoardViewWait(void)
{
viewMoveF = 0; viewMoveF = 0;
while (viewProc != NULL) { while (viewProc != NULL) {
HuPrcVSleep(); HuPrcVSleep();
} }
} }
void BoardViewMapExec(s32 arg0) { void BoardViewMapExec(s32 arg0)
{
if (BoardPauseDisableGet() == 0) { if (BoardPauseDisableGet() == 0) {
BoardPauseDisableSet(1); BoardPauseDisableSet(1);
pauseDisableF = 1; pauseDisableF = 1;
} else { }
else {
pauseDisableF = 0; pauseDisableF = 0;
} }
viewProc = HuPrcChildCreate(ExecMapView, 0x200A, 0x3800, 0, boardMainProc); viewProc = HuPrcChildCreate(ExecMapView, 0x200A, 0x3800, 0, boardMainProc);
@ -214,7 +199,8 @@ void BoardViewMapExec(s32 arg0) {
} }
} }
static void ExecMapView(void) { static void ExecMapView(void)
{
Vec spC; Vec spC;
float var_f29; float var_f29;
float temp_f28; float temp_f28;
@ -240,7 +226,8 @@ static void ExecMapView(void) {
} }
if (HuPadBtn[GWPlayer[viewPlayer].port] & 0x100) { if (HuPadBtn[GWPlayer[viewPlayer].port] & 0x100) {
var_f29 = 40.0f; var_f29 = 40.0f;
} else { }
else {
var_f29 = 20.0f; var_f29 = 20.0f;
} }
spC.x = spC.y = spC.z = 0.0f; spC.x = spC.y = spC.z = 0.0f;
@ -274,7 +261,8 @@ static void ExecMapView(void) {
HuPrcEnd(); HuPrcEnd();
} }
static void ExecStarView(void) { static void ExecStarView(void)
{
Vec sp8; Vec sp8;
float temp_f30; float temp_f30;
@ -307,7 +295,8 @@ static void ExecStarView(void) {
HuPrcEnd(); HuPrcEnd();
} }
static void ExecOverheadView(void) { static void ExecOverheadView(void)
{
u32 var_r31; u32 var_r31;
if ((GWBoardGet() == BOARD_ID_MAIN3 || GWBoardGet() == BOARD_ID_MAIN6) && boardLightResetHook) { if ((GWBoardGet() == BOARD_ID_MAIN3 || GWBoardGet() == BOARD_ID_MAIN6) && boardLightResetHook) {
@ -338,7 +327,8 @@ static void ExecOverheadView(void) {
HuPrcEnd(); HuPrcEnd();
} }
static void DestroyView(void) { static void DestroyView(void)
{
if (focusMdl != -1) { if (focusMdl != -1) {
BoardModelKill(focusMdl); BoardModelKill(focusMdl);
focusMdl = -1; focusMdl = -1;
@ -355,7 +345,8 @@ static void DestroyView(void) {
viewProc = NULL; viewProc = NULL;
} }
static void SetTargetView(void) { static void SetTargetView(void)
{
Vec sp14; Vec sp14;
Vec sp8; Vec sp8;
@ -370,7 +361,8 @@ static void SetTargetView(void) {
sp8.z = 0.0f; sp8.z = 0.0f;
BoardCameraMotionStartEx(focusMdl, &sp8, NULL, 3000.0f, -1.0f, 21); BoardCameraMotionStartEx(focusMdl, &sp8, NULL, 3000.0f, -1.0f, 21);
BoardCameraMotionWait(); BoardCameraMotionWait();
} else { }
else {
BoardModelPosSet(focusMdl, 0.0f, 0.0f, 0.0f); BoardModelPosSet(focusMdl, 0.0f, 0.0f, 0.0f);
sp14.x = 0.0f; sp14.x = 0.0f;
sp14.y = 0.0f; sp14.y = 0.0f;
@ -386,7 +378,8 @@ static void SetTargetView(void) {
} }
} }
static void DestroyFocus(void) { static void DestroyFocus(void)
{
if (focusMdl != -1) { if (focusMdl != -1) {
BoardModelKill(focusMdl); BoardModelKill(focusMdl);
focusMdl = -1; focusMdl = -1;
@ -396,7 +389,8 @@ static void DestroyFocus(void) {
BoardCameraMoveSet(1); BoardCameraMoveSet(1);
} }
static void CreateButtonWin(void) { static void CreateButtonWin(void)
{
float sp8[2]; float sp8[2];
float posX; float posX;
float posY; float posY;
@ -404,39 +398,41 @@ static void CreateButtonWin(void) {
if (viewControls != 2) { if (viewControls != 2) {
var_r31 = MAKE_MESSID(0x09, 0x05); var_r31 = MAKE_MESSID(0x09, 0x05);
#if VERSION_PAL #if VERSION_PAL
HuWinMesMaxSizeGet(1, sp8, var_r31); HuWinMesMaxSizeGet(1, sp8, var_r31);
posX = 288-((sp8[0]/2)-32); posX = 288 - ((sp8[0] / 2) - 32);
#endif #endif
posY = 286.0f; posY = 286.0f;
} else { }
else {
var_r31 = MAKE_MESSID(0x10, 0x4D); var_r31 = MAKE_MESSID(0x10, 0x4D);
#if VERSION_PAL #if VERSION_PAL
posX = -10000.0f; posX = -10000.0f;
posY = 324.0f; posY = 324.0f;
#else #else
posY = 328.0f; posY = 328.0f;
#endif #endif
} }
HuWinMesMaxSizeGet(1, sp8, var_r31); HuWinMesMaxSizeGet(1, sp8, var_r31);
#if VERSION_NTSC #if VERSION_NTSC
posX = -10000.0f; posX = -10000.0f;
#endif #endif
buttonWin = HuWinCreate(posX, posY, sp8[0], sp8[1], 0); buttonWin = HuWinCreate(posX, posY, sp8[0], sp8[1], 0);
HuWinBGTPLvlSet(buttonWin, 0.0f); HuWinBGTPLvlSet(buttonWin, 0.0f);
HuWinMesSpeedSet(buttonWin, 0); HuWinMesSpeedSet(buttonWin, 0);
HuWinMesSet(buttonWin, var_r31); HuWinMesSet(buttonWin, var_r31);
} }
static void DestroyButtonWin(void) { static void DestroyButtonWin(void)
{
if (buttonWin != -1) { if (buttonWin != -1) {
HuWinKill(buttonWin); HuWinKill(buttonWin);
buttonWin = -1; buttonWin = -1;
} }
} }
static void InitOverheadView(void) { static void InitOverheadView(void)
{
Vec sp10; Vec sp10;
GXColor spA; GXColor spA;
s16 sp8; s16 sp8;
@ -444,16 +440,9 @@ static void InitOverheadView(void) {
OverheadWork *temp_r31; OverheadWork *temp_r31;
float *temp_r30; float *temp_r30;
s32 i; s32 i;
s32 sp1C[8] = { s32 sp1C[8] = { DATA_MAKE_NUM(DATADIR_BOARD, 0x2E), DATA_MAKE_NUM(DATADIR_BOARD, 0x2F), DATA_MAKE_NUM(DATADIR_BOARD, 0x30),
DATA_MAKE_NUM(DATADIR_BOARD, 0x2E), DATA_MAKE_NUM(DATADIR_BOARD, 0x31), DATA_MAKE_NUM(DATADIR_BOARD, 0x32), DATA_MAKE_NUM(DATADIR_BOARD, 0x33),
DATA_MAKE_NUM(DATADIR_BOARD, 0x2F), DATA_MAKE_NUM(DATADIR_BOARD, 0x34), DATA_MAKE_NUM(DATADIR_BOARD, 0x35) };
DATA_MAKE_NUM(DATADIR_BOARD, 0x30),
DATA_MAKE_NUM(DATADIR_BOARD, 0x31),
DATA_MAKE_NUM(DATADIR_BOARD, 0x32),
DATA_MAKE_NUM(DATADIR_BOARD, 0x33),
DATA_MAKE_NUM(DATADIR_BOARD, 0x34),
DATA_MAKE_NUM(DATADIR_BOARD, 0x35)
};
temp_r26 = omAddObjEx(boardObjMan, 0x1000, 0, 0, -1, UpdateOverheadView); temp_r26 = omAddObjEx(boardObjMan, 0x1000, 0, 0, -1, UpdateOverheadView);
overheadObj = temp_r26; overheadObj = temp_r26;
@ -472,7 +461,8 @@ static void InitOverheadView(void) {
spA.r = 0x50; spA.r = 0x50;
spA.g = 0x50; spA.g = 0x50;
spA.b = 0x50; spA.b = 0x50;
} else { }
else {
GWCharColorGet(GWPlayer[i].character, &spA); GWCharColorGet(GWPlayer[i].character, &spA);
} }
BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x6C), 0x1770, 0, &sp8); BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x6C), 0x1770, 0, &sp8);
@ -505,13 +495,15 @@ static void InitOverheadView(void) {
} }
} }
static void DestroyOverheadView(void) { static void DestroyOverheadView(void)
{
if (overheadObj) { if (overheadObj) {
OM_GET_WORK_PTR(overheadObj, OverheadWork)->unk00_field0 = 1; OM_GET_WORK_PTR(overheadObj, OverheadWork)->unk00_field0 = 1;
} }
} }
static void UpdateOverheadView(omObjData *arg0) { static void UpdateOverheadView(omObjData *arg0)
{
Vec sp20; Vec sp20;
Vec sp14; Vec sp14;
Vec sp8; Vec sp8;
@ -545,7 +537,8 @@ static void UpdateOverheadView(omObjData *arg0) {
} }
if (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { if (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) {
var_r27 = 1; var_r27 = 1;
} else { }
else {
var_r27 = 0; var_r27 = 0;
} }
for (i = 0; i < 5; i++) { for (i = 0; i < 5; i++) {
@ -555,9 +548,11 @@ static void UpdateOverheadView(omObjData *arg0) {
sp20.z = 1000.0f; sp20.z = 1000.0f;
if (i != 4) { if (i != 4) {
BoardSpacePosGet(0, GWPlayer[i].space_curr, &sp14); BoardSpacePosGet(0, GWPlayer[i].space_curr, &sp14);
} else if (var_r27 != 0) { }
else if (var_r27 != 0) {
sp14.x = sp14.y = sp14.z = 0.0f; sp14.x = sp14.y = sp14.z = 0.0f;
} else { }
else {
BoardSpacePosGet(0, BoardSpaceStarGetCurr(), &sp14); BoardSpacePosGet(0, BoardSpaceStarGetCurr(), &sp14);
} }
Hu3D3Dto2D(&sp14, 1, &sp14); Hu3D3Dto2D(&sp14, 1, &sp14);
@ -569,7 +564,8 @@ static void UpdateOverheadView(omObjData *arg0) {
temp_f31 = VECMag(&sp8) / 32; temp_f31 = VECMag(&sp8) / 32;
if (i != 4) { if (i != 4) {
var_r28 = i + 4; var_r28 = i + 4;
} else { }
else {
var_r28 = 8; var_r28 = 8;
} }
HuSprZRotSet(temp_r31->unk02, var_r28, temp_f30); HuSprZRotSet(temp_r31->unk02, var_r28, temp_f30);
@ -577,13 +573,15 @@ static void UpdateOverheadView(omObjData *arg0) {
HuSprPosSet(temp_r31->unk02, var_r28, var_r29[0], var_r29[1]); HuSprPosSet(temp_r31->unk02, var_r28, var_r29[0], var_r29[1]);
if (i == 4 && (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2)) { if (i == 4 && (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2)) {
BoardModelVisibilitySet(temp_r31->unk04, 0); BoardModelVisibilitySet(temp_r31->unk04, 0);
} else if (temp_r31->unk01 != 0) { }
else if (temp_r31->unk01 != 0) {
if (i != 4) { if (i != 4) {
HuSprAttrReset(temp_r31->unk02, i, HUSPR_ATTR_DISPOFF); HuSprAttrReset(temp_r31->unk02, i, HUSPR_ATTR_DISPOFF);
} }
HuSprAttrReset(temp_r31->unk02, var_r28, HUSPR_ATTR_DISPOFF); HuSprAttrReset(temp_r31->unk02, var_r28, HUSPR_ATTR_DISPOFF);
BoardModelVisibilitySet(temp_r31->unk04, 1); BoardModelVisibilitySet(temp_r31->unk04, 1);
} else { }
else {
if (i != 4) { if (i != 4) {
HuSprAttrSet(temp_r31->unk02, i, HUSPR_ATTR_DISPOFF); HuSprAttrSet(temp_r31->unk02, i, HUSPR_ATTR_DISPOFF);
} }
@ -595,15 +593,16 @@ static void UpdateOverheadView(omObjData *arg0) {
sp20.y = var_r29[1]; sp20.y = var_r29[1];
sp20.z = 1000.0f; sp20.z = 1000.0f;
BoardCameraRotGet(&sp8); BoardCameraRotGet(&sp8);
PSMTXRotRad(sp5C, 'x', MTXDegToRad(sp8.x)); RotRad(sp5C, 'x', MTXDegToRad(sp8.x));
PSMTXRotRad(sp2C, 'y', MTXDegToRad(sp8.y)); RotRad(sp2C, 'y', MTXDegToRad(sp8.y));
PSMTXConcat(sp2C, sp5C, sp2C); Concat(sp2C, sp5C, sp2C);
BoardModelMtxSet(temp_r31->unk04, &sp2C); BoardModelMtxSet(temp_r31->unk04, &sp2C);
Hu3D2Dto3D(&sp20, 1, &sp20); Hu3D2Dto3D(&sp20, 1, &sp20);
BoardModelPosSetV(temp_r31->unk04, &sp20); BoardModelPosSetV(temp_r31->unk04, &sp20);
} }
static void WaitOverheadView(void) { static void WaitOverheadView(void)
{
while (overheadObj) { while (overheadObj) {
HuPrcVSleep(); HuPrcVSleep();
} }

View file

@ -1421,7 +1421,7 @@ static void UpdateItemHook(void)
effectDustParam.unk0C.z = frandmod(10) - 5; effectDustParam.unk0C.z = frandmod(10) - 5;
CreateEffectDust(temp_r31->unk02, sp8.x, sp8.y, sp8.z, 20.0f, &effectDustParam); CreateEffectDust(temp_r31->unk02, sp8.x, sp8.y, sp8.z, 20.0f, &effectDustParam);
} }
PSMTXIdentity(temp_r30->unk_F0); MTXIdentity(temp_r30->unk_F0);
temp_r25 = HuPrcCurrentGet(); temp_r25 = HuPrcCurrentGet();
for (var_r28 = 0; var_r28 < 32; var_r28++) { for (var_r28 = 0; var_r28 < 32; var_r28++) {
if (itemHookProcess[var_r28] == temp_r25) { if (itemHookProcess[var_r28] == temp_r25) {

View file

@ -316,7 +316,7 @@ void Hu3DAnimExec(void) {
for (i = 0; i < HU3D_TEXSCROLL_MAX; 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)); MTXRotRad(var_r31->unk3C, 'Z', MTXDegToRad(var_r31->unk34));
mtxTransCat(var_r31->unk3C, var_r31->unk04.x, var_r31->unk04.y, var_r31->unk04.z); mtxTransCat(var_r31->unk3C, var_r31->unk04.x, var_r31->unk04.y, var_r31->unk04.z);
} else { } else {
if (var_r31->unk00 & 1) { if (var_r31->unk00 & 1) {
@ -349,7 +349,7 @@ void Hu3DAnimExec(void) {
var_r31->unk34 += 360.0f; var_r31->unk34 += 360.0f;
} }
} }
PSMTXRotRad(var_r31->unk3C, 'Z', MTXDegToRad(var_r31->unk34)); MTXRotRad(var_r31->unk3C, 'Z', MTXDegToRad(var_r31->unk34));
mtxTransCat(var_r31->unk3C, var_r31->unk04.x, var_r31->unk04.y, var_r31->unk04.z); mtxTransCat(var_r31->unk3C, var_r31->unk04.x, var_r31->unk04.y, var_r31->unk04.z);
} }
} }
@ -401,7 +401,7 @@ s16 Hu3DTexScrollCreate(s16 arg0, char *arg1) {
var_r31->unk00 = 0; var_r31->unk00 = 0;
var_r31->unk04.x = var_r31->unk04.y = var_r31->unk04.z = 0.0f; var_r31->unk04.x = var_r31->unk04.y = var_r31->unk04.z = 0.0f;
var_r31->unk34 = 0.0f; var_r31->unk34 = 0.0f;
PSMTXIdentity(var_r31->unk3C); MTXIdentity(var_r31->unk3C);
return var_r28; return var_r28;
} }
@ -687,16 +687,16 @@ static void particleFunc(ModelData *arg0, Mtx arg1) {
temp_r31 = arg0->unk_120; temp_r31 = arg0->unk_120;
temp_r22 = temp_r31->unk_44; temp_r22 = temp_r31->unk_44;
if (HmfInverseMtxF3X3(arg1, sp128) == 0) { if (HmfInverseMtxF3X3(arg1, sp128) == 0) {
PSMTXIdentity(sp128); MTXIdentity(sp128);
} }
PSMTXReorder(sp128, sp8); MTXReorder(sp128, sp8);
if ((Hu3DPauseF == 0 || (arg0->attr & HU3D_ATTR_NOPAUSE)) && 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);
} }
var_r29 = temp_r31->unk_48; var_r29 = temp_r31->unk_48;
var_r30 = temp_r31->unk_4C; var_r30 = temp_r31->unk_4C;
PSMTXROMultVecArray(sp8, &basePos[0], sp38, 4); MTXROMultVecArray(sp8, &basePos[0], sp38, 4);
for (i = 0, var_r19 = 0; i < temp_r31->unk_30; i++, var_r29++) { for (i = 0, var_r19 = 0; i < temp_r31->unk_30; i++, var_r29++) {
if (var_r29->unk2C && (var_r29->unk06 & Hu3DCameraBit)) { if (var_r29->unk2C && (var_r29->unk06 & Hu3DCameraBit)) {
if (!var_r29->unk30) { if (!var_r29->unk30) {
@ -722,9 +722,9 @@ static void particleFunc(ModelData *arg0, Mtx arg1) {
VECScale(&basePos[1], &sp98[1], var_r29->unk2C); VECScale(&basePos[1], &sp98[1], var_r29->unk2C);
VECScale(&basePos[2], &sp98[2], var_r29->unk2C); VECScale(&basePos[2], &sp98[2], var_r29->unk2C);
VECScale(&basePos[3], &sp98[3], var_r29->unk2C); VECScale(&basePos[3], &sp98[3], var_r29->unk2C);
PSMTXRotRad(spC8, 'Z', var_r29->unk30); MTXRotRad(spC8, 'Z', var_r29->unk30);
PSMTXConcat(sp128, spC8, spF8); MTXConcat(sp128, spC8, spF8);
PSMTXMultVecArray(spF8, sp98, sp68, 4); MTXMultVecArray(spF8, sp98, sp68, 4);
VECAdd(&sp68[0], &var_r29->unk34, var_r30++); VECAdd(&sp68[0], &var_r29->unk34, var_r30++);
VECAdd(&sp68[1], &var_r29->unk34, var_r30++); VECAdd(&sp68[1], &var_r29->unk34, var_r30++);
VECAdd(&sp68[2], &var_r29->unk34, var_r30++); VECAdd(&sp68[2], &var_r29->unk34, var_r30++);
@ -800,7 +800,7 @@ static void particleFunc(ModelData *arg0, Mtx arg1) {
temp_r24 = &temp_r22->bmp[temp_r27->bmpNo]; temp_r24 = &temp_r22->bmp[temp_r27->bmpNo];
temp_f29 = (float) temp_r27->sizeX / temp_r24->sizeX; temp_f29 = (float) temp_r27->sizeX / temp_r24->sizeX;
temp_f30 = (float) temp_r27->sizeY / temp_r24->sizeY; temp_f30 = (float) temp_r27->sizeY / temp_r24->sizeY;
PSMTXScale(sp128, temp_f29, temp_f30, 1.0f); MTXScale(sp128, temp_f29, temp_f30, 1.0f);
temp_f29 = (float) temp_r27->startX / temp_r24->sizeX; temp_f29 = (float) temp_r27->startX / temp_r24->sizeX;
temp_f30 = (float) temp_r27->startY / temp_r24->sizeY; temp_f30 = (float) temp_r27->startY / temp_r24->sizeY;
mtxTransCat(sp128, temp_f29, temp_f30, 0.0f); mtxTransCat(sp128, temp_f29, temp_f30, 0.0f);

View file

@ -123,7 +123,7 @@ void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2) {
temp_r28 = arg0->hsfData; temp_r28 = arg0->hsfData;
if (arg0->attr & HU3D_ATTR_HOOKFUNC) { if (arg0->attr & HU3D_ATTR_HOOKFUNC) {
temp_r31 = &DrawObjData[DrawObjIdx]; temp_r31 = &DrawObjData[DrawObjIdx];
PSMTXCopy(arg1, temp_r31->matrix); MTXCopy(arg1, temp_r31->matrix);
sp8.x = temp_r31->matrix[0][3]; sp8.x = temp_r31->matrix[0][3];
sp8.y = temp_r31->matrix[1][3]; sp8.y = temp_r31->matrix[1][3];
sp8.z = temp_r31->matrix[2][3]; sp8.z = temp_r31->matrix[2][3];
@ -139,7 +139,7 @@ void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2) {
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
BmpPtrBak[i] = (HsfAttribute*) -1; BmpPtrBak[i] = (HsfAttribute*) -1;
} }
PSMTXCopy(arg1, MTXBuf[0]); MTXCopy(arg1, MTXBuf[0]);
scaleBuf[0] = *arg2; scaleBuf[0] = *arg2;
MTXIdx = 1; MTXIdx = 1;
CancelTRXF = 0; CancelTRXF = 0;
@ -220,12 +220,12 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) {
if (CancelTRXF == 0) { if (CancelTRXF == 0) {
if (arg1->data.cenvCnt != 0 && hookIdx == -1) { if (arg1->data.cenvCnt != 0 && hookIdx == -1) {
temp_r21 = arg1 - temp_r20->object; temp_r21 = arg1 - temp_r20->object;
PSMTXConcat(MTXBuf[0], temp_r20->matrix->data[temp_r21 + temp_r20->matrix->base_idx], MTXBuf[MTXIdx]); MTXConcat(MTXBuf[0], temp_r20->matrix->data[temp_r21 + temp_r20->matrix->base_idx], MTXBuf[MTXIdx]);
} else { } else {
PSMTXScale(sp1C, var_r30->scale.x, var_r30->scale.y, var_r30->scale.z); MTXScale(sp1C, var_r30->scale.x, var_r30->scale.y, var_r30->scale.z);
mtxRotCat(sp1C, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); mtxRotCat(sp1C, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z);
mtxTransCat(sp1C, var_r30->pos.x, var_r30->pos.y, var_r30->pos.z); mtxTransCat(sp1C, var_r30->pos.x, var_r30->pos.y, var_r30->pos.z);
PSMTXConcat(MTXBuf[MTXIdx - 1], sp1C, MTXBuf[MTXIdx]); MTXConcat(MTXBuf[MTXIdx - 1], sp1C, MTXBuf[MTXIdx]);
} }
temp_r28 = &scaleBuf[MTXIdx]; temp_r28 = &scaleBuf[MTXIdx];
temp_r24 = temp_r28 - 1; temp_r24 = temp_r28 - 1;
@ -234,29 +234,29 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) {
temp_r28->z = temp_r24->z * var_r30->scale.z; temp_r28->z = temp_r24->z * var_r30->scale.z;
temp_r29->scale = *temp_r28; temp_r29->scale = *temp_r28;
if (arg1->flags & 1) { if (arg1->flags & 1) {
PSMTXInverse(MTXBuf[MTXIdx], sp1C); MTXInverse(MTXBuf[MTXIdx], sp1C);
sp1C[0][3] = sp1C[1][3] = sp1C[2][3] = 0.0f; sp1C[0][3] = sp1C[1][3] = sp1C[2][3] = 0.0f;
PSMTXConcat(MTXBuf[MTXIdx], sp1C, temp_r29->matrix); MTXConcat(MTXBuf[MTXIdx], sp1C, temp_r29->matrix);
mtxScaleCat(temp_r29->matrix, temp_r28->x, temp_r28->y, temp_r28->z); mtxScaleCat(temp_r29->matrix, temp_r28->x, temp_r28->y, temp_r28->z);
} else { } else {
PSMTXCopy(MTXBuf[MTXIdx], temp_r29->matrix); MTXCopy(MTXBuf[MTXIdx], temp_r29->matrix);
} }
MTXIdx++; MTXIdx++;
var_r18 = 1; var_r18 = 1;
} else { } else {
if (arg1->flags & 1) { if (arg1->flags & 1) {
PSMTXInverse(MTXBuf[MTXIdx - 1], sp1C); MTXInverse(MTXBuf[MTXIdx - 1], sp1C);
sp1C[0][3] = sp1C[1][3] = sp1C[2][3] = 0.0f; sp1C[0][3] = sp1C[1][3] = sp1C[2][3] = 0.0f;
PSMTXConcat(MTXBuf[MTXIdx - 1], sp1C, temp_r29->matrix); MTXConcat(MTXBuf[MTXIdx - 1], sp1C, temp_r29->matrix);
mtxScaleCat(temp_r29->matrix, scaleBuf[MTXIdx - 1].x, scaleBuf[MTXIdx - 1].y, scaleBuf[MTXIdx - 1].z); mtxScaleCat(temp_r29->matrix, scaleBuf[MTXIdx - 1].x, scaleBuf[MTXIdx - 1].y, scaleBuf[MTXIdx - 1].z);
} else { } else {
PSMTXCopy(MTXBuf[MTXIdx - 1], temp_r29->matrix); MTXCopy(MTXBuf[MTXIdx - 1], temp_r29->matrix);
} }
temp_r29->scale = scaleBuf[MTXIdx - 1]; temp_r29->scale = scaleBuf[MTXIdx - 1];
CancelTRXF = 0; CancelTRXF = 0;
var_r18 = 0; var_r18 = 0;
} }
PSMTXCopy(temp_r29->matrix, temp_r25->matrix); MTXCopy(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 & HU3D_ATTR_DISPOFF)) { if (!(temp_r31->attr & HU3D_ATTR_DISPOFF)) {
@ -268,11 +268,11 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) {
} }
sp8 = hookIdx; sp8 = hookIdx;
hookIdx = temp_r25->hook; hookIdx = temp_r25->hook;
PSMTXScale(sp1C, temp_r31->scale.x, temp_r31->scale.y, temp_r31->scale.z); MTXScale(sp1C, temp_r31->scale.x, temp_r31->scale.y, temp_r31->scale.z);
mtxRotCat(sp1C, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); mtxRotCat(sp1C, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z);
mtxTransCat(sp1C, temp_r31->pos.x, temp_r31->pos.y, temp_r31->pos.z); mtxTransCat(sp1C, temp_r31->pos.x, temp_r31->pos.y, temp_r31->pos.z);
PSMTXConcat(sp1C, temp_r31->unk_F0, sp1C); MTXConcat(sp1C, temp_r31->unk_F0, sp1C);
PSMTXConcat(temp_r29->matrix, sp1C, MTXBuf[MTXIdx]); MTXConcat(temp_r29->matrix, sp1C, MTXBuf[MTXIdx]);
temp_r28 = &scaleBuf[MTXIdx]; temp_r28 = &scaleBuf[MTXIdx];
temp_r24 = temp_r28 - 1; temp_r24 = temp_r28 - 1;
temp_r28->x = temp_r24->x * temp_r31->scale.x; temp_r28->x = temp_r24->x * temp_r31->scale.x;
@ -377,8 +377,8 @@ s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2) {
temp_f31 = (temp_r29->x - temp_r31->x) * 0.5; temp_f31 = (temp_r29->x - temp_r31->x) * 0.5;
temp_f30 = (temp_r29->y - temp_r31->y) * 0.5; temp_f30 = (temp_r29->y - temp_r31->y) * 0.5;
temp_f29 = (temp_r29->z - temp_r31->z) * 0.5; temp_f29 = (temp_r29->z - temp_r31->z) * 0.5;
PSMTXTrans(sp28, temp_f31 + temp_r31->x, temp_f30 + temp_r31->y, temp_f29 + temp_r31->z); MTXTrans(sp28, temp_f31 + temp_r31->x, temp_f30 + temp_r31->y, temp_f29 + temp_r31->z);
PSMTXConcat(arg2, sp28, sp28); MTXConcat(arg2, sp28, sp28);
temp_f21 = var_f26 * sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30 + temp_f29 * temp_f29); temp_f21 = var_f26 * sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30 + temp_f29 * temp_f29);
temp_f20 = sp28[0][3]; temp_f20 = sp28[0][3];
temp_f19 = sp28[1][3]; temp_f19 = sp28[1][3];
@ -795,7 +795,7 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
if (var_f31 < 0.1) { if (var_f31 < 0.1) {
var_f31 = 0.1f; var_f31 = 0.1f;
} }
PSMTXCopy(hiliteMtx, sp20); MTXCopy(hiliteMtx, sp20);
mtxScaleCat(sp20, var_f31, var_f31, var_f31); mtxScaleCat(sp20, var_f31, var_f31, var_f31);
GXLoadTexMtxImm(sp20, GX_TEXMTX7, GX_MTX2x4); GXLoadTexMtxImm(sp20, GX_TEXMTX7, GX_MTX2x4);
var_r30++; var_r30++;
@ -935,12 +935,12 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
var_r30 = var_r31 = 1; var_r30 = var_r31 = 1;
temp_r29 = &temp_r19->data.attribute[arg1->attrs[0]]; temp_r29 = &temp_r19->data.attribute[arg1->attrs[0]];
if (temp_r29->unk28 != 1.0f || temp_r29->unk2C != 1.0f) { if (temp_r29->unk28 != 1.0f || temp_r29->unk2C != 1.0f) {
PSMTXScale(sp54, 1.0f / temp_r29->unk28, 1.0f / temp_r29->unk2C, 1.0f); MTXScale(sp54, 1.0f / temp_r29->unk28, 1.0f / temp_r29->unk2C, 1.0f);
mtxTransCat(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f); mtxTransCat(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f);
GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4);
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]);
} else if (temp_r29->unk30 != 0.0f || temp_r29->unk34 != 0.0f) { } else if (temp_r29->unk30 != 0.0f || temp_r29->unk34 != 0.0f) {
PSMTXTrans(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f); MTXTrans(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f);
GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4);
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]);
} else { } else {
@ -953,13 +953,13 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
GXLoadTexMtxImm(Hu3DTexScrData[temp_r28->unk04].unk3C, GX_TEXMTX0, GX_MTX2x4); GXLoadTexMtxImm(Hu3DTexScrData[temp_r28->unk04].unk3C, GX_TEXMTX0, GX_MTX2x4);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY); GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY);
} else if (temp_r28->unk00 & 4) { } else if (temp_r28->unk00 & 4) {
PSMTXScale(sp54, 1.0f / temp_r28->unk20, 1.0f / temp_r28->unk24, 1.0f / temp_r28->unk28); MTXScale(sp54, 1.0f / temp_r28->unk20, 1.0f / temp_r28->unk24, 1.0f / temp_r28->unk28);
mtxRotCat(sp54, temp_r28->unk14, temp_r28->unk18, temp_r28->unk1C); mtxRotCat(sp54, temp_r28->unk14, temp_r28->unk18, temp_r28->unk1C);
mtxTransCat(sp54, -temp_r28->unk08, -temp_r28->unk0C, -temp_r28->unk10); mtxTransCat(sp54, -temp_r28->unk08, -temp_r28->unk0C, -temp_r28->unk10);
GXLoadTexMtxImm(sp54, GX_TEXMTX0, GX_MTX2x4); GXLoadTexMtxImm(sp54, GX_TEXMTX0, GX_MTX2x4);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY); GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY);
} else if (temp_r28->unk00 & 1) { } else if (temp_r28->unk00 & 1) {
PSMTXScale(sp54, temp_r28->unk2C, temp_r28->unk30, 1.0f); MTXScale(sp54, temp_r28->unk2C, temp_r28->unk30, 1.0f);
mtxTransCat(sp54, temp_r28->unk34, temp_r28->unk38, 0.0f); mtxTransCat(sp54, temp_r28->unk34, temp_r28->unk38, 0.0f);
GXLoadTexMtxImm(sp54, GX_TEXMTX0, GX_MTX2x4); GXLoadTexMtxImm(sp54, GX_TEXMTX0, GX_MTX2x4);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY); GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY);
@ -1056,7 +1056,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
if (var_f31 < 0.1) { if (var_f31 < 0.1) {
var_f31 = 0.1f; var_f31 = 0.1f;
} }
PSMTXCopy(hiliteMtx, sp54); MTXCopy(hiliteMtx, sp54);
mtxScaleCat(sp54, var_f31, var_f31, var_f31); mtxScaleCat(sp54, var_f31, var_f31, var_f31);
GXLoadTexMtxImm(sp54, GX_TEXMTX7, GX_MTX2x4); GXLoadTexMtxImm(sp54, GX_TEXMTX7, GX_MTX2x4);
var_r31++; var_r31++;
@ -1131,7 +1131,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
temp_r23 = (u16) var_r30; temp_r23 = (u16) var_r30;
var_r30++; var_r30++;
} else if (temp_r28->unk00 & 4) { } else if (temp_r28->unk00 & 4) {
PSMTXScale(sp54, 1.0f / temp_r28->unk20, 1.0f / temp_r28->unk24, 1.0f / temp_r28->unk28); MTXScale(sp54, 1.0f / temp_r28->unk20, 1.0f / temp_r28->unk24, 1.0f / temp_r28->unk28);
mtxRotCat(sp54, temp_r28->unk14, temp_r28->unk18, temp_r28->unk1C); mtxRotCat(sp54, temp_r28->unk14, temp_r28->unk18, temp_r28->unk1C);
mtxTransCat(sp54, -temp_r28->unk08, -temp_r28->unk0C, -temp_r28->unk10); mtxTransCat(sp54, -temp_r28->unk08, -temp_r28->unk0C, -temp_r28->unk10);
GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4);
@ -1139,7 +1139,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
temp_r23 = (u16) var_r30; temp_r23 = (u16) var_r30;
var_r30++; var_r30++;
} else if (temp_r28->unk00 & 1) { } else if (temp_r28->unk00 & 1) {
PSMTXScale(sp54, temp_r28->unk2C, temp_r28->unk30, 1.0f); MTXScale(sp54, temp_r28->unk2C, temp_r28->unk30, 1.0f);
mtxTransCat(sp54, temp_r28->unk34, temp_r28->unk38, 0.0f); mtxTransCat(sp54, temp_r28->unk34, temp_r28->unk38, 0.0f);
GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4);
GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]);
@ -1152,12 +1152,12 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
} }
} else { } else {
if (temp_r29->unk28 != 1.0f || temp_r29->unk2C != 1.0f) { if (temp_r29->unk28 != 1.0f || temp_r29->unk2C != 1.0f) {
PSMTXScale(sp54, 1.0f / temp_r29->unk28, 1.0f / temp_r29->unk2C, 1.0f); MTXScale(sp54, 1.0f / temp_r29->unk28, 1.0f / temp_r29->unk2C, 1.0f);
mtxTransCat(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f); mtxTransCat(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f);
GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4);
GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]);
} else if (temp_r29->unk30 != 0.0f || temp_r29->unk34 != 0.0f) { } else if (temp_r29->unk30 != 0.0f || temp_r29->unk34 != 0.0f) {
PSMTXTrans(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f); MTXTrans(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f);
GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4);
GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]);
} else { } else {
@ -1298,11 +1298,11 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV);
GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV);
} }
PSMTXScale(sp54, 1.0f / arg0->scale.x, 1.0f / arg0->scale.y, 1.0f / arg0->scale.z); MTXScale(sp54, 1.0f / arg0->scale.x, 1.0f / arg0->scale.y, 1.0f / arg0->scale.z);
PSMTXConcat(arg0->matrix, sp54, sp54); MTXConcat(arg0->matrix, sp54, sp54);
sp54[0][3] = sp54[1][3] = sp54[2][3] = 0.0f; sp54[0][3] = sp54[1][3] = sp54[2][3] = 0.0f;
PSMTXConcat(sp54, Hu3DCameraMtxXPose, sp54); MTXConcat(sp54, Hu3DCameraMtxXPose, sp54);
PSMTXConcat(refMtx, sp54, sp54); MTXConcat(refMtx, sp54, sp54);
GXLoadTexMtxImm(sp54, 0x36, GX_MTX2x4); GXLoadTexMtxImm(sp54, 0x36, GX_MTX2x4);
var_r31++; var_r31++;
var_r30++; var_r30++;
@ -1320,7 +1320,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) {
if (var_f31 < 0.1) { if (var_f31 < 0.1) {
var_f31 = 0.1f; var_f31 = 0.1f;
} }
PSMTXCopy(hiliteMtx, sp54); MTXCopy(hiliteMtx, sp54);
mtxScaleCat(sp54, var_f31, var_f31, var_f31); mtxScaleCat(sp54, var_f31, var_f31, var_f31);
GXLoadTexMtxImm(sp54, 0x33, GX_MTX2x4); GXLoadTexMtxImm(sp54, 0x33, GX_MTX2x4);
if (var_r20 == -1) { if (var_r20 == -1) {
@ -1551,11 +1551,11 @@ static void SetReflect(HsfDrawObject *arg0, s16 arg1, s16 arg2, u8 arg3) {
GXSetTevColorOp(arg1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevColorOp(arg1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevAlphaIn(arg1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); GXSetTevAlphaIn(arg1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV);
GXSetTevAlphaOp(arg1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); GXSetTevAlphaOp(arg1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV);
PSMTXScale(sp3C, 1.0f / arg0->scale.x, 1.0f / arg0->scale.y, 1.0f / arg0->scale.z); MTXScale(sp3C, 1.0f / arg0->scale.x, 1.0f / arg0->scale.y, 1.0f / arg0->scale.z);
PSMTXConcat(arg0->matrix, sp3C, spC); MTXConcat(arg0->matrix, sp3C, spC);
spC[0][3] = spC[1][3] = spC[2][3] = 0.0f; spC[0][3] = spC[1][3] = spC[2][3] = 0.0f;
PSMTXConcat(spC, Hu3DCameraMtxXPose, sp3C); MTXConcat(spC, Hu3DCameraMtxXPose, sp3C);
PSMTXConcat(refMtx, sp3C, spC); MTXConcat(refMtx, sp3C, spC);
GXLoadTexMtxImm(spC, GX_TEXMTX8, GX_MTX2x4); GXLoadTexMtxImm(spC, GX_TEXMTX8, GX_MTX2x4);
} }
@ -1854,10 +1854,10 @@ static void objNull(ModelData *arg0, HsfObject *arg1) {
var_r31 = &arg1->data.curr; var_r31 = &arg1->data.curr;
} }
if (arg0->hsfData->cenvCnt == 0 || hookIdx != -1) { if (arg0->hsfData->cenvCnt == 0 || hookIdx != -1) {
PSMTXScale(sp8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); MTXScale(sp8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z);
mtxRotCat(sp8, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); mtxRotCat(sp8, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z);
mtxTransCat(sp8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); mtxTransCat(sp8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z);
PSMTXConcat(MTXBuf[MTXIdx - 1], sp8, MTXBuf[MTXIdx]); MTXConcat(MTXBuf[MTXIdx - 1], sp8, MTXBuf[MTXIdx]);
} }
temp_r28 = &scaleBuf[MTXIdx]; temp_r28 = &scaleBuf[MTXIdx];
temp_r27 = temp_r28 - 1; temp_r27 = temp_r28 - 1;
@ -1893,10 +1893,10 @@ static void objRoot(ModelData *arg0, HsfObject *arg1) {
var_r31 = &arg1->data.curr; var_r31 = &arg1->data.curr;
} }
if (arg0->hsfData->cenvCnt == 0 || hookIdx != -1) { if (arg0->hsfData->cenvCnt == 0 || hookIdx != -1) {
PSMTXScale(sp8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); MTXScale(sp8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z);
mtxRotCat(sp8, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); mtxRotCat(sp8, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z);
mtxTransCat(sp8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); mtxTransCat(sp8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z);
PSMTXConcat(MTXBuf[MTXIdx - 1], sp8, MTXBuf[MTXIdx]); MTXConcat(MTXBuf[MTXIdx - 1], sp8, MTXBuf[MTXIdx]);
} }
temp_r30 = &scaleBuf[MTXIdx]; temp_r30 = &scaleBuf[MTXIdx];
temp_r29 = temp_r30 - 1; temp_r29 = temp_r30 - 1;
@ -1932,10 +1932,10 @@ static void objJoint(ModelData *arg0, HsfObject *arg1) {
var_r31 = &arg1->data.curr; var_r31 = &arg1->data.curr;
} }
if (arg0->hsfData->cenvCnt == 0 || hookIdx != -1) { if (arg0->hsfData->cenvCnt == 0 || hookIdx != -1) {
PSMTXScale(sp8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); MTXScale(sp8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z);
mtxRotCat(sp8, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); mtxRotCat(sp8, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z);
mtxTransCat(sp8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); mtxTransCat(sp8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z);
PSMTXConcat(MTXBuf[MTXIdx - 1], sp8, MTXBuf[MTXIdx]); MTXConcat(MTXBuf[MTXIdx - 1], sp8, MTXBuf[MTXIdx]);
} }
temp_r28 = &scaleBuf[MTXIdx]; temp_r28 = &scaleBuf[MTXIdx];
temp_r27 = temp_r28 - 1; temp_r27 = temp_r28 - 1;
@ -1970,10 +1970,10 @@ static void objMap(ModelData *arg0, HsfObject *arg1) {
} else { } else {
var_r31 = &arg1->data.curr; var_r31 = &arg1->data.curr;
} }
PSMTXScale(spC, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); MTXScale(spC, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z);
mtxRotCat(spC, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); mtxRotCat(spC, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z);
mtxTransCat(spC, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); mtxTransCat(spC, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z);
PSMTXConcat(MTXBuf[MTXIdx - 1], spC, MTXBuf[MTXIdx]); MTXConcat(MTXBuf[MTXIdx - 1], spC, MTXBuf[MTXIdx]);
temp_r30 = &scaleBuf[MTXIdx]; temp_r30 = &scaleBuf[MTXIdx];
temp_r29 = temp_r30 - 1; temp_r29 = temp_r30 - 1;
temp_r30->x = temp_r29->x * var_r31->scale.x; temp_r30->x = temp_r29->x * var_r31->scale.x;
@ -2004,10 +2004,10 @@ static void objReplica(ModelData *arg0, HsfObject *arg1) {
var_r31 = &arg1->data.curr; var_r31 = &arg1->data.curr;
} }
mtxRot(spC, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); mtxRot(spC, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z);
PSMTXScale(sp3C, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); MTXScale(sp3C, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z);
PSMTXConcat(spC, sp3C, sp3C); MTXConcat(spC, sp3C, sp3C);
mtxTransCat(sp3C, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); mtxTransCat(sp3C, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z);
PSMTXConcat(MTXBuf[MTXIdx - 1], sp3C, MTXBuf[MTXIdx]); MTXConcat(MTXBuf[MTXIdx - 1], sp3C, MTXBuf[MTXIdx]);
scaleBuf[MTXIdx].x = var_r31->scale.x * scaleBuf[MTXIdx - 1].x; scaleBuf[MTXIdx].x = var_r31->scale.x * scaleBuf[MTXIdx - 1].x;
scaleBuf[MTXIdx].y = var_r31->scale.y * scaleBuf[MTXIdx - 1].y; scaleBuf[MTXIdx].y = var_r31->scale.y * scaleBuf[MTXIdx - 1].y;
scaleBuf[MTXIdx].z = var_r31->scale.z * scaleBuf[MTXIdx - 1].z; scaleBuf[MTXIdx].z = var_r31->scale.z * scaleBuf[MTXIdx - 1].z;
@ -2112,13 +2112,13 @@ void Hu3DDrawPost(void) {
DLBufStartP = Hu3DObjInfoP->dlBuf; DLBufStartP = Hu3DObjInfoP->dlBuf;
DrawData = Hu3DObjInfoP->drawData; DrawData = Hu3DObjInfoP->drawData;
GXLoadPosMtxImm(temp_r28->matrix, GX_PNMTX0); GXLoadPosMtxImm(temp_r28->matrix, GX_PNMTX0);
PSMTXInvXpose(temp_r28->matrix, sp120); MTXInvXpose(temp_r28->matrix, sp120);
GXLoadNrmMtxImm(sp120, 0); GXLoadNrmMtxImm(sp120, 0);
if (Hu3DShadowF != 0 && Hu3DShadowCamBit != 0 && (Hu3DObjInfoP->flags & 8)) { if (Hu3DShadowF != 0 && Hu3DShadowCamBit != 0 && (Hu3DObjInfoP->flags & 8)) {
PSMTXInverse(Hu3DCameraMtx, spF0); MTXInverse(Hu3DCameraMtx, spF0);
PSMTXConcat(spF0, temp_r28->matrix, sp120); MTXConcat(spF0, temp_r28->matrix, sp120);
PSMTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp150); MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp150);
PSMTXConcat(sp150, sp120, sp120); MTXConcat(sp150, sp120, sp120);
GXLoadTexMtxImm(sp120, GX_TEXMTX9, GX_MTX3x4); GXLoadTexMtxImm(sp120, GX_TEXMTX9, GX_MTX3x4);
var_r19 = 1; var_r19 = 1;
} else { } else {
@ -2126,13 +2126,13 @@ void Hu3DDrawPost(void) {
} }
if (temp_r28->model->unk_02 != 0) { if (temp_r28->model->unk_02 != 0) {
if (var_r19 == 0) { if (var_r19 == 0) {
PSMTXInverse(Hu3DCameraMtx, spF0); MTXInverse(Hu3DCameraMtx, spF0);
} }
for (i = 0, var_r21 = 1; i < 4; i++, var_r21 <<= 1) { for (i = 0, var_r21 = 1; i < 4; i++, var_r21 <<= 1) {
if (var_r21 & temp_r28->model->unk_02) { if (var_r21 & temp_r28->model->unk_02) {
PSMTXConcat(spF0, temp_r28->matrix, sp120); MTXConcat(spF0, temp_r28->matrix, sp120);
PSMTXConcat(Hu3DProjection[i].unk_68, Hu3DProjection[i].unk_38, sp150); MTXConcat(Hu3DProjection[i].unk_68, Hu3DProjection[i].unk_38, sp150);
PSMTXConcat(sp150, sp120, sp120); MTXConcat(sp150, sp120, sp120);
GXLoadTexMtxImm(sp120, texMtxTbl[i + 3], GX_MTX3x4); GXLoadTexMtxImm(sp120, texMtxTbl[i + 3], GX_MTX3x4);
} }
} }
@ -2142,32 +2142,32 @@ void Hu3DDrawPost(void) {
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;
if (temp_r22->unk_00 & 0x8000) { if (temp_r22->unk_00 & 0x8000) {
PSMTXMultVecSR(Hu3DCameraMtx, &sp30, &sp30); MTXMultVecSR(Hu3DCameraMtx, &sp30, &sp30);
} }
temp_f30 = VECDotProduct(&sp30, &sp54); temp_f30 = VECDotProduct(&sp30, &sp54);
temp_f30 *= 10000.0f; temp_f30 *= 10000.0f;
OSf32tos16(&temp_f30, &sp8); OSf32tos16(&temp_f30, &sp8);
if (sp8 == -10000) { if (sp8 == -10000) {
PSMTXScale(hiliteMtx, 0.0f, 0.0f, 0.0f); MTXScale(hiliteMtx, 0.0f, 0.0f, 0.0f);
} else { } else {
C_VECHalfAngle(&sp30, &sp54, &sp3C); C_VECHalfAngle(&sp30, &sp54, &sp3C);
sp3C.x = -sp3C.x; sp3C.x = -sp3C.x;
sp3C.y = -sp3C.y; sp3C.y = -sp3C.y;
sp3C.z = -sp3C.z; sp3C.z = -sp3C.z;
PSMTXScale(sp60, 1.0f / temp_r28->scale.x, 1.0f / temp_r28->scale.y, 1.0f / temp_r28->scale.z); MTXScale(sp60, 1.0f / temp_r28->scale.x, 1.0f / temp_r28->scale.y, 1.0f / temp_r28->scale.z);
PSMTXConcat(temp_r28->matrix, sp60, spC0); MTXConcat(temp_r28->matrix, sp60, spC0);
spC0[0][3] = spC0[1][3] = spC0[2][3] = 0.0f; spC0[0][3] = spC0[1][3] = spC0[2][3] = 0.0f;
PSMTXInvXpose(spC0, sp90); MTXInvXpose(spC0, sp90);
if (sp8 == 10000) { if (sp8 == 10000) {
PSMTXIdentity(spC0); MTXIdentity(spC0);
} else { } else {
VECCrossProduct(&sp3C, &sp54, &sp48); VECCrossProduct(&sp3C, &sp54, &sp48);
temp_f28 = acosf(VECDotProduct(&sp54, &sp3C)); temp_f28 = acosf(VECDotProduct(&sp54, &sp3C));
PSMTXRotAxisRad(spC0, &sp48, temp_f28); MTXRotAxisRad(spC0, &sp48, temp_f28);
} }
PSMTXConcat(spC0, sp90, sp60); MTXConcat(spC0, sp90, sp60);
PSMTXTrans(spC0, 0.5f, 0.5f, 0.0f); MTXTrans(spC0, 0.5f, 0.5f, 0.0f);
PSMTXConcat(spC0, sp60, hiliteMtx); MTXConcat(spC0, sp60, hiliteMtx);
} }
} }
temp_r24 = temp_r28->object->data.face; temp_r24 = temp_r28->object->data.face;
@ -2250,14 +2250,14 @@ static void ObjDraw(HsfDrawObject *arg0) {
DLBufStartP = Hu3DObjInfoP->dlBuf; DLBufStartP = Hu3DObjInfoP->dlBuf;
DrawData = Hu3DObjInfoP->drawData; DrawData = Hu3DObjInfoP->drawData;
GXLoadPosMtxImm(arg0->matrix, GX_PNMTX0); GXLoadPosMtxImm(arg0->matrix, GX_PNMTX0);
PSMTXInvXpose(arg0->matrix, sp110); MTXInvXpose(arg0->matrix, sp110);
GXLoadNrmMtxImm(sp110, 0); GXLoadNrmMtxImm(sp110, 0);
GXInvalidateVtxCache(); GXInvalidateVtxCache();
if (Hu3DShadowF != 0 && Hu3DShadowCamBit != 0 && (Hu3DObjInfoP->flags & 8)) { if (Hu3DShadowF != 0 && Hu3DShadowCamBit != 0 && (Hu3DObjInfoP->flags & 8)) {
PSMTXInverse(Hu3DCameraMtx, spE0); MTXInverse(Hu3DCameraMtx, spE0);
PSMTXConcat(spE0, arg0->matrix, sp110); MTXConcat(spE0, arg0->matrix, sp110);
PSMTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp140); MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp140);
PSMTXConcat(sp140, sp110, sp110); MTXConcat(sp140, sp110, sp110);
GXLoadTexMtxImm(sp110, GX_TEXMTX9, GX_MTX3x4); GXLoadTexMtxImm(sp110, GX_TEXMTX9, GX_MTX3x4);
var_r22 = 1; var_r22 = 1;
} else { } else {
@ -2265,13 +2265,13 @@ static void ObjDraw(HsfDrawObject *arg0) {
} }
if (arg0->model->unk_02 != 0) { if (arg0->model->unk_02 != 0) {
if (var_r22 == 0) { if (var_r22 == 0) {
PSMTXInverse(Hu3DCameraMtx, spE0); MTXInverse(Hu3DCameraMtx, spE0);
} }
for (i = 0, var_r23 = 1; i < 4; i++, var_r23 <<= 1) { for (i = 0, var_r23 = 1; i < 4; i++, var_r23 <<= 1) {
if (var_r23 & arg0->model->unk_02) { if (var_r23 & arg0->model->unk_02) {
PSMTXConcat(spE0, arg0->matrix, sp110); MTXConcat(spE0, arg0->matrix, sp110);
PSMTXConcat(Hu3DProjection[i].unk_68, Hu3DProjection[i].unk_38, sp140); MTXConcat(Hu3DProjection[i].unk_68, Hu3DProjection[i].unk_38, sp140);
PSMTXConcat(sp140, sp110, sp110); MTXConcat(sp140, sp110, sp110);
GXLoadTexMtxImm(sp110, texMtxTbl[i + 3], GX_MTX3x4); GXLoadTexMtxImm(sp110, texMtxTbl[i + 3], GX_MTX3x4);
} }
} }
@ -2281,32 +2281,32 @@ static void ObjDraw(HsfDrawObject *arg0) {
temp_r24 = &Hu3DGlobalLight[arg0->model->unk_03]; temp_r24 = &Hu3DGlobalLight[arg0->model->unk_03];
sp20 = temp_r24->unk_28; sp20 = temp_r24->unk_28;
if (temp_r24->unk_00 & 0x8000) { if (temp_r24->unk_00 & 0x8000) {
PSMTXMultVecSR(Hu3DCameraMtx, &sp20, &sp20); MTXMultVecSR(Hu3DCameraMtx, &sp20, &sp20);
} }
temp_f30 = VECDotProduct(&sp20, &sp44); temp_f30 = VECDotProduct(&sp20, &sp44);
temp_f30 *= 10000.0f; temp_f30 *= 10000.0f;
OSf32tos16(&temp_f30, &var_r21); OSf32tos16(&temp_f30, &var_r21);
if (var_r21 == -10000) { if (var_r21 == -10000) {
PSMTXScale(hiliteMtx, 0.0f, 0.0f, 0.0f); MTXScale(hiliteMtx, 0.0f, 0.0f, 0.0f);
} else { } else {
C_VECHalfAngle(&sp20, &sp44, &sp2C); C_VECHalfAngle(&sp20, &sp44, &sp2C);
sp2C.x = -sp2C.x; sp2C.x = -sp2C.x;
sp2C.y = -sp2C.y; sp2C.y = -sp2C.y;
sp2C.z = -sp2C.z; sp2C.z = -sp2C.z;
PSMTXScale(sp50, 1.0f / arg0->scale.x, 1.0f / arg0->scale.y, 1.0f / arg0->scale.z); MTXScale(sp50, 1.0f / arg0->scale.x, 1.0f / arg0->scale.y, 1.0f / arg0->scale.z);
PSMTXConcat(arg0->matrix, sp50, spB0); MTXConcat(arg0->matrix, sp50, spB0);
spB0[0][3] = spB0[1][3] = spB0[2][3] = 0.0f; spB0[0][3] = spB0[1][3] = spB0[2][3] = 0.0f;
PSMTXInvXpose(spB0, sp80); MTXInvXpose(spB0, sp80);
if (var_r21 == 10000) { if (var_r21 == 10000) {
PSMTXIdentity(spB0); MTXIdentity(spB0);
} else { } else {
VECCrossProduct(&sp2C, &sp44, &sp38); VECCrossProduct(&sp2C, &sp44, &sp38);
temp_f29 = acosf(VECDotProduct(&sp44, &sp2C)); temp_f29 = acosf(VECDotProduct(&sp44, &sp2C));
PSMTXRotAxisRad(spB0, &sp38, temp_f29); MTXRotAxisRad(spB0, &sp38, temp_f29);
} }
PSMTXConcat(spB0, sp80, sp50); MTXConcat(spB0, sp80, sp50);
PSMTXTrans(spB0, 0.5f, 0.5f, 0.0f); MTXTrans(spB0, 0.5f, 0.5f, 0.0f);
PSMTXConcat(spB0, sp50, hiliteMtx); MTXConcat(spB0, sp50, hiliteMtx);
} }
} }
temp_r26 = arg0->object->data.face; temp_r26 = arg0->object->data.face;
@ -2857,16 +2857,16 @@ void mtxRotCat(Mtx arg0, float arg1, float arg2, float arg3) {
Mtx sp8; Mtx sp8;
if (arg1 != 0.0f) { if (arg1 != 0.0f) {
PSMTXRotRad(sp8, 'X', MTXDegToRad(arg1)); MTXRotRad(sp8, 'X', MTXDegToRad(arg1));
PSMTXConcat(sp8, arg0, arg0); MTXConcat(sp8, arg0, arg0);
} }
if (arg2 != 0.0f) { if (arg2 != 0.0f) {
PSMTXRotRad(sp8, 'Y', MTXDegToRad(arg2)); MTXRotRad(sp8, 'Y', MTXDegToRad(arg2));
PSMTXConcat(sp8, arg0, arg0); MTXConcat(sp8, arg0, arg0);
} }
if (arg3 != 0.0f) { if (arg3 != 0.0f) {
PSMTXRotRad(sp8, 'Z', MTXDegToRad(arg3)); MTXRotRad(sp8, 'Z', MTXDegToRad(arg3));
PSMTXConcat(sp8, arg0, arg0); MTXConcat(sp8, arg0, arg0);
} }
} }
@ -2875,17 +2875,17 @@ void mtxRot(Mtx arg0, float arg1, float arg2, float arg3) {
Mtx sp8; Mtx sp8;
if (arg1 != 0.0f) { if (arg1 != 0.0f) {
PSMTXRotRad(arg0, 'X', MTXDegToRad(arg1)); MTXRotRad(arg0, 'X', MTXDegToRad(arg1));
} else { } else {
PSMTXIdentity(arg0); MTXIdentity(arg0);
} }
if (arg2 != 0.0f) { if (arg2 != 0.0f) {
PSMTXRotRad(sp38, 'Y', MTXDegToRad(arg2)); MTXRotRad(sp38, 'Y', MTXDegToRad(arg2));
PSMTXConcat(sp38, arg0, arg0); MTXConcat(sp38, arg0, arg0);
} }
if (arg3 != 0.0f) { if (arg3 != 0.0f) {
PSMTXRotRad(sp8, 'Z', MTXDegToRad(arg3)); MTXRotRad(sp8, 'Z', MTXDegToRad(arg3));
PSMTXConcat(sp8, arg0, arg0); MTXConcat(sp8, arg0, arg0);
} }
} }
@ -2980,8 +2980,8 @@ void Hu3DModelObjMtxGet(s16 arg0, char *arg1, Mtx arg2) {
temp_r31 = &Hu3DData[arg0]; temp_r31 = &Hu3DData[arg0];
temp_r30 = temp_r31->hsfData; temp_r30 = temp_r31->hsfData;
mtxRot(sp70, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); mtxRot(sp70, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z);
PSMTXScale(spA0, temp_r31->scale.x, temp_r31->scale.y, temp_r31->scale.z); MTXScale(spA0, temp_r31->scale.x, temp_r31->scale.y, temp_r31->scale.z);
PSMTXConcat(sp70, spA0, MTXBuf[0]); MTXConcat(sp70, spA0, MTXBuf[0]);
mtxTransCat(MTXBuf[0], temp_r31->pos.x, temp_r31->pos.y, temp_r31->pos.z); mtxTransCat(MTXBuf[0], temp_r31->pos.x, temp_r31->pos.y, temp_r31->pos.z);
PGMaxPos.x = PGMaxPos.y = PGMaxPos.z = -1000000.0f; PGMaxPos.x = PGMaxPos.y = PGMaxPos.z = -1000000.0f;
PGMinPos.x = PGMinPos.y = PGMinPos.z = 1000000.0f; PGMinPos.x = PGMinPos.y = PGMinPos.z = 1000000.0f;
@ -2997,10 +2997,10 @@ void Hu3DModelObjMtxGet(s16 arg0, char *arg1, Mtx arg2) {
attachMotionF = 0; attachMotionF = 0;
} }
PGObjCall(temp_r31, temp_r30->root); PGObjCall(temp_r31, temp_r30->root);
PSMTXCopy(MTXBuf[MTXIdx - 1], arg2); MTXCopy(MTXBuf[MTXIdx - 1], arg2);
if (PGFinishF == 0 && *PGName != 0) { if (PGFinishF == 0 && *PGName != 0) {
OSReport("Error: Not Found %s for ObjPosGet\n", arg1); OSReport("Error: Not Found %s for ObjPosGet\n", arg1);
PSMTXIdentity(MTXBuf[MTXIdx]); MTXIdentity(MTXBuf[MTXIdx]);
} }
HuMemDirectFree(PGName); HuMemDirectFree(PGName);
} }
@ -3042,10 +3042,10 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) {
var_r30 = &arg1->data.curr; var_r30 = &arg1->data.curr;
} }
mtxRot(spA4, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); mtxRot(spA4, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z);
PSMTXScale(spD4, var_r30->scale.x, var_r30->scale.y, var_r30->scale.z); MTXScale(spD4, var_r30->scale.x, var_r30->scale.y, var_r30->scale.z);
PSMTXConcat(spA4, spD4, spD4); MTXConcat(spA4, spD4, spD4);
mtxTransCat(spD4, var_r30->pos.x, var_r30->pos.y, var_r30->pos.z); mtxTransCat(spD4, var_r30->pos.x, var_r30->pos.y, var_r30->pos.z);
PSMTXConcat(MTXBuf[MTXIdx - 1], spD4, MTXBuf[MTXIdx]); MTXConcat(MTXBuf[MTXIdx - 1], spD4, MTXBuf[MTXIdx]);
MTXIdx++; MTXIdx++;
var_r24 = 1; var_r24 = 1;
} else { } else {
@ -3068,11 +3068,11 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) {
} }
temp_r22 = hookIdx; temp_r22 = hookIdx;
hookIdx = temp_r28->hook; hookIdx = temp_r28->hook;
PSMTXScale(spD4, temp_r31->scale.x, temp_r31->scale.y, temp_r31->scale.z); MTXScale(spD4, temp_r31->scale.x, temp_r31->scale.y, temp_r31->scale.z);
mtxRotCat(spD4, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); mtxRotCat(spD4, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z);
mtxTransCat(spD4, temp_r31->pos.x, temp_r31->pos.y, temp_r31->pos.z); mtxTransCat(spD4, temp_r31->pos.x, temp_r31->pos.y, temp_r31->pos.z);
PSMTXConcat(spD4, temp_r31->unk_F0, spD4); MTXConcat(spD4, temp_r31->unk_F0, spD4);
PSMTXConcat(MTXBuf[MTXIdx - 1], spD4, MTXBuf[MTXIdx]); MTXConcat(MTXBuf[MTXIdx - 1], spD4, MTXBuf[MTXIdx]);
MTXIdx++; MTXIdx++;
PGObjCall(temp_r31, temp_r31->hsfData->root); PGObjCall(temp_r31, temp_r31->hsfData->root);
MTXIdx--; MTXIdx--;
@ -3082,7 +3082,7 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) {
} }
if (*PGName == 0 && arg1->type == 2) { if (*PGName == 0 && arg1->type == 2) {
var_r23 = arg1; var_r23 = arg1;
PSMTXMultVec(MTXBuf[MTXIdx - 1], (Vec*) &var_r23->data.mesh.min, &sp8); MTXMultVec(MTXBuf[MTXIdx - 1], (Vec*) &var_r23->data.mesh.min, &sp8);
if (sp8.x < PGMinPos.x) { if (sp8.x < PGMinPos.x) {
PGMinPos.x = sp8.x; PGMinPos.x = sp8.x;
} }
@ -3101,7 +3101,7 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) {
if (sp8.z > PGMaxPos.z) { if (sp8.z > PGMaxPos.z) {
PGMaxPos.z = sp8.z; PGMaxPos.z = sp8.z;
} }
PSMTXMultVec(MTXBuf[MTXIdx - 1], (Vec*) &var_r23->data.mesh.max, &sp8); MTXMultVec(MTXBuf[MTXIdx - 1], (Vec*) &var_r23->data.mesh.max, &sp8);
if (sp8.x < PGMinPos.x) { if (sp8.x < PGMinPos.x) {
PGMinPos.x = sp8.x; PGMinPos.x = sp8.x;
} }
@ -3143,10 +3143,10 @@ void PGObjReplica(ModelData *arg0, HsfObject *arg1) {
var_r31 = &arg1->data.curr; var_r31 = &arg1->data.curr;
} }
mtxRot(sp188, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); mtxRot(sp188, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z);
PSMTXScale(sp1B8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); MTXScale(sp1B8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z);
PSMTXConcat(sp188, sp1B8, sp1B8); MTXConcat(sp188, sp1B8, sp1B8);
mtxTransCat(sp1B8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); mtxTransCat(sp1B8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z);
PSMTXConcat(MTXBuf[MTXIdx - 1], sp1B8, MTXBuf[MTXIdx]); MTXConcat(MTXBuf[MTXIdx - 1], sp1B8, MTXBuf[MTXIdx]);
MTXIdx++; MTXIdx++;
CancelTRXF = 1; CancelTRXF = 1;
PGObjCall(arg0, arg1->data.replica); PGObjCall(arg0, arg1->data.replica);
@ -3208,7 +3208,7 @@ void Hu3DModelObjDraw(s16 arg0, char *arg1, Mtx arg2) {
sp14.model = &Hu3DData[arg0]; sp14.model = &Hu3DData[arg0];
sp14.object = temp_r3 = Hu3DModelObjPtrGet(arg0, arg1); sp14.object = temp_r3 = Hu3DModelObjPtrGet(arg0, arg1);
sp10 = temp_r3->constData; sp10 = temp_r3->constData;
PSMTXCopy(arg2, sp14.matrix); MTXCopy(arg2, sp14.matrix);
sp14.scale.x = sp14.scale.y = sp14.scale.z = 1.0f; sp14.scale.x = sp14.scale.y = sp14.scale.z = 1.0f;
ObjDraw(&sp14); ObjDraw(&sp14);
} }

View file

@ -441,8 +441,8 @@ void Hu3D2Dto3D(Vec *arg0, s16 arg1, Vec *arg2) {
arg2->y = -(temp_f27 - 0.5) * temp_f31; arg2->y = -(temp_f27 - 0.5) * temp_f31;
arg2->z = -arg0->z; arg2->z = -arg0->z;
C_MTXLookAt(spC, &temp_r31->pos, &temp_r31->up, &temp_r31->target); C_MTXLookAt(spC, &temp_r31->pos, &temp_r31->up, &temp_r31->target);
PSMTXInverse(spC, spC); MTXInverse(spC, spC);
PSMTXMultVec(spC, arg2, arg2); MTXMultVec(spC, arg2, arg2);
} }
void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2) { void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2) {
@ -460,7 +460,7 @@ void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2) {
} }
temp_r31 = &Hu3DCamera[i]; temp_r31 = &Hu3DCamera[i];
C_MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target); C_MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target);
PSMTXMultVec(sp1C, arg0, &sp10); MTXMultVec(sp1C, arg0, &sp10);
temp_f31 = (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * sp10.z * HU_DISP_ASPECT; temp_f31 = (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * sp10.z * HU_DISP_ASPECT;
temp_f30 = (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * sp10.z; temp_f30 = (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * sp10.z;
arg2->x = DISP_HALF_W + sp10.x * (DISP_HALF_W / -temp_f31); arg2->x = DISP_HALF_W + sp10.x * (DISP_HALF_W / -temp_f31);

View file

@ -181,14 +181,14 @@ void Hu3DExec(void) {
for (j = 0; j < 8; j++) { for (j = 0; j < 8; j++) {
if (layerHook[j] != 0) { if (layerHook[j] != 0) {
Hu3DCameraSet(Hu3DCameraNo, Hu3DCameraMtx); Hu3DCameraSet(Hu3DCameraNo, Hu3DCameraMtx);
PSMTXInvXpose(Hu3DCameraMtx, Hu3DCameraMtxXPose); MTXInvXpose(Hu3DCameraMtx, Hu3DCameraMtxXPose);
temp = layerHook[j]; temp = layerHook[j];
temp(j); temp(j);
} }
if (layerNum[j] != 0) { if (layerNum[j] != 0) {
Hu3DDrawPreInit(); Hu3DDrawPreInit();
Hu3DCameraSet(Hu3DCameraNo, Hu3DCameraMtx); Hu3DCameraSet(Hu3DCameraNo, Hu3DCameraMtx);
PSMTXInvXpose(Hu3DCameraMtx, Hu3DCameraMtxXPose); MTXInvXpose(Hu3DCameraMtx, Hu3DCameraMtxXPose);
data = Hu3DData; data = Hu3DData;
for (i = 0, var_r23 = i; i < HU3D_MODEL_MAX; i++, data++) { for (i = 0, var_r23 = i; i < HU3D_MODEL_MAX; i++, data++) {
if (data->hsfData != 0) { if (data->hsfData != 0) {
@ -250,8 +250,8 @@ void Hu3DExec(void) {
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);
PSMTXConcat(Hu3DCameraMtx, sp40, sp10); MTXConcat(Hu3DCameraMtx, sp40, sp10);
PSMTXConcat(sp10, data->unk_F0, sp10); MTXConcat(sp10, data->unk_F0, sp10);
Hu3DDraw(data, sp10, &data->scale); Hu3DDraw(data, sp10, &data->scale);
} }
data->unk_00++; data->unk_00++;
@ -396,7 +396,7 @@ s16 Hu3DModelCreate(void *arg0) {
} }
var_r31->unk_01 = 0; var_r31->unk_01 = 0;
var_r31->unk_00 = (u8) var_r30; var_r31->unk_00 = (u8) var_r30;
PSMTXIdentity(var_r31->unk_F0); MTXIdentity(var_r31->unk_F0);
layerNum[0] += 1; layerNum[0] += 1;
HuMemDCFlush(HEAP_DATA); HuMemDCFlush(HEAP_DATA);
if ((var_r31->hsfData->sceneCnt != 0) && ((var_r31->hsfData->scene->start) || (var_r31->hsfData->scene->end))) { if ((var_r31->hsfData->sceneCnt != 0) && ((var_r31->hsfData->scene->start) || (var_r31->hsfData->scene->end))) {
@ -471,7 +471,7 @@ s16 Hu3DModelLink(s16 arg0) {
var_r31->unk_38[i] = -1; var_r31->unk_38[i] = -1;
} }
var_r31->unk_01 = 0; var_r31->unk_01 = 0;
PSMTXIdentity(var_r31->unk_F0); MTXIdentity(var_r31->unk_F0);
layerNum[0] += 1; layerNum[0] += 1;
return var_r28; return var_r28;
} }
@ -519,7 +519,7 @@ s16 Hu3DHookFuncCreate(ModelHookFunc hook) {
var_r31->unk_38[i] = -1; var_r31->unk_38[i] = -1;
} }
var_r31->unk_01 = 0; var_r31->unk_01 = 0;
PSMTXIdentity(var_r31->unk_F0); MTXIdentity(var_r31->unk_F0);
layerNum[0] += 1; layerNum[0] += 1;
return var_r29; return var_r29;
} }
@ -1828,8 +1828,8 @@ void lightSet(LightData* arg0, s16 arg1, Mtx *arg2, Mtx *arg3, f32 arg8) {
break; break;
} }
if ((arg0->unk_00 & 0x8000) != 0) { if ((arg0->unk_00 & 0x8000) != 0) {
PSMTXMultVec(*arg2, &arg0->unk_28, &sp24); MTXMultVec(*arg2, &arg0->unk_28, &sp24);
PSMTXMultVec(*arg3, &arg0->unk_1C, &sp18); MTXMultVec(*arg3, &arg0->unk_1C, &sp18);
GXInitLightPos(&sp30, sp18.x, sp18.y, sp18.z); GXInitLightPos(&sp30, sp18.x, sp18.y, sp18.z);
} else { } else {
GXInitLightPos(&sp30, arg0->unk_1C.x, arg0->unk_1C.y, arg0->unk_1C.z); GXInitLightPos(&sp30, arg0->unk_1C.x, arg0->unk_1C.y, arg0->unk_1C.z);
@ -1937,7 +1937,7 @@ void Hu3DShadowExec(void) {
test = Hu3DShadowData.unk_02 * Hu3DShadowData.unk_02; test = Hu3DShadowData.unk_02 * Hu3DShadowData.unk_02;
} }
C_MTXLookAt(Hu3DCameraMtx, &Hu3DShadowData.unk_14, &Hu3DShadowData.unk_2C, &Hu3DShadowData.unk_20); C_MTXLookAt(Hu3DCameraMtx, &Hu3DShadowData.unk_14, &Hu3DShadowData.unk_2C, &Hu3DShadowData.unk_20);
PSMTXCopy(Hu3DCameraMtx, Hu3DShadowData.unk_38); MTXCopy(Hu3DCameraMtx, Hu3DShadowData.unk_38);
var_r31 = Hu3DData; var_r31 = Hu3DData;
shadowModelDrawF = 1; shadowModelDrawF = 1;
GXInvalidateTexAll(); GXInvalidateTexAll();
@ -1984,11 +1984,11 @@ void Hu3DShadowExec(void) {
var_r31->attr |= HU3D_ATTR_MOT_EXEC; 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); MTXScale(spB8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z);
PSMTXConcat(sp58, spB8, spB8); MTXConcat(sp58, spB8, spB8);
mtxTransCat(spB8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); mtxTransCat(spB8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z);
PSMTXConcat(Hu3DCameraMtx, spB8, sp88); MTXConcat(Hu3DCameraMtx, spB8, sp88);
PSMTXConcat(sp88, var_r31->unk_F0, sp88); MTXConcat(sp88, var_r31->unk_F0, sp88);
Hu3DDraw(var_r31, sp88, &var_r31->scale); Hu3DDraw(var_r31, sp88, &var_r31->scale);
} }
} }
@ -2018,7 +2018,7 @@ void Hu3DShadowExec(void) {
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1U, GX_TEVPREV); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1U, GX_TEVPREV);
GXSetNumChans(0); GXSetNumChans(0);
PSMTXIdentity(sp88); MTXIdentity(sp88);
GXLoadPosMtxImm(sp88, 0); GXLoadPosMtxImm(sp88, 0);
GXSetZMode(0, GX_ALWAYS, 1); GXSetZMode(0, GX_ALWAYS, 1);
GXSetNumChans(1); GXSetNumChans(1);

View file

@ -843,7 +843,11 @@ void Hu3DSubMotionExec(s16 arg0) {
} }
} }
#ifdef __MWERKS__
__declspec(weak) float *GetObjTRXPtr(HsfObject *arg0, u16 arg1) { __declspec(weak) float *GetObjTRXPtr(HsfObject *arg0, u16 arg1) {
#else
float *GetObjTRXPtr(HsfObject *arg0, u16 arg1) {
#endif
HsfConstData *temp_r31 = arg0->constData; HsfConstData *temp_r31 = arg0->constData;
switch (arg1) { switch (arg1) {
@ -1234,7 +1238,11 @@ float GetLinear(s32 arg0, float arg1[][2], float arg2) {
return arg1[arg0 - 1][1]; return arg1[arg0 - 1][1];
} }
#ifdef __MWERKS__
__declspec(weak) float GetBezier(s32 arg0, HsfTrack *arg1, float arg2) { __declspec(weak) float GetBezier(s32 arg0, HsfTrack *arg1, float arg2) {
#else
float GetBezier(s32 arg0, HsfTrack *arg1, float arg2) {
#endif
float temp_f24; float temp_f24;
float temp_f29; float temp_f29;
float temp_f28; float temp_f28;

View file

@ -94,8 +94,8 @@ void MapWallCheck(float *arg0, float *arg1, HsfMapAttr *arg2) {
MTRAdd.x = AddX; MTRAdd.x = AddX;
MTRAdd.z = AddZ; MTRAdd.z = AddZ;
MTRAdd.y = 0.0f; MTRAdd.y = 0.0f;
PSMTXInvXpose(MapMT, sp10); MTXInvXpose(MapMT, sp10);
PSMTXMultVec(sp10, &MTRAdd, &MTRAdd); MTXMultVec(sp10, &MTRAdd, &MTRAdd);
for (var_r30 = 0; var_r30 < arg2->dataLen;) { for (var_r30 = 0; var_r30 < arg2->dataLen;) {
temp_r29 = *var_r31; temp_r29 = *var_r31;
if (temp_r29 & 0x8000) { if (temp_r29 & 0x8000) {
@ -142,7 +142,7 @@ float MapPos(float arg0, float arg1, float arg2, float arg3, Vec *arg4) {
sp14.x = var_f29; sp14.x = var_f29;
sp14.y = sp10; sp14.y = sp10;
sp14.z = var_f28; sp14.z = var_f28;
PSMTXMultVec(MapMT, &sp14, &sp14); MTXMultVec(MapMT, &sp14, &sp14);
sp10 = sp14.y; sp10 = sp14.y;
if (sp10 > arg1 + arg3 || fabs(arg1 - sp10) > fabs(arg1 - var_f31)) { if (sp10 > arg1 + arg3 || fabs(arg1 - sp10) > fabs(arg1 - var_f31)) {
continue; continue;
@ -151,8 +151,8 @@ float MapPos(float arg0, float arg1, float arg2, float arg3, Vec *arg4) {
arg4->x = FieldVec.x; arg4->x = FieldVec.x;
arg4->y = FieldVec.y; arg4->y = FieldVec.y;
arg4->z = FieldVec.z; arg4->z = FieldVec.z;
PSMTXInvXpose(MapMT, sp20); MTXInvXpose(MapMT, sp20);
PSMTXMultVec(sp20, arg4, arg4); MTXMultVec(sp20, arg4, arg4);
var_f31 = sp14.y; var_f31 = sp14.y;
} }
} }
@ -205,7 +205,7 @@ BOOL PolygonRangeCheck(HsfMapAttr *arg0, float arg1, float arg2, float *arg3, fl
sp20.x = arg1; sp20.x = arg1;
sp20.y = temp_f29; sp20.y = temp_f29;
sp20.z = arg2; sp20.z = arg2;
PSMTXMultVec(MapMT, &sp20, &sp20); MTXMultVec(MapMT, &sp20, &sp20);
if (arg4 > sp20.y && var_f27 > fabs(arg4 - sp20.y)) { if (arg4 > sp20.y && var_f27 > fabs(arg4 - sp20.y)) {
var_f27 = fabs(arg4 - sp20.y); var_f27 = fabs(arg4 - sp20.y);
*arg3 = temp_f29; *arg3 = temp_f29;
@ -224,7 +224,7 @@ BOOL PolygonRangeCheck(HsfMapAttr *arg0, float arg1, float arg2, float *arg3, fl
sp20.x = arg1; sp20.x = arg1;
sp20.y = temp_f29; sp20.y = temp_f29;
sp20.z = arg2; sp20.z = arg2;
PSMTXMultVec(MapMT, &sp20, &sp20); MTXMultVec(MapMT, &sp20, &sp20);
if (arg4 > sp20.y) { if (arg4 > sp20.y) {
if (var_f27 > fabs(arg4 - sp20.y)) { if (var_f27 > fabs(arg4 - sp20.y)) {
var_f27 = fabs(arg4 - sp20.y); var_f27 = fabs(arg4 - sp20.y);
@ -711,7 +711,7 @@ static BOOL GetPolygonCircleMtx(s16 *arg0, Vec *arg1, float *arg2, float *arg3)
spD0[0] = arg2[0] + AddX; spD0[0] = arg2[0] + AddX;
spD0[1] = arg2[1]; spD0[1] = arg2[1];
spD0[2] = arg2[2] + AddZ; spD0[2] = arg2[2] + AddZ;
PSMTXMultVec(MapMT, &spC4, &spC4); MTXMultVec(MapMT, &spC4, &spC4);
DefSetHitFace(spC4.x, spC4.y, spC4.z); DefSetHitFace(spC4.x, spC4.y, spC4.z);
temp_r29 = &HitFaceVec[HitFaceCount]; temp_r29 = &HitFaceVec[HitFaceCount];
MapspaceInlineFunc01(temp_r29, &arg1[arg0[0]], &arg1[arg0[1]], &arg1[arg0[2]]); MapspaceInlineFunc01(temp_r29, &arg1[arg0[0]], &arg1[arg0[1]], &arg1[arg0[2]]);
@ -724,7 +724,7 @@ static BOOL GetPolygonCircleMtx(s16 *arg0, Vec *arg1, float *arg2, float *arg3)
spE0[0] = OldXYZ.x; spE0[0] = OldXYZ.x;
spE0[1] = OldXYZ.y; spE0[1] = OldXYZ.y;
spE0[2] = OldXYZ.z; spE0[2] = OldXYZ.z;
PSMTXMultVec(MapMTR, (Vec*) &spE0, (Vec*) &spE0); MTXMultVec(MapMTR, (Vec*) &spE0, (Vec*) &spE0);
if (MapspaceInlineFunc03(spE0, temp_r31, arg1) < 0) { if (MapspaceInlineFunc03(spE0, temp_r31, arg1) < 0) {
spB8.x = spE0[0] - spD0[0]; spB8.x = spE0[0] - spD0[0];
spB8.y = spE0[1] - spD0[1]; spB8.y = spE0[1] - spD0[1];
@ -742,8 +742,8 @@ static BOOL GetPolygonCircleMtx(s16 *arg0, Vec *arg1, float *arg2, float *arg3)
MTRAdd.x = AddX; MTRAdd.x = AddX;
MTRAdd.z = AddZ; MTRAdd.z = AddZ;
MTRAdd.y = 0.0f; MTRAdd.y = 0.0f;
PSMTXInvXpose(MapMT, spF0); MTXInvXpose(MapMT, spF0);
PSMTXMultVec(spF0, &MTRAdd, &MTRAdd); MTXMultVec(spF0, &MTRAdd, &MTRAdd);
} }
} }
return var_r17; return var_r17;
@ -893,19 +893,19 @@ void AppendAddXZ(float arg0, float arg1, float arg2) {
void CharRotInv(Mtx arg0, Mtx arg1, Vec *arg2, omObjData *arg3) { void CharRotInv(Mtx arg0, Mtx arg1, Vec *arg2, omObjData *arg3) {
Mtx sp8; Mtx sp8;
PSMTXTrans(arg0, arg3->trans.x, arg3->trans.y, arg3->trans.z); MTXTrans(arg0, arg3->trans.x, arg3->trans.y, arg3->trans.z);
if (arg3->rot.z) { if (arg3->rot.z) {
PSMTXRotRad(sp8, 'z', MTXDegToRad(arg3->rot.z)); MTXRotRad(sp8, 'z', MTXDegToRad(arg3->rot.z));
PSMTXConcat(arg0, sp8, arg0); MTXConcat(arg0, sp8, arg0);
} }
if (arg3->rot.y) { if (arg3->rot.y) {
PSMTXRotRad(sp8, 'y', MTXDegToRad(arg3->rot.y)); MTXRotRad(sp8, 'y', MTXDegToRad(arg3->rot.y));
PSMTXConcat(arg0, sp8, arg0); MTXConcat(arg0, sp8, arg0);
} }
if (arg3->rot.x) { if (arg3->rot.x) {
PSMTXRotRad(sp8, 'x', MTXDegToRad(arg3->rot.x)); MTXRotRad(sp8, 'x', MTXDegToRad(arg3->rot.x));
PSMTXConcat(arg0, sp8, arg0); MTXConcat(arg0, sp8, arg0);
} }
PSMTXInverse(arg0, arg1); MTXInverse(arg0, arg1);
PSMTXMultVec(arg1, arg2, arg2); MTXMultVec(arg1, arg2, arg2);
} }

View file

@ -241,15 +241,15 @@ static void THPViewSprFunc(HuSprite *arg0)
sp8.b = arg0->b; sp8.b = arg0->b;
sp8.a = arg0->a; sp8.a = arg0->a;
if (arg0->z_rot != 0.0f) { if (arg0->z_rot != 0.0f) {
PSMTXRotAxisRad(sp18, &spC, MTXDegToRad(arg0->z_rot)); MTXRotAxisRad(sp18, &spC, MTXDegToRad(arg0->z_rot));
PSMTXScale(sp48, arg0->scale_x, arg0->scale_y, 1.0f); MTXScale(sp48, arg0->scale_x, arg0->scale_y, 1.0f);
PSMTXConcat(sp18, sp48, sp48); MTXConcat(sp18, sp48, sp48);
} }
else { else {
PSMTXScale(sp48, arg0->scale_x, arg0->scale_y, 1.0f); MTXScale(sp48, arg0->scale_x, arg0->scale_y, 1.0f);
} }
mtxTransCat(sp48, arg0->x, arg0->y, 0.0f); mtxTransCat(sp48, arg0->x, arg0->y, 0.0f);
PSMTXConcat(*arg0->group_mtx, sp48, sp48); MTXConcat(*arg0->group_mtx, sp48, sp48);
temp_r30 = -((s32)audioTrack.unk00 / 2); temp_r30 = -((s32)audioTrack.unk00 / 2);
temp_r29 = -((s32)audioTrack.unk04 / 2); temp_r29 = -((s32)audioTrack.unk04 / 2);
GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE); GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE);