Matched REL/option

This commit is contained in:
mrshigure 2024-03-16 08:41:23 -07:00
parent d4451989dd
commit 303ea12894
14 changed files with 4416 additions and 359 deletions

237
src/REL/option/camera.c Executable file
View file

@ -0,0 +1,237 @@
#include "REL/option.h"
#include "game/hsfman.h"
#include "game/memory.h"
#include "game/pad.h"
#include "game/printfunc.h"
#include "game/process.h"
#include "dolphin.h"
#include "math.h"
typedef struct {
/* 0x00 */ Vec unk00;
/* 0x0C */ Vec unk0C;
/* 0x18 */ float unk18;
/* 0x1C */ float unk1C;
/* 0x20 */ float unk20;
/* 0x24 */ float unk24;
/* 0x28 */ float unk28;
/* 0x2C */ Vec unk2C;
/* 0x38 */ Vec unk38;
/* 0x44 */ char unk44[0xC];
/* 0x50 */ float unk50;
/* 0x54 */ float unk54;
/* 0x58 */ Vec unk58;
/* 0x64 */ Vec unk64;
/* 0x70 */ char unk70[0xC];
/* 0x7C */ float unk7C;
/* 0x80 */ float unk80;
/* 0x84 */ float unk84;
/* 0x88 */ float unk88;
/* 0x8C */ float unk8C;
/* 0x90 */ float unk90;
/* 0x94 */ float unk94;
/* 0x98 */ float unk98;
} UnkCameraDataStruct; // Size 0x9C
static void fn_1_C58(omObjData *arg0, float *arg1, float *arg2, float *arg3);
static void fn_1_D44(omObjData *arg0);
static void fn_1_D6C(omObjData *arg0);
static void fn_1_12E4(omObjData *arg0);
static void fn_1_14E4(omObjData *arg0);
omObjData *lbl_1_bss_10;
static float pad_04_00000000_data[] = {
0.0f, 500.0f, 0.0f,
0.0f, -1.0f, 0.0f
};
static s32 pad_04_00000018_data = -1;
omObjData *fn_1_7F8(void) {
omObjData *var_r30;
UnkCameraDataStruct *temp_r31;
var_r30 = omAddObjEx(lbl_1_bss_8, 1001, 0, 0, 3, fn_1_D44);
temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkCameraDataStruct), MEMORY_DEFAULT_NUM);
var_r30->data = temp_r31;
temp_r31->unk00.x = 0.0f;
temp_r31->unk00.y = 0.0f;
temp_r31->unk00.z = 0.0f;
temp_r31->unk0C.x = 0.0f;
temp_r31->unk0C.y = 0.0f;
temp_r31->unk0C.z = 0.0f;
temp_r31->unk18 = 0.0f;
temp_r31->unk1C = 1.0f;
temp_r31->unk20 = 0.0f;
temp_r31->unk24 = 0.0f;
temp_r31->unk28 = 0.0f;
temp_r31->unk8C = 1.0f;
temp_r31->unk84 = 1.0f;
temp_r31->unk94 = 1.0f;
Hu3DCameraCreate(1);
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
Hu3DCameraPerspectiveSet(1, 42.0f, 10.0f, 8000.0f, 1.2f);
fn_1_B74(var_r30, 600.0f, 60.0f, 120.0f, 1);
fn_1_A6C(var_r30, 180.0f, 120.0f, 0.0f, 1);
return var_r30;
}
void fn_1_A3C(omObjData *arg0) {
HuMemDirectFree(arg0->data);
}
void fn_1_A6C(omObjData *arg0, float arg1, float arg2, float arg3, s32 arg4) {
UnkCameraDataStruct *temp_r31 = arg0->data;
temp_r31->unk58.x = arg1;
temp_r31->unk58.y = arg2;
temp_r31->unk58.z = arg3;
temp_r31->unk2C = temp_r31->unk00;
temp_r31->unk84 = 0.0f;
temp_r31->unk88 = 1.0f / arg4;
}
void fn_1_AF0(omObjData *arg0, float arg1, float arg2, float arg3, s32 arg4) {
UnkCameraDataStruct *temp_r31 = arg0->data;
temp_r31->unk64.x = arg1;
temp_r31->unk64.y = arg2;
temp_r31->unk64.z = arg3;
temp_r31->unk38 = temp_r31->unk0C;
temp_r31->unk8C = 0.0f;
temp_r31->unk90 = 1.0f / arg4;
}
void fn_1_B74(omObjData *arg0, float arg1, float arg2, float arg3, s32 arg4) {
UnkCameraDataStruct *temp_r31 = arg0->data;
temp_r31->unk64.y = arg3;
temp_r31->unk7C = arg1;
temp_r31->unk80 = arg2;
temp_r31->unk38.y = temp_r31->unk0C.y;
temp_r31->unk50 = temp_r31->unk24;
temp_r31->unk54 = temp_r31->unk28;
temp_r31->unk94 = 0.0f;
temp_r31->unk98 = 1.0f / arg4;
}
float fn_1_BF8(omObjData *arg0) {
UnkCameraDataStruct *temp_r31 = arg0->data;
float temp_f31;
temp_f31 = temp_r31->unk24;
return temp_f31;
}
float fn_1_C28(omObjData *arg0) {
UnkCameraDataStruct *temp_r31 = arg0->data;
float temp_f31;
temp_f31 = temp_r31->unk28;
return temp_f31;
}
static void fn_1_C58(omObjData *arg0, float *arg1, float *arg2, float *arg3) {
UnkCameraDataStruct *temp_r31 = arg0->data;
*arg1 = temp_r31->unk00.x;
*arg2 = temp_r31->unk00.y;
*arg3 = temp_r31->unk00.z;
}
void fn_1_C88(omObjData *arg0, float *arg1, float *arg2, float *arg3) {
UnkCameraDataStruct *temp_r31 = arg0->data;
*arg1 = temp_r31->unk0C.x;
*arg2 = temp_r31->unk0C.y;
*arg3 = temp_r31->unk0C.z;
}
s32 fn_1_CB8(omObjData *arg0) {
UnkCameraDataStruct *temp_r31 = arg0->data;
s32 var_r30 = 1;
s32 var_r29 = 1;
if (!(temp_r31->unk8C < 1.0f) && !(temp_r31->unk94 < 1.0f)) {
var_r29 = 0;
}
if (var_r29 == 0 && !(temp_r31->unk84 < 1.0f)) {
var_r30 = 0;
}
return var_r30;
}
static void fn_1_D44(omObjData *arg0) {
fn_1_D6C(arg0);
}
static void fn_1_D6C(omObjData *arg0) {
UnkCameraDataStruct *temp_r31 = arg0->data;
float temp_f28;
float temp_f31;
float temp_f30;
if (temp_r31->unk84 < 1.0f) {
temp_f28 = sin(90.0f * temp_r31->unk84 * M_PI / 180.0);
temp_r31->unk00.x = temp_r31->unk2C.x + temp_f28 * (temp_r31->unk58.x - temp_r31->unk2C.x);
temp_r31->unk00.y = temp_r31->unk2C.y + temp_f28 * (temp_r31->unk58.y - temp_r31->unk2C.y);
temp_r31->unk00.z = temp_r31->unk2C.z + temp_f28 * (temp_r31->unk58.z - temp_r31->unk2C.z);
if ((temp_r31->unk84 += temp_r31->unk88) >= 1.0f) {
temp_r31->unk00 = temp_r31->unk58;
}
}
if (temp_r31->unk8C < 1.0f) {
temp_f28 = sin(90.0f * temp_r31->unk8C * M_PI / 180.0);
temp_r31->unk0C.x = temp_r31->unk38.x + temp_f28 * (temp_r31->unk64.x - temp_r31->unk38.x);
temp_r31->unk0C.y = temp_r31->unk38.y + temp_f28 * (temp_r31->unk64.y - temp_r31->unk38.y);
temp_r31->unk0C.z = temp_r31->unk38.z + temp_f28 * (temp_r31->unk64.z - temp_r31->unk38.z);
if ((temp_r31->unk8C += temp_r31->unk90) >= 1.0f) {
temp_r31->unk0C = temp_r31->unk64;
}
}
if (temp_r31->unk94 < 1.0f) {
temp_f28 = sin(90.0f * temp_r31->unk94 * M_PI / 180.0);
temp_r31->unk0C.y = temp_r31->unk38.y + temp_f28 * (temp_r31->unk64.y - temp_r31->unk38.y);
temp_r31->unk24 = temp_r31->unk50 + temp_f28 * (temp_r31->unk7C - temp_r31->unk50);
temp_r31->unk28 = temp_r31->unk54 + temp_f28 * (temp_r31->unk80 - temp_r31->unk54);
if ((temp_r31->unk94 += temp_r31->unk98) >= 1.0f) {
temp_r31->unk0C.y = temp_r31->unk64.y;
temp_r31->unk24 = temp_r31->unk7C;
temp_r31->unk28 = temp_r31->unk80;
}
temp_r31->unk0C.x = temp_r31->unk24 * -sin(temp_r31->unk28 * M_PI / 180.0);
temp_r31->unk0C.z = temp_r31->unk24 * cos(temp_r31->unk28 * M_PI / 180.0);
}
temp_f31 = temp_r31->unk0C.x - temp_r31->unk00.x;
temp_f30 = temp_r31->unk0C.z - temp_r31->unk00.z;
temp_r31->unk24 = sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30);
temp_r31->unk28 = fmod(-(180.0 * (atan2(temp_f31, temp_f30) / M_PI)), 360.0);
if (temp_r31->unk28 < 0.0f) {
temp_r31->unk28 += 360.0f;
}
Hu3DCameraPosSet(1, temp_r31->unk00.x, temp_r31->unk00.y, temp_r31->unk00.z, temp_r31->unk18, temp_r31->unk1C, temp_r31->unk20, temp_r31->unk0C.x, temp_r31->unk0C.y, temp_r31->unk0C.z);
}
static void fn_1_12E4(omObjData *arg0) {
UnkCameraDataStruct *temp_r31;
if (HuPadBtn[0] & 0xF) {
temp_r31 = arg0->data;
temp_r31->unk0C.x += 0.5f * HuPadStkX[0];
temp_r31->unk0C.y += 0.5f * HuPadStkY[0];
temp_r31->unk00.z += 0.5f * HuPadTrigL[0];
temp_r31->unk00.z -= 0.5f * HuPadTrigR[0];
temp_r31->unk00.x += 0.5f * HuPadSubStkY[0];
temp_r31->unk00.y += 0.5f * HuPadSubStkX[0];
}
}
static void fn_1_14E4(omObjData *arg0) {
UnkCameraDataStruct *temp_r31 = arg0->data;
print8(32, 64, 1.5f, "AT : x=%.2f y=%.2f z=%.2f", temp_r31->unk0C.x, temp_r31->unk0C.y, temp_r31->unk0C.z);
print8(32, 80, 1.5f, "EYE : x=%.2f y=%.2f z=%.2f", temp_r31->unk00.x, temp_r31->unk00.y, temp_r31->unk00.z);
print8(32, 96, 1.5f, "R : %.2f DEG: %.2f", temp_r31->unk24, temp_r31->unk28);
}

230
src/REL/option/guide.c Executable file
View file

@ -0,0 +1,230 @@
#include "REL/option.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/memory.h"
#include "dolphin.h"
#include "math.h"
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ s16 unk04;
/* 0x06 */ char unk06[2];
/* 0x08 */ Vec unk08;
/* 0x14 */ Vec unk14;
/* 0x20 */ float unk20;
/* 0x24 */ float unk24;
/* 0x28 */ float unk28;
/* 0x2C */ float unk2C;
/* 0x30 */ float unk30;
/* 0x34 */ float unk34;
/* 0x38 */ float unk38;
/* 0x3C */ float unk3C;
/* 0x40 */ float unk40;
/* 0x44 */ float unk44;
/* 0x48 */ char unk48[0xC];
/* 0x54 */ float unk54;
/* 0x58 */ float unk58;
/* 0x5C */ s32 unk5C;
/* 0x60 */ s32 unk60;
} UnkGuideDataStruct; // Size 0x64
static void fn_1_24A8(omObjData *arg0, s32 arg1);
static s32 fn_1_24EC(omObjData *arg0);
static void fn_1_25AC(omObjData *arg0);
static void fn_1_2A18(omObjData *arg0);
static float fn_1_2D00(float arg0, float arg1, float arg2);
omObjData *lbl_1_bss_20;
static const s32 lbl_1_rodata_E0[] = {
DATA_MAKE_NUM(DATADIR_OPTION, 16),
DATA_MAKE_NUM(DATADIR_OPTION, 17),
DATA_MAKE_NUM(DATADIR_OPTION, 18)
};
static omObjFunc lbl_1_data_98[] = {
NULL,
fn_1_25AC
};
omObjData *fn_1_21F8(void) {
omObjData *var_r31;
UnkGuideDataStruct *temp_r30;
s32 i;
var_r31 = omAddObjEx(lbl_1_bss_8, 1002, 1, 3, 2, NULL);
temp_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkGuideDataStruct), MEMORY_DEFAULT_NUM);
var_r31->data = temp_r30;
temp_r30->unk08.x = -298.59f;
temp_r30->unk08.z = 298.21f;
temp_r30->unk08.y = 0.0f;
temp_r30->unk20 = 0.0f;
temp_r30->unk24 = 134.42f;
temp_r30->unk28 = 0.0f;
temp_r30->unk2C = 0.0f;
temp_r30->unk34 = 0.0f;
temp_r30->unk30 = 0.0f;
var_r31->model[0] = Hu3DModelCreateFile(0x69000C);
Hu3DModelLayerSet(var_r31->model[0], 1);
for (i = 0; i < 3; i++) {
var_r31->motion[i] = Hu3DJointMotion(var_r31->model[0], HuDataSelHeapReadNum(lbl_1_rodata_E0[i], MEMORY_DEFAULT_NUM, HEAP_DATA));
}
temp_r30->unk5C = CharModelEffectNpcInit(var_r31->model[0], var_r31->motion[2], 1, 0xC);
temp_r30->unk60 = CharModelEffectNpcInit(var_r31->model[0], var_r31->motion[1], 0, 0xC);
CharModelLayerSetAll(1);
Hu3DModelShadowSet(var_r31->model[0]);
Hu3DMotionShiftSet(var_r31->model[0], var_r31->motion[0], 0.0f, 8.0f, 0x40000001);
fn_1_24A8(var_r31, 0);
fn_1_2A18(var_r31);
return var_r31;
}
void fn_1_241C(omObjData *arg0) {
UnkGuideDataStruct *temp_r29 = arg0->data;
s32 i;
for (i = 0; i < 1; i++) {
Hu3DModelKill(arg0->model[i]);
}
for (i = 0; i < 3; i++) {
Hu3DMotionKill(arg0->motion[i]);
}
HuMemDirectFree(temp_r29);
}
static void fn_1_24A8(omObjData *arg0, s32 arg1) {
UnkGuideDataStruct *temp_r31 = arg0->data;
temp_r31->unk00 = arg1;
arg0->func = lbl_1_data_98[arg1];
arg0->unk10 = 0;
arg0->unk10 = 0;
}
static s32 fn_1_24EC(omObjData *arg0) {
UnkGuideDataStruct *temp_r31 = arg0->data;
return temp_r31->unk00;
}
void fn_1_2508(omObjData *arg0, float arg1, float arg2, s32 arg3) {
UnkGuideDataStruct *temp_r31 = arg0->data;
temp_r31->unk40 = arg1;
temp_r31->unk44 = arg2;
temp_r31->unk54 = 0.0f;
temp_r31->unk58 = 1.0f / arg3;
temp_r31->unk04 = 0;
fn_1_24A8(arg0, 1);
}
static void fn_1_25AC(omObjData *arg0) {
UnkGuideDataStruct *temp_r31 = arg0->data;
float var_f31;
float var_f30;
switch (arg0->unk10) {
case 0:
temp_r31->unk3C = fmod(-(180.0 * (atan2(temp_r31->unk08.x, temp_r31->unk08.z) / M_PI)), 360.0);
if (temp_r31->unk3C < 0.0f) {
temp_r31->unk3C += 360.0f;
}
arg0->unk10 = 1;
/* fallthrough */
case 1:
var_f30 = sin(90.0f * temp_r31->unk54 * M_PI / 180.0);
var_f31 = temp_r31->unk3C + var_f30 * (temp_r31->unk40 - temp_r31->unk3C);
temp_r31->unk14.x = temp_r31->unk44 * -sin(var_f31 * M_PI / 180.0);
temp_r31->unk14.z = temp_r31->unk44 * cos(var_f31 * M_PI / 180.0);
temp_r31->unk14.y = 0.0f;
temp_r31->unk2C = temp_r31->unk14.x - temp_r31->unk08.x;
temp_r31->unk34 = temp_r31->unk14.z - temp_r31->unk08.z;
if (temp_r31->unk54 <= 0.0f) {
temp_r31->unk2C = 0.0f;
temp_r31->unk34 = 0.0f;
temp_r31->unk08 = temp_r31->unk14;
}
if ((temp_r31->unk54 += temp_r31->unk58) < 1.0f) {
break;
}
var_f31 = fmod(-(180.0 * (atan2(temp_r31->unk08.x, temp_r31->unk08.z) / M_PI)), 360.0);
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
temp_r31->unk14.x = 422.0 * -sin(var_f31 * M_PI / 180.0);
temp_r31->unk14.z = 422.0 * cos(var_f31 * M_PI / 180.0);
temp_r31->unk2C = (temp_r31->unk14.x - temp_r31->unk08.x) / 10.0f;
temp_r31->unk34 = (temp_r31->unk14.z - temp_r31->unk08.z) / 10.0f;
temp_r31->unk58 = 0.1f;
temp_r31->unk54 = 0.0f;
arg0->unk10 = 2;
/* fallthrough */
case 2:
if ((temp_r31->unk54 += temp_r31->unk58) < 1.0f) {
break;
}
arg0->unk10 = 3;
/* fallthrough */
case 3:
temp_r31->unk08 = temp_r31->unk14;
temp_r31->unk2C = 0.0f;
temp_r31->unk30 = 0.0f;
temp_r31->unk34 = 0.0f;
fn_1_2A18(arg0);
fn_1_24A8(arg0, 0);
break;
}
fn_1_2A18(arg0);
}
static void fn_1_2A18(omObjData *arg0) {
UnkGuideDataStruct *temp_r31 = arg0->data;
s16 var_r29;
var_r29 = 0;
temp_r31->unk38 = sqrtf(temp_r31->unk2C * temp_r31->unk2C + temp_r31->unk34 * temp_r31->unk34);
if (0.001f <= temp_r31->unk38) {
if (14.0f <= temp_r31->unk38) {
temp_r31->unk2C /= temp_r31->unk38;
temp_r31->unk34 /= temp_r31->unk38;
temp_r31->unk38 = 14.0f;
temp_r31->unk2C = 14.0f * temp_r31->unk2C;
temp_r31->unk34 = 14.0f * temp_r31->unk34;
}
temp_r31->unk24 = fn_1_2D00(temp_r31->unk24, 180.0 * (atan2(temp_r31->unk2C, temp_r31->unk34) / M_PI), 0.4f);
if (8.0f <= temp_r31->unk38) {
var_r29 = 2;
} else {
var_r29 = 1;
}
}
temp_r31->unk08.x += temp_r31->unk2C;
temp_r31->unk08.z += temp_r31->unk34;
if (temp_r31->unk04 != var_r29) {
Hu3DMotionShiftSet(*arg0->model, arg0->motion[var_r29], 0.0f, 8.0f, 0x40000001);
temp_r31->unk04 = var_r29;
}
omSetTra(arg0, temp_r31->unk08.x, temp_r31->unk08.y, temp_r31->unk08.z);
omSetRot(arg0, temp_r31->unk20, temp_r31->unk24, temp_r31->unk28);
}
static float fn_1_2D00(float arg0, float arg1, float arg2) {
float var_f30;
float var_f31;
var_f31 = fmod(arg1 - arg0, 360.0);
if (0.0f > var_f31) {
var_f31 += 360.0f;
}
if (180.0f < var_f31) {
var_f31 -= 360.0f;
}
var_f30 = fmod(arg0 + var_f31 * arg2, 360.0);
if (0.0f > var_f30) {
var_f30 += 360.0f;
}
return var_f30;
}

794
src/REL/option/record.c Executable file
View file

@ -0,0 +1,794 @@
#include "REL/option.h"
#include "game/audio.h"
#include "game/data.h"
#include "game/esprite.h"
#include "game/gamework_data.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/memory.h"
#include "game/window.h"
#include "dolphin.h"
#include "math.h"
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ s32 unk04[8];
/* 0x24 */ s32 unk24;
/* 0x28 */ s32 unk28;
} UnkRecordDataStruct00; // Size 0x2C
typedef struct {
/* 0x000 */ omObjData *unk00;
/* 0x004 */ omObjData *unk04;
/* 0x008 */ UnkWindowDataStruct *unk08[10];
/* 0x030 */ s32 unk30;
/* 0x034 */ s16 unk34[153];
/* 0x166 */ char unk166[6];
/* 0x16C */ s32 unk16C;
/* 0x170 */ s32 unk170;
/* 0x174 */ s32 unk174;
/* 0x178 */ UnkRecordDataStruct00 unk178[6];
/* 0x280 */ s32 unk280[6];
/* 0x298 */ s32 unk298;
/* 0x29C */ s32 unk29C;
} UnkRecordDataStruct01; // Size 0x2A0
static void fn_1_8310(omObjData *arg0);
static omObjData *fn_1_8A88(void);
static void fn_1_8B58(omObjData *arg0);
static void fn_1_8BAC(omObjData *arg0, s32 arg1);
static omObjData *fn_1_8C84(void);
static void fn_1_8D80(omObjData *arg0);
static void fn_1_8DD4(omObjData *arg0);
static void fn_1_8E98(omObjData *arg0);
static s32 fn_1_8EF8(s32 arg0, s32 arg1);
static void fn_1_8F38(omObjData *arg0, s32 arg1);
static void fn_1_96B4(omObjData *arg0);
static void fn_1_9750(omObjData *arg0);
static void fn_1_9A94(omObjData *arg0);
static void fn_1_9B10(omObjData *arg0, s32 arg1);
static void fn_1_A3B0(omObjData *arg0);
omObjData *lbl_1_bss_40;
static const s32 lbl_1_rodata_13C0[] = { 0, 1, 2, 3, 5, 10 };
static omObjFunc lbl_1_data_210[] = {
NULL,
fn_1_8310
};
omObjData *fn_1_80E4(void) {
omObjData *temp_r29;
UnkRecordDataStruct01 *temp_r3;
s32 i;
s32 j;
temp_r29 = omAddObjEx(lbl_1_bss_8, 1003, 0, 0, 1, NULL);
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkRecordDataStruct01), MEMORY_DEFAULT_NUM);
temp_r29->data = temp_r3;
for (i = 0; i < 6; i++) {
temp_r3->unk178[i].unk00 = GWBoardPlayCountGet(i);
temp_r3->unk178[i].unk28 = GWBoardMaxStarsGet(i);
temp_r3->unk178[i].unk24 = GWBoardMaxCoinsGet(i);
for (j = 0; j < 8; j++) {
temp_r3->unk178[i].unk04[j] = GWBoardWinCountGet(j, i);
}
}
for (i = 0; i < 6; i++) {
temp_r3->unk280[i] = GWMGRecordGet(lbl_1_rodata_13C0[i]);
}
temp_r3->unk170 = 0;
temp_r3->unk174 = 0;
temp_r3->unk16C = 0;
temp_r3->unk00 = fn_1_8A88();
temp_r3->unk04 = fn_1_8C84();
fn_1_8DD4(temp_r29);
fn_1_82B0(temp_r29, 0);
return temp_r29;
}
void fn_1_825C(omObjData *arg0) {
UnkRecordDataStruct01 *temp_r31 = arg0->data;
fn_1_8B58(temp_r31->unk00);
fn_1_8D80(temp_r31->unk04);
fn_1_8E98(arg0);
HuMemDirectFree(temp_r31);
}
void fn_1_82B0(omObjData *arg0, s32 arg1) {
UnkRecordDataStruct01 *temp_r31 = arg0->data;
temp_r31->unk30 = arg1;
arg0->func = lbl_1_data_210[arg1];
arg0->unk10 = 0;
arg0->unk10 = 0;
}
s32 fn_1_82F4(omObjData *arg0) {
UnkRecordDataStruct01 *temp_r31 = arg0->data;
return temp_r31->unk30;
}
static void fn_1_8310(omObjData *arg0) {
UnkRecordDataStruct01 *temp_r31 = arg0->data;
Vec sp8;
s32 i;
switch (arg0->unk10) {
case 0:
temp_r31->unk08[0] = fn_1_A44C(0);
temp_r31->unk08[1] = fn_1_A44C(1);
for (i = 0; i < 8; i++) {
temp_r31->unk08[i + 2] = fn_1_A44C(3);
}
fn_1_AF0(lbl_1_bss_10, 519.0f, 125.0f, 300.0f, 0x28);
fn_1_A6C(lbl_1_bss_10, 308.98f, 125.0f, 178.74f, 0x28);
temp_r31->unk170 = 0;
temp_r31->unk174 = 0;
temp_r31->unk298 = 0;
arg0->unk10 = 1;
/* fallthrough */
case 1:
if (fn_1_CB8(lbl_1_bss_10) != 0) {
break;
}
fn_1_3D54(lbl_1_bss_30);
espBankSet(temp_r31->unk34[47], 0);
espBankSet(temp_r31->unk34[48], 2);
espPosSet(temp_r31->unk34[47], 46.0f, 240.0f);
espPosSet(temp_r31->unk34[48], 494.0f, 240.0f);
if (temp_r31->unk16C == 0) {
fn_1_160(temp_r31->unk34[47], 1, 10);
fn_1_160(temp_r31->unk34[48], 1, 10);
temp_r31->unk29C = 0;
}
arg0->unk10 = 2;
/* fallthrough */
case 2:
fn_1_96B4(arg0);
fn_1_A3B0(arg0);
fn_1_9A94(arg0);
switch (temp_r31->unk16C) {
case 0:
if (temp_r31->unk170 < 6) {
fn_1_8F38(arg0, temp_r31->unk170);
} else {
fn_1_9750(arg0);
}
fn_1_A6EC(temp_r31->unk08[0]);
fn_1_A71C(temp_r31->unk08[0], MAKE_MESSID(47, 5));
break;
case 1:
fn_1_9B10(arg0, temp_r31->unk174);
fn_1_A6EC(temp_r31->unk08[0]);
fn_1_A71C(temp_r31->unk08[0], MAKE_MESSID(47, 6));
break;
}
fn_1_A6EC(temp_r31->unk08[1]);
fn_1_A71C(temp_r31->unk08[1], MAKE_MESSID(47, 169));
if (temp_r31->unk298 == 0) {
Hu3DModelAttrReset(temp_r31->unk04->model[0], 1);
temp_r31->unk298 = 1;
}
sp8.x = 505.0 * -sin(305 * M_PI / 180.0);
sp8.z = 505.0 * cos(305 * M_PI / 180.0);
sp8.y = 144.0f - 14.0f * temp_r31->unk16C;
omSetTra(temp_r31->unk04, sp8.x, sp8.y, sp8.z);
arg0->unk10 = 3;
/* fallthrough */
case 3:
if (temp_r31->unk29C > 0) {
temp_r31->unk29C--;
break;
}
espBankSet(temp_r31->unk34[47], 0);
espBankSet(temp_r31->unk34[48], 2);
arg0->unk10 = 4;
/* fallthrough */
case 4:
if (temp_r31->unk08[1]->unk20 != 0) {
break;
}
if (fn_1_550(0x200) != 0) {
HuAudFXPlay(3);
arg0->unk10 = 5;
} else if (fn_1_584(8) != 0 && temp_r31->unk16C == 1) {
temp_r31->unk16C = 0;
temp_r31->unk170 = 0;
fn_1_8BAC(temp_r31->unk00, temp_r31->unk16C);
fn_1_160(temp_r31->unk34[47], 1, 5);
fn_1_160(temp_r31->unk34[48], 1, 5);
temp_r31->unk29C = 5;
HuAudFXPlay(0x83F);
arg0->unk10 = 2;
} else if (fn_1_584(4) != 0 && temp_r31->unk16C == 0) {
temp_r31->unk16C = 1;
temp_r31->unk174 = 0;
fn_1_8BAC(temp_r31->unk00, temp_r31->unk16C);
fn_1_160(temp_r31->unk34[47], 0, 5);
fn_1_160(temp_r31->unk34[48], 0, 5);
temp_r31->unk29C = 5;
HuAudFXPlay(0x83F);
arg0->unk10 = 2;
} else {
switch (temp_r31->unk16C) {
case 0:
if (fn_1_550(0x40) != 0) {
if (--temp_r31->unk170 < 0) {
temp_r31->unk170 = 6;
}
if (GWGameStat.open_w06 == 0 && temp_r31->unk170 == 5) {
temp_r31->unk170--;
}
HuAudFXPlay(0x840);
espBankSet(temp_r31->unk34[47], 1);
temp_r31->unk29C = 0xA;
arg0->unk10 = 2;
return;
}
if (fn_1_550(0x20) != 0) {
if (++temp_r31->unk170 >= 7) {
temp_r31->unk170 = 0;
}
if (GWGameStat.open_w06 == 0 && temp_r31->unk170 == 5) {
temp_r31->unk170++;
}
HuAudFXPlay(0x840);
espBankSet(temp_r31->unk34[48], 3);
temp_r31->unk29C = 0xA;
arg0->unk10 = 2;
}
break;
case 1:
break;
}
}
break;
case 5:
fn_1_3E1C(lbl_1_bss_30);
if (temp_r31->unk16C == 0) {
fn_1_160(temp_r31->unk34[47], 0, 10);
fn_1_160(temp_r31->unk34[48], 0, 10);
}
fn_1_A704(temp_r31->unk08[0]);
fn_1_A704(temp_r31->unk08[1]);
Hu3DModelAttrSet(temp_r31->unk04->model[0], 1);
arg0->unk10 = 6;
/* fallthrough */
case 6:
if (temp_r31->unk08[1]->unk20 == 0 && fn_1_3ED0(lbl_1_bss_30) == 0) {
for (i = 0; i < 10; i++) {
fn_1_A6AC(temp_r31->unk08[i]);
}
fn_1_96B4(arg0);
fn_1_A3B0(arg0);
fn_1_9A94(arg0);
fn_1_AF0(lbl_1_bss_10, 519.62f, 120.0f, 300.0f, 0x28);
fn_1_A6C(lbl_1_bss_10, 0.0f, 120.0f, 0.0f, 0x28);
fn_1_82B0(arg0, 0);
}
break;
}
}
static omObjData *fn_1_8A88(void) {
omObjData *temp_r31;
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
temp_r31->model[0] = Hu3DModelCreateFile(0x690001);
Hu3DModelAttrSet(temp_r31->model[0], 0x40000002);
Hu3DModelLayerSet(temp_r31->model[0], 0);
Hu3DMotionStartEndSet(temp_r31->model[0], 0.0f, 6.0f);
Hu3DMotionTimeSet(temp_r31->model[0], 6.0f);
return temp_r31;
}
static void fn_1_8B58(omObjData *arg0) {
s32 i;
for (i = 0; i < 1; i++) {
Hu3DModelKill(arg0->model[i]);
}
}
static void fn_1_8BAC(omObjData *arg0, s32 arg1) {
s16 temp_r31 = arg0->model[0];
switch (arg1) {
case 0:
Hu3DMotionStartEndSet(temp_r31, 0.0f, 6.0f);
Hu3DMotionTimeSet(temp_r31, 0.0f);
break;
case 1:
Hu3DMotionStartEndSet(temp_r31, 6.0f, 12.0f);
Hu3DMotionTimeSet(temp_r31, 6.0f);
break;
}
Hu3DModelAttrReset(arg0->model[0], 0x40000002);
}
static omObjData *fn_1_8C84(void) {
omObjData *temp_r31;
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
temp_r31->model[0] = Hu3DModelCreateFile(0x69000E);
Hu3DModelLayerSet(temp_r31->model[0], 2);
Hu3DModelAttrSet(temp_r31->model[0], 0x40000001);
omSetRot(temp_r31, 30.0f, 190.0f, 0.0f);
omSetSca(temp_r31, 0.6f, 0.6f, 0.6f);
Hu3DModelAttrSet(temp_r31->model[0], 1);
return temp_r31;
}
static void fn_1_8D80(omObjData *arg0) {
s32 i;
for (i = 0; i < 1; i++) {
Hu3DModelKill(arg0->model[i]);
}
}
static const s32 lbl_1_rodata_143C[153] = {
DATA_MAKE_NUM(DATADIR_OPTION, 55),
DATA_MAKE_NUM(DATADIR_OPTION, 56),
DATA_MAKE_NUM(DATADIR_OPTION, 57),
DATA_MAKE_NUM(DATADIR_OPTION, 58),
DATA_MAKE_NUM(DATADIR_OPTION, 59),
DATA_MAKE_NUM(DATADIR_OPTION, 60),
DATA_MAKE_NUM(DATADIR_OPTION, 61),
DATA_MAKE_NUM(DATADIR_OPTION, 62),
DATA_MAKE_NUM(DATADIR_OPTION, 50),
DATA_MAKE_NUM(DATADIR_OPTION, 51),
DATA_MAKE_NUM(DATADIR_OPTION, 66),
DATA_MAKE_NUM(DATADIR_OPTION, 52),
DATA_MAKE_NUM(DATADIR_OPTION, 52),
DATA_MAKE_NUM(DATADIR_OPTION, 52),
DATA_MAKE_NUM(DATADIR_OPTION, 52),
DATA_MAKE_NUM(DATADIR_OPTION, 52),
DATA_MAKE_NUM(DATADIR_OPTION, 52),
DATA_MAKE_NUM(DATADIR_OPTION, 52),
DATA_MAKE_NUM(DATADIR_OPTION, 52),
DATA_MAKE_NUM(DATADIR_OPTION, 52),
DATA_MAKE_NUM(DATADIR_OPTION, 52),
DATA_MAKE_NUM(DATADIR_OPTION, 52),
DATA_MAKE_NUM(DATADIR_OPTION, 52),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 53),
DATA_MAKE_NUM(DATADIR_OPTION, 49),
DATA_MAKE_NUM(DATADIR_OPTION, 49),
DATA_MAKE_NUM(DATADIR_OPTION, 19),
DATA_MAKE_NUM(DATADIR_OPTION, 20),
DATA_MAKE_NUM(DATADIR_OPTION, 21),
DATA_MAKE_NUM(DATADIR_OPTION, 22),
DATA_MAKE_NUM(DATADIR_OPTION, 23),
DATA_MAKE_NUM(DATADIR_OPTION, 24),
DATA_MAKE_NUM(DATADIR_OPTION, 25),
DATA_MAKE_NUM(DATADIR_OPTION, 26),
DATA_MAKE_NUM(DATADIR_OPTION, 27),
DATA_MAKE_NUM(DATADIR_OPTION, 28),
DATA_MAKE_NUM(DATADIR_OPTION, 29),
DATA_MAKE_NUM(DATADIR_OPTION, 30),
DATA_MAKE_NUM(DATADIR_OPTION, 31),
DATA_MAKE_NUM(DATADIR_OPTION, 32),
DATA_MAKE_NUM(DATADIR_OPTION, 33),
DATA_MAKE_NUM(DATADIR_OPTION, 34),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54),
DATA_MAKE_NUM(DATADIR_OPTION, 54)
};
static void fn_1_8DD4(omObjData *arg0) {
UnkRecordDataStruct01 *temp_r31 = arg0->data;
s32 i;
for (i = 0; i < 153; i++) {
temp_r31->unk34[i] = espEntry(lbl_1_rodata_143C[i], 0, 0);
espDrawNoSet(temp_r31->unk34[i], 0x40);
espDispOff(temp_r31->unk34[i]);
}
espBankSet(temp_r31->unk34[47], 0);
espBankSet(temp_r31->unk34[48], 2);
HuSprExecLayerSet(0x40, 1);
}
static void fn_1_8E98(omObjData *arg0) {
UnkRecordDataStruct01 *temp_r31 = arg0->data;
s32 i;
for (i = 0; i < 153; i++) {
espKill(temp_r31->unk34[i]);
}
}
static s32 fn_1_8EF8(s32 arg0, s32 arg1) {
s32 var_r31;
var_r31 = 1;
while (arg1-- != 0) {
var_r31 *= 10;
}
return (arg0 % (var_r31 * 10)) / var_r31;
}
static void fn_1_8F38(omObjData *arg0, s32 arg1) {
UnkRecordDataStruct01 *temp_r31 = arg0->data;
s32 temp_r28;
s32 i;
s32 j;
espPosSet(temp_r31->unk34[arg1], 275.0f, 72.0f);
temp_r28 = temp_r31->unk178[temp_r31->unk170].unk00;
for (i = 0; i < 4; i++) {
espPosSet(temp_r31->unk34[i + 11], 323.0f + 20.0f * i, 116.0f);
if (temp_r28 > 999) {
espBankSet(temp_r31->unk34[i + 11], i + 10);
} else {
espBankSet(temp_r31->unk34[i + 11], fn_1_8EF8(temp_r28, 3 - i));
}
}
espPosSet(temp_r31->unk34[8], 416.0f, 120.0f);
temp_r28 = temp_r31->unk178[temp_r31->unk170].unk24;
for (i = 0; i < 4; i++) {
espPosSet(temp_r31->unk34[i + 15], 364.0f + 20.0f * i, 268.0f);
if (temp_r28 > 999) {
espBankSet(temp_r31->unk34[i + 15], i + 10);
} else {
espBankSet(temp_r31->unk34[i + 15], fn_1_8EF8(temp_r28, 3 - i));
}
}
espPosSet(temp_r31->unk34[9], 456.0f, 268.0f);
temp_r28 = temp_r31->unk178[temp_r31->unk170].unk28;
for (i = 0; i < 4; i++) {
espPosSet(temp_r31->unk34[i + 19], 364.0f + 20.0f * i, 312.0f);
if (temp_r28 > 999) {
espBankSet(temp_r31->unk34[i + 19], i + 10);
} else {
espBankSet(temp_r31->unk34[i + 19], fn_1_8EF8(temp_r28, 3 - i));
}
}
espPosSet(temp_r31->unk34[10], 456.0f, 312.0f);
for (i = 0; i < 8; i++) {
espPosSet(temp_r31->unk34[i + 49], 92.0f + 50.0f * i, 200.0f);
for (j = 0; j < 3; j++) {
espPosSet(temp_r31->unk34[i * 3 + 23 + j], 80.0f + 50.0f * i + 12.0f * j, 230.0f);
espBankSet(temp_r31->unk34[i * 3 + 23 + j], fn_1_8EF8(temp_r31->unk178[temp_r31->unk170].unk04[i], 2 - j));
}
}
espPosSet(temp_r31->unk34[47], 48.0f, 240.0f);
espPosSet(temp_r31->unk34[48], 492.0f, 240.0f);
espDispOn(temp_r31->unk34[arg1]);
for (i = 0; i < 4; i++) {
espDispOn(temp_r31->unk34[i + 11]);
}
espDispOn(temp_r31->unk34[8]);
for (i = 0; i < 4; i++) {
espDispOn(temp_r31->unk34[i + 15]);
}
espDispOn(temp_r31->unk34[9]);
for (i = 0; i < 4; i++) {
espDispOn(temp_r31->unk34[i + 19]);
}
espDispOn(temp_r31->unk34[10]);
for (i = 0; i < 8; i++) {
espDispOn(temp_r31->unk34[i + 49]);
for (j = 0; j < 3; j++) {
espDispOn(temp_r31->unk34[i * 3 + 23 + j]);
}
}
for (i = 0; i < 4; i++) {
fn_1_A7F0(temp_r31->unk08[i + 2]);
}
fn_1_A7B0(temp_r31->unk08[2], 64.0f, 96.0f);
fn_1_A71C(temp_r31->unk08[2], MAKE_MESSID(47, 19));
fn_1_A7B0(temp_r31->unk08[3], 64.0f, 140.0f);
fn_1_A71C(temp_r31->unk08[3], MAKE_MESSID(47, 20));
fn_1_A7B0(temp_r31->unk08[4], 64.0f, 248.0f);
fn_1_A71C(temp_r31->unk08[4], MAKE_MESSID(47, 21));
fn_1_A7B0(temp_r31->unk08[5], 64.0f, 292.0f);
fn_1_A71C(temp_r31->unk08[5], MAKE_MESSID(47, 22));
}
static const s32 lbl_1_rodata_16F8[53] = {
0, 1, 2, 3, 4, 5, 49, 50, 51, 52,
53, 54, 55, 56, 8, 9, 10, 11, 12, 13,
14, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 38, 39, 40, 35, 36, 37, 41,
42, 43, 44, 45, 46, 15, 16, 17, 18, 19,
20, 21, 22
};
static void fn_1_96B4(omObjData *arg0) {
UnkRecordDataStruct01 *temp_r31 = arg0->data;
s32 i;
for (i = 0; i < 53; i++) {
espDispOff(temp_r31->unk34[lbl_1_rodata_16F8[i]]);
}
for (i = 0; i < 4; i++) {
fn_1_A828(temp_r31->unk08[i + 2]);
}
}
static void fn_1_9750(omObjData *arg0) {
UnkRecordDataStruct01 *temp_r31 = arg0->data;
s32 var_r27;
s32 i;
s32 j;
espPosSet(temp_r31->unk34[6], 275.0f, 72.0f);
for (i = 0; i < 8; i++) {
espPosSet(temp_r31->unk34[i + 57], 148.0f + 80.0f * (i % 4), 172.0f + 104.0f * (i / 4));
for (j = 0, var_r27 = 0; j < 6; j++) {
var_r27 += temp_r31->unk178[j].unk04[i];
}
for (j = 0; j < 3; j++) {
espPosSet(temp_r31->unk34[i * 3 + 65 + j], 132.0f + 80.0f * (i % 4) + 16.0f * j, 218.0f + 104.0f * (i / 4));
espBankSet(temp_r31->unk34[i * 3 + 65 + j], fn_1_8EF8(var_r27, 2 - j));
}
}
espDispOn(temp_r31->unk34[6]);
for (i = 0; i < 8; i++) {
espDispOn(temp_r31->unk34[i + 57]);
for (j = 0; j < 3; j++) {
espDispOn(temp_r31->unk34[i * 3 + 65 + j]);
}
}
fn_1_A7B0(temp_r31->unk08[2], 136.0f, 96.0f);
fn_1_A71C(temp_r31->unk08[2], MAKE_MESSID(47, 23));
fn_1_A7F0(temp_r31->unk08[2]);
}
static const s32 lbl_1_rodata_17E8[33] = {
6, 57, 58, 59, 60, 61, 62, 63, 64, 65,
66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88
};
static void fn_1_9A94(omObjData *arg0) {
UnkRecordDataStruct01 *temp_r31 = arg0->data;
s32 i;
for (i = 0; i < 33; i++) {
espDispOff(temp_r31->unk34[lbl_1_rodata_17E8[i]]);
}
fn_1_A828(temp_r31->unk08[2]);
}
static const s32 lbl_1_rodata_186C[6][3] = {
{ 0x00000195, MAKE_MESSID(23, 5), 0 },
{ 0x00000197, MAKE_MESSID(23, 7), 1 },
{ 0x000001AB, MAKE_MESSID(23, 27), 0 },
{ 0x000001B0, MAKE_MESSID(23, 32), 0 },
{ 0x000001BB, MAKE_MESSID(23, 43), 0 },
{ 0x000001C8, MAKE_MESSID(23, 54), 0 }
};
static void fn_1_9B10(omObjData *arg0, s32 arg1) {
UnkRecordDataStruct01 *temp_r31 = arg0->data;
s32 temp_r25;
s32 temp_r27;
s32 var_r28;
s32 var_r26;
s32 var_r17;
s32 sp5C;
s32 sp58;
s32 sp54;
s32 sp50;
s32 sp4C;
s32 i;
s32 j;
espPosSet(temp_r31->unk34[7], 275.0f, 72.0f);
espPosSet(temp_r31->unk34[47], 48.0f, 240.0f);
espPosSet(temp_r31->unk34[48], 492.0f, 240.0f);
espDispOn(temp_r31->unk34[7]);
for (i = 0; i < 8; i++) {
sp50 = 0;
temp_r27 = i + arg1 * 8;
if (temp_r27 >= 6) {
break;
}
sp54 = GWMGAvailGet(lbl_1_rodata_186C[temp_r27][0]);
temp_r25 = temp_r31->unk280[temp_r27];
if (sp54 != 0) {
switch (lbl_1_rodata_186C[temp_r27][2]) {
case 1:
for (j = 0; j < 8; j++) {
var_r17 = fn_1_8EF8(temp_r25, 7 - j);
if (var_r17 != 0 || sp50 != 0 || j >= 7) {
espPosSet(temp_r31->unk34[i * 8 + 89 + j], 336.0f + 16.0f * j, 116.0f + 40.0f * i);
espBankSet(temp_r31->unk34[i * 8 + 89 + j], var_r17);
espDispOn(temp_r31->unk34[i * 8 + 89 + j]);
sp50 = 1;
}
}
break;
case 0:
sp5C = temp_r25 / 3600;
sp58 = (temp_r25 % 3600) / 60;
var_r26 = (temp_r25 % 3600) % 60;
if (lbl_1_rodata_186C[temp_r27][0] == 0x195 || lbl_1_rodata_186C[temp_r27][0] == 0x1B0) {
var_r26 *= 1.6916667f;
} else {
var_r26 *= 1.6666666f;
}
for (j = 1; j < 8; j++) {
espPosSet(temp_r31->unk34[i * 8 + 89 + j], 336.0f + 16.0f * j, 116.0f + 40.0f * i);
switch (j) {
case 0:
var_r28 = fn_1_8EF8(sp5C, 1);
break;
case 1:
var_r28 = fn_1_8EF8(sp5C, 0);
break;
case 3:
var_r28 = fn_1_8EF8(sp58, 1);
break;
case 4:
var_r28 = fn_1_8EF8(sp58, 0);
break;
case 6:
var_r28 = fn_1_8EF8(var_r26, 1);
break;
case 7:
var_r28 = fn_1_8EF8(var_r26, 0);
break;
case 2:
var_r28 = 11;
break;
case 5:
var_r28 = 12;
break;
}
espBankSet(temp_r31->unk34[i * 8 + 89 + j], var_r28);
espDispOn(temp_r31->unk34[i * 8 + 89 + j]);
}
break;
}
} else {
for (j = 0; j < 8; j++) {
espPosSet(temp_r31->unk34[i * 8 + 89 + j], 336.0f + 16.0f * j, 116.0f + 40.0f * i);
espBankSet(temp_r31->unk34[i * 8 + 89 + j], 0);
espDispOn(temp_r31->unk34[i * 8 + 89 + j]);
}
}
fn_1_A7B0(temp_r31->unk08[i + 2], 60.0f, 96.0f + 40.0f * i);
sp4C = (sp54 != 0) ? lbl_1_rodata_186C[temp_r27][1] : MAKE_MESSID(35, 0);
fn_1_A71C(temp_r31->unk08[i + 2], sp4C);
fn_1_A7F0(temp_r31->unk08[i + 2]);
}
}
static const s32 lbl_1_rodata_18C8[65] = {
7, 89, 90, 91, 92, 93, 94, 95, 96, 97,
98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
148, 149, 150, 151, 152
};
static void fn_1_A3B0(omObjData *arg0) {
UnkRecordDataStruct01 *temp_r30 = arg0->data;
s32 i;
for (i = 0; i < 65; i++) {
espDispOff(temp_r30->unk34[lbl_1_rodata_18C8[i]]);
}
for (i = 0; i < 8; i++) {
fn_1_A828(temp_r30->unk08[i + 2]);
}
}

246
src/REL/option/room.c Executable file
View file

@ -0,0 +1,246 @@
#include "REL/option.h"
#include "game/audio.h"
#include "game/hsfman.h"
#include "game/memory.h"
#include "game/process.h"
#include "game/window.h"
typedef struct {
/* 0x00 */ omObjData *unk00;
/* 0x04 */ omObjData *unk04;
/* 0x08 */ omObjData *unk08;
/* 0x0C */ omObjData *unk0C;
/* 0x10 */ UnkWindowDataStruct *unk10;
/* 0x14 */ UnkWindowDataStruct *unk14;
/* 0x18 */ s32 unk18;
/* 0x1C */ s32 unk1C;
/* 0x20 */ s16 unk20;
/* 0x22 */ char unk22[6];
/* 0x28 */ s32 unk28;
} UnkRoomDataStruct; // Size 0x2C
static void fn_1_1844(omObjData *arg0, s32 arg1);
static void fn_1_1A8C(omObjData *arg0);
static omObjData *fn_1_2088(void);
static void fn_1_2110(omObjData *arg0);
static omObjData *fn_1_2144(void);
static void fn_1_21C4(omObjData *arg0);
omObjData *lbl_1_bss_18;
static omObjFunc lbl_1_data_68[] = {
NULL,
fn_1_1A8C
};
omObjData *fn_1_15A4(void) {
omObjData *var_r30;
UnkRoomDataStruct *temp_r31;
var_r30 = omAddObjEx(lbl_1_bss_8, 1003, 0, 0, 1, NULL);
temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkRoomDataStruct), MEMORY_DEFAULT_NUM);
var_r30->data = temp_r31;
temp_r31->unk18 = 0;
temp_r31->unk20 = -1;
temp_r31->unk28 = 0;
fn_1_B74(lbl_1_bss_10, 600.0f, 60.0f, 120.0f, 1);
fn_1_A6C(lbl_1_bss_10, 0.0f, 120.0f, 0.0f, 1);
temp_r31->unk00 = fn_1_2088();
lbl_1_bss_38 = fn_1_4028();
lbl_1_bss_40 = fn_1_80E4();
lbl_1_bss_30 = fn_1_3158();
lbl_1_bss_20 = fn_1_21F8();
temp_r31->unk04 = fn_1_2144();
temp_r31->unk08 = fn_1_2144();
temp_r31->unk0C = fn_1_2144();
omSetRot(temp_r31->unk04, 0.0f, 0.0f, 0.0f);
omSetRot(temp_r31->unk08, 0.0f, 120.0f, 0.0f);
omSetRot(temp_r31->unk0C, 0.0f, 240.0f, 0.0f);
temp_r31->unk10 = fn_1_A44C(0);
temp_r31->unk14 = fn_1_A44C(1);
return var_r30;
}
void fn_1_1798(omObjData *arg0) {
UnkRoomDataStruct *temp_r31 = arg0->data;
fn_1_2110(temp_r31->unk00);
fn_1_42DC(lbl_1_bss_38);
fn_1_322C(lbl_1_bss_30);
fn_1_825C(lbl_1_bss_40);
fn_1_241C(lbl_1_bss_20);
fn_1_21C4(temp_r31->unk04);
fn_1_21C4(temp_r31->unk08);
fn_1_21C4(temp_r31->unk0C);
fn_1_A6AC(temp_r31->unk10);
fn_1_A6AC(temp_r31->unk14);
HuMemDirectFree(temp_r31);
}
static const float lbl_1_rodata_BC[3] = { 45.0f, 165.0f, 285.0f };
static void fn_1_1844(omObjData *arg0, s32 arg1) {
UnkRoomDataStruct *temp_r31 = arg0->data;
float sp10;
float spC;
float sp8;
float var_f31;
temp_r31->unk18 += (arg1 == 0) ? -1 : 1;
if (temp_r31->unk18 < 0) {
temp_r31->unk18 = 2;
} else if (temp_r31->unk18 >= 3) {
temp_r31->unk18 = 0;
}
fn_1_C88(lbl_1_bss_10, &sp10, &spC, &sp8);
fn_1_B74(lbl_1_bss_10, fn_1_BF8(lbl_1_bss_10), fn_1_C28(lbl_1_bss_10) + (arg1 == 0 ? -120.0f : 120.0f), spC, 0x60);
if (temp_r31->unk18 == 2 && arg1 == 0) {
var_f31 = lbl_1_rodata_BC[2] - 360.0f;
} else if (temp_r31->unk18 == 0 && arg1 == 1) {
var_f31 = 360.0f + lbl_1_rodata_BC[0];
} else {
var_f31 = lbl_1_rodata_BC[temp_r31->unk18];
}
fn_1_2508(lbl_1_bss_20, var_f31, 430.0f, 0x60);
}
void fn_1_1A2C(omObjData *arg0, s32 arg1) {
UnkRoomDataStruct *temp_r31 = arg0->data;
temp_r31->unk1C = arg1;
arg0->func = lbl_1_data_68[arg1];
arg0->unk10 = 0;
arg0->unk10 = 0;
}
s32 fn_1_1A70(omObjData *arg0) {
UnkRoomDataStruct *temp_r31 = arg0->data;
return temp_r31->unk1C;
}
static const s32 lbl_1_rodata_D4[] = {
MAKE_MESSID(47, 1),
MAKE_MESSID(47, 7),
MAKE_MESSID(47, 4)
};
static void fn_1_1A8C(omObjData *arg0) {
UnkRoomDataStruct *temp_r31 = arg0->data;
switch (arg0->unk10) {
case 0:
if (temp_r31->unk28 == 0) {
fn_1_B74(lbl_1_bss_10, 600.0f, 60.0f, 120.0f, 1);
fn_1_A6C(lbl_1_bss_10, 0.0f, 120.0f, 0.0f, 1);
temp_r31->unk28 = 1;
}
arg0->unk10 = 1;
/* fallthrough */
case 1:
if (fn_1_CB8(lbl_1_bss_10) != 0) {
break;
}
fn_1_A6EC(temp_r31->unk10);
fn_1_A71C(temp_r31->unk10, lbl_1_rodata_D4[temp_r31->unk18]);
fn_1_A6EC(temp_r31->unk14);
fn_1_A71C(temp_r31->unk14, MAKE_MESSID(47, 14));
arg0->unk10 = 2;
/* fallthrough */
case 2:
if (temp_r31->unk10->unk20 == 0 && temp_r31->unk14->unk20 == 0) {
if (fn_1_550(0x200) != 0) {
HuAudFXPlay(3);
arg0->unk10 = 7;
} else if (fn_1_584(1) != 0) {
fn_1_1844(arg0, 0);
fn_1_A704(temp_r31->unk10);
fn_1_A704(temp_r31->unk14);
HuAudFXPlay(0);
arg0->unk10 = 1;
} else if (fn_1_584(2) != 0) {
fn_1_1844(arg0, 1);
fn_1_A704(temp_r31->unk10);
fn_1_A704(temp_r31->unk14);
HuAudFXPlay(0);
arg0->unk10 = 1;
} else if (fn_1_550(0x100) != 0) {
fn_1_A704(temp_r31->unk10);
fn_1_A704(temp_r31->unk14);
HuAudFXPlay(2);
arg0->unk10 = 3;
}
}
break;
case 3:
if (temp_r31->unk10->unk20 == 0 && temp_r31->unk14->unk20 == 0) {
switch (temp_r31->unk18) {
case 0:
fn_1_3290(lbl_1_bss_30, 1);
arg0->unk10 = 4;
break;
case 1:
fn_1_4388(lbl_1_bss_38, 1);
arg0->unk10 = 5;
break;
case 2:
fn_1_82B0(lbl_1_bss_40, 1);
arg0->unk10 = 6;
break;
}
}
break;
case 4:
if (fn_1_32D4(lbl_1_bss_30) == 0) {
arg0->unk10 = 1;
}
break;
case 5:
if (fn_1_43CC(lbl_1_bss_38) == 0) {
arg0->unk10 = 1;
}
break;
case 6:
if (fn_1_82F4(lbl_1_bss_40) == 0) {
arg0->unk10 = 1;
}
break;
case 7:
fn_1_A704(temp_r31->unk10);
fn_1_A704(temp_r31->unk14);
arg0->unk10 = 8;
/* fallthrough */
case 8:
if (temp_r31->unk10->unk20 == 0 && temp_r31->unk14->unk20 == 0) {
fn_1_1A2C(arg0, 0);
}
break;
}
}
static omObjData *fn_1_2088(void) {
omObjData *temp_r31;
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
temp_r31->model[0] = Hu3DModelCreateFile(0x690000);
Hu3DModelLayerSet(temp_r31->model[0], 0);
Hu3DModelShadowMapSet(temp_r31->model[0]);
return temp_r31;
}
static void fn_1_2110(omObjData *arg0) {
Hu3DModelKill(arg0->model[0]);
}
static omObjData *fn_1_2144(void) {
omObjData *temp_r31;
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
Hu3DModelLayerSet(temp_r31->model[0], 0);
temp_r31->model[0] = Hu3DModelCreateFile(0x690006);
return temp_r31;
}
static void fn_1_21C4(omObjData *arg0) {
Hu3DModelKill(arg0->model[0]);
}

336
src/REL/option/rumble.c Executable file
View file

@ -0,0 +1,336 @@
#include "REL/option.h"
#include "game/audio.h"
#include "game/gamework_data.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/memory.h"
#include "game/pad.h"
#include "game/window.h"
typedef struct {
/* 0x00 */ omObjData *unk00;
/* 0x04 */ omObjData *unk04;
/* 0x08 */ omObjData *unk08;
/* 0x0C */ omObjData *unk0C;
/* 0x10 */ omObjData *unk10;
/* 0x14 */ UnkWindowDataStruct *unk14[2];
/* 0x20 */ s32 unk1C;
/* 0x20 */ s32 unk20;
/* 0x24 */ s32 unk24;
/* 0x28 */ s32 unk28;
} UnkRumbleDataStruct; // Size 0x2C
static void fn_1_32F0(omObjData *arg0);
static omObjData *fn_1_37AC(void);
static void fn_1_3868(omObjData *arg0);
static omObjData *fn_1_38BC(void);
static void fn_1_398C(omObjData *arg0);
static void fn_1_39E0(omObjData *arg0, s32 arg1, s32 arg2);
static omObjData *fn_1_3B08(void);
static void fn_1_3B8C(omObjData *arg0);
static void fn_1_3BE0(omObjData *arg0, s32 arg1);
static omObjData *fn_1_3C6C(void);
static void fn_1_3D00(omObjData *arg0);
static omObjData *fn_1_3F28(void);
static void fn_1_3FD4(omObjData *arg0);
omObjData *lbl_1_bss_30;
static omObjFunc lbl_1_data_108[] = {
NULL,
fn_1_32F0
};
omObjData *fn_1_3158(void) {
omObjData *temp_r30;
UnkRumbleDataStruct *temp_r3;
temp_r30 = omAddObjEx(lbl_1_bss_8, 1003, 0, 0, 1, NULL);
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkRumbleDataStruct), MEMORY_DEFAULT_NUM);
temp_r30->data = temp_r3;
temp_r3->unk20 = GWGameStat.rumble;
temp_r3->unk00 = fn_1_38BC();
fn_1_39E0(temp_r3->unk00, temp_r3->unk20, 0);
temp_r3->unk04 = fn_1_3B08();
fn_1_3BE0(temp_r3->unk04, temp_r3->unk20);
temp_r3->unk08 = fn_1_3C6C();
temp_r3->unk10 = fn_1_3F28();
temp_r3->unk0C = fn_1_37AC();
fn_1_3290(temp_r30, 0);
return temp_r30;
}
void fn_1_322C(omObjData *arg0) {
UnkRumbleDataStruct *temp_r31 = arg0->data;
fn_1_3868(temp_r31->unk0C);
fn_1_398C(temp_r31->unk00);
fn_1_3B8C(temp_r31->unk04);
fn_1_3FD4(temp_r31->unk10);
fn_1_3D00(temp_r31->unk08);
HuMemDirectFree(temp_r31);
}
void fn_1_3290(omObjData *arg0, s32 arg1) {
UnkRumbleDataStruct *temp_r31 = arg0->data;
temp_r31->unk1C = arg1;
arg0->func = lbl_1_data_108[arg1];
arg0->unk10 = 0;
arg0->unk10 = 0;
}
s32 fn_1_32D4(omObjData *arg0) {
UnkRumbleDataStruct *temp_r31 = arg0->data;
return temp_r31->unk1C;
}
static void fn_1_32F0(omObjData *arg0) {
UnkRumbleDataStruct *temp_r31 = arg0->data;
s32 i;
switch (arg0->unk10) {
case 0:
temp_r31->unk14[0] = fn_1_A44C(0);
temp_r31->unk14[1] = fn_1_A44C(1);
fn_1_AF0(lbl_1_bss_10, -519.62f, 135.0f, 300.0f, 0x28);
fn_1_A6C(lbl_1_bss_10, -315.64f, 135.0f, 182.25f, 0x28);
fn_1_3D54(arg0);
Hu3DModelLayerSet(temp_r31->unk08->model[0], 1);
temp_r31->unk24 = 0;
arg0->unk10 = 1;
/* fallthrough */
case 1:
if (fn_1_CB8(lbl_1_bss_10) != 0) {
break;
}
if (temp_r31->unk24 == 0) {
Hu3DModelAttrReset(temp_r31->unk0C->model[0], 1);
temp_r31->unk24 = 1;
Hu3DModelHookSet(temp_r31->unk00->model[0], "target", temp_r31->unk0C->model[0]);
}
fn_1_A6EC(temp_r31->unk14[1]);
fn_1_A71C(temp_r31->unk14[1], MAKE_MESSID(47, 15));
fn_1_A6EC(temp_r31->unk14[0]);
if (temp_r31->unk20 != 0) {
fn_1_A71C(temp_r31->unk14[0], MAKE_MESSID(47, 2));
} else {
fn_1_A71C(temp_r31->unk14[0], MAKE_MESSID(47, 3));
}
arg0->unk10 = 2;
/* fallthrough */
case 2:
if (temp_r31->unk14[0]->unk20 == 0 && temp_r31->unk14[1]->unk20 == 0) {
if (fn_1_550(0x200) != 0) {
HuAudFXPlay(3);
arg0->unk10 = 4;
} else if (fn_1_584(8) != 0 && temp_r31->unk20 == 0) {
fn_1_39E0(temp_r31->unk00, 1, 1);
temp_r31->unk20 = 1;
temp_r31->unk28 = 0;
GWGameStat.rumble = 1;
arg0->unk10 = 3;
} else if (fn_1_584(4) != 0 && temp_r31->unk20 != 0) {
fn_1_39E0(temp_r31->unk00, 0, 1);
temp_r31->unk20 = 0;
temp_r31->unk28 = 0;
GWGameStat.rumble = 0;
HuPadRumbleAllStop();
arg0->unk10 = 3;
}
}
break;
case 3:
if (temp_r31->unk28++ >= 60) {
HuAudFXPlay(0x83C);
fn_1_3BE0(temp_r31->unk04, temp_r31->unk20);
if (temp_r31->unk20 != 0) {
HuPadRumbleSet(0, 0x3C, 0xA, 5);
Hu3DMotionTimeSet(temp_r31->unk10->model[0], 0.0f);
Hu3DModelAttrReset(temp_r31->unk10->model[0], 1);
} else {
Hu3DModelAttrSet(temp_r31->unk10->model[0], 1);
}
arg0->unk10 = 1;
}
break;
case 4:
fn_1_A704(temp_r31->unk14[1]);
fn_1_A704(temp_r31->unk14[0]);
Hu3DModelAttrSet(temp_r31->unk0C->model[0], 1);
fn_1_3E1C(arg0);
arg0->unk10 = 5;
/* fallthrough */
case 5:
if (temp_r31->unk14[1]->unk20 == 0 && temp_r31->unk14[0]->unk20 == 0 && fn_1_3ED0(lbl_1_bss_30) == 0) {
for (i = 0; i < 2; i++) {
fn_1_A6AC(temp_r31->unk14[i]);
}
Hu3DModelHookReset(temp_r31->unk00->model[0]);
fn_1_AF0(lbl_1_bss_10, -519.62f, 120.0f, 300.0f, 0x28);
fn_1_A6C(lbl_1_bss_10, 0.0f, 120.0f, 0.0f, 0x28);
fn_1_3290(arg0, 0);
}
break;
}
}
static omObjData *fn_1_37AC(void) {
omObjData *temp_r31;
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
temp_r31->model[0] = Hu3DModelCreateFile(0x69000F);
Hu3DModelLayerSet(temp_r31->model[0], 3);
omSetRot(temp_r31, 0.0f, 180.0f, 0.0f);
Hu3DModelAttrSet(temp_r31->model[0], 1);
return temp_r31;
}
static void fn_1_3868(omObjData *arg0) {
s32 i;
for (i = 0; i < 1; i++) {
Hu3DModelKill(arg0->model[i]);
}
}
static omObjData *fn_1_38BC(void) {
omObjData *temp_r31;
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
temp_r31->model[0] = Hu3DModelCreateFile(0x690002);
Hu3DModelAttrSet(temp_r31->model[0], 0x40000002);
if (GWGameStat.rumble != 0) {
Hu3DMotionTimeSet(temp_r31->model[0], 60.0f);
} else {
Hu3DMotionTimeSet(temp_r31->model[0], 0.0f);
}
return temp_r31;
}
static void fn_1_398C(omObjData *arg0) {
s32 i;
for (i = 0; i < 1; i++) {
Hu3DModelKill(arg0->model[i]);
}
}
static void fn_1_39E0(omObjData *arg0, s32 arg1, s32 arg2) {
s16 temp_r31 = arg0->model[0];
Hu3DModelAttrReset(arg0->model[0], 0x40000002);
Hu3DModelAttrReset(arg0->model[0], 0x40000001);
if (arg1 != 0) {
Hu3DMotionStartEndSet(temp_r31, 60.0f, 120.0f);
if (arg2 != 0) {
Hu3DMotionTimeSet(temp_r31, 60.0f);
} else {
Hu3DMotionTimeSet(temp_r31, 119.0f);
}
} else {
Hu3DMotionStartEndSet(temp_r31, 0.0f, 60.0f);
if (arg2 != 0) {
Hu3DMotionTimeSet(temp_r31, 0.0f);
} else {
Hu3DMotionTimeSet(temp_r31, 59.0f);
}
}
}
static omObjData *fn_1_3B08(void) {
omObjData *temp_r31;
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
temp_r31->model[0] = Hu3DModelCreateFile(0x690009);
Hu3DModelAttrSet(temp_r31->model[0], 0x40000001);
return temp_r31;
}
static void fn_1_3B8C(omObjData *arg0) {
s32 i;
for (i = 0; i < 1; i++) {
Hu3DModelKill(arg0->model[i]);
}
}
static void fn_1_3BE0(omObjData *arg0, s32 arg1) {
if (arg1 != 0) {
Hu3DModelAttrReset(arg0->model[0], 0x40000002);
Hu3DModelAttrSet(arg0->model[0], 0x40000001);
} else {
Hu3DModelAttrSet(arg0->model[0], 0x40000002);
Hu3DModelAttrReset(arg0->model[0], 0x40000001);
}
}
static omObjData *fn_1_3C6C(void) {
omObjData *temp_r31;
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
temp_r31->model[0] = Hu3DModelCreateFile(0x69000A);
Hu3DModelAttrSet(temp_r31->model[0], 0x40000002);
Hu3DModelLayerSet(temp_r31->model[0], 2);
return temp_r31;
}
static void fn_1_3D00(omObjData *arg0) {
s32 i;
for (i = 0; i < 1; i++) {
Hu3DModelKill(arg0->model[i]);
}
}
void fn_1_3D54(omObjData *arg0) {
UnkRumbleDataStruct *temp_r31 = arg0->data;
s16 temp_r30 = temp_r31->unk08->model[0];
Hu3DMotionStartEndSet(temp_r30, 0.0f, 40.0f);
Hu3DMotionTimeSet(temp_r30, 0.0f);
Hu3DModelAttrReset(temp_r31->unk08->model[0], 0x40000002);
Hu3DModelAttrReset(temp_r31->unk08->model[0], 0x40000001);
Hu3DModelLayerSet(temp_r31->unk08->model[0], 2);
HuAudFXPlay(0x83D);
}
void fn_1_3E1C(omObjData *arg0) {
UnkRumbleDataStruct *temp_r31 = arg0->data;
s16 temp_r30 = temp_r31->unk08->model[0];
Hu3DMotionStartEndSet(temp_r30, 40.0f, 80.0f);
Hu3DMotionTimeSet(temp_r30, 40.0f);
Hu3DModelAttrReset(temp_r31->unk08->model[0], 0x40000002);
Hu3DModelAttrReset(temp_r31->unk08->model[0], 0x40000001);
HuAudFXPlay(0x83E);
}
s32 fn_1_3ED0(omObjData *arg0) {
UnkRumbleDataStruct *temp_r31 = arg0->data;
s16 temp_r30 = temp_r31->unk08->model[0];
return !Hu3DMotionEndCheck(temp_r30);
}
static omObjData *fn_1_3F28(void) {
omObjData *temp_r31;
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
temp_r31->model[0] = Hu3DModelCreateFile(0x69000B);
if (GWGameStat.rumble != 0) {
Hu3DModelAttrReset(temp_r31->model[0], 1);
} else {
Hu3DModelAttrSet(temp_r31->model[0], 1);
}
return temp_r31;
}
static void fn_1_3FD4(omObjData *arg0) {
s32 i;
for (i = 0; i < 1; i++) {
Hu3DModelKill(arg0->model[i]);
}
}

206
src/REL/option/scene.c Executable file
View file

@ -0,0 +1,206 @@
#include "REL/option.h"
#include "REL/executor.h"
#include "game/audio.h"
#include "game/esprite.h"
#include "game/gamework_data.h"
#include "game/hsfman.h"
#include "game/memory.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/process.h"
#include "game/saveload.h"
#include "game/sprite.h"
#include "game/wipe.h"
#include "rel_sqrt_consts.h"
typedef struct {
/* 0x00 */ s16 unk00;
/* 0x02 */ char unk02[2];
/* 0x04 */ float unk04;
/* 0x08 */ float unk08;
} UnkSceneDataStruct; // Size 0xC
static void fn_1_270(void);
static void fn_1_354(s16 arg0, s32 arg1, s32 arg2);
static void fn_1_468(void);
static void fn_1_5EC(omObjData *arg0);
static void fn_1_6E8(void);
Process *lbl_1_bss_8;
static omObjData *lbl_1_bss_4;
static s32 lbl_1_bss_0;
void ModuleProlog(void) {
lbl_1_bss_8 = omInitObjMan(0x40, 0x2000);
omGameSysInit(lbl_1_bss_8);
HuWinInit(1);
lbl_1_bss_0 = GWGameStat.rumble;
lbl_1_bss_4 = omAddObjEx(lbl_1_bss_8, 1000, 0, 0, 0, fn_1_5EC);
lbl_1_bss_4->unk10 = 0;
lbl_1_bss_28 = fn_1_2E04();
}
void fn_1_160(s16 arg0, s32 arg1, s32 arg2) {
UnkSceneDataStruct *temp_r31;
Process *temp_r30;
temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkSceneDataStruct), MEMORY_DEFAULT_NUM);
temp_r31->unk00 = arg0;
temp_r31->unk08 = 1.0f / arg2;
if (arg1 != 0) {
temp_r31->unk08 = temp_r31->unk08;
temp_r31->unk04 = 0.0f;
} else {
temp_r31->unk08 = -temp_r31->unk08;
temp_r31->unk04 = 1.0f;
}
espDispOn(temp_r31->unk00);
espTPLvlSet(temp_r31->unk00, temp_r31->unk04);
temp_r30 = HuPrcChildCreate(fn_1_270, 0x3000, 0x1500, 0, HuPrcCurrentGet());
temp_r30->user_data = temp_r31;
}
static void fn_1_270(void) {
UnkSceneDataStruct *temp_r31 = HuPrcCurrentGet()->user_data;
while (1) {
temp_r31->unk04 += temp_r31->unk08;
if (temp_r31->unk04 > 1.0f) {
temp_r31->unk04 = 1.0f;
break;
}
if (temp_r31->unk04 < 0.0f) {
temp_r31->unk04 = 0.0f;
break;
}
espTPLvlSet(temp_r31->unk00, temp_r31->unk04);
HuPrcVSleep();
}
espTPLvlSet(temp_r31->unk00, temp_r31->unk04);
if (temp_r31->unk04 <= 0.0f) {
espDispOff(temp_r31->unk00);
}
HuMemDirectFree(temp_r31);
HuPrcEnd();
}
static void fn_1_354(s16 arg0, s32 arg1, s32 arg2) {
UnkSceneDataStruct *temp_r31;
Process *temp_r30;
temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkSceneDataStruct), MEMORY_DEFAULT_NUM);
temp_r31->unk00 = arg0;
temp_r31->unk08 = 1.0f / arg2;
if (arg1 != 0) {
temp_r31->unk08 = temp_r31->unk08;
temp_r31->unk04 = 0.0f;
} else {
temp_r31->unk08 = -temp_r31->unk08;
temp_r31->unk04 = 1.0f;
}
Hu3DModelAttrReset(temp_r31->unk00, 1);
Hu3DModelTPLvlSet(temp_r31->unk00, temp_r31->unk04);
temp_r30 = HuPrcChildCreate(fn_1_468, 0x3000, 0x1500, 0, HuPrcCurrentGet());
temp_r30->user_data = temp_r31;
}
static void fn_1_468(void) {
UnkSceneDataStruct *temp_r31 = HuPrcCurrentGet()->user_data;
while (1) {
temp_r31->unk04 += temp_r31->unk08;
if (temp_r31->unk04 > 1.0f) {
temp_r31->unk04 = 1.0f;
break;
}
if (temp_r31->unk04 < 0.0f) {
temp_r31->unk04 = 0.0f;
break;
}
Hu3DModelTPLvlSet(temp_r31->unk00, temp_r31->unk04);
HuPrcVSleep();
}
Hu3DModelTPLvlSet(temp_r31->unk00, temp_r31->unk04);
if (temp_r31->unk04 <= 0.0f) {
Hu3DModelAttrSet(temp_r31->unk00, 1);
}
HuMemDirectFree(temp_r31);
HuPrcEnd();
}
s32 fn_1_550(u16 arg0) {
u32 temp_r31 = HuPadBtnDown[0] & arg0;
return (temp_r31 != 0);
}
s32 fn_1_584(u16 arg0) {
u32 temp_r31 = HuPadDStkRep[0] & arg0;
return (temp_r31 != 0);
}
s32 fn_1_5B8(u16 arg0) {
u32 temp_r31 = HuPadDStk[0] & arg0;
return (temp_r31 != 0);
}
static void fn_1_5EC(omObjData *arg0) {
switch (arg0->unk10) {
case 0:
arg0->unk10 = 1;
/* fallthrough */
case 1:
if (omSysExitReq == 0) {
break;
}
arg0->unk10 = 2;
/* fallthrough */
case 2:
WipeCreate(2, 0, 0x3C);
HuAudFadeOut(1000);
arg0->unk10 = 3;
/* fallthrough */
case 3:
if (WipeStatGet() == 0) {
fn_1_2F4C(lbl_1_bss_28);
if (lbl_1_bss_0 != GWGameStat.rumble) {
omSysExitReq = 0;
fn_1_6E8();
}
omOvlReturnEx(1, 1);
}
break;
}
}
static void fn_1_6E8(void) {
s16 temp_r31;
if (SLSaveFlagGet() == 0) {
return;
}
Hu3DAllKill();
HuSprClose();
HuSprInit();
espInit();
HuPrcVSleep();
temp_r31 = espEntry(0x860020, 0x1388, 0);
espPosSet(temp_r31, 288.0f, 240.0f);
espAttrReset(temp_r31, 4);
Hu3DBGColorSet(0, 0, 0);
WipeCreate(1, 0, 0xA);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
SLCommonSet();
if (SLSave() == 0) {
GWSystem.save_mode = 1;
}
WipeCreate(2, 0, 0x14);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
}

1654
src/REL/option/sound.c Executable file

File diff suppressed because it is too large Load diff

126
src/REL/option/state.c Executable file
View file

@ -0,0 +1,126 @@
#include "REL/option.h"
#include "game/hsfman.h"
#include "game/memory.h"
#include "game/window.h"
#include "game/wipe.h"
#include "dolphin.h"
typedef struct {
/* 0x00 */ UnkWindowDataStruct *unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ s16 unk08;
/* 0x0A */ char unk0A[2];
} UnkStateDataStruct; // Size 0xC
typedef struct {
Vec unk00;
Vec unk0C;
GXColor unk18;
} UnkLightDataStruct; // Size 0x1C
static void fn_1_2FB0(omObjData *arg0);
omObjData *lbl_1_bss_28;
static UnkLightDataStruct lbl_1_data_A0 = {
{ 0.0f, 300.0f, 0.0f },
{ 0.0f, -300.0f, -600.0f },
{ 0xFF, 0xFF, 0xFF, 0xFF }
};
static Vec lbl_1_data_BC[3] = {
{ 0.0f, 3000.0f, 1.0f },
{ 0.0f, 1.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f }
};
omObjData *fn_1_2E04(void) {
omObjData *var_r30;
UnkStateDataStruct *temp_r3;
LightData *sp8;
var_r30 = omAddObjEx(lbl_1_bss_8, 1000, 0, 0, 4, fn_1_2FB0);
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkStateDataStruct), MEMORY_DEFAULT_NUM);
var_r30->data = temp_r3;
lbl_1_bss_10 = fn_1_7F8();
lbl_1_bss_18 = fn_1_15A4();
temp_r3->unk00 = fn_1_A44C(0);
Hu3DLighInit();
temp_r3->unk08 = Hu3DGLightCreateV(&lbl_1_data_A0.unk00, &lbl_1_data_A0.unk0C, &lbl_1_data_A0.unk18);
Hu3DGLightInfinitytSet(temp_r3->unk08);
sp8 = &Hu3DGlobalLight[temp_r3->unk08];
Hu3DShadowCreate(30.0f, 20.0f, 5000.0f);
Hu3DShadowTPLvlSet(0.45f);
Hu3DShadowPosSet(&lbl_1_data_BC[0], &lbl_1_data_BC[1], &lbl_1_data_BC[2]);
return var_r30;
}
void fn_1_2F4C(omObjData *arg0) {
UnkStateDataStruct *temp_r31 = arg0->data;
fn_1_A3C(lbl_1_bss_10);
fn_1_1798(lbl_1_bss_18);
fn_1_A6AC(temp_r31->unk00);
HuMemDirectFree(temp_r31);
}
static void fn_1_2FB0(omObjData *arg0) {
UnkStateDataStruct *temp_r31 = arg0->data;
switch (arg0->unk10) {
case 0:
arg0->unk10 = 1;
/* fallthrough */
case 1:
WipeCreate(1, -1, 0x3C);
arg0->unk10 = 2;
break;
case 2:
if (WipeStatGet() != 0 || temp_r31->unk00->unk20 != 0) {
break;
}
fn_1_1A2C(lbl_1_bss_18, 1);
arg0->unk10 = 3;
/* fallthrough */
case 3:
if (fn_1_1A70(lbl_1_bss_18) != 0) {
break;
}
arg0->unk10 = 4;
/* fallthrough */
case 4:
fn_1_A6EC(temp_r31->unk00);
fn_1_A71C(temp_r31->unk00, MAKE_MESSID(47, 167));
arg0->unk10 = 5;
/* fallthrough */
case 5:
if (temp_r31->unk00->unk20 != 0) {
break;
}
fn_1_A880(temp_r31->unk00, 1);
arg0->unk10 = 6;
/* fallthrough */
case 6:
if (temp_r31->unk00->unk20 != 0) {
break;
}
fn_1_A704(temp_r31->unk00);
if (temp_r31->unk00->unk1C == 0) {
temp_r31->unk04 = 0;
arg0->unk10 = 7;
} else {
arg0->unk10 = 2;
}
break;
case 7:
arg0->unk10 = 8;
temp_r31->unk04 = 0;
/* fallthrough */
case 8:
if (temp_r31->unk00->unk20 == 0 && temp_r31->unk04++ >= 60) {
omSysExitReq = 1;
}
break;
}
}

148
src/REL/option/window.c Executable file
View file

@ -0,0 +1,148 @@
#include "REL/option.h"
#include "game/esprite.h"
#include "game/memory.h"
#include "game/process.h"
#include "game/sprite.h"
#include "game/window.h"
static void fn_1_A770(UnkWindowDataStruct *arg0, s32 arg1, s16 arg2);
static void fn_1_A860(UnkWindowDataStruct *arg0);
static void fn_1_A8A4(void);
UnkWindowDataStruct *fn_1_A44C(s32 arg0) {
UnkWindowDataStruct *temp_r31;
temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkWindowDataStruct), MEMORY_DEFAULT_NUM);
temp_r31->unk18 = 0;
temp_r31->unk10 = 0;
temp_r31->unk14 = 0;
temp_r31->unk20 = 0;
temp_r31->unk00 = HuPrcChildCreate(fn_1_A8A4, 0x2000, 0x2000, 0, lbl_1_bss_8);
temp_r31->unk00->user_data = temp_r31;
temp_r31->unk08 = arg0;
switch (temp_r31->unk08) {
case 0:
temp_r31->unk04 = HuWinExCreateStyled(-10000.0f, 360.0f, 480, 80, -1, 1);
HuWinBGTPLvlSet(temp_r31->unk04, 0.8f);
HuWinMesSpeedSet(temp_r31->unk04, 0);
HuWinMesPalSet(temp_r31->unk04, 7, 0, 0, 0);
break;
case 1:
temp_r31->unk04 = HuWinExCreateStyled(-10000.0f, 326.0f, 480, 40, -1, 0);
HuWinAttrSet(temp_r31->unk04, 0x800);
HuWinBGTPLvlSet(temp_r31->unk04, 0.0f);
HuWinMesSpeedSet(temp_r31->unk04, 0);
break;
case 2:
temp_r31->unk04 = HuWinExCreateStyled(-10000.0f, 88.0f, 224, 34, -1, 0);
HuWinAttrSet(temp_r31->unk04, 0x800);
HuWinBGTPLvlSet(temp_r31->unk04, 0.0f);
HuWinMesSpeedSet(temp_r31->unk04, 0);
break;
case 3:
temp_r31->unk04 = HuWinExCreateStyled(175.0f, 100.0f, 300, 34, -1, 0);
HuWinBGTPLvlSet(temp_r31->unk04, 0.0f);
HuWinMesSpeedSet(temp_r31->unk04, 0);
break;
}
HuWinDrawNoSet(temp_r31->unk04, 0x3F);
fn_1_A828(temp_r31);
HuSprExecLayerSet(0x3F, 2);
return temp_r31;
}
void fn_1_A6AC(UnkWindowDataStruct *arg0) {
HuWinExCleanup(arg0->unk04);
HuPrcKill(arg0->unk00);
HuMemDirectFree(arg0);
}
void fn_1_A6EC(UnkWindowDataStruct *arg0) {
if (arg0->unk0C == 0) {
arg0->unk20 = 1;
}
}
void fn_1_A704(UnkWindowDataStruct *arg0) {
if (arg0->unk0C != 0) {
arg0->unk20 = 2;
}
}
void fn_1_A71C(UnkWindowDataStruct *arg0, s32 arg1) {
if (arg0->unk20 == 0) {
HuWinMesSet(arg0->unk04, arg1);
} else {
arg0->unk18 = arg1;
}
}
static void fn_1_A770(UnkWindowDataStruct *arg0, s32 arg1, s16 arg2) {
HuWinInsertMesSet(arg0->unk04, arg1, arg2);
}
void fn_1_A7B0(UnkWindowDataStruct *arg0, float arg1, float arg2) {
HuWinPosSet(arg0->unk04, arg1, arg2);
}
void fn_1_A7F0(UnkWindowDataStruct *arg0) {
HuWinDispOn(arg0->unk04);
arg0->unk0C = 1;
}
void fn_1_A828(UnkWindowDataStruct *arg0) {
HuWinDispOff(arg0->unk04);
arg0->unk0C = 0;
}
static void fn_1_A860(UnkWindowDataStruct *arg0) {
if (arg0->unk20 == 0) {
arg0->unk20 = 3;
}
arg0->unk10 = 1;
}
void fn_1_A880(UnkWindowDataStruct *arg0, s32 arg1) {
if (arg0->unk20 == 0) {
arg0->unk20 = 4;
}
arg0->unk14 = 1;
arg0->unk1C = arg1;
}
static void fn_1_A8A4(void) {
UnkWindowDataStruct *temp_r31 = HuPrcCurrentGet()->user_data;
while (1) {
switch (temp_r31->unk20) {
case 1:
fn_1_A7F0(temp_r31);
HuWinExAnimIn(temp_r31->unk04);
break;
case 2:
HuWinExAnimOut(temp_r31->unk04);
fn_1_A828(temp_r31);
break;
case 3:
HuWinMesWait(temp_r31->unk04);
temp_r31->unk10 = 0;
break;
case 4:
temp_r31->unk1C = HuWinChoiceGet(temp_r31->unk04, temp_r31->unk1C);
temp_r31->unk14 = 0;
break;
}
if (temp_r31->unk18 != 0) {
HuWinMesSet(temp_r31->unk04, temp_r31->unk18);
temp_r31->unk18 = 0;
}
temp_r31->unk20 = 0;
if (temp_r31->unk10 != 0) {
temp_r31->unk20 = 3;
}
if (temp_r31->unk14 != 0) {
temp_r31->unk20 = 4;
}
HuPrcVSleep();
}
}

View file

@ -150,15 +150,15 @@ static void ExecBattle(void) {
MgInfo *var_r29;
s32 var_r27 = 0;
s32 sp8[] = {
0x00750000,
0x00760000,
0x00770000,
0x00780000,
0x00790000,
0x007A0000,
0x007B0000,
0x007C0000,
0x007D0000
DATADIR_W01,
DATADIR_W02,
DATADIR_W03,
DATADIR_W04,
DATADIR_W05,
DATADIR_W06,
DATADIR_W10,
DATADIR_W20,
DATADIR_W21
};
var_r29 = mgInfoTbl;
@ -498,17 +498,17 @@ static void CreateBattleMain(void) {
s32 i;
BattleWork *temp_r31;
s32 spC[] = {
0x00010000,
0x00010001,
0x00010002,
0x00010003,
0x00010003,
0x00010004,
0x00010005,
0x00010006,
0x00010007,
0x00010008,
0x00010009
DATA_MAKE_NUM(DATADIR_BBATTLE, 0),
DATA_MAKE_NUM(DATADIR_BBATTLE, 1),
DATA_MAKE_NUM(DATADIR_BBATTLE, 2),
DATA_MAKE_NUM(DATADIR_BBATTLE, 3),
DATA_MAKE_NUM(DATADIR_BBATTLE, 3),
DATA_MAKE_NUM(DATADIR_BBATTLE, 4),
DATA_MAKE_NUM(DATADIR_BBATTLE, 5),
DATA_MAKE_NUM(DATADIR_BBATTLE, 6),
DATA_MAKE_NUM(DATADIR_BBATTLE, 7),
DATA_MAKE_NUM(DATADIR_BBATTLE, 8),
DATA_MAKE_NUM(DATADIR_BBATTLE, 9)
};
battleObj = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, UpdateBattleMain);
@ -774,24 +774,24 @@ static void SetBattleBombState(s32 arg0) {
static s8 battleChanceTbl[][3][5] = {
{
{ 0x0A, 0x55, 0x05, 0x00, 0x00 },
{ 0x0A, 0x4B, 0x0F, 0x00, 0x00 },
{ 0x0A, 0x41, 0x19, 0x00, 0x00 },
{ 10, 85, 5, 0, 0 },
{ 10, 75, 15, 0, 0 },
{ 10, 65, 25, 0, 0 },
},
{
{ 0x05, 0x46, 0x14, 0x05, 0x00 },
{ 0x05, 0x3C, 0x19, 0x0A, 0x00 },
{ 0x05, 0x32, 0x1E, 0x0A, 0x00 },
{ 5, 70, 20, 5, 0 },
{ 5, 60, 25, 10, 0 },
{ 5, 50, 30, 10, 0 },
},
{
{ 0x05, 0x3C, 0x14, 0x0A, 0x05 },
{ 0x05, 0x2D, 0x1E, 0x0F, 0x05 },
{ 0x05, 0x23, 0x1E, 0x14, 0x0A },
{ 5, 60, 20, 10, 5 },
{ 5, 45, 30, 15, 5 },
{ 5, 35, 30, 20, 10 },
},
{
{ 0x05, 0x2D, 0x1E, 0x0F, 0x05 },
{ 0x05, 0x1E, 0x23, 0x14, 0x0A },
{ 0x05, 0x14, 0x23, 0x19, 0x0F }
{ 5, 45, 30, 15, 5 },
{ 5, 30, 35, 20, 10 },
{ 5, 20, 35, 25, 15 }
}
};