Port m402Dll and m404Dll to PAL and finish m458Dll (#509)
* Ported m404Dll to PAL and misc changes * Port m402Dll to PAL * Cleaned up some ternaries in m458Dll * Finish m458Dll with the help of Shigure
This commit is contained in:
parent
b347ee8bd0
commit
05a2e87763
18 changed files with 604 additions and 664 deletions
|
|
@ -778,7 +778,7 @@ static void fn_1_2970(UnkFn27A8Struct *arg0, omObjData *arg1, u8 arg2)
|
|||
static void fn_1_2B30(UnkFn27A8Struct *arg0, omObjData *arg1, omObjData *arg2)
|
||||
{
|
||||
arg0->unk50 = 0;
|
||||
arg0->unk20 = (770.0f - arg0->unk1C) / 18.0f;
|
||||
arg0->unk20 = (770.0f - arg0->unk1C) / (REFRESH_RATE * 0.3f);
|
||||
arg0->unk0C = Hu3DMotionTimeGet(arg2->model[0]);
|
||||
Hu3DMotionTimeSet(lbl_1_bss_54[arg0->unk54]->model[0], 0.0f);
|
||||
Hu3DMotionSpeedSet(arg1->model[0], 1.0f);
|
||||
|
|
@ -795,13 +795,13 @@ static u8 fn_1_2DBC(UnkFn27A8Struct *arg0, omObjData *arg1)
|
|||
float var_f29;
|
||||
|
||||
arg0->unk50++;
|
||||
var_f30 = 90.0f * (arg0->unk50 / 18.0f);
|
||||
var_f30 = 90.0f * (arg0->unk50 / (VERSION_NTSC ? 18.0f : 15.000001f));
|
||||
var_f29 = arg0->unk0C * (1.0 - sind(var_f30));
|
||||
Hu3DMotionTimeSet(arg1->model[0], var_f29);
|
||||
fn_1_1D18(arg1->model[0], "motionC-stretch", &sp20);
|
||||
arg0->unk28 = sp20.y - arg0->unk14 + 388.0f;
|
||||
arg0->unk1C += arg0->unk20;
|
||||
if (18.0f < arg0->unk50) {
|
||||
if ((REFRESH_RATE * 0.3f) < arg0->unk50) {
|
||||
arg0->unk20 = (670.0f - arg0->unk1C) / 20.0f;
|
||||
Hu3DModelAttrReset(arg1->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
|
||||
Hu3DMotionSet(arg1->model[0], arg1->motion[2]);
|
||||
|
|
@ -927,7 +927,7 @@ static void fn_1_3204(omObjData *arg0)
|
|||
}
|
||||
}
|
||||
}
|
||||
if (60.0f <= temp_r31->unk30) {
|
||||
if (1.0f * REFRESH_RATE <= temp_r31->unk30) {
|
||||
temp_r31->unk4C = 2017;
|
||||
fn_1_2B30(temp_r31, arg0, temp_r29);
|
||||
}
|
||||
|
|
@ -950,7 +950,7 @@ static void fn_1_3204(omObjData *arg0)
|
|||
case 2017:
|
||||
if (fn_1_2DBC(temp_r31, temp_r29) != 0) {
|
||||
temp_r31->unk4C = 2018;
|
||||
temp_r31->unk50 = 120;
|
||||
temp_r31->unk50 = 2 * REFRESH_RATE;
|
||||
}
|
||||
break;
|
||||
case 2018:
|
||||
|
|
@ -1125,7 +1125,7 @@ static void fn_1_43D8(omObjData *arg0)
|
|||
case 2008:
|
||||
if (fn_1_2DBC(temp_r31, temp_r30) != 0) {
|
||||
temp_r31->unk4C++;
|
||||
temp_r31->unk50 = 120;
|
||||
temp_r31->unk50 = 2 * REFRESH_RATE;
|
||||
}
|
||||
break;
|
||||
case 2009:
|
||||
|
|
@ -1195,7 +1195,7 @@ static void fn_1_43D8(omObjData *arg0)
|
|||
case 2014:
|
||||
if (fn_1_2DBC(temp_r31, temp_r30) != 0) {
|
||||
temp_r31->unk4C++;
|
||||
temp_r31->unk50 = 120;
|
||||
temp_r31->unk50 = 2 * REFRESH_RATE;
|
||||
}
|
||||
break;
|
||||
case 2015:
|
||||
|
|
@ -1665,8 +1665,8 @@ static void fn_1_8218(omObjData *arg0)
|
|||
}
|
||||
if (MGSeqStatGet(lbl_1_bss_1AA) == 0) {
|
||||
arg0->work[0]++;
|
||||
lbl_1_bss_1B0 = 1800;
|
||||
lbl_1_bss_1A8 = MGSeqCreate(1, lbl_1_bss_1B0 / 60, -1, -1);
|
||||
lbl_1_bss_1B0 = 30 * REFRESH_RATE;
|
||||
lbl_1_bss_1A8 = MGSeqCreate(1, lbl_1_bss_1B0 / REFRESH_RATE, -1, -1);
|
||||
lbl_1_bss_1AA = -1;
|
||||
}
|
||||
}
|
||||
|
|
@ -1675,7 +1675,7 @@ static void fn_1_8218(omObjData *arg0)
|
|||
MGSeqParamSet(lbl_1_bss_1A8, 1, (lbl_1_bss_1B0 + REFRESH_RATE - 1) / REFRESH_RATE);
|
||||
lbl_1_bss_1B0--;
|
||||
if (lbl_1_bss_1B0 < 0 || lbl_1_bss_26 >= 0) {
|
||||
lbl_1_bss_1B0 = 1800;
|
||||
lbl_1_bss_1B0 = 30 * REFRESH_RATE;
|
||||
lbl_1_bss_2C = 0.0f;
|
||||
arg0->work[0] = 1007;
|
||||
}
|
||||
|
|
@ -1698,8 +1698,8 @@ static void fn_1_8218(omObjData *arg0)
|
|||
}
|
||||
else {
|
||||
lbl_1_bss_2C += 1.0f;
|
||||
if (90.0f >= lbl_1_bss_2C) {
|
||||
fn_1_13DC(lbl_1_bss_2C / 90.0f, &lbl_1_data_1C);
|
||||
if (1.5f * REFRESH_RATE >= lbl_1_bss_2C) {
|
||||
fn_1_13DC(lbl_1_bss_2C / (1.5f * REFRESH_RATE), &lbl_1_data_1C);
|
||||
}
|
||||
if (MGSeqStatGet(lbl_1_bss_1AA) == 0) {
|
||||
arg0->work[0]++;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include "game/wipe.h"
|
||||
|
||||
#include "string.h"
|
||||
#include "version.h"
|
||||
|
||||
typedef struct UnkM404Struct {
|
||||
s16 unk_00;
|
||||
|
|
@ -281,7 +282,7 @@ s32 fn_1_38C(void)
|
|||
void fn_1_39C(omObjData *object)
|
||||
{
|
||||
fn_1_37C(0);
|
||||
lbl_1_bss_24 = 60;
|
||||
lbl_1_bss_24 = REFRESH_RATE;
|
||||
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
|
||||
object->func = fn_1_400;
|
||||
}
|
||||
|
|
@ -294,7 +295,7 @@ void fn_1_400(omObjData *object)
|
|||
break;
|
||||
}
|
||||
fn_1_37C(1);
|
||||
lbl_1_bss_24 = 180;
|
||||
lbl_1_bss_24 = 3 * REFRESH_RATE;
|
||||
break;
|
||||
case 1:
|
||||
if (--lbl_1_bss_24) {
|
||||
|
|
@ -327,22 +328,22 @@ void fn_1_400(omObjData *object)
|
|||
if (!MGSeqStatGet(lbl_1_bss_C)) {
|
||||
fn_1_37C(5);
|
||||
WipeColorSet(255, 255, 255);
|
||||
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30);
|
||||
lbl_1_bss_24 = 60;
|
||||
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, REFRESH_RATE / 2);
|
||||
lbl_1_bss_24 = REFRESH_RATE;
|
||||
}
|
||||
case 5:
|
||||
if (--lbl_1_bss_24) {
|
||||
break;
|
||||
}
|
||||
fn_1_37C(6);
|
||||
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
|
||||
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, REFRESH_RATE);
|
||||
break;
|
||||
case 6:
|
||||
if (WipeStatGet()) {
|
||||
break;
|
||||
}
|
||||
fn_1_37C(7);
|
||||
lbl_1_bss_24 = 180;
|
||||
lbl_1_bss_24 = 3 * REFRESH_RATE;
|
||||
break;
|
||||
case 7:
|
||||
if (--lbl_1_bss_24) {
|
||||
|
|
@ -356,7 +357,7 @@ void fn_1_400(omObjData *object)
|
|||
else {
|
||||
HuAudSStreamPlay(4);
|
||||
}
|
||||
lbl_1_bss_24 = 210;
|
||||
lbl_1_bss_24 = 3.5 * REFRESH_RATE;
|
||||
break;
|
||||
case 8:
|
||||
break;
|
||||
|
|
@ -740,7 +741,7 @@ void fn_1_1344(omObjData *object)
|
|||
DCFlushRangeNoSync(var_r31->unk_50->bmp->data, (var_r31->unk_50->bmp->pixSize * (var_r31->unk_50->bmp->sizeX * var_r31->unk_50->bmp->sizeY)) / 8);
|
||||
Hu3DMotionOverlaySet(object->model[0], object->motion[2]);
|
||||
object->trans.y = 1500.0f;
|
||||
var_r31->unk_38 = var_r31->unk_02 * 60 / 2;
|
||||
var_r31->unk_38 = var_r31->unk_02 * REFRESH_RATE / 2;
|
||||
CharModelDataClose(var_r31->unk_0C);
|
||||
if (GWPlayerCfg[var_r31->unk_02].iscom == 1) {
|
||||
var_r28 = lbl_1_data_8E8[lbl_1_bss_1C];
|
||||
|
|
@ -782,7 +783,7 @@ void fn_1_1AFC(omObjData *object)
|
|||
}
|
||||
}
|
||||
if (object->trans.y > 0.0f) {
|
||||
var_r31->unk_24 = var_r31->unk_24 - 1.0000001f;
|
||||
var_r31->unk_24 = var_r31->unk_24 - (VERSION_NTSC ? 1.0000001f : 1.2f);
|
||||
object->trans.y += var_r31->unk_24;
|
||||
if (object->trans.y < 0.0f) {
|
||||
object->trans.y = 0.0f;
|
||||
|
|
@ -799,7 +800,7 @@ void fn_1_1AFC(omObjData *object)
|
|||
}
|
||||
if (var_r31->unk_38 == 0) {
|
||||
var_r31->unk_00_field2 = 1;
|
||||
var_r31->unk_38 = 30;
|
||||
var_r31->unk_38 = REFRESH_RATE / 2;
|
||||
return;
|
||||
}
|
||||
var_r31->unk_38--;
|
||||
|
|
@ -950,13 +951,13 @@ void fn_1_3F30(omObjData *object)
|
|||
|
||||
var_r31 = object->data;
|
||||
if (var_r31->unk_5E < (var_r31->unk_6C - 1)) {
|
||||
if ((3.0f + var_r31->unk_64) >= var_r31->unk_68) {
|
||||
var_r31->unk_64 = 3.0f - (var_r31->unk_68 - var_r31->unk_64);
|
||||
if ((180.0f / REFRESH_RATE + var_r31->unk_64) >= var_r31->unk_68) {
|
||||
var_r31->unk_64 = 180.0f / REFRESH_RATE - (var_r31->unk_68 - var_r31->unk_64);
|
||||
var_r31->unk_5E += 3;
|
||||
var_r31->unk_68 = fn_1_2EBC(var_r31->unk_70[var_r31->unk_5E], 1.0f);
|
||||
}
|
||||
else {
|
||||
var_r31->unk_64 += 3.0f;
|
||||
var_r31->unk_64 += 180.0f / REFRESH_RATE;
|
||||
}
|
||||
var_r31->unk_60 = fn_1_3A38(var_r31->unk_70[var_r31->unk_5E], var_r31->unk_60, var_r31->unk_64);
|
||||
var_r30 = var_r31->unk_70[var_r31->unk_5E];
|
||||
|
|
@ -1012,8 +1013,8 @@ void fn_1_44A0(omObjData *object)
|
|||
}
|
||||
if (((var_r31->unk_06 * var_r31->unk_06) + (var_r31->unk_07 * var_r31->unk_07)) > 16.0f) {
|
||||
var_f31 = atan2d(var_r31->unk_06, -var_r31->unk_07);
|
||||
var_r31->unk_20 = 3.0f * sind(var_f31);
|
||||
var_r31->unk_28 = 3.0f * cosd(var_f31);
|
||||
var_r31->unk_20 = (VERSION_NTSC ? 3.0 : 3.5999999046325684) * sind(var_f31);
|
||||
var_r31->unk_28 = (VERSION_NTSC ? 3.0 : 3.5999999046325684) * cosd(var_f31);
|
||||
var_r28 = 1;
|
||||
if (var_r31->unk_20 > 0.0f) {
|
||||
CharModelMotionSpeedSet(var_r31->unk_0C, 0.5f);
|
||||
|
|
@ -1090,7 +1091,7 @@ void fn_1_44A0(omObjData *object)
|
|||
break;
|
||||
case 1:
|
||||
var_r28 = 1;
|
||||
object->trans.x += 4.0000005f;
|
||||
object->trans.x += VERSION_NTSC ? 4.0000005f : 4.8f;
|
||||
if (object->trans.x >= 3200.0f) {
|
||||
var_r31->unk_12++;
|
||||
var_r31->unk_38 = 0x3C;
|
||||
|
|
@ -1468,14 +1469,14 @@ void fn_1_66DC(omObjData *object)
|
|||
case 1:
|
||||
fn_1_648C(0, 1, 1.0 - cosd(90.0f * lbl_1_bss_4));
|
||||
if (lbl_1_bss_4 < 1.0f) {
|
||||
lbl_1_bss_4 += 0.007999999f;
|
||||
lbl_1_bss_4 += VERSION_NTSC ? 0.007999999f : 0.0095999995f;
|
||||
if (lbl_1_bss_4 > 1.0f) {
|
||||
lbl_1_bss_4 = 1.0f;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
Center.x += 2.0000002f;
|
||||
Center.x += VERSION_NTSC ? 2.0000002f : 2.4f;
|
||||
Hu3DShadowData.unk_14.x = 1000.0f + var_r31->pos.x;
|
||||
Hu3DShadowData.unk_20.x = Hu3DShadowData.unk_14.x - 1500.0f;
|
||||
break;
|
||||
|
|
@ -1484,7 +1485,7 @@ void fn_1_66DC(omObjData *object)
|
|||
break;
|
||||
case 7:
|
||||
if (Center.x < 3000.0f) {
|
||||
Center.x += 25.0f;
|
||||
Center.x += VERSION_NTSC ? 25.0f : 30.0f;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -667,20 +667,11 @@ void fn_1_758(omObjData *var_r29)
|
|||
sp1F0 = var_r31->unk_60[var_r26] + var_r31->unk_90[var_r26];
|
||||
sp1EC = var_r31->unk_80[var_r26] + var_r31->unk_B0[var_r26];
|
||||
if (var_r31->unk_F0[var_r26] == 0) {
|
||||
if (var_r31->unk_28 != 0.0f) {
|
||||
if (var_r31->unk_28 < 0.0f ? (sp1F0 < var_r31->unk_20) : (sp1F0 > var_r31->unk_20)) {
|
||||
goto block_169;
|
||||
}
|
||||
}
|
||||
if (var_r31->unk_28 != 0.0f && !(var_r31->unk_28 < 0.0f ? (sp1F0 < var_r31->unk_20) : (sp1F0 > var_r31->unk_20))) { }
|
||||
else {
|
||||
block_169:
|
||||
if (var_r31->unk_2C != 0.0f) {
|
||||
if (var_r31->unk_2C < 0.0f ? (sp1EC < var_r31->unk_24) : (sp1EC > var_r31->unk_24)) {
|
||||
goto block_174;
|
||||
}
|
||||
}
|
||||
if (var_r31->unk_2C != 0.0f
|
||||
&& !(var_r31->unk_2C < 0.0f ? (sp1EC < var_r31->unk_24) : (sp1EC > var_r31->unk_24))) { }
|
||||
else {
|
||||
block_174:
|
||||
var_r31->unk_1C = 0;
|
||||
var_r31->unk_14 = var_r26;
|
||||
var_r25 = var_r26;
|
||||
|
|
@ -935,28 +926,16 @@ void fn_1_758(omObjData *var_r29)
|
|||
}
|
||||
}
|
||||
else if (var_r31->unk_1C != 0) {
|
||||
if (var_r31->unk_28 != 0.0f) {
|
||||
if (!(var_r31->unk_28 < 0.0f ? (var_f30 < var_r31->unk_20) : (var_f30 > var_r31->unk_20))) {
|
||||
var_f29 = var_r31->unk_28 < 0.0f ? (var_f30 > var_r31->unk_20 ? -1 : 0) : (var_f30 < var_r31->unk_20 ? 1 : 0);
|
||||
}
|
||||
else {
|
||||
goto block_368;
|
||||
}
|
||||
if (var_r31->unk_28 != 0.0f && !(var_r31->unk_28 < 0.0f ? (var_f30 < var_r31->unk_20) : (var_f30 > var_r31->unk_20))) {
|
||||
var_f29 = var_r31->unk_28 < 0.0f ? (var_f30 > var_r31->unk_20 ? -1 : 0) : (var_f30 < var_r31->unk_20 ? 1 : 0);
|
||||
}
|
||||
else {
|
||||
block_368:
|
||||
var_f29 = var_r31->unk_58 < -0.1 ? 1.0f : (var_r31->unk_58 > 0.1 ? -1.0f : (-10.0f * var_r31->unk_58));
|
||||
}
|
||||
if (var_r31->unk_2C != 0.0f) {
|
||||
if ((var_r31->unk_2C < 0.0f ? (var_f31 < var_r31->unk_24) : (var_f31 > var_r31->unk_24)) == 0) {
|
||||
var_f28 = var_r31->unk_2C < 0.0f ? (var_f31 > var_r31->unk_24 ? -1 : 0) : (var_f31 < var_r31->unk_24 ? 1 : 0);
|
||||
}
|
||||
else {
|
||||
goto block_390;
|
||||
}
|
||||
if (var_r31->unk_2C != 0.0f && (var_r31->unk_2C < 0.0f ? (var_f31 < var_r31->unk_24) : (var_f31 > var_r31->unk_24)) == 0) {
|
||||
var_f28 = var_r31->unk_2C < 0.0f ? (var_f31 > var_r31->unk_24 ? -1 : 0) : (var_f31 < var_r31->unk_24 ? 1 : 0);
|
||||
}
|
||||
else {
|
||||
block_390:
|
||||
var_f28 = var_r31->unk_5C < -0.1 ? 1.0f : (var_r31->unk_5C > 0.1 ? -1.0f : (-10.0f * var_r31->unk_5C));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#include "game/audio.h"
|
||||
#include "game/chrman.h"
|
||||
#include "game/data.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/esprite.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/hsfdraw.h"
|
||||
|
|
@ -14,9 +15,12 @@
|
|||
#include "game/process.h"
|
||||
#include "game/window.h"
|
||||
#include "game/wipe.h"
|
||||
#include "string.h"
|
||||
|
||||
#include "ext_math.h"
|
||||
|
||||
s32 rand8(void);
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 unk00;
|
||||
/* 0x04 */ s32 unk04;
|
||||
|
|
|
|||
|
|
@ -177,24 +177,8 @@ void fn_1_A0(void)
|
|||
|
||||
s32 lbl_1_data_16C = -1;
|
||||
|
||||
// https://decomp.me/scratch/QQLCN r17 issues
|
||||
void fn_1_4C8(omObjData *object)
|
||||
{
|
||||
Mtx sp1E0;
|
||||
float sp1A8[2];
|
||||
float sp1A0[2];
|
||||
s32 spD0;
|
||||
s32 spCC;
|
||||
s32 spC8;
|
||||
s32 spC4;
|
||||
s32 spC0;
|
||||
float spBC;
|
||||
s32 spB8;
|
||||
ModelData *spB4;
|
||||
float spB0;
|
||||
float spAC;
|
||||
s32 spA8;
|
||||
s32 spA4;
|
||||
float var_f31;
|
||||
float var_f30;
|
||||
float var_f28;
|
||||
|
|
@ -222,6 +206,22 @@ void fn_1_4C8(omObjData *object)
|
|||
s32 var_r18;
|
||||
s32 var_r17;
|
||||
|
||||
Mtx sp1E0;
|
||||
float sp1A8[2];
|
||||
float sp1A0[2];
|
||||
s32 spD0;
|
||||
s32 spCC;
|
||||
s32 spC8;
|
||||
s32 spC4;
|
||||
s32 spC0;
|
||||
float spBC;
|
||||
s32 spB8;
|
||||
ModelData *spB4;
|
||||
float spB0;
|
||||
float spAC;
|
||||
s32 spA8;
|
||||
s32 spA4;
|
||||
|
||||
var_r31 = object->data;
|
||||
var_r27 = (&lbl_1_bss_BC)[1 - object->work[0]]->data;
|
||||
var_f23 = 0.0f;
|
||||
|
|
@ -277,8 +277,7 @@ void fn_1_4C8(omObjData *object)
|
|||
spC4 = 0;
|
||||
spC0 = 0;
|
||||
if (fabs((500.0 * var_r31->unk_3C) - object->trans.x) < 10.0) {
|
||||
var_r17 = object->trans.x < -250.0 ? -1 : (object->trans.x > 250.0 ? 1 : 0);
|
||||
spD0 = var_r17;
|
||||
var_r17 = spD0 = object->trans.x < -250.0 ? -1 : (object->trans.x > 250.0 ? 1 : 0);
|
||||
}
|
||||
else {
|
||||
var_r17 = (object->trans.x < 0.0f ? -1 : 0);
|
||||
|
|
@ -519,7 +518,6 @@ void fn_1_4C8(omObjData *object)
|
|||
espAttrSet(lbl_1_data_8[1], HUSPR_ATTR_DISPOFF);
|
||||
}
|
||||
if (lbl_1_bss_B4 == 0x122) {
|
||||
// TODO remove temporary?
|
||||
spB8 = HuAudFXPlay((var_r31->unk_08 != -1 ? var_r31->unk_08 : 8) + 0x800);
|
||||
HuAudFXFadeOut(spB8, 0x9C4);
|
||||
}
|
||||
|
|
@ -584,7 +582,7 @@ void fn_1_4C8(omObjData *object)
|
|||
}
|
||||
else {
|
||||
var_f20 = 1.0f;
|
||||
var_f21 = 1.0f;
|
||||
var_f21 = 0.5f;
|
||||
}
|
||||
var_r23->scale.x = var_f20 + (var_f21 * sind((float)(var_r31->unk_1C % 180)));
|
||||
var_r23->scale.y = var_r23->scale.z = var_r23->scale.x;
|
||||
|
|
@ -724,16 +722,9 @@ void fn_1_4C8(omObjData *object)
|
|||
if (lbl_1_data_15C >= 6) {
|
||||
spA4 = lbl_1_bss_18;
|
||||
for (spA8 = 0; spA8 < 0x32; spA8++) {
|
||||
loop_344:
|
||||
lbl_1_bss_18 = rand8() % 11;
|
||||
if (lbl_1_bss_18 >= 9) {
|
||||
if (lbl_1_bss_18 == (var_r31->unk_00 + 9)) {
|
||||
goto loop_344;
|
||||
}
|
||||
}
|
||||
if ((lbl_1_bss_18 < 9) && (lbl_1_bss_28C[lbl_1_bss_18].unk_0C == 0)) {
|
||||
goto loop_344;
|
||||
}
|
||||
do {
|
||||
lbl_1_bss_18 = rand8() % 11;
|
||||
} while ((lbl_1_bss_18 >= 9 && lbl_1_bss_18 == var_r31->unk_00 + 9) || (lbl_1_bss_18 < 9 && lbl_1_bss_28C[lbl_1_bss_18].unk_0C == 0));
|
||||
if (spA4 != lbl_1_bss_18) {
|
||||
break;
|
||||
}
|
||||
|
|
@ -958,8 +949,7 @@ void fn_1_350C(omObjData *var_r27)
|
|||
var_f25 *= lbl_1_data_114.unk_04 * 2;
|
||||
var_f26 *= lbl_1_data_114.unk_04 * 2;
|
||||
lbl_1_data_114.unk_00 = !lbl_1_data_114.unk_00;
|
||||
lbl_1_data_114.unk_04 = (lbl_1_data_114.unk_04 > 24) ? 23
|
||||
: (lbl_1_data_114.unk_04 - 1 > 0) ? (lbl_1_data_114.unk_04 - 1) : 0;
|
||||
lbl_1_data_114.unk_04 = (lbl_1_data_114.unk_04 > 24) ? 23 : (lbl_1_data_114.unk_04 - 1 > 0) ? (lbl_1_data_114.unk_04 - 1) : 0;
|
||||
Center.x = 0.0f;
|
||||
Center.y = 100.0f + var_f26;
|
||||
}
|
||||
|
|
@ -1383,122 +1373,61 @@ void fn_1_6314(omObjData *object)
|
|||
{
|
||||
s32 sp10;
|
||||
void *spC;
|
||||
s32 sp8;
|
||||
M458DllWork *var_r31;
|
||||
M458DllWork *work;
|
||||
s32 var_r29;
|
||||
s32 var_r28;
|
||||
s32 var_r27;
|
||||
s32 var_r26;
|
||||
s32 var_r25;
|
||||
s32 var_r24;
|
||||
s32 var_r23;
|
||||
s32 var_r22;
|
||||
s32 var_r21;
|
||||
s32 var_r20;
|
||||
s32 var_r19;
|
||||
s32 var_r18;
|
||||
s32 var_r17;
|
||||
|
||||
var_r31 = object->data;
|
||||
work = object->data;
|
||||
spC = (&lbl_1_bss_BC)[1 - object->work[0]]->data;
|
||||
memset(var_r31, 0, 0x44);
|
||||
var_r31->unk_00 = object->work[0];
|
||||
// probably ternary, but it causes regswaps
|
||||
if (GWPlayerCfg->group == var_r31->unk_00) {
|
||||
var_r28 = 0;
|
||||
}
|
||||
else {
|
||||
if (GWPlayerCfg[1].group == var_r31->unk_00) {
|
||||
var_r27 = 1;
|
||||
}
|
||||
else {
|
||||
if (GWPlayerCfg[2].group == var_r31->unk_00) {
|
||||
var_r26 = 2;
|
||||
}
|
||||
else {
|
||||
if (GWPlayerCfg[3].group == var_r31->unk_00) {
|
||||
var_r25 = 3;
|
||||
}
|
||||
else {
|
||||
var_r25 = 4;
|
||||
}
|
||||
var_r26 = var_r25;
|
||||
}
|
||||
var_r27 = var_r26;
|
||||
}
|
||||
var_r28 = var_r27;
|
||||
}
|
||||
var_r31->unk_04 = var_r28;
|
||||
if (GWPlayerCfg->group == (1 - var_r31->unk_00)) {
|
||||
var_r24 = 0;
|
||||
}
|
||||
else {
|
||||
if (GWPlayerCfg[1].group == (1 - var_r31->unk_00)) {
|
||||
var_r23 = 1;
|
||||
}
|
||||
else {
|
||||
if (GWPlayerCfg[2].group == (1 - var_r31->unk_00)) {
|
||||
var_r22 = 2;
|
||||
}
|
||||
else {
|
||||
if (GWPlayerCfg[3].group == (1 - var_r31->unk_00)) {
|
||||
var_r21 = 3;
|
||||
}
|
||||
else {
|
||||
var_r21 = 4;
|
||||
}
|
||||
var_r22 = var_r21;
|
||||
}
|
||||
var_r23 = var_r22;
|
||||
}
|
||||
var_r24 = var_r23;
|
||||
}
|
||||
sp10 = var_r24;
|
||||
if (var_r31->unk_04 == 4) {
|
||||
memset(work, 0, sizeof(M458DllWork));
|
||||
work->unk_00 = object->work[0];
|
||||
work->unk_04 = GWPlayerCfg->group == work->unk_00
|
||||
? 0
|
||||
: (GWPlayerCfg[1].group == work->unk_00 ? 1 : (GWPlayerCfg[2].group == work->unk_00 ? 2 : (GWPlayerCfg[3].group == work->unk_00 ? 3 : 4)));
|
||||
sp10 = GWPlayerCfg->group == (1 - work->unk_00)
|
||||
? 0
|
||||
: (GWPlayerCfg[1].group == (1 - work->unk_00)
|
||||
? 1
|
||||
: (GWPlayerCfg[2].group == (1 - work->unk_00) ? 2 : (GWPlayerCfg[3].group == (1 - work->unk_00) ? 3 : 4)));
|
||||
if (work->unk_04 == 4) {
|
||||
OSReport("m458:wrong player group\n");
|
||||
var_r31->unk_04 = var_r31->unk_00;
|
||||
work->unk_04 = work->unk_00;
|
||||
}
|
||||
if ((var_r31->unk_00 == 1) && (lbl_1_bss_14 != 0)) {
|
||||
var_r31->unk_08 = -1;
|
||||
var_r31->unk_0C = -1;
|
||||
var_r31->unk_04 = -1;
|
||||
var_r31->unk_10 = 0;
|
||||
if ((work->unk_00 == 1) && (lbl_1_bss_14 != 0)) {
|
||||
work->unk_08 = -1;
|
||||
work->unk_0C = -1;
|
||||
work->unk_04 = -1;
|
||||
work->unk_10 = 0;
|
||||
}
|
||||
else {
|
||||
var_r31->unk_08 = GWPlayerCfg[var_r31->unk_04].character;
|
||||
var_r20 = 1;
|
||||
if ((var_r31->unk_08 != -1) && (GWPlayerCfg[var_r31->unk_04].iscom == 0)) {
|
||||
var_r20 = 0;
|
||||
}
|
||||
var_r31->unk_0C = var_r20 != 0 ? -1 : GWPlayerCfg[var_r31->unk_04].pad_idx;
|
||||
var_r31->unk_10 = var_r31->unk_0C != -1 ? 0 : GWPlayerCfg[var_r31->unk_04].diff;
|
||||
work->unk_08 = GWPlayerCfg[work->unk_04].character;
|
||||
work->unk_0C = ((work->unk_08 == -1) || (GWPlayerCfg[work->unk_04].iscom != 0)) ? -1 : GWPlayerCfg[work->unk_04].pad_idx;
|
||||
work->unk_10 = work->unk_0C != -1 ? 0 : GWPlayerCfg[work->unk_04].diff;
|
||||
}
|
||||
var_r31->unk_18 = 0;
|
||||
var_r31->unk_20 = 3;
|
||||
var_r31->unk_24 = -1;
|
||||
if (var_r31->unk_08 != -1) {
|
||||
object->model[0] = CharModelCreate(var_r31->unk_08, 1);
|
||||
work->unk_18 = 0;
|
||||
work->unk_20 = 3;
|
||||
work->unk_24 = -1;
|
||||
if (work->unk_08 != -1) {
|
||||
object->model[0] = CharModelCreate(work->unk_08, 1);
|
||||
}
|
||||
else {
|
||||
object->model[0] = Hu3DModelCreateFile(0x30007);
|
||||
}
|
||||
omSetTra(object, 0.0f, var_r31->unk_00 == 0 ? 0 : 0x12C, 0.0f);
|
||||
if (var_r31->unk_08 != -1) {
|
||||
omSetTra(object, 0.0f, work->unk_00 == 0 ? 0 : 0x12C, 0.0f);
|
||||
if (work->unk_08 != -1) {
|
||||
omSetSca(object, 2.5f, 2.5f, 2.5f);
|
||||
}
|
||||
else {
|
||||
omSetSca(object, 2.0f, 2.0f, 2.0f);
|
||||
}
|
||||
for (var_r29 = 0; var_r29 < 0xA; var_r29++) {
|
||||
if (var_r31->unk_08 != -1) {
|
||||
object->motion[var_r29]
|
||||
= CharModelMotionCreate(var_r31->unk_08, lbl_1_data_10[var_r29] + (lbl_1_data_38[var_r29] != 0 ? var_r31->unk_08 : 0));
|
||||
if (work->unk_08 != -1) {
|
||||
object->motion[var_r29] = CharModelMotionCreate(work->unk_08, lbl_1_data_10[var_r29] + (lbl_1_data_38[var_r29] != 0 ? work->unk_08 : 0));
|
||||
}
|
||||
else if (lbl_1_data_60[var_r29] != 0) {
|
||||
object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], lbl_1_data_60[var_r29]);
|
||||
}
|
||||
}
|
||||
Hu3DMotionSet(object->model[0], object->motion[var_r31->unk_20]);
|
||||
Hu3DMotionSet(object->model[0], object->motion[work->unk_20]);
|
||||
Hu3DMotionTimeSet(object->model[0], 10.0f);
|
||||
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP);
|
||||
Hu3DModelShadowSet(object->model[0]);
|
||||
|
|
|
|||
|
|
@ -12,6 +12,11 @@
|
|||
#include "REL/modeseldll.h"
|
||||
#include "ext_math.h"
|
||||
|
||||
#ifndef __MWERKS__
|
||||
#include "game/esprite.h"
|
||||
#include "game/thpmain.h"
|
||||
#endif
|
||||
|
||||
s16 lbl_1_data_80[] = { 16, 17, 18, 19, 20, 21 };
|
||||
|
||||
s32 lbl_1_data_8C[] = { DATA_MAKE_NUM(DATADIR_MODESEL, 0x30), DATA_MAKE_NUM(DATADIR_MODESEL, 0x32), DATA_MAKE_NUM(DATADIR_MODESEL, 0x34),
|
||||
|
|
|
|||
|
|
@ -6,17 +6,22 @@
|
|||
#include "game/hsfman.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/memory.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/window.h"
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "math.h"
|
||||
#include "version.h"
|
||||
|
||||
#ifndef __MWERKS__
|
||||
#include "game/gamework.h"
|
||||
#endif
|
||||
|
||||
#define RECORD_TYPE_BOARD 0
|
||||
#define RECORD_TYPE_MG 1
|
||||
|
||||
#define NUM_CHARACTERS 8
|
||||
#define NUM_BOARDS 6
|
||||
#define CHARACTERS_MAX 8
|
||||
#define BOARDS_MAX 6
|
||||
|
||||
#define PLAY_COUNT_NUM_DIGITS 4
|
||||
#define WIN_COUNT_NUM_DIGITS 3
|
||||
|
|
@ -92,15 +97,15 @@ omObjData *OptionRecordCreate(void)
|
|||
object = omAddObjEx(optionObjMan, 1003, 0, 0, 1, NULL);
|
||||
work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(RecordWork), MEMORY_DEFAULT_NUM);
|
||||
object->data = work;
|
||||
for (i = 0; i < NUM_BOARDS; i++) {
|
||||
for (i = 0; i < BOARDS_MAX; i++) {
|
||||
work->boardRecord[i].playCount = GWBoardPlayCountGet(i);
|
||||
work->boardRecord[i].maxStars = GWBoardMaxStarsGet(i);
|
||||
work->boardRecord[i].maxCoins = GWBoardMaxCoinsGet(i);
|
||||
for (character = 0; character < NUM_CHARACTERS; character++) {
|
||||
for (character = 0; character < CHARACTERS_MAX; character++) {
|
||||
work->boardRecord[i].winCount[character] = GWBoardWinCountGet(character, i);
|
||||
}
|
||||
}
|
||||
for (i = 0; i < 6; i++) {
|
||||
for (i = 0; i < BOARDS_MAX; i++) {
|
||||
work->mgRecord[i] = GWMGRecordGet(mgRecordIdxTbl[i]);
|
||||
}
|
||||
work->board = 0;
|
||||
|
|
@ -608,7 +613,7 @@ static void ShowBoard(omObjData *object, s32 board)
|
|||
#if VERSION_NTSC
|
||||
espPosSet(work->sprList[10], 456.0f, 312.0f);
|
||||
#endif
|
||||
for (i = 0; i < NUM_CHARACTERS; i++) {
|
||||
for (i = 0; i < CHARACTERS_MAX; i++) {
|
||||
espPosSet(work->sprList[i + 49], 92.0f + 50.0f * i, 200.0f);
|
||||
for (j = 0; j < WIN_COUNT_NUM_DIGITS; j++) {
|
||||
espPosSet(work->sprList[i * 3 + 23 + j], 80.0f + 50.0f * i + 12.0f * j, 230.0f);
|
||||
|
|
@ -634,7 +639,7 @@ static void ShowBoard(omObjData *object, s32 board)
|
|||
espDispOn(work->sprList[i + 19]);
|
||||
}
|
||||
espDispOn(work->sprList[10]);
|
||||
for (i = 0; i < NUM_CHARACTERS; i++) {
|
||||
for (i = 0; i < CHARACTERS_MAX; i++) {
|
||||
espDispOn(work->sprList[i + 49]);
|
||||
for (j = 0; j < WIN_COUNT_NUM_DIGITS; j++) {
|
||||
espDispOn(work->sprList[i * 3 + 23 + j]);
|
||||
|
|
@ -679,9 +684,9 @@ static void ShowTotal(omObjData *object)
|
|||
s32 j;
|
||||
|
||||
espPosSet(work->sprList[6], 275.0f, 72.0f);
|
||||
for (i = 0; i < NUM_CHARACTERS; i++) {
|
||||
for (i = 0; i < CHARACTERS_MAX; i++) {
|
||||
espPosSet(work->sprList[i + 57], 148.0f + 80.0f * (i % 4), 172.0f + 104.0f * (i / 4));
|
||||
for (j = 0, winCount = 0; j < NUM_BOARDS; j++) {
|
||||
for (j = 0, winCount = 0; j < BOARDS_MAX; j++) {
|
||||
winCount += work->boardRecord[j].winCount[i];
|
||||
}
|
||||
for (j = 0; j < WIN_COUNT_NUM_DIGITS; j++) {
|
||||
|
|
@ -690,7 +695,7 @@ static void ShowTotal(omObjData *object)
|
|||
}
|
||||
}
|
||||
espDispOn(work->sprList[6]);
|
||||
for (i = 0; i < NUM_CHARACTERS; i++) {
|
||||
for (i = 0; i < CHARACTERS_MAX; i++) {
|
||||
espDispOn(work->sprList[i + 57]);
|
||||
for (j = 0; j < 3; j++) {
|
||||
espDispOn(work->sprList[i * 3 + 65 + j]);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
#include "REL/present.h"
|
||||
|
||||
#define NUM_CHARACTERS 8
|
||||
#define CHARACTERS_MAX 8
|
||||
|
||||
#define PRESENT_MDL_MAX 134
|
||||
#define PRESENT_MAX 60
|
||||
|
|
@ -445,7 +445,7 @@ s32 PresentExecModeGet(omObjData *object)
|
|||
return work->execMode;
|
||||
}
|
||||
|
||||
static const s32 roomIdxTbl[NUM_CHARACTERS] = {
|
||||
static const s32 roomIdxTbl[CHARACTERS_MAX] = {
|
||||
ROOM_MARIO,
|
||||
ROOM_LUIGI,
|
||||
ROOM_PEACH,
|
||||
|
|
@ -869,7 +869,7 @@ static BOOL CameraRotationDoneCheck(omObjData *object)
|
|||
return work->timeRot < 1.0f;
|
||||
}
|
||||
|
||||
s32 roomIdxTbl2[NUM_CHARACTERS] = {
|
||||
s32 roomIdxTbl2[CHARACTERS_MAX] = {
|
||||
ROOM_MARIO,
|
||||
ROOM_LUIGI,
|
||||
ROOM_PEACH,
|
||||
|
|
@ -888,7 +888,7 @@ static void ShowHidePresents(omObjData *object)
|
|||
|
||||
Hu3DModelAttrReset(work->object[0]->model[0], HU3D_ATTR_DISPOFF);
|
||||
|
||||
for (character = 0; character < NUM_CHARACTERS; character++) {
|
||||
for (character = 0; character < CHARACTERS_MAX; character++) {
|
||||
s32 j;
|
||||
if (UnlockedPresents(object, roomIdxTbl2[character]) > 0) {
|
||||
Hu3DModelAttrReset(work->object[character + 109]->model[0], HU3D_ATTR_DISPOFF);
|
||||
|
|
@ -916,7 +916,7 @@ static void ShowHidePresents(omObjData *object)
|
|||
if (PresentUnlocked(object, ROOM_TROPHY, 0)) {
|
||||
Hu3DModelAttrReset(work->object[1]->model[0], HU3D_ATTR_DISPOFF);
|
||||
}
|
||||
for (i = 0; i < NUM_CHARACTERS; i++) {
|
||||
for (i = 0; i < CHARACTERS_MAX; i++) {
|
||||
if (PresentUnlocked(object, roomIdxTbl2[i], PRESENT_CONSTELLATION)) {
|
||||
Hu3DModelAttrReset(work->object[i + 126]->model[0], HU3D_ATTR_DISPOFF);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue