Merge branch 'mariopartyrd:main' into main
This commit is contained in:
commit
13a6b310be
137 changed files with 26570 additions and 1112 deletions
|
|
@ -1,5 +1,3 @@
|
|||
#include "dolphin/gx/GXEnum.h"
|
||||
#include "dolphin/gx/GXVert.h"
|
||||
#include "ext_math.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/gamework.h"
|
||||
|
|
@ -22,27 +20,24 @@ typedef struct M421DllWork {
|
|||
u32 unk_00;
|
||||
s32 unk_04;
|
||||
s32 unk_08;
|
||||
u32 unk0C;
|
||||
u32 unk_0C;
|
||||
s32 unk_10;
|
||||
u32 unk_14;
|
||||
u32 unk_18;
|
||||
u32 unk_1C;
|
||||
u32 unk_20;
|
||||
u32 unk24;
|
||||
s32 unk28;
|
||||
u32 unk_28;
|
||||
u32 unk_2C;
|
||||
s32 unk30;
|
||||
char unk34[0x4];
|
||||
u32 unk38;
|
||||
s32 unk3C;
|
||||
s32 unk40;
|
||||
s32 unk44;
|
||||
s32 unk48;
|
||||
s32 unk4C;
|
||||
u32 unk50;
|
||||
s32 unk54[4];
|
||||
s32 unk64[4];
|
||||
} M421DllWork; /* size = 0x74 */ // TODO check the fields, they are copy pasted
|
||||
s32 unk_30[4];
|
||||
s32 unk_40[4];
|
||||
s32 unk_50[4];
|
||||
u32 unk_60;
|
||||
u32 unk_64;
|
||||
u32 unk_68;
|
||||
u32 unk_6C;
|
||||
s32 unk_70;
|
||||
} M421DllWork; /* size = 0x74 */
|
||||
|
||||
void fn_1_10EC(omObjData *object);
|
||||
void fn_1_142C(omObjData *object);
|
||||
|
|
@ -66,6 +61,24 @@ void fn_1_784(omObjData *object);
|
|||
void fn_1_8B8(omObjData *object);
|
||||
void fn_1_CBC(omObjData *object);
|
||||
|
||||
Vec lbl_1_data_0 = { 100.0f, 800.0f, -100.0f };
|
||||
Vec lbl_1_data_C = { 0.3f, -0.8f, 0.3f };
|
||||
Vec lbl_1_data_18 = { 10.0f, 45.0f, 3500.0f };
|
||||
GXColor lbl_1_data_24 = { 0xFF, 0xFF, 0xFF, 0xFF };
|
||||
Vec lbl_1_data_28 = { 50.0f, 150000.0f, 50.0f };
|
||||
Vec lbl_1_data_34 = { 0.0f, 1.0f, 0.0f };
|
||||
Vec lbl_1_data_40 = { 0.0f, 0.0f, 0.0f };
|
||||
Vec lbl_1_data_4C[3] = {
|
||||
{ 0.0f, 200.0f, -50.0f },
|
||||
{ 0.0f, 200.0f, -50.0f },
|
||||
{ 0.0f, 200.0f, -50.0f },
|
||||
};
|
||||
Vec lbl_1_data_70[3] = {
|
||||
{ -37.5f, 0.0f, 1500.0f },
|
||||
{ -37.5f, 0.0f, 1500.0f },
|
||||
{ -37.5f, 0.0f, 2300.0f },
|
||||
};
|
||||
s32 lbl_1_data_94[3] = { 0xF0, 0x1E, 0 };
|
||||
GXColor lbl_1_data_A0 = { 0, 0, 0, 0 };
|
||||
|
||||
Process *lbl_1_bss_28;
|
||||
|
|
@ -74,7 +87,7 @@ omObjData *lbl_1_bss_20;
|
|||
// M421DllCameraStruct
|
||||
omObjData *lbl_1_bss_1C;
|
||||
s16 lbl_1_bss_18;
|
||||
s16 lbl_1_bss_12;
|
||||
s16 lbl_1_bss_12[3];
|
||||
s16 lbl_1_bss_10;
|
||||
s16 lbl_1_bss_E;
|
||||
s16 lbl_1_bss_C;
|
||||
|
|
@ -82,21 +95,92 @@ s32 lbl_1_bss_8;
|
|||
s32 lbl_1_bss_4;
|
||||
s32 lbl_1_bss_0;
|
||||
|
||||
void fn_1_578(omObjData *var_r29)
|
||||
void ObjectSetup(void)
|
||||
{
|
||||
Mtx sp2C;
|
||||
Vec sp20 = { 0.0f, 0.0f, 0.0f };
|
||||
Vec sp14 = { 0.0f, 0.0f, -1.0f };
|
||||
Vec sp8;
|
||||
Process *process;
|
||||
LightData *lightData;
|
||||
|
||||
lbl_1_bss_8 = 0;
|
||||
HuAudSndGrpSet(0x2E);
|
||||
HuAudFXListnerSetEX(&sp20, &sp14, 11200.0f, 4166.6665f, 0.0f, 300.0f, 0.0f);
|
||||
lbl_1_bss_4 = lbl_1_bss_0 = -1;
|
||||
lbl_1_bss_18 = -1;
|
||||
lbl_1_data_28.x = 200.0f;
|
||||
lbl_1_data_28.y = 1200.0f;
|
||||
lbl_1_data_28.z = 160.0f;
|
||||
lbl_1_data_34.x = 0.0f;
|
||||
lbl_1_data_34.y = 1.0f;
|
||||
lbl_1_data_34.z = 0.0f;
|
||||
lbl_1_data_40.x = 0.0f;
|
||||
lbl_1_data_40.y = 0.0f;
|
||||
lbl_1_data_40.z = 0.0f;
|
||||
Hu3DShadowCreate(22.0f, 20.0f, 25000.0f);
|
||||
Hu3DShadowTPLvlSet(0.625f);
|
||||
Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40);
|
||||
lbl_1_bss_12[0] = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24);
|
||||
Hu3DGLightInfinitytSet(lbl_1_bss_12[0]);
|
||||
lightData = &Hu3DGlobalLight[lbl_1_bss_12[0]];
|
||||
lightData->unk_00 |= 0x8000;
|
||||
lbl_1_data_18.x = 1.0f;
|
||||
lbl_1_data_18.y = 0.0f;
|
||||
lbl_1_data_18.z = 4200.0f;
|
||||
sp8.x = sp8.z = 0.0f;
|
||||
sp8.y = lbl_1_data_18.z;
|
||||
mtxRot(sp2C, lbl_1_data_18.x, lbl_1_data_18.y, 0.0f);
|
||||
PSMTXMultVec(sp2C, &sp8, &lbl_1_data_28);
|
||||
Hu3DGLightPosAimSetV(lbl_1_bss_12[0], &lbl_1_data_28, &lbl_1_data_40);
|
||||
Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40);
|
||||
lbl_1_bss_10 = lbl_1_bss_E = lbl_1_bss_C = -1;
|
||||
process = omInitObjMan(0x32, 0x2000);
|
||||
lbl_1_bss_28 = process;
|
||||
omGameSysInit(process);
|
||||
fn_1_3020(process);
|
||||
lbl_1_bss_24 = omAddObjEx(process, 0xA, 0, 0, -1, fn_1_4A0);
|
||||
fn_1_B15C(process);
|
||||
fn_1_4648(process);
|
||||
}
|
||||
|
||||
void fn_1_4A0(omObjData *object)
|
||||
{
|
||||
M421DllWork *work;
|
||||
|
||||
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M421DllWork), MEMORY_DEFAULT_NUM);
|
||||
work = object->data;
|
||||
memset(work, 0, sizeof(M421DllWork));
|
||||
work->unk_00 = 0;
|
||||
work->unk_04 = 0;
|
||||
work->unk_0C = 0;
|
||||
work->unk_10 = 0;
|
||||
work->unk_14 = 0;
|
||||
work->unk_18 = 0;
|
||||
work->unk_28 = 0;
|
||||
work->unk_2C = 0;
|
||||
work->unk_08 = 0;
|
||||
work->unk_64 = 2;
|
||||
work->unk_50[0] = work->unk_50[1] = work->unk_50[2] = work->unk_50[3] = -1;
|
||||
work->unk_68 = 0;
|
||||
work->unk_70 = 0;
|
||||
object->func = fn_1_8B8;
|
||||
}
|
||||
|
||||
void fn_1_578(omObjData *object)
|
||||
{
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
M421DllCameraStruct *var_r31;
|
||||
M421DllWork *var_r30;
|
||||
|
||||
var_r30 = var_r29->data;
|
||||
var_r30->unk_04++;
|
||||
var_r30->unk_10++;
|
||||
var_r30->unk_18++;
|
||||
var_r30->unk_2C++;
|
||||
if ((omSysExitReq != 0) && (var_r30->unk_00 != 5)) {
|
||||
var_r30->unk_00 = 4;
|
||||
fn_1_784(var_r29);
|
||||
M421DllWork *work = object->data;
|
||||
work->unk_04++;
|
||||
work->unk_10++;
|
||||
work->unk_18++;
|
||||
work->unk_2C++;
|
||||
if ((omSysExitReq != 0) && (work->unk_00 != 5)) {
|
||||
work->unk_00 = 4;
|
||||
fn_1_784(object);
|
||||
}
|
||||
var_r31 = fn_1_3B78(1);
|
||||
sp8.x = -(sind(var_r31->unk_28.y) * cosd(var_r31->unk_28.x));
|
||||
|
|
@ -182,7 +266,7 @@ void fn_1_142C(omObjData *object)
|
|||
case 0:
|
||||
work->unk_1C = 0x2D;
|
||||
work->unk_20 = 0x3C;
|
||||
lbl_1_bss_18 = MGSeqCreate(3, 0);
|
||||
lbl_1_bss_10 = MGSeqCreate(3, 0);
|
||||
MGSeqPosSet(lbl_1_bss_10, 320.0f, 240.0f);
|
||||
lbl_1_bss_18 = -1;
|
||||
work->unk_14 = 1;
|
||||
|
|
@ -192,7 +276,7 @@ void fn_1_142C(omObjData *object)
|
|||
if ((lbl_1_bss_4 < 0) && ((MGSeqStatGet(lbl_1_bss_10) & 0x10) != 0)) {
|
||||
lbl_1_bss_4 = HuAudSeqPlay(0x48);
|
||||
}
|
||||
if (MGSeqStatGet(lbl_1_bss_18) == 0 && (work->unk_08 == 0)) {
|
||||
if (MGSeqStatGet(lbl_1_bss_10) == 0 && (work->unk_08 == 0)) {
|
||||
work->unk_14 = 2;
|
||||
work->unk_18 = 0;
|
||||
object->func = fn_1_1850;
|
||||
|
|
@ -201,6 +285,61 @@ void fn_1_142C(omObjData *object)
|
|||
}
|
||||
}
|
||||
|
||||
void fn_1_1850(omObjData *object)
|
||||
{
|
||||
M421DllWork *work = object->data;
|
||||
s32 var_r26 = 0;
|
||||
fn_1_578(object);
|
||||
if (--work->unk_20 == 0) {
|
||||
work->unk_20 = 0x3C;
|
||||
work->unk_1C--;
|
||||
if ((work->unk_1C == 0) && (work->unk_64 == 2)) {
|
||||
work->unk_64 = 1;
|
||||
var_r26 = 1;
|
||||
}
|
||||
}
|
||||
if (lbl_1_bss_18 < 0) {
|
||||
lbl_1_bss_18 = MGSeqCreate(1, work->unk_1C, -1, -1);
|
||||
}
|
||||
MGSeqParamSet(lbl_1_bss_18, 1, work->unk_1C);
|
||||
if (work->unk_64 != 2) {
|
||||
var_r26 = 1;
|
||||
}
|
||||
if (var_r26 != 0) {
|
||||
lbl_1_bss_E = MGSeqCreate(3, 1);
|
||||
MGSeqPosSet(lbl_1_bss_E, 320.0f, 240.0f);
|
||||
HuAudSeqFadeOut(lbl_1_bss_4, 0x64);
|
||||
work->unk_14 = 3;
|
||||
work->unk_18 = 0;
|
||||
if (work->unk_08 == 0) {
|
||||
object->func = fn_1_1C90;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_1C90(omObjData *object)
|
||||
{
|
||||
M421DllWork *work = object->data;
|
||||
s32 var_r25 = 0;
|
||||
if (lbl_1_bss_18 >= 0) {
|
||||
MGSeqParamSet(lbl_1_bss_18, 2, -1);
|
||||
lbl_1_bss_18 = -1;
|
||||
}
|
||||
fn_1_578(object);
|
||||
if (work->unk_14 == 3) {
|
||||
var_r25 = 1;
|
||||
if ((MGSeqStatGet(lbl_1_bss_E) == 0) && (work->unk_68 == 0x1111) && (var_r25 != 0)) {
|
||||
work->unk_14 = 4;
|
||||
work->unk_18 = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
work->unk_14 = 5;
|
||||
work->unk_18 = 0;
|
||||
fn_1_784(object);
|
||||
}
|
||||
}
|
||||
|
||||
omObjFunc fn_1_213C(Process *process, omObjData *object)
|
||||
{
|
||||
M421DllCameraStruct *var_r31;
|
||||
|
|
@ -213,6 +352,121 @@ omObjFunc fn_1_213C(Process *process, omObjData *object)
|
|||
return fn_1_21AC;
|
||||
}
|
||||
|
||||
void fn_1_21AC(omObjData *object)
|
||||
{
|
||||
Vec sp20;
|
||||
float var_f31;
|
||||
M421DllCameraStruct *var_r30;
|
||||
M421DllWork *work;
|
||||
|
||||
work = object->data;
|
||||
fn_1_578(object);
|
||||
work->unk_0C = 1;
|
||||
object->work[0]++;
|
||||
var_f31 = (float)object->work[0] / lbl_1_data_94[object->work[1]];
|
||||
VECSubtract(&lbl_1_data_4C[object->work[1] + 1], &lbl_1_data_4C[object->work[1]], &sp20);
|
||||
VECScale(&sp20, &sp20, var_f31);
|
||||
VECAdd(&lbl_1_data_4C[object->work[1]], &sp20, &sp20);
|
||||
Center.x = sp20.x;
|
||||
Center.y = sp20.y;
|
||||
Center.z = sp20.z;
|
||||
VECSubtract(&lbl_1_data_70[object->work[1] + 1], &lbl_1_data_70[object->work[1]], &sp20);
|
||||
VECScale(&sp20, &sp20, var_f31);
|
||||
VECAdd(&lbl_1_data_70[object->work[1]], &sp20, &sp20);
|
||||
CRot.x = sp20.x;
|
||||
CRot.y = sp20.y;
|
||||
CRot.z = 0.0f;
|
||||
CZoom = sp20.z;
|
||||
var_r30 = fn_1_3CB0(0);
|
||||
var_r30->unk_1C = Center;
|
||||
var_r30->unk_28 = CRot;
|
||||
var_r30->unk_34 = CZoom;
|
||||
var_r30->unk_94++;
|
||||
if (var_r30->unk_94 > 180.0f) {
|
||||
var_r30->unk_84 -= 0.025000002f;
|
||||
if (var_r30->unk_84 < 0.0f) {
|
||||
var_r30->unk_84 = 0.0f;
|
||||
}
|
||||
var_r30->unk_1C.x += var_r30->unk_84 * ((0.02f * frandmod(0x3E8)) - 10.0f);
|
||||
var_r30->unk_1C.y += var_r30->unk_84 * ((0.02f * frandmod(0x3E8)) - 10.0f);
|
||||
var_r30->unk_1C.z += var_r30->unk_84 * ((0.02f * frandmod(0x3E8)) - 10.0f);
|
||||
}
|
||||
if (var_f31 >= 1.0f) {
|
||||
object->work[0] = 0;
|
||||
object->work[1]++;
|
||||
if (lbl_1_data_94[object->work[1]] == 0) {
|
||||
work->unk_0C = 2;
|
||||
fn_1_784(object);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
omObjFunc fn_1_2A28(Process *process, omObjData *object)
|
||||
{
|
||||
M421DllCameraStruct *var_r31;
|
||||
s32 var_r30;
|
||||
M421DllWork *var_r29;
|
||||
s32 var_r28;
|
||||
|
||||
var_r29 = object->data;
|
||||
var_r28 = 1;
|
||||
var_r31 = fn_1_3CB0(0);
|
||||
if (var_r29->unk_64 == 1) {
|
||||
var_r28 = 0;
|
||||
}
|
||||
for (var_r30 = 0; var_r30 < 4; var_r30++) {
|
||||
var_r29->unk_50[var_r30] = -1;
|
||||
if ((var_r29->unk_40[var_r30] == 0) == var_r28) {
|
||||
var_r29->unk_50[var_r30] = var_r29->unk_30[var_r30];
|
||||
}
|
||||
}
|
||||
for (var_r30 = 0; var_r30 < 4; var_r30++) {
|
||||
if (var_r29->unk_50[var_r30] >= 0) {
|
||||
GWPlayerCoinWinAdd(var_r30, 10);
|
||||
}
|
||||
}
|
||||
var_r31->unk_54 = 0.0f;
|
||||
var_r31->unk_58 = 150.0f;
|
||||
var_r31->unk_5C = 0.0f;
|
||||
var_r31->unk_60 = -30.0f;
|
||||
var_r31->unk_64 = 0.0f;
|
||||
var_r31->unk_68 = 1000.0f;
|
||||
var_r31->unk_84 = 0.0f;
|
||||
return fn_1_2BB8;
|
||||
}
|
||||
|
||||
void fn_1_2BB8(omObjData *var_r29)
|
||||
{
|
||||
M421DllCameraStruct *var_r31;
|
||||
M421DllWork *var_r28;
|
||||
|
||||
var_r28 = var_r29->data;
|
||||
var_r31 = fn_1_3CB0(0);
|
||||
fn_1_578(var_r29);
|
||||
var_r31->unk_84 += 0.0016666668f;
|
||||
if (var_r31->unk_84 > 0.1f) {
|
||||
var_r31->unk_84 = 0.1f;
|
||||
}
|
||||
var_r31->unk_1C.y += var_r31->unk_84 * (var_r31->unk_58 - var_r31->unk_1C.y);
|
||||
var_r31->unk_1C.z += var_r31->unk_84 * (var_r31->unk_5C - var_r31->unk_1C.z);
|
||||
var_r31->unk_28.x = fn_1_4478(var_r31->unk_28.x, var_r31->unk_60, var_r31->unk_84);
|
||||
var_r31->unk_34 += var_r31->unk_84 * (var_r31->unk_68 - var_r31->unk_34);
|
||||
if (var_r28->unk_6C == 0x1111) {
|
||||
var_r28->unk_28 = 1;
|
||||
if (lbl_1_bss_0 < 0) {
|
||||
lbl_1_bss_0 = HuAudSStreamPlay(1);
|
||||
}
|
||||
if (lbl_1_bss_C < 0) {
|
||||
lbl_1_bss_C = MGSeqCreate(5, 3, var_r28->unk_50[0], var_r28->unk_50[1], var_r28->unk_50[2], var_r28->unk_50[3]);
|
||||
return;
|
||||
}
|
||||
if ((MGSeqStatGet(lbl_1_bss_C) == 0) && (var_r28->unk_2C >= 210.0f)) {
|
||||
var_r28->unk_28 = 2;
|
||||
fn_1_784(var_r29);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_3020(Process *process)
|
||||
{
|
||||
Hu3DCameraCreate(0x1F);
|
||||
|
|
@ -275,7 +529,7 @@ void fn_1_3334(omObjData *object)
|
|||
fn_1_335C(object);
|
||||
}
|
||||
|
||||
void fn_1_335C(omObjData *var_r28)
|
||||
void fn_1_335C(omObjData *object)
|
||||
{
|
||||
float var_f31;
|
||||
M421DllCameraStruct *var_r31;
|
||||
|
|
@ -289,7 +543,7 @@ void fn_1_335C(omObjData *var_r28)
|
|||
u32 var_r22;
|
||||
u32 var_r21;
|
||||
|
||||
var_r27 = var_r28->data;
|
||||
var_r27 = object->data;
|
||||
{
|
||||
s32 sp40[4] = { 2, 4, 8, 16 };
|
||||
u32 sp30[4];
|
||||
|
|
@ -299,7 +553,7 @@ void fn_1_335C(omObjData *var_r28)
|
|||
var_r24 = 0;
|
||||
var_r26 = 0;
|
||||
memcpy(&var_r27[5], var_r27, 5 * sizeof(M421DllCameraStruct));
|
||||
switch (var_r28->work[1]) {
|
||||
switch (object->work[1]) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
|
|
@ -314,10 +568,10 @@ void fn_1_335C(omObjData *var_r28)
|
|||
break;
|
||||
}
|
||||
if (var_r24 != 0) {
|
||||
Hu3DModelAttrReset(var_r28->model[0], HU3D_ATTR_DISPOFF);
|
||||
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
|
||||
}
|
||||
else {
|
||||
Hu3DModelAttrSet(var_r28->model[0], HU3D_ATTR_DISPOFF);
|
||||
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
|
||||
}
|
||||
for (var_r30 = 0; var_r30 < 4; var_r30++) {
|
||||
sp30[var_r30] = var_r27[var_r30 + 6].unk_04;
|
||||
|
|
@ -509,18 +763,86 @@ void fn_1_3D84(s32 arg0, s32 arg1)
|
|||
}
|
||||
}
|
||||
|
||||
s32 fn_1_3E1C(void)
|
||||
{
|
||||
return ((M421DllWork *)lbl_1_bss_24->data)->unk_00;
|
||||
}
|
||||
|
||||
u32 fn_1_3E34(void)
|
||||
{
|
||||
return ((M421DllWork *)lbl_1_bss_24->data)->unk_0C;
|
||||
}
|
||||
|
||||
u32 fn_1_3E4C(void)
|
||||
{
|
||||
return ((M421DllWork *)lbl_1_bss_24->data)->unk_14;
|
||||
}
|
||||
|
||||
u32 fn_1_3E64(void)
|
||||
{
|
||||
return ((M421DllWork *)lbl_1_bss_24->data)->unk_28;
|
||||
}
|
||||
|
||||
s32 fn_1_3E7C(s32 arg0)
|
||||
{
|
||||
M421DllWork *work = lbl_1_bss_24->data;
|
||||
|
||||
if (work->unk_64 != 2) {
|
||||
return 0;
|
||||
}
|
||||
work->unk_60 |= (1 << ((arg0 & 3) * 4));
|
||||
if (((work->unk_60 & 0x1110) == 0x1110) && (work->unk_64 == 2)) {
|
||||
work->unk_64 = 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
s32 fn_1_3EF8(s32 arg0)
|
||||
{
|
||||
M421DllWork *work = lbl_1_bss_24->data;
|
||||
return work->unk_50[arg0];
|
||||
}
|
||||
|
||||
void fn_1_3F28(s32 arg0, s32 arg1, s32 arg2)
|
||||
{
|
||||
M421DllWork *work = lbl_1_bss_24->data;
|
||||
arg0 &= 3;
|
||||
work->unk_40[arg0] = arg1;
|
||||
work->unk_30[arg0] = arg2;
|
||||
}
|
||||
|
||||
void fn_1_3F68(s32 arg0)
|
||||
{
|
||||
((M421DllWork *)lbl_1_bss_24->data)->unk_68 |= (1 << ((arg0 & 7) * 4));
|
||||
}
|
||||
|
||||
void fn_1_3F98(s32 arg0)
|
||||
{
|
||||
((M421DllWork *)lbl_1_bss_24->data)->unk_6C |= (1 << ((arg0 & 3) * 4));
|
||||
}
|
||||
|
||||
void fn_1_3FC8(s32 arg0)
|
||||
{
|
||||
((M421DllWork *)lbl_1_bss_24->data)->unk_70 |= (1 << ((arg0 & 3) * 4));
|
||||
}
|
||||
|
||||
s32 fn_1_3FF8(void)
|
||||
{
|
||||
return MGSeqStatGet(lbl_1_bss_E) == 0;
|
||||
}
|
||||
|
||||
void fn_1_4030(Vec *sp8, Vec *var_r31)
|
||||
{
|
||||
Vec sp10;
|
||||
float var_f30;
|
||||
float var_f29;
|
||||
|
||||
PSVECSubtract(var_r31, sp8, &sp10);
|
||||
VECSubtract(var_r31, sp8, &sp10);
|
||||
Center = *var_r31;
|
||||
CRot.x = atan2d(sp10.y, sqrtf((sp10.x * sp10.x) + (sp10.z * sp10.z)));
|
||||
CRot.y = atan2d(-sp10.x, -sp10.z);
|
||||
CRot.z = 0.0f;
|
||||
CZoom = PSVECMag(&sp10);
|
||||
CZoom = VECMag(&sp10);
|
||||
}
|
||||
|
||||
void fn_1_4238(float arg8, float arg9, float argA, float argB, float argC, float argD)
|
||||
|
|
@ -535,12 +857,12 @@ void fn_1_4238(float arg8, float arg9, float argA, float argB, float argC, float
|
|||
sp30.x = argB;
|
||||
sp30.y = argC;
|
||||
sp30.z = argD;
|
||||
PSVECSubtract(&sp30, &sp3C, &sp24);
|
||||
VECSubtract(&sp30, &sp3C, &sp24);
|
||||
Center = sp30;
|
||||
CRot.x = atan2d(sp24.y, sqrtf((sp24.x * sp24.x) + (sp24.z * sp24.z)));
|
||||
CRot.y = atan2d(-sp24.x, -sp24.z);
|
||||
CRot.z = 0.0f;
|
||||
CZoom = PSVECMag(&sp24);
|
||||
CZoom = VECMag(&sp24);
|
||||
}
|
||||
|
||||
float fn_1_4478(float arg8, float arg9, float argA)
|
||||
|
|
|
|||
54
src/REL/m421Dll/map.c
Normal file
54
src/REL/m421Dll/map.c
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
#include "game/hsfman.h"
|
||||
#include "game/hsfmotion.h"
|
||||
|
||||
#include "REL/m421Dll.h"
|
||||
|
||||
void fn_1_B1C0(omObjData *object);
|
||||
void fn_1_B398(omObjData *object);
|
||||
|
||||
omObjData *lbl_1_bss_58;
|
||||
|
||||
void fn_1_B15C(Process *work)
|
||||
{
|
||||
omObjData *object = omAddObjEx(work, 0x1E, 6, 0, -1, fn_1_B1C0);
|
||||
lbl_1_bss_58 = object;
|
||||
object->work[0] = 0;
|
||||
}
|
||||
|
||||
void fn_1_B1BC(void) { }
|
||||
|
||||
void fn_1_B1C0(omObjData *var_r31)
|
||||
{
|
||||
omSetTra(var_r31, 0.0f, 0.0f, 0.0f);
|
||||
var_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x02));
|
||||
Hu3DModelLayerSet(var_r31->model[0], 1);
|
||||
Hu3DModelShadowMapSet(var_r31->model[0]);
|
||||
|
||||
var_r31->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x00));
|
||||
Hu3DModelLayerSet(var_r31->model[1], 1);
|
||||
|
||||
var_r31->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x01));
|
||||
Hu3DModelLayerSet(var_r31->model[2], 5);
|
||||
|
||||
var_r31->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x05));
|
||||
Hu3DModelLayerSet(var_r31->model[3], 1);
|
||||
Hu3DModelAttrSet(var_r31->model[3], HU3D_MOTATTR_LOOP);
|
||||
|
||||
var_r31->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x03));
|
||||
Hu3DModelLayerSet(var_r31->model[4], 5);
|
||||
Hu3DModelAttrSet(var_r31->model[4], HU3D_MOTATTR_LOOP);
|
||||
|
||||
var_r31->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x04));
|
||||
Hu3DModelLayerSet(var_r31->model[5], 5);
|
||||
Hu3DMotionTimeSet(var_r31->model[5], 0.0f);
|
||||
var_r31->work[0] = 0;
|
||||
var_r31->work[1] = 0;
|
||||
var_r31->func = fn_1_B398;
|
||||
}
|
||||
|
||||
void fn_1_B398(omObjData *object) { }
|
||||
|
||||
void fn_1_B39C(void)
|
||||
{
|
||||
Hu3DMotionTimeSet(lbl_1_bss_58->model[5], 0.0f);
|
||||
}
|
||||
1828
src/REL/m421Dll/player.c
Normal file
1828
src/REL/m421Dll/player.c
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1988,11 +1988,15 @@ void BoardLast5GfxInit(void)
|
|||
} else {
|
||||
prio = 1400;
|
||||
}
|
||||
#if !VERSION_JPN
|
||||
spr_file = last5GfxSprTbl[i];
|
||||
if(i == 2 && work->is_last && GWLanguageGet() != 0) {
|
||||
spr_file = DATA_MAKE_NUM(DATADIR_BOARD, 98);
|
||||
}
|
||||
BoardSpriteCreate(spr_file, prio, NULL, &work->sprites[i]);
|
||||
#else
|
||||
BoardSpriteCreate(last5GfxSprTbl[i], prio, NULL, &work->sprites[i]);
|
||||
#endif
|
||||
HuSprGrpMemberSet(work->group, i, work->sprites[i]);
|
||||
HuSprAttrSet(work->group, i, HUSPR_ATTR_LINEAR);
|
||||
HuSprPosSet(work->group, i, last5GfxPosTbl[lastF][i][0], last5GfxPosTbl[lastF][i][1]);
|
||||
|
|
@ -2203,4 +2207,4 @@ void BoardDataAsyncWait(s32 status)
|
|||
while(!HuDataGetAsyncStat(status)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -137,6 +137,18 @@ static s32 bowserSuitCharMdlTbl[] = {
|
|||
static s32 bowserSuitMotTbl[] = { DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x19), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x1A),
|
||||
DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x1B), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x1E), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x1F) };
|
||||
|
||||
#if VERSION_JPN
|
||||
static s32 sparkMotTbl[] = {
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x94),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x95),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x96),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x97),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x98),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x99),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x9A),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x9B),
|
||||
};
|
||||
#else
|
||||
static s32 sparkMotTbl[] = {
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x95),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x96),
|
||||
|
|
@ -147,6 +159,7 @@ static s32 sparkMotTbl[] = {
|
|||
DATA_MAKE_NUM(DATADIR_BOARD, 0x9B),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x9C),
|
||||
};
|
||||
#endif
|
||||
|
||||
static s32 boardSparkSfxTbl[] = {
|
||||
0x128,
|
||||
|
|
@ -2499,7 +2512,7 @@ static s32 DoSparkSpace(s32 player, s32 pause_cam)
|
|||
BoardCameraMotionWait();
|
||||
BoardCameraTargetPlayerSet(player);
|
||||
BoardPlayerIdleSet(player);
|
||||
temp_r28 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x74), NULL, 0);
|
||||
temp_r28 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, VERSION_JPN ? 0x73 : 0x74), NULL, 0);
|
||||
BoardModelMotionStart(temp_r28, 0, 0x40000002);
|
||||
BoardModelMotionTimeSet(temp_r28, 30.0f);
|
||||
BoardModelAttrSet(temp_r28, 0x40000002);
|
||||
|
|
@ -2507,7 +2520,7 @@ static s32 DoSparkSpace(s32 player, s32 pause_cam)
|
|||
BoardModelScaleSet(temp_r28, 2.0f, 2.0f, 2.0f);
|
||||
BoardModelVisibilitySet(temp_r28, 0);
|
||||
BoardModelLayerSet(temp_r28, 1);
|
||||
sp2E = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x67), NULL, 0);
|
||||
sp2E = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, VERSION_JPN ? 0x66 : 0x67), NULL, 0);
|
||||
BoardModelLayerSet(sp2E, 1);
|
||||
BoardModelMotionStart(sp2E, 0, 0);
|
||||
HuAudFXPlay(796);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@
|
|||
#include "string.h"
|
||||
#include "version.h"
|
||||
|
||||
|
||||
s16 GwLanguage = 1;
|
||||
s16 GwLanguageSave = -1;
|
||||
|
||||
|
|
@ -55,7 +54,7 @@ void GWInit(void)
|
|||
_InitFlag();
|
||||
GWErase();
|
||||
InitPlayerConfig();
|
||||
#if VERSION_JAP
|
||||
#if VERSION_JPN
|
||||
GWGameStat.language = 0;
|
||||
#elif VERSION_ENG
|
||||
GWGameStat.language = 1;
|
||||
|
|
@ -132,7 +131,7 @@ void GWGameStatReset(void)
|
|||
GameStat *game_stat = &GWGameStatDefault;
|
||||
memset(game_stat, 0, sizeof(GameStat));
|
||||
game_stat->unk_00 = 0;
|
||||
#if VERSION_JAP
|
||||
#if VERSION_JPN
|
||||
game_stat->language = 0;
|
||||
#elif VERSION_ENG
|
||||
game_stat->language = 1;
|
||||
|
|
@ -163,7 +162,7 @@ s32 GWMessDelayGet(void)
|
|||
GWSystem.mess_speed = 1;
|
||||
GWSystem.mess_delay = 32;
|
||||
}
|
||||
#else
|
||||
#else
|
||||
if (GWSystem.mess_delay > 64) {
|
||||
GWSystem.mess_speed = 1;
|
||||
GWSystem.mess_delay = 48;
|
||||
|
|
|
|||
|
|
@ -8,17 +8,8 @@
|
|||
#include "ext_math.h"
|
||||
#include "string.h"
|
||||
|
||||
typedef struct hsf_draw_object {
|
||||
/* 0x00 */ ModelData *model;
|
||||
/* 0x04 */ HsfObject *object;
|
||||
/* 0x08 */ float z;
|
||||
/* 0x0C */ Mtx matrix;
|
||||
/* 0x3C */ Vec scale;
|
||||
} HsfDrawObject;
|
||||
|
||||
static void objCall(ModelData *arg0, HsfObject *arg1);
|
||||
static void objMesh(ModelData *arg0, HsfObject *arg1);
|
||||
static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1);
|
||||
static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1);
|
||||
static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1);
|
||||
static GXTevKColorSel SetKColor(GXTevStageID arg0, u8 arg1);
|
||||
|
|
|
|||
|
|
@ -33,69 +33,55 @@ typedef struct seq_info {
|
|||
s32 time_max;
|
||||
} SeqInfo;
|
||||
|
||||
static s32 SeqInitTimer(SeqWork *work, va_list params);
|
||||
static s32 SeqUpdateTimer(SeqWork *work);
|
||||
|
||||
static s32 SeqInitType2(SeqWork *work, va_list params);
|
||||
static s32 SeqUpdateType2(SeqWork *work);
|
||||
|
||||
static s32 SeqInitMGBasic(SeqWork *work, va_list params);
|
||||
static s32 SeqUpdateMGBasic(SeqWork *work);
|
||||
static s32 SeqInitMGCommon(SeqWork *work, va_list params);
|
||||
static s32 SeqUpdateMG1vs3(SeqWork *work);
|
||||
static s32 SeqUpdateMGBattle(SeqWork *work);
|
||||
static s32 SeqUpdateMGStory(SeqWork *work);
|
||||
static s32 SeqUpdateMG2vs2(SeqWork *work);
|
||||
static s32 SeqUpdateMGBowser(SeqWork *work);
|
||||
|
||||
static s32 SeqInitWin(SeqWork *work, va_list params);
|
||||
static s32 SeqUpdateWin(SeqWork *work);
|
||||
static s32 SeqInitDraw(SeqWork *work, va_list params);
|
||||
static s32 SeqUpdateDraw(SeqWork *work);
|
||||
static s32 SeqInitRecord(SeqWork *work, va_list params);
|
||||
static s32 SeqUpdateRecord(SeqWork *work);
|
||||
|
||||
static s32 SeqInitFlip(SeqWork *work, va_list params);
|
||||
static s32 SeqUpdateFlip(SeqWork *work);
|
||||
|
||||
OverlayID mgSeqOvlPrev = OVL_INVALID;
|
||||
|
||||
static SeqInfo seqInfoTbl[] = {
|
||||
{ NULL, NULL, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 },
|
||||
{ SeqInitTimer, SeqUpdateTimer, HU_DISP_CENTERX + 4, 64.0f, 1.0f, 1.0f, 60 },
|
||||
{ SeqInitType2, SeqUpdateType2, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 0.5f, 0.5f, 60 },
|
||||
{ SeqInitMGBasic, SeqUpdateMGBasic, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ SeqInitMGCommon, SeqUpdateMG1vs3, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ SeqInitWin, SeqUpdateWin, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ SeqInitMGCommon, SeqUpdateMGBattle, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ SeqInitMGCommon, SeqUpdateMGStory, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ SeqInitMGBasic, SeqUpdateMGBasic, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ SeqInitMGCommon, SeqUpdateMG2vs2, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ SeqInitFlip, SeqUpdateFlip, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ SeqInitMGCommon, SeqUpdateMGBowser, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ SeqInitWin, SeqUpdateWin, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ SeqInitDraw, SeqUpdateDraw, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 },
|
||||
{ SeqInitRecord, SeqUpdateRecord, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ MGSeqInitTimer, MGSeqUpdateTimer, HU_DISP_CENTERX + 4, 64.0f, 1.0f, 1.0f, 60 },
|
||||
{ MGSeqInitType2, MGSeqUpdateType2, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 0.5f, 0.5f, 60 },
|
||||
{ MGSeqInitMGBasic, MGSeqUpdateMGBasic, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ MGSeqInitMGCommon, MGSeqUpdateMG1vs3, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ MGSeqInitWin, MGSeqUpdateWin, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ MGSeqInitMGCommon, MGSeqUpdateMGBattle, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ MGSeqInitMGCommon, MGSeqUpdateMGStory, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ MGSeqInitMGBasic, MGSeqUpdateMGBasic, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ MGSeqInitMGCommon, MGSeqUpdateMG2vs2, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ MGSeqInitFlip, MGSeqUpdateFlip, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ MGSeqInitMGCommon, MGSeqUpdateMGBowser, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ MGSeqInitWin, MGSeqUpdateWin, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ MGSeqInitDraw, MGSeqUpdateDraw, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 },
|
||||
{ MGSeqInitRecord, MGSeqUpdateRecord, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 },
|
||||
{ NULL, NULL, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 },
|
||||
{ NULL, NULL, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 },
|
||||
};
|
||||
|
||||
static s32 seqType2SprTbl[6] = { 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
static s16 mgSeqTypeTbl[9] = { MG_SEQ_TYPE_4P, MG_SEQ_TYPE_1VS3, MG_SEQ_TYPE_2VS2, MG_SEQ_TYPE_BOWSER, MG_SEQ_TYPE_BATTLE, MG_SEQ_TYPE_PINBALL,
|
||||
MG_SEQ_TYPE_STORY, MG_SEQ_TYPE_BOWSER, MG_SEQ_TYPE_STORY };
|
||||
static s16 mgSeqTypeTbl[9] = {
|
||||
MG_SEQ_TYPE_4P,
|
||||
MG_SEQ_TYPE_1VS3,
|
||||
MG_SEQ_TYPE_2VS2,
|
||||
MG_SEQ_TYPE_BOWSER,
|
||||
MG_SEQ_TYPE_BATTLE,
|
||||
MG_SEQ_TYPE_PINBALL,
|
||||
MG_SEQ_TYPE_STORY,
|
||||
MG_SEQ_TYPE_BOWSER,
|
||||
MG_SEQ_TYPE_STORY,
|
||||
};
|
||||
|
||||
static char lbl_8012F336[] = { "アイウエオカキク"
|
||||
"ケコサシスセソタ"
|
||||
"チツテトナニヌネ"
|
||||
"ノハヒフヘホマミ"
|
||||
"ムメモヤユヨラリ"
|
||||
"ルレロワヲンァィ"
|
||||
"ゥェォャュョッカ"
|
||||
"キクコサシスセソ"
|
||||
"タチツテトハヒフ"
|
||||
"ヘホハヒフヘホ"
|
||||
"!?ー" };
|
||||
static char lbl_8012F336[] = {
|
||||
"アイウエオカキク"
|
||||
"ケコサシスセソタ"
|
||||
"チツテトナニヌネ"
|
||||
"ノハヒフヘホマミ"
|
||||
"ムメモヤユヨラリ"
|
||||
"ルレロワヲンァィ"
|
||||
"ゥェォャュョッカ"
|
||||
"キクコサシスセソ"
|
||||
"タチツテトハヒフ"
|
||||
"ヘホハヒフヘホ"
|
||||
"!?ー",
|
||||
};
|
||||
|
||||
static char lbl_8012F389[] = "x first\n";
|
||||
static char lbl_8012F392[] = "y first\n";
|
||||
|
|
@ -339,7 +325,7 @@ static void *SeqReadFile(s32 file)
|
|||
return HuAR_ARAMtoMRAMFileRead(file, MEMORY_DEFAULT_NUM, HEAP_DATA);
|
||||
}
|
||||
|
||||
static s32 SeqInitTimer(SeqWork *work, va_list params)
|
||||
s32 MGSeqInitTimer(SeqWork *work, va_list params)
|
||||
{
|
||||
AnimData *spr_anim;
|
||||
s16 sprite;
|
||||
|
|
@ -401,7 +387,7 @@ static s32 SeqInitTimer(SeqWork *work, va_list params)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqUpdateTimer(SeqWork *work)
|
||||
s32 MGSeqUpdateTimer(SeqWork *work)
|
||||
{
|
||||
float scale;
|
||||
float tp_lvl;
|
||||
|
|
@ -558,7 +544,7 @@ static s32 SeqUpdateTimer(SeqWork *work)
|
|||
}
|
||||
}
|
||||
|
||||
static s32 SeqInitType2(SeqWork *work, va_list params)
|
||||
s32 MGSeqInitType2(SeqWork *work, va_list params)
|
||||
{
|
||||
s16 spr_idx;
|
||||
s16 spr_grp;
|
||||
|
|
@ -667,7 +653,7 @@ static s32 SeqInitType2(SeqWork *work, va_list params)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqUpdateType2(SeqWork *work)
|
||||
s32 MGSeqUpdateType2(SeqWork *work)
|
||||
{
|
||||
float tp_lvl;
|
||||
s16 spr_grp;
|
||||
|
|
@ -818,14 +804,20 @@ static AnimData *SeqLoadFontChar(char *str, s16 flags);
|
|||
|
||||
static s32 SeqMakeWord(SeqWork *work, char *str, s16 flags)
|
||||
{
|
||||
s16 len;
|
||||
s16 x;
|
||||
s16 i;
|
||||
s16 grp_idx;
|
||||
#if VERSION_JPN
|
||||
char *str_ptr;
|
||||
AnimData **char_anim;
|
||||
s16 *char_pos;
|
||||
#else
|
||||
AnimData **char_anim;
|
||||
s16 *char_pos;
|
||||
char *str_ptr;
|
||||
#endif
|
||||
s16 spr_grp;
|
||||
s16 i;
|
||||
s16 x;
|
||||
s16 grp_idx;
|
||||
s16 len;
|
||||
AnimData **char_anim;
|
||||
for (grp_idx = 0; grp_idx < 16; grp_idx++) {
|
||||
if (work->spr_grp[grp_idx] == -1) {
|
||||
break;
|
||||
|
|
@ -839,13 +831,27 @@ static s32 SeqMakeWord(SeqWork *work, char *str, s16 flags)
|
|||
str_ptr = str;
|
||||
x = 0;
|
||||
len = 0;
|
||||
while (*str_ptr != 0) {
|
||||
while (*str_ptr != '\0') {
|
||||
#if VERSION_JPN
|
||||
if (*str_ptr == ' ') {
|
||||
x += 56;
|
||||
}
|
||||
else {
|
||||
char_anim[len] = SeqLoadFontChar(str_ptr, flags);
|
||||
if (char_anim[len]) {
|
||||
char_pos[len] = x;
|
||||
x += 56;
|
||||
len++;
|
||||
}
|
||||
}
|
||||
#else
|
||||
char_anim[len] = SeqLoadFontChar(str_ptr, flags);
|
||||
if (char_anim[len]) {
|
||||
char_pos[len] = x;
|
||||
x += 56;
|
||||
len++;
|
||||
}
|
||||
#endif
|
||||
str_ptr++;
|
||||
}
|
||||
work->spr_grp[grp_idx] = spr_grp = HuSprGrpCreate(len);
|
||||
|
|
@ -870,24 +876,26 @@ static AnimData *SeqLoadFontChar(char *str, s16 flags)
|
|||
if (c == 222 || c == 223) {
|
||||
return NULL;
|
||||
}
|
||||
#if !VERSION_JPN
|
||||
if (c == 32) {
|
||||
return HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 10)));
|
||||
}
|
||||
#endif
|
||||
for (id = 0, list = seqFontAlphaTbl; *list != 0; id++, list++) {
|
||||
if (*list == c) {
|
||||
data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + 21);
|
||||
data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JPN ? 20 : 21));
|
||||
return HuSprAnimRead(SeqReadFile(data_num));
|
||||
}
|
||||
}
|
||||
for (id = 0, list = seqFontNumTbl; *list != 0; id++, list++) {
|
||||
if (*list == c) {
|
||||
data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + 11);
|
||||
data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JPN ? 10 : 11));
|
||||
return HuSprAnimRead(SeqReadFile(data_num));
|
||||
}
|
||||
}
|
||||
for (id = 0, list = seqPunctTbl; *list != 0; id++, list++) {
|
||||
if (*list == c) {
|
||||
data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + 154);
|
||||
data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JPN ? 153 : 154));
|
||||
return HuSprAnimRead(SeqReadFile(data_num));
|
||||
}
|
||||
}
|
||||
|
|
@ -908,10 +916,10 @@ static AnimData *SeqLoadFontChar(char *str, s16 flags)
|
|||
while (*list != 0) {
|
||||
if (*list == c) {
|
||||
if (flags & 0x1) {
|
||||
data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + 156);
|
||||
data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JPN ? 155 : 156));
|
||||
}
|
||||
else {
|
||||
data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + 73);
|
||||
data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JPN ? 72 : 73));
|
||||
}
|
||||
return HuSprAnimRead(SeqReadFile(data_num));
|
||||
}
|
||||
|
|
@ -928,14 +936,14 @@ static float ForceDefine480()
|
|||
|
||||
static void SeqPlayStartFX(void);
|
||||
|
||||
static s32 SeqInitMGBasic(SeqWork *work, va_list params)
|
||||
s32 MGSeqInitMGBasic(SeqWork *work, va_list params)
|
||||
{
|
||||
s16 i;
|
||||
s16 word_grp;
|
||||
|
||||
work->state = va_arg(params, int);
|
||||
if (work->state == 2) {
|
||||
return SeqInitDraw(work, params);
|
||||
return MGSeqInitDraw(work, params);
|
||||
}
|
||||
work->type = 0;
|
||||
work->angle = 0;
|
||||
|
|
@ -978,7 +986,7 @@ static s32 SeqInitMGBasic(SeqWork *work, va_list params)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqUpdateMGBasic(SeqWork *work)
|
||||
s32 MGSeqUpdateMGBasic(SeqWork *work)
|
||||
{
|
||||
s16 idx;
|
||||
float scale;
|
||||
|
|
@ -1147,7 +1155,7 @@ static s32 SeqUpdateMGBasic(SeqWork *work)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqInitMGCommon(SeqWork *work, va_list params)
|
||||
s32 MGSeqInitMGCommon(SeqWork *work, va_list params)
|
||||
{
|
||||
s16 i;
|
||||
float tp_lvl;
|
||||
|
|
@ -1156,7 +1164,7 @@ static s32 SeqInitMGCommon(SeqWork *work, va_list params)
|
|||
|
||||
work->state = va_arg(params, int);
|
||||
if (work->state == 2) {
|
||||
return SeqInitDraw(work, params);
|
||||
return MGSeqInitDraw(work, params);
|
||||
}
|
||||
work->type = 0;
|
||||
work->angle = 0;
|
||||
|
|
@ -1226,7 +1234,7 @@ static s32 SeqInitMGCommon(SeqWork *work, va_list params)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqUpdateMGBattle(SeqWork *work)
|
||||
s32 MGSeqUpdateMGBattle(SeqWork *work)
|
||||
{
|
||||
s16 idx;
|
||||
float scale;
|
||||
|
|
@ -1465,7 +1473,7 @@ static s32 SeqUpdateMGBattle(SeqWork *work)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqUpdateMG1vs3(SeqWork *work)
|
||||
s32 MGSeqUpdateMG1vs3(SeqWork *work)
|
||||
{
|
||||
s16 idx;
|
||||
float scale;
|
||||
|
|
@ -1678,7 +1686,7 @@ static s32 SeqUpdateMG1vs3(SeqWork *work)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqUpdateMGStory(SeqWork *work)
|
||||
s32 MGSeqUpdateMGStory(SeqWork *work)
|
||||
{
|
||||
s16 idx;
|
||||
float scale;
|
||||
|
|
@ -1889,7 +1897,7 @@ static s32 SeqUpdateMGStory(SeqWork *work)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqUpdateMG2vs2(SeqWork *work)
|
||||
s32 MGSeqUpdateMG2vs2(SeqWork *work)
|
||||
{
|
||||
s16 idx;
|
||||
float scale;
|
||||
|
|
@ -2062,14 +2070,14 @@ static s32 SeqUpdateMG2vs2(SeqWork *work)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqInitFlip(SeqWork *work, va_list params)
|
||||
s32 MGSeqInitFlip(SeqWork *work, va_list params)
|
||||
{
|
||||
s16 i;
|
||||
s16 word_grp;
|
||||
s16 word_ofs;
|
||||
work->state = va_arg(params, int);
|
||||
if (work->state == 2) {
|
||||
return SeqInitDraw(work, params);
|
||||
return MGSeqInitDraw(work, params);
|
||||
}
|
||||
work->type = 0;
|
||||
work->angle = 0;
|
||||
|
|
@ -2148,7 +2156,7 @@ static s32 SeqInitFlip(SeqWork *work, va_list params)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqUpdateFlip(SeqWork *work)
|
||||
s32 MGSeqUpdateFlip(SeqWork *work)
|
||||
{
|
||||
s16 idx;
|
||||
float scale;
|
||||
|
|
@ -2321,7 +2329,7 @@ static s32 SeqUpdateFlip(SeqWork *work)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqUpdateMGBowser(SeqWork *work)
|
||||
s32 MGSeqUpdateMGBowser(SeqWork *work)
|
||||
{
|
||||
s16 idx;
|
||||
float scale;
|
||||
|
|
@ -2545,7 +2553,7 @@ static s32 SeqUpdateMGBowser(SeqWork *work)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqInitDraw(SeqWork *work, va_list params)
|
||||
s32 MGSeqInitDraw(SeqWork *work, va_list params)
|
||||
{
|
||||
s16 word_grp;
|
||||
work->state = 2;
|
||||
|
|
@ -2576,7 +2584,7 @@ static s32 SeqInitDraw(SeqWork *work, va_list params)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqUpdateDraw(SeqWork *work)
|
||||
s32 MGSeqUpdateDraw(SeqWork *work)
|
||||
{
|
||||
s16 idx;
|
||||
float scale;
|
||||
|
|
@ -2665,22 +2673,54 @@ static s32 SeqUpdateDraw(SeqWork *work)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static char *winCharNameTbl[]
|
||||
= { "マリオ", "MARIO", "ルイージ", "LUIGI", "ピーチ", "PEACH", "ヨッシー", "YOSHI", "ワリオ", "WARIO", "ドンキー", " DK ", "デイジー", "DAISY", "ワルイージ", "WALUIGI",
|
||||
"クッパ", "BOWSER", "キノピオ", "TOAD", "ヘイホー", "SHY GUY", "テレサ", "BOO", "ノコノコ", "KOOPA", "ミニクッパ", VERSION_NTSC ? "KOOPA KID" : "MINI BOWSER", "クリボー", "GOOMBA" };
|
||||
static char *winCharNameTbl[] = {
|
||||
"マリオ",
|
||||
"MARIO",
|
||||
"ルイージ",
|
||||
"LUIGI",
|
||||
"ピーチ",
|
||||
"PEACH",
|
||||
"ヨッシー",
|
||||
"YOSHI",
|
||||
"ワリオ",
|
||||
"WARIO",
|
||||
"ドンキー",
|
||||
VERSION_JPN ? "DK" : " DK ",
|
||||
"デイジー",
|
||||
"DAISY",
|
||||
"ワルイージ",
|
||||
"WALUIGI",
|
||||
"クッパ",
|
||||
"BOWSER",
|
||||
"キノピオ",
|
||||
"TOAD",
|
||||
"ヘイホー",
|
||||
VERSION_JPN ? "HEHOH" : "SHY GUY",
|
||||
"テレサ",
|
||||
VERSION_JPN ? "TERETHA" : "BOO",
|
||||
"ノコノコ",
|
||||
VERSION_JPN ? "NOKONOKO" : "KOOPA",
|
||||
"ミニクッパ",
|
||||
VERSION_NTSC ? (VERSION_ENG ? "KOOPA KID" : "BABYBOWSER") : "MINI BOWSER",
|
||||
"クリボー",
|
||||
VERSION_JPN ? "KURIBO" : "GOOMBA",
|
||||
};
|
||||
|
||||
static char *winWordTbl[] = { "カチ", "WON!", "ハイボク", "LOSE", "ユウショウ!", "CHAMPION!" };
|
||||
|
||||
static s16 winPosOfs[][5][2]
|
||||
= { { { 114, 0 }, { -144, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, { { 0, 35 }, { -144, -35 }, { 144, -35 }, { 0, 0 }, { 0, 0 } },
|
||||
{ { 0, 105 }, { 0, -105 }, { -144, 0 }, { 144, 0 }, { 0, 0 } }, { { 0, 105 }, { -144, -105 }, { 144, -105 }, { -144, 0 }, { 144, 0 } } };
|
||||
static s16 winPosOfs[][5][2] = {
|
||||
{ { VERSION_JPN ? 144 : 114, 0 }, { -144, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } },
|
||||
{ { 0, 35 }, { -144, -35 }, { 144, -35 }, { 0, 0 }, { 0, 0 } },
|
||||
{ { 0, 105 }, { 0, -105 }, { -144, 0 }, { 144, 0 }, { 0, 0 } },
|
||||
{ { 0, 105 }, { -144, -105 }, { 144, -105 }, { -144, 0 }, { 144, 0 } },
|
||||
};
|
||||
|
||||
static s16 winnerNameW[8];
|
||||
|
||||
#define GET_LANG_IDX() ((seqLanguage == 0) ? 0 : 1)
|
||||
#define GET_WIN_KANAF() ((seqLanguage == 0) ? 1 : 0)
|
||||
|
||||
static s32 SeqInitWin(SeqWork *work, va_list params)
|
||||
s32 MGSeqInitWin(SeqWork *work, va_list params)
|
||||
{
|
||||
int win_type = va_arg(params, int);
|
||||
s16 word_idx;
|
||||
|
|
@ -2705,13 +2745,17 @@ static s32 SeqInitWin(SeqWork *work, va_list params)
|
|||
}
|
||||
}
|
||||
word_grp = SeqMakeWord(work, winWordTbl[word_idx], GET_WIN_KANAF());
|
||||
winnerNameW[0] = work->word_len * 50;
|
||||
winnerNameW[0] = work->word_len * (VERSION_JPN ? 56 : 50);
|
||||
#if !VERSION_JPN
|
||||
for (i = 0; i < work->word_len; i++) {
|
||||
HuSprPosSet(work->spr_grp[word_grp], i, 25.0f + ((i * 50) - (0.5f * (work->word_len * 50))), 0.0f);
|
||||
HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR);
|
||||
}
|
||||
#endif
|
||||
num_winners = 0;
|
||||
#if !VERSION_JPN
|
||||
work->win_scale = 1.0f;
|
||||
#endif
|
||||
for (j = 0; j < 4; j++) {
|
||||
int winner = va_arg(params, int);
|
||||
(void)winner; // to match PAL
|
||||
|
|
@ -2719,7 +2763,7 @@ static s32 SeqInitWin(SeqWork *work, va_list params)
|
|||
continue;
|
||||
}
|
||||
word_grp = SeqMakeWord(work, winCharNameTbl[(winner * 2) + GET_LANG_IDX()], 0);
|
||||
#if VERSION_NTSC
|
||||
#if VERSION_ENG
|
||||
if (seqLanguage != 0) {
|
||||
char *name = winCharNameTbl[(winner * 2) + GET_LANG_IDX()];
|
||||
word_w = 0.0f;
|
||||
|
|
@ -2751,21 +2795,19 @@ static s32 SeqInitWin(SeqWork *work, va_list params)
|
|||
}
|
||||
winnerNameW[num_winners + 1] = word_w;
|
||||
}
|
||||
else {
|
||||
if (winner == 7 || winner == 13) {
|
||||
for (i = 0; i < work->word_len; i++) {
|
||||
HuSprPosSet(work->spr_grp[word_grp], i, 26.0f + ((i * 52) - (0.5f * (work->word_len * 52))), 0.0f);
|
||||
HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR);
|
||||
}
|
||||
work->win_scale = 0.8f;
|
||||
winnerNameW[num_winners + 1] = work->word_len * 52;
|
||||
}
|
||||
else {
|
||||
work->win_scale = 1.0f;
|
||||
winnerNameW[num_winners + 1] = work->word_len * 56;
|
||||
else if (winner == 7 || winner == 13) {
|
||||
for (i = 0; i < work->word_len; i++) {
|
||||
HuSprPosSet(work->spr_grp[word_grp], i, 26.0f + ((i * 52) - (0.5f * (work->word_len * 52))), 0.0f);
|
||||
HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR);
|
||||
}
|
||||
work->win_scale = 0.8f;
|
||||
winnerNameW[num_winners + 1] = work->word_len * 52;
|
||||
}
|
||||
#else
|
||||
else {
|
||||
work->win_scale = 1.0f;
|
||||
winnerNameW[num_winners + 1] = work->word_len * 56;
|
||||
}
|
||||
#elif VERSION_PAL
|
||||
for (i = 0; i < work->word_len; i++) {
|
||||
HuSprPosSet(work->spr_grp[word_grp], i, 25.0f + ((i * 50) - (0.5f * (work->word_len * 50))), 0.0f);
|
||||
HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR);
|
||||
|
|
@ -2780,6 +2822,27 @@ static s32 SeqInitWin(SeqWork *work, va_list params)
|
|||
work->win_scale = 0.75f;
|
||||
}
|
||||
winnerNameW[num_winners + 1] = work->word_len * 50;
|
||||
#else
|
||||
if (seqLanguage != 0) {
|
||||
for (i = 0; i < work->word_len; i++) {
|
||||
HuSprPosSet(work->spr_grp[word_grp], i, 25.0f + (i * 50 - (0.5f * (work->word_len * 50))), 0.0f);
|
||||
HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR);
|
||||
}
|
||||
work->win_scale = 0.75f;
|
||||
winnerNameW[num_winners + 1] = work->word_len * 50;
|
||||
}
|
||||
else if (winner == 7 || winner == 13) {
|
||||
for (i = 0; i < work->word_len; i++) {
|
||||
HuSprPosSet(work->spr_grp[word_grp], i, 26.0f + ((i * 52) - (0.5f * (work->word_len * 52))), 0.0f);
|
||||
HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR);
|
||||
}
|
||||
work->win_scale = 0.8f;
|
||||
winnerNameW[num_winners + 1] = work->word_len * 52;
|
||||
}
|
||||
else {
|
||||
work->win_scale = 1.0f;
|
||||
winnerNameW[num_winners + 1] = work->word_len * 56;
|
||||
}
|
||||
#endif
|
||||
num_winners++;
|
||||
}
|
||||
|
|
@ -2792,7 +2855,11 @@ static s32 SeqInitWin(SeqWork *work, va_list params)
|
|||
work->type = 0;
|
||||
for (j = 0; j < num_winners + 1; j++) {
|
||||
if (num_winners == 1) {
|
||||
#if VERSION_JPN
|
||||
word_x = 32 + (winnerNameW[1] + winnerNameW[0]);
|
||||
#else
|
||||
word_x = 32.0f + ((float)winnerNameW[0] + (winnerNameW[1] * work->win_scale));
|
||||
#endif
|
||||
if (j == 0) {
|
||||
word_x = (((HU_DISP_WIDTH - word_x) / 2.0f) + (word_x - (winnerNameW[0] / 2))) - HU_DISP_CENTERX;
|
||||
}
|
||||
|
|
@ -2802,7 +2869,7 @@ static s32 SeqInitWin(SeqWork *work, va_list params)
|
|||
}
|
||||
else {
|
||||
if (abs(winPosOfs[num_winners - 1][j][0]) == 144.0f) {
|
||||
#if VERSION_NTSC
|
||||
#if VERSION_ENG
|
||||
if (winnerNameW[j] + 32 < HU_DISP_CENTERX) {
|
||||
word_x = 176.0f;
|
||||
}
|
||||
|
|
@ -2815,7 +2882,7 @@ static s32 SeqInitWin(SeqWork *work, va_list params)
|
|||
else {
|
||||
word_x = (HU_DISP_WIDTH - word_x) - HU_DISP_CENTERX;
|
||||
}
|
||||
#else
|
||||
#elif VERSION_PAL
|
||||
if (32.0f + (work->win_scale * winnerNameW[j]) < HU_DISP_CENTERX) {
|
||||
word_x = 32.0f + ((winnerNameW[j] * work->win_scale) / 2.0f);
|
||||
}
|
||||
|
|
@ -2825,6 +2892,16 @@ static s32 SeqInitWin(SeqWork *work, va_list params)
|
|||
if (winPosOfs[num_winners - 1][j][0] < 0) {
|
||||
word_x = -word_x;
|
||||
}
|
||||
#else
|
||||
if (32 + winnerNameW[j] < HU_DISP_CENTERX) {
|
||||
word_x = 32 + winnerNameW[j] / 2;
|
||||
}
|
||||
else {
|
||||
word_x = 120.0f;
|
||||
}
|
||||
if (winPosOfs[num_winners - 1][j][0] < 0) {
|
||||
word_x = -word_x;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
|
|
@ -2846,7 +2923,7 @@ static s32 SeqInitWin(SeqWork *work, va_list params)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqUpdateWin(SeqWork *work)
|
||||
s32 MGSeqUpdateWin(SeqWork *work)
|
||||
{
|
||||
s32 idx;
|
||||
float tp_lvl;
|
||||
|
|
@ -2923,15 +3000,15 @@ static s32 SeqUpdateWin(SeqWork *work)
|
|||
else {
|
||||
if (abs(winPosOfs[work->word_len - 2][idx][0]) == 144.0f) {
|
||||
if (winnerNameW[idx] + 32 < HU_DISP_CENTERX) {
|
||||
pos_x = VERSION_NTSC ? 176.0f : winnerNameW[idx] / 2 + 32;
|
||||
pos_x = VERSION_ENG ? 176.0f : winnerNameW[idx] / 2 + 32;
|
||||
}
|
||||
else {
|
||||
pos_x = VERSION_NTSC ? 32.0f + ((winnerNameW[idx] * work->win_scale) / 2.0f) : 128.0f;
|
||||
pos_x = VERSION_ENG ? 32.0f + ((winnerNameW[idx] * work->win_scale) / 2.0f) : 128.0f;
|
||||
}
|
||||
if (winPosOfs[work->word_len - 2][idx][0] < 0) {
|
||||
pos_x = VERSION_NTSC ? -(HU_DISP_CENTERX - pos_x) : -pos_x;
|
||||
pos_x = VERSION_ENG ? -(HU_DISP_CENTERX - pos_x) : -pos_x;
|
||||
}
|
||||
#if VERSION_NTSC
|
||||
#if VERSION_ENG
|
||||
else {
|
||||
pos_x = (HU_DISP_WIDTH - pos_x) - HU_DISP_CENTERX;
|
||||
}
|
||||
|
|
@ -2974,7 +3051,7 @@ static s32 SeqUpdateWin(SeqWork *work)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqInitRecord(SeqWork *work, va_list params)
|
||||
s32 MGSeqInitRecord(SeqWork *work, va_list params)
|
||||
{
|
||||
AnimData *spr_data;
|
||||
s16 spr_grp;
|
||||
|
|
@ -3093,7 +3170,7 @@ static s32 SeqInitRecord(SeqWork *work, va_list params)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static s32 SeqUpdateRecord(SeqWork *work)
|
||||
s32 MGSeqUpdateRecord(SeqWork *work)
|
||||
{
|
||||
s16 group;
|
||||
if (_CheckFlag(FLAG_ID_MAKE(1, 12))) {
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
#include "game/saveload.h"
|
||||
#include "game/data.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/window.h"
|
||||
#include "game/flag.h"
|
||||
#include "game/card.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "data_num/win.h"
|
||||
#include "game/card.h"
|
||||
#include "game/data.h"
|
||||
#include "game/flag.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/window.h"
|
||||
|
||||
#include "string.h"
|
||||
#include "stddef.h"
|
||||
#include "string.h"
|
||||
|
||||
#if VERSION_ENG
|
||||
#define SAVE_WRITE_BEGIN _SetFlag(FLAG_ID_MAKE(3, 0));
|
||||
|
|
@ -19,13 +19,12 @@
|
|||
#define SAVE_WRITE_END
|
||||
#endif
|
||||
|
||||
#define SAVE_GET_PLAYER(player_idx) &saveBuf.buf[((player_idx)*sizeof(PlayerState))+offsetof(SaveBufData, player)]
|
||||
#define SAVE_GET_PLAYER_STORY(player_idx) &saveBuf.buf[((player_idx)*sizeof(PlayerState))+offsetof(SaveBufData, playerStory)]
|
||||
#define SAVE_GET_PLAYER(player_idx) &saveBuf.buf[((player_idx) * sizeof(PlayerState)) + offsetof(SaveBufData, player)]
|
||||
#define SAVE_GET_PLAYER_STORY(player_idx) &saveBuf.buf[((player_idx) * sizeof(PlayerState)) + offsetof(SaveBufData, playerStory)]
|
||||
|
||||
static s16 SLCreateSaveWin(void);
|
||||
static void SLKillSaveWin(void);
|
||||
|
||||
|
||||
extern u8 UnMountCnt;
|
||||
|
||||
CARDFileInfo curFileInfo;
|
||||
|
|
@ -36,27 +35,28 @@ s32 saveExecF;
|
|||
u8 curBoxNo;
|
||||
s16 curSlotNo;
|
||||
|
||||
static u8 commentTbl[2][32] = {
|
||||
"Mario Party 4",
|
||||
"File 0 00/00/0000"
|
||||
};
|
||||
#if VERSION_JPN
|
||||
static u8 commentTbl[2][32] = { "マリオパーティ4", "??月??日 データ?です。" };
|
||||
static u8 sjisNumTbl[20] = "0123456789";
|
||||
#else
|
||||
static u8 commentTbl[2][32] = { "Mario Party 4", "File 0 00/00/0000" };
|
||||
#endif
|
||||
|
||||
char *SaveFileNameTbl[] = {
|
||||
"MARIPA4BOX0",
|
||||
"MARIPA4BOX1",
|
||||
"MARIPA4BOX2"
|
||||
};
|
||||
char *SaveFileNameTbl[] = { "MARIPA4BOX0", "MARIPA4BOX1", "MARIPA4BOX2" };
|
||||
|
||||
s32 SaveEnableF = 1;
|
||||
|
||||
static char *SlotNameTbl[] = {
|
||||
"A",
|
||||
"B"
|
||||
};
|
||||
static char *SlotNameTbl[] = { "A", "B" };
|
||||
|
||||
#if VERSION_JPN
|
||||
static char *slotIconMesTbl[] = { "\x0E\x16", "\x0E\x17" };
|
||||
static u8 sjisSpace[] = " ";
|
||||
#endif
|
||||
|
||||
static s32 saveMessWin = -1;
|
||||
|
||||
s32 SLFileOpen(char *fileName) {
|
||||
s32 SLFileOpen(char *fileName)
|
||||
{
|
||||
s32 result;
|
||||
|
||||
if (SaveEnableF == 0) {
|
||||
|
|
@ -64,7 +64,7 @@ s32 SLFileOpen(char *fileName) {
|
|||
}
|
||||
while (1) {
|
||||
result = SLCardMount(curSlotNo);
|
||||
if(result < 0) {
|
||||
if (result < 0) {
|
||||
return result;
|
||||
}
|
||||
result = HuCardOpen(curSlotNo, fileName, &curFileInfo);
|
||||
|
|
@ -96,16 +96,19 @@ s32 SLFileOpen(char *fileName) {
|
|||
if (result != 0) {
|
||||
return result;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
return CARD_RESULT_NOFILE;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
return CARD_RESULT_READY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s32 SLFileCreate(char *fileName, u32 size, void *addr) {
|
||||
s32 SLFileCreate(char *fileName, u32 size, void *addr)
|
||||
{
|
||||
float winSize[2];
|
||||
u32 byteNotUsed;
|
||||
u32 filesNotUsed;
|
||||
|
|
@ -184,7 +187,8 @@ s32 SLFileCreate(char *fileName, u32 size, void *addr) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
s32 SLFileWrite(s32 length, void *addr) {
|
||||
s32 SLFileWrite(s32 length, void *addr)
|
||||
{
|
||||
float winSize[2];
|
||||
s32 window;
|
||||
s32 result;
|
||||
|
|
@ -210,7 +214,8 @@ s32 SLFileWrite(s32 length, void *addr) {
|
|||
return result;
|
||||
}
|
||||
|
||||
s32 SLFileRead(s32 length, void *addr) {
|
||||
s32 SLFileRead(s32 length, void *addr)
|
||||
{
|
||||
s32 result;
|
||||
|
||||
if (SaveEnableF == 0) {
|
||||
|
|
@ -219,13 +224,15 @@ s32 SLFileRead(s32 length, void *addr) {
|
|||
result = HuCardRead(&curFileInfo, addr, length, 0);
|
||||
if (result == CARD_RESULT_NOCARD) {
|
||||
SLMessOut(0);
|
||||
} else if (result < 0) {
|
||||
}
|
||||
else if (result < 0) {
|
||||
SLMessOut(1);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
s32 SLFileClose(void) {
|
||||
s32 SLFileClose(void)
|
||||
{
|
||||
s32 result;
|
||||
|
||||
if (SaveEnableF == 0) {
|
||||
|
|
@ -235,15 +242,18 @@ s32 SLFileClose(void) {
|
|||
return result;
|
||||
}
|
||||
|
||||
void SLCurSlotNoSet(s16 slotno) {
|
||||
void SLCurSlotNoSet(s16 slotno)
|
||||
{
|
||||
curSlotNo = slotno;
|
||||
}
|
||||
|
||||
void SLCurBoxNoSet(s16 boxno) {
|
||||
void SLCurBoxNoSet(s16 boxno)
|
||||
{
|
||||
curBoxNo = boxno;
|
||||
}
|
||||
|
||||
void SLSaveFlagSet(s32 flag) {
|
||||
void SLSaveFlagSet(s32 flag)
|
||||
{
|
||||
if (flag == 0) {
|
||||
GWGameStat.party_continue = 0;
|
||||
GWGameStat.story_continue = 0;
|
||||
|
|
@ -251,11 +261,13 @@ void SLSaveFlagSet(s32 flag) {
|
|||
SaveEnableF = flag;
|
||||
}
|
||||
|
||||
s32 SLSaveFlagGet(void) {
|
||||
s32 SLSaveFlagGet(void)
|
||||
{
|
||||
return SaveEnableF;
|
||||
}
|
||||
|
||||
void SLSaveDataMake(s32 erase, OSTime *time) {
|
||||
void SLSaveDataMake(s32 erase, OSTime *time)
|
||||
{
|
||||
AnimData *anim_data;
|
||||
u8 *buf;
|
||||
s32 i;
|
||||
|
|
@ -270,24 +282,25 @@ void SLSaveDataMake(s32 erase, OSTime *time) {
|
|||
buf[i] = (&commentTbl[0][0])[i];
|
||||
}
|
||||
for (i = 0; i < 0x20; i++) {
|
||||
(&buf[0x20])[i] = (&commentTbl[0][0])[i+32];
|
||||
(&buf[0x20])[i] = (&commentTbl[0][0])[i + 32];
|
||||
}
|
||||
anim_data = HuSprAnimReadFile(WIN_CARD_BANNER_ANM);
|
||||
memcpy(buf + offsetof(SaveBufData, banner), anim_data->bmp->data, CARD_BANNER_WIDTH*CARD_BANNER_HEIGHT);
|
||||
memcpy(buf + offsetof(SaveBufData, banner), anim_data->bmp->data, CARD_BANNER_WIDTH * CARD_BANNER_HEIGHT);
|
||||
memcpy(buf + offsetof(SaveBufData, bannerTlut), anim_data->bmp->palData, 512);
|
||||
anim_data = HuSprAnimReadFile(curBoxNo + WIN_CARD_BOX1_ICON_ANM);
|
||||
memcpy(buf + offsetof(SaveBufData, icon), anim_data->bmp->data, CARD_ICON_WIDTH*CARD_ICON_HEIGHT*4);
|
||||
memcpy(buf + offsetof(SaveBufData, icon), anim_data->bmp->data, CARD_ICON_WIDTH * CARD_ICON_HEIGHT * 4);
|
||||
memcpy(buf + offsetof(SaveBufData, iconTlut), anim_data->bmp->palData, 512);
|
||||
SLSaveDataInfoSet(time);
|
||||
}
|
||||
|
||||
void SLSaveDataInfoSet(OSTime *time) {
|
||||
void SLSaveDataInfoSet(OSTime *time)
|
||||
{
|
||||
s16 year;
|
||||
s16 digit;
|
||||
OSCalendarTime sp8;
|
||||
|
||||
#if VERSION_ENG
|
||||
|
||||
OSTicksToCalendarTime(*time, &sp8);
|
||||
#if VERSION_ENG
|
||||
saveBuf.data.comment[37] = curBoxNo + '1';
|
||||
digit = (sp8.mon + 1) / 10;
|
||||
saveBuf.data.comment[40] = digit + '0';
|
||||
|
|
@ -308,8 +321,7 @@ void SLSaveDataInfoSet(OSTime *time) {
|
|||
saveBuf.data.comment[48] = digit + '0';
|
||||
year -= digit * 10;
|
||||
saveBuf.data.comment[49] = year + '0';
|
||||
#elif VERSION_PAL
|
||||
OSTicksToCalendarTime(*time, &sp8);
|
||||
#elif VERSION_PAL
|
||||
saveBuf.data.comment[37] = curBoxNo + '1';
|
||||
digit = sp8.mday / 10;
|
||||
saveBuf.data.comment[40] = digit + '0';
|
||||
|
|
@ -330,33 +342,38 @@ void SLSaveDataInfoSet(OSTime *time) {
|
|||
saveBuf.data.comment[48] = digit + '0';
|
||||
year -= digit * 10;
|
||||
saveBuf.data.comment[49] = year + '0';
|
||||
#else
|
||||
//TODO: Japanese Version
|
||||
OSTicksToCalendarTime(*time, &sp8);
|
||||
saveBuf.data.comment[37] = curBoxNo + '1';
|
||||
digit = sp8.mday / 10;
|
||||
saveBuf.data.comment[40] = digit + '0';
|
||||
digit = sp8.mday % 10;
|
||||
saveBuf.data.comment[41] = digit + '0';
|
||||
#else
|
||||
saveBuf.data.comment[52] = sjisNumTbl[(curBoxNo + 1) * 2];
|
||||
saveBuf.data.comment[53] = sjisNumTbl[(curBoxNo + 1) * 2 + 1];
|
||||
digit = (sp8.mon + 1) / 10;
|
||||
saveBuf.data.comment[43] = digit + '0';
|
||||
if (digit == 0) {
|
||||
saveBuf.data.comment[32] = sjisSpace[0];
|
||||
saveBuf.data.comment[33] = sjisSpace[1];
|
||||
}
|
||||
else {
|
||||
saveBuf.data.comment[32] = sjisNumTbl[digit * 2];
|
||||
saveBuf.data.comment[33] = sjisNumTbl[digit * 2 + 1];
|
||||
}
|
||||
digit = (sp8.mon + 1) % 10;
|
||||
saveBuf.data.comment[44] = digit + '0';
|
||||
year = sp8.year;
|
||||
digit = year / 1000;
|
||||
saveBuf.data.comment[46] = digit + '0';
|
||||
year -= digit * 1000;
|
||||
digit = year / 100;
|
||||
saveBuf.data.comment[47] = digit + '0';
|
||||
year -= digit * 100;
|
||||
digit = year / 10;
|
||||
saveBuf.data.comment[48] = digit + '0';
|
||||
year -= digit * 10;
|
||||
saveBuf.data.comment[49] = year + '0';
|
||||
#endif
|
||||
saveBuf.data.comment[34] = sjisNumTbl[digit * 2];
|
||||
saveBuf.data.comment[35] = sjisNumTbl[digit * 2 + 1];
|
||||
digit = sp8.mday / 10;
|
||||
if (digit == 0) {
|
||||
saveBuf.data.comment[38] = sjisSpace[0];
|
||||
saveBuf.data.comment[39] = sjisSpace[1];
|
||||
}
|
||||
else {
|
||||
saveBuf.data.comment[38] = sjisNumTbl[digit * 2];
|
||||
saveBuf.data.comment[39] = sjisNumTbl[digit * 2 + 1];
|
||||
}
|
||||
digit = sp8.mday % 10;
|
||||
saveBuf.data.comment[40] = sjisNumTbl[digit * 2];
|
||||
saveBuf.data.comment[41] = sjisNumTbl[digit * 2 + 1];
|
||||
#endif
|
||||
}
|
||||
|
||||
void SLCommonSet(void) {
|
||||
void SLCommonSet(void)
|
||||
{
|
||||
OSTime create_time;
|
||||
|
||||
create_time = OSGetTime();
|
||||
|
|
@ -365,7 +382,8 @@ void SLCommonSet(void) {
|
|||
SLSaveDataInfoSet(&create_time);
|
||||
}
|
||||
|
||||
void SLSaveBoard(void) {
|
||||
void SLSaveBoard(void)
|
||||
{
|
||||
s16 i;
|
||||
|
||||
memcpy(&saveBuf.data.system, &GWSystem, sizeof(SystemState));
|
||||
|
|
@ -374,7 +392,8 @@ void SLSaveBoard(void) {
|
|||
}
|
||||
}
|
||||
|
||||
void SLSaveBoardStory(void) {
|
||||
void SLSaveBoardStory(void)
|
||||
{
|
||||
s16 i;
|
||||
|
||||
memcpy(&saveBuf.data.systemStory, &GWSystem, sizeof(SystemState));
|
||||
|
|
@ -383,7 +402,8 @@ void SLSaveBoardStory(void) {
|
|||
}
|
||||
}
|
||||
|
||||
s32 SLSave(void) {
|
||||
s32 SLSave(void)
|
||||
{
|
||||
s32 result;
|
||||
|
||||
while (1) {
|
||||
|
|
@ -392,7 +412,8 @@ s32 SLSave(void) {
|
|||
if (result == CARD_RESULT_NOFILE) {
|
||||
if (!SLSerialNoCheck()) {
|
||||
SLMessOut(9);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
SLCreateSaveWin();
|
||||
result = SLFileCreate(SaveFileNameTbl[curBoxNo], 16384, &saveBuf);
|
||||
SLKillSaveWin();
|
||||
|
|
@ -401,7 +422,8 @@ s32 SLSave(void) {
|
|||
goto block_32;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
if (result == CARD_RESULT_NOCARD) {
|
||||
result = SLMessOut(10);
|
||||
if (result != 0) {
|
||||
|
|
@ -414,15 +436,18 @@ s32 SLSave(void) {
|
|||
if (result >= 0) {
|
||||
if (!SLSerialNoCheck()) {
|
||||
SLMessOut(9);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
SLCreateSaveWin();
|
||||
result = SLFileWrite(16384, &saveBuf);
|
||||
SLKillSaveWin();
|
||||
if (result == CARD_RESULT_NOCARD) {
|
||||
SLMessOut(0);
|
||||
} else if (result == CARD_RESULT_WRONGDEVICE) {
|
||||
}
|
||||
else if (result == CARD_RESULT_WRONGDEVICE) {
|
||||
SLMessOut(7);
|
||||
} else if (result == CARD_RESULT_BROKEN) {
|
||||
}
|
||||
else if (result == CARD_RESULT_BROKEN) {
|
||||
result = HuCardSectorSizeGet(curSlotNo);
|
||||
if (result > 0 && result != 8192) {
|
||||
SLMessOut(8);
|
||||
|
|
@ -436,13 +461,15 @@ s32 SLSave(void) {
|
|||
return result;
|
||||
}
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
result = CARD_RESULT_BROKEN;
|
||||
}
|
||||
} else if (result < 0) {
|
||||
}
|
||||
else if (result < 0) {
|
||||
SLMessOut(1);
|
||||
}
|
||||
block_32:
|
||||
block_32:
|
||||
SLFileClose();
|
||||
if (result >= 0) {
|
||||
HuCardUnMount(curSlotNo);
|
||||
|
|
@ -451,11 +478,12 @@ block_32:
|
|||
}
|
||||
}
|
||||
}
|
||||
block_36:
|
||||
block_36:
|
||||
result = SLMessOut(10);
|
||||
if (result != 0) {
|
||||
SLMessOut(11);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
SLSaveFlagSet(0);
|
||||
break;
|
||||
}
|
||||
|
|
@ -470,23 +498,31 @@ block_36:
|
|||
#define SAVEWIN_POS 120
|
||||
#endif
|
||||
|
||||
static s16 SLCreateSaveWin(void) {
|
||||
#if VERSION_JPN
|
||||
#define SAVEWIN_MESS slotIconMesTbl
|
||||
#else
|
||||
#define SAVEWIN_MESS SlotNameTbl
|
||||
#endif
|
||||
|
||||
static s16 SLCreateSaveWin(void)
|
||||
{
|
||||
float size[2];
|
||||
s16 window;
|
||||
|
||||
HuWinInit(1);
|
||||
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
|
||||
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SAVEWIN_MESS[curSlotNo]), 0);
|
||||
HuWinMesMaxSizeGet(1, size, MAKE_MESSID(16, 68));
|
||||
window = HuWinExCreateStyled(-10000.0f, SAVEWIN_POS, size[0], size[1], -1, 2);
|
||||
saveMessWin = window;
|
||||
HuWinExAnimIn(window);
|
||||
HuWinInsertMesSet(window, MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
|
||||
HuWinInsertMesSet(window, MAKE_MESSID_PTR(SAVEWIN_MESS[curSlotNo]), 0);
|
||||
HuWinMesSet(window, MAKE_MESSID(16, 68));
|
||||
HuWinMesWait(window);
|
||||
return window;
|
||||
}
|
||||
|
||||
static void SLKillSaveWin(void) {
|
||||
static void SLKillSaveWin(void)
|
||||
{
|
||||
if (saveMessWin != -1) {
|
||||
HuWinExAnimOut(saveMessWin);
|
||||
HuWinExCleanup(saveMessWin);
|
||||
|
|
@ -494,7 +530,8 @@ static void SLKillSaveWin(void) {
|
|||
}
|
||||
}
|
||||
|
||||
s32 SLLoad(void) {
|
||||
s32 SLLoad(void)
|
||||
{
|
||||
s32 result;
|
||||
u16 *save_checksum;
|
||||
u16 checksum;
|
||||
|
|
@ -513,11 +550,13 @@ s32 SLLoad(void) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
void SLLoadGameStat(void) {
|
||||
void SLLoadGameStat(void)
|
||||
{
|
||||
memcpy(&GWGameStat, &saveBuf.data.stat, sizeof(GameStat));
|
||||
}
|
||||
|
||||
void SLLoadBoard(void) {
|
||||
void SLLoadBoard(void)
|
||||
{
|
||||
s16 i;
|
||||
|
||||
memcpy(&GWSystem, &saveBuf.data.system, sizeof(SystemState));
|
||||
|
|
@ -531,7 +570,8 @@ void SLLoadBoard(void) {
|
|||
}
|
||||
}
|
||||
|
||||
void SLLoadBoardStory(void) {
|
||||
void SLLoadBoardStory(void)
|
||||
{
|
||||
s16 i;
|
||||
|
||||
memcpy(&GWSystem, &saveBuf.data.systemStory, 0xDC);
|
||||
|
|
@ -545,11 +585,13 @@ void SLLoadBoardStory(void) {
|
|||
}
|
||||
}
|
||||
|
||||
s32 SLSerialNoGet(void) {
|
||||
s32 SLSerialNoGet(void)
|
||||
{
|
||||
return CARDGetSerialNo(curSlotNo, &SLSerialNo);
|
||||
}
|
||||
|
||||
BOOL SLSerialNoCheck(void) {
|
||||
BOOL SLSerialNoCheck(void)
|
||||
{
|
||||
s32 result;
|
||||
u64 serialNo;
|
||||
|
||||
|
|
@ -566,7 +608,8 @@ BOOL SLSerialNoCheck(void) {
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL SLCheckSumCheck(void) {
|
||||
BOOL SLCheckSumCheck(void)
|
||||
{
|
||||
u16 *save_checksum = (u16 *)&saveBuf.buf[sizeof(SaveBufData)];
|
||||
u16 checksum = SLCheckSumGet();
|
||||
|
||||
|
|
@ -576,7 +619,8 @@ BOOL SLCheckSumCheck(void) {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
u16 SLCheckSumGet(void) {
|
||||
u16 SLCheckSumGet(void)
|
||||
{
|
||||
u32 i;
|
||||
u32 checksum;
|
||||
|
||||
|
|
@ -584,17 +628,19 @@ u16 SLCheckSumGet(void) {
|
|||
checksum += saveBuf.buf[i];
|
||||
}
|
||||
checksum = ~checksum;
|
||||
return (u16) checksum & 0xFFFF;
|
||||
return (u16)checksum & 0xFFFF;
|
||||
}
|
||||
|
||||
void SLCheckSumSet(void) {
|
||||
void SLCheckSumSet(void)
|
||||
{
|
||||
u16 checksum = SLCheckSumGet();
|
||||
|
||||
saveBuf.buf[sizeof(SaveBufData)] = (checksum >> 8) & 0xFF;
|
||||
saveBuf.buf[sizeof(SaveBufData)+1] = checksum;
|
||||
saveBuf.buf[sizeof(SaveBufData) + 1] = checksum;
|
||||
}
|
||||
|
||||
s32 SLStatSet(s32 reportF) {
|
||||
s32 SLStatSet(s32 reportF)
|
||||
{
|
||||
CARDStat stat;
|
||||
s32 fileNo;
|
||||
s32 result;
|
||||
|
|
@ -643,7 +689,8 @@ s32 SLStatSet(s32 reportF) {
|
|||
return result;
|
||||
}
|
||||
|
||||
s32 SLCardMount(s16 slotNo) {
|
||||
s32 SLCardMount(s16 slotNo)
|
||||
{
|
||||
s32 result;
|
||||
|
||||
while (1) {
|
||||
|
|
@ -673,10 +720,12 @@ s32 SLCardMount(s16 slotNo) {
|
|||
if (result != 0) {
|
||||
return result;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
return CARD_RESULT_FATAL_ERROR;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -692,7 +741,8 @@ s32 SLCardMount(s16 slotNo) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
s32 SLFormat(s16 slotNo) {
|
||||
s32 SLFormat(s16 slotNo)
|
||||
{
|
||||
float winSize[2];
|
||||
s16 result;
|
||||
s16 window1;
|
||||
|
|
@ -700,11 +750,11 @@ s32 SLFormat(s16 slotNo) {
|
|||
OSTime time;
|
||||
|
||||
HuWinInit(1);
|
||||
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
|
||||
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SAVEWIN_MESS[curSlotNo]), 0);
|
||||
HuWinMesMaxSizeGet(1, winSize, MAKE_MESSID(16, 56));
|
||||
window1 = HuWinExCreateStyled(-10000.0f, SAVEWIN_POS, winSize[0], winSize[1], -1, 2);
|
||||
HuWinExAnimIn(window1);
|
||||
HuWinInsertMesSet(window1, MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
|
||||
HuWinInsertMesSet(window1, MAKE_MESSID_PTR(SAVEWIN_MESS[curSlotNo]), 0);
|
||||
HuWinMesSet(window1, MAKE_MESSID(16, 56));
|
||||
HuWinMesMaxSizeGet(1, winSize, MAKE_MESSID(16, 11));
|
||||
window2 = HuWinExCreateStyled(-10000.0f, 200.0f, winSize[0], winSize[1], -1, 2);
|
||||
|
|
@ -754,7 +804,8 @@ s32 SLFormat(s16 slotNo) {
|
|||
return result;
|
||||
}
|
||||
|
||||
s16 SLMessOut(s16 mess) {
|
||||
s16 SLMessOut(s16 mess)
|
||||
{
|
||||
WindowData *var_r26;
|
||||
float size[2];
|
||||
u32 slot_mess;
|
||||
|
|
@ -782,19 +833,23 @@ s16 SLMessOut(s16 mess) {
|
|||
case 2:
|
||||
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
|
||||
slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]);
|
||||
#if VERSION_NTSC
|
||||
#if VERSION_ENG
|
||||
save_mess = MAKE_MESSID(16, 74);
|
||||
#else
|
||||
#elif VERSION_PAL
|
||||
save_mess = MAKE_MESSID(16, 72);
|
||||
#endif
|
||||
#else
|
||||
save_mess = MAKE_MESSID(16, 5);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case 3:
|
||||
#if VERSION_NTSC
|
||||
#if VERSION_ENG
|
||||
save_mess = MAKE_MESSID(16, 74);
|
||||
#else
|
||||
#elif VERSION_PAL
|
||||
save_mess = MAKE_MESSID(16, 72);
|
||||
#endif
|
||||
#else
|
||||
save_mess = MAKE_MESSID(16, 6);
|
||||
#endif
|
||||
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
|
||||
slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]);
|
||||
break;
|
||||
|
|
@ -841,11 +896,11 @@ s16 SLMessOut(s16 mess) {
|
|||
case 11:
|
||||
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
|
||||
slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]);
|
||||
#if VERSION_NTSC
|
||||
#if VERSION_ENG
|
||||
save_mess = MAKE_MESSID(16, 72);
|
||||
#else
|
||||
#else
|
||||
save_mess = MAKE_MESSID(16, 76);
|
||||
#endif
|
||||
#endif
|
||||
break;
|
||||
|
||||
case 12:
|
||||
|
|
@ -854,7 +909,8 @@ s16 SLMessOut(s16 mess) {
|
|||
}
|
||||
if (save_mess == MAKE_MESSID(16, 4)) {
|
||||
HuWinMesMaxSizeGet(1, size, MAKE_MESSID(16, 78));
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
HuWinMesMaxSizeGet(1, size, save_mess);
|
||||
}
|
||||
window = HuWinExCreateStyled(-10000.0f, 200.0f, size[0], size[1], -1, 2);
|
||||
|
|
|
|||
|
|
@ -22,7 +22,11 @@ extern s32 HuDvdErrWait;
|
|||
|
||||
static s32 SR_PreRstChk[4] = {};
|
||||
|
||||
#if VERSION_NTSC
|
||||
#if VERSION_JPN
|
||||
static s32 padding[4] = {};
|
||||
#endif
|
||||
|
||||
#if VERSION_ENG
|
||||
|
||||
#include "coveropen_en.inc"
|
||||
#include "fatalerror_en.inc"
|
||||
|
|
@ -31,7 +35,7 @@ static s32 SR_PreRstChk[4] = {};
|
|||
#include "retryerror_en.inc"
|
||||
#include "wrongdisc_en.inc"
|
||||
|
||||
#else
|
||||
#elif VERSION_PAL
|
||||
|
||||
#include "coveropen_en.inc"
|
||||
#include "fatalerror_en.inc"
|
||||
|
|
@ -68,6 +72,15 @@ static s32 SR_PreRstChk[4] = {};
|
|||
#include "retryerror_sp.inc"
|
||||
#include "wrongdisc_sp.inc"
|
||||
|
||||
#else
|
||||
|
||||
#include "coveropen_jp.inc"
|
||||
#include "fatalerror_jp.inc"
|
||||
#include "loading_jp.inc"
|
||||
#include "nodisc_jp.inc"
|
||||
#include "retryerror_jp.inc"
|
||||
#include "wrongdisc_jp.inc"
|
||||
|
||||
#endif
|
||||
|
||||
static s16 SR_PushTime[4] = {};
|
||||
|
|
@ -287,11 +300,11 @@ static void ToeDispCheck(void)
|
|||
|
||||
static void _HuDvdErrDispXFB(s32 error)
|
||||
{
|
||||
#if VERSION_NTSC
|
||||
#if VERSION_ENG
|
||||
static void *bmpMes[][6] = {
|
||||
loading_en, coveropen_en, nodisc_en, wrongdisc_en, retryerror_en, fatalerror_en
|
||||
loading_en, coveropen_en, nodisc_en, wrongdisc_en, retryerror_en, fatalerror_en
|
||||
};
|
||||
#else
|
||||
#elif VERSION_PAL
|
||||
static void *bmpMes[][6] = {
|
||||
loading_en, coveropen_en, nodisc_en, wrongdisc_en, retryerror_en, fatalerror_en,
|
||||
loading_fr, coveropen_fr, nodisc_fr, wrongdisc_fr, retryerror_fr, fatalerror_fr,
|
||||
|
|
@ -299,6 +312,10 @@ static void _HuDvdErrDispXFB(s32 error)
|
|||
loading_it, coveropen_it, nodisc_it, wrongdisc_it, retryerror_it, fatalerror_it,
|
||||
loading_sp, coveropen_sp, nodisc_sp, wrongdisc_sp, retryerror_sp, fatalerror_sp
|
||||
};
|
||||
#else
|
||||
static void *bmpMes[][6] = {
|
||||
loading_jp, coveropen_jp, nodisc_jp, wrongdisc_jp, retryerror_jp, fatalerror_jp
|
||||
};
|
||||
#endif
|
||||
|
||||
s16 *bmpData;
|
||||
|
|
@ -524,4 +541,4 @@ static void HuSoftResetPostProc(void)
|
|||
HuPadRumbleAllStop();
|
||||
SR_ExecReset = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue