From 0fadf3a57f28683376d50ef9c6e0bf4ec362240f Mon Sep 17 00:00:00 2001 From: gamemasterplc Date: Tue, 26 Dec 2023 17:10:45 -0600 Subject: [PATCH 1/3] Start Decompiling bootdll.c --- include/dolphin/os/OSReset.h | 2 + include/functions.h | 3 - include/game/hsfman.h | 17 +- include/game/sprite.h | 3 + include/game/thpmain.h | 18 ++ src/REL/bootDll/bootDll.c | 540 +++++++++++++++++++++++++++-------- src/REL/w10Dll/w10Dll.c | 6 +- src/game/hsfman.c | 11 +- 8 files changed, 460 insertions(+), 140 deletions(-) create mode 100644 include/game/thpmain.h diff --git a/include/dolphin/os/OSReset.h b/include/dolphin/os/OSReset.h index a4cb6416..d420a6f8 100644 --- a/include/dolphin/os/OSReset.h +++ b/include/dolphin/os/OSReset.h @@ -39,6 +39,8 @@ struct OSResetFunctionInfo { OSResetFunctionInfo* prev; }; +u32 OSGetResetCode(void); + #ifdef __cplusplus } #endif diff --git a/include/functions.h b/include/functions.h index 91099844..bdda3cf9 100644 --- a/include/functions.h +++ b/include/functions.h @@ -6,7 +6,6 @@ void Hu3DLayerHookSet(short layer, void (*func)(short layer)); void Hu3D2Dto3D(Vec*, s32, Vec*); -void Hu3DModelLightInfoSet(s32, s32); void Hu3DBGColorSet(u8, u8, u8); void Hu3DCameraCreate(s32); void Hu3DCameraPerspectiveSet(s32, f32, f32, f32, f32); @@ -50,8 +49,6 @@ void BoardWinCreate(s16, s32, s32); void BoardWinKill(void); void BoardWinWait(void); -s32 HuTHPFrameGet(void); - s32 rand8(void); void fn_8005D8E8(void); diff --git a/include/game/hsfman.h b/include/game/hsfman.h index 64fb0b25..c3306522 100644 --- a/include/game/hsfman.h +++ b/include/game/hsfman.h @@ -8,6 +8,10 @@ #include "game/hsfformat.h" #include "game/sprite.h" #include "game/init.h" +#include "game/data.h" +#include "game/memory.h" + +#define Hu3DModelCreateFile(data_id) (Hu3DModelCreate(HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA))) typedef struct model_data { u8 unk_00; @@ -135,7 +139,6 @@ void Hu3DMotionExec(s16, s16, f32, s32); f32 Hu3DMotionMaxTimeGet(s16); /* extern */ s16 Hu3DMotionModelCreate(s16); /* extern */ void Hu3DMotionShapeSet(s16, s16); /* extern */ -HsfData* LoadHSF(s32); /* extern */ void MakeDisplayList(s16, HsfData*); /* extern */ void ClusterAdjustObject(HsfData*, HsfData*); /* extern */ HsfObject* Hu3DObjDuplicate(HsfData*, u32); /* extern */ @@ -145,7 +148,6 @@ void Hu3DLLightKill(s16, s16); /* extern */ s32 Hu3DMotionKill(s16); void Hu3DModelKill(s16); void Hu3DParManAllKill(void); -s32 MakeObjectName(s32); f32 Hu3DMotionMotionMaxTimeGet(s16); void Hu3DMotionStartEndSet(s16, f32, f32); void Hu3DMotionTimeSet(s16, f32); @@ -158,7 +160,7 @@ void Hu3DBGColorSet(u8, u8, u8); void Hu3DLayerHookSet(s16, void (*)(s16)); void Hu3DPauseSet(s32); void Hu3DNoSyncSet(s32); -s16 Hu3DModelCreate(s32); +s16 Hu3DModelCreate(void *); s16 Hu3DModelLink(s16); s16 Hu3DHookFuncCreate(HsfData*); void Hu3DModelAllKill(void); @@ -176,7 +178,7 @@ void Hu3DModelClusterAttrSet(s16, s16, s32); void Hu3DModelClusterAttrReset(s16, s16, s32); void Hu3DModelCameraSet(s16, u16); void Hu3DModelLayerSet(s16, s16); -HsfObject* Hu3DModelObjPtrGet(s16, s32); +HsfObject* Hu3DModelObjPtrGet(s16, char *); void Hu3DModelTPLvlSet(s16, f32); void Hu3DModelHiliteMapSet(s16, AnimData*); void Hu3DModelShadowSet(s16); @@ -184,11 +186,11 @@ void Hu3DModelShadowReset(s16); void Hu3DModelShadowDispOn(s16); void Hu3DModelShadowDispOff(s16); void Hu3DModelShadowMapSet(s16); -void Hu3DModelShadowMapObjSet(s16, s32); +void Hu3DModelShadowMapObjSet(s16, char *); void Hu3DModelAmbSet(s16, f32, f32, f32); -void Hu3DModelHookSet(s16, s32, s16); +void Hu3DModelHookSet(s16, char *, s16); void Hu3DModelHookReset(s16); -void Hu3DModelHookObjReset(s16, s32); +void Hu3DModelHookObjReset(s16, char *); void Hu3DModelProjectionSet(s16, s16); void Hu3DModelProjectionReset(s16, s16); void Hu3DModelHiliteTypeSet(s16, s16); @@ -203,6 +205,7 @@ void Hu3DCameraKill(s32); void Hu3DCameraAllKill(void); void Hu3DCameraSet(s32, Mtx); BOOL Hu3DModelCameraInfoSet(s16, u16); +BOOL Hu3DModelLightInfoSet(s16, u16); s16 Hu3DModelCameraCreate(s16, u16); void Hu3DCameraMotionOn(s16, s8); void Hu3DCameraMotionStart(s16, u16); diff --git a/include/game/sprite.h b/include/game/sprite.h index 1759e291..d1b87064 100644 --- a/include/game/sprite.h +++ b/include/game/sprite.h @@ -2,6 +2,8 @@ #define _GAME_SPRITE_H #include "dolphin.h" +#include "game/data.h" +#include "game/memory.h" #define SPRITE_MAX 384 #define SPRITE_GROUP_MAX 256 @@ -152,6 +154,7 @@ typedef struct sprite_group_data { extern SpriteData HuSprData[SPRITE_MAX]; extern SpriteGroupData HuSprGrpData[SPRITE_GROUP_MAX]; +#define HuSprAnimReadFile(data_id) (HuSprAnimRead(HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA))) void HuSprInit(void); void HuSprClose(void); diff --git a/include/game/thpmain.h b/include/game/thpmain.h new file mode 100644 index 00000000..37ac9565 --- /dev/null +++ b/include/game/thpmain.h @@ -0,0 +1,18 @@ +#ifndef _GAME_THPMAIN_H +#define _GAME_THPMAIN_H + +#include "dolphin/types.h" + +s16 HuTHPSprCreateVol(char *path, s16 loop, s16 prio, float volume); +s16 HuTHPSprCreate(char *path, s16 loop, s16 prio); +s16 HuTHP3DCreateVol(char *path, s16 loop, float volume); +s16 HuTHP3DCreate(char *path, s16 loop); +void HuTHPStop(void); +void HuTHPClose(void); +void HuTHPRestart(void); +int HuTHPEndCheck(void); +int HuTHPFrameGet(void); +int HuTHPTotalFrameGet(void); +void HuTHPSetVolume(int left, int right); + +#endif \ No newline at end of file diff --git a/src/REL/bootDll/bootDll.c b/src/REL/bootDll/bootDll.c index 0f32e06b..130ae49b 100644 --- a/src/REL/bootDll/bootDll.c +++ b/src/REL/bootDll/bootDll.c @@ -1,137 +1,433 @@ #include "common.h" -#include "REL/executor.h" +#include "game/process.h" +#include "game/data.h" +#include "game/sprite.h" +#include "game/object.h" +#include "game/audio.h" +#include "game/memory.h" +#include "game/hsfman.h" +#include "game/wipe.h" +#include "game/pad.h" +#include "game/window.h" +#include "game/thpmain.h" +#include "math.h" -extern s16 lbl_1_bss_E; -extern s16 lbl_1_data_38[]; +#define HU_PAD_BTN_ALL (HuPadBtn[0] | HuPadBtn[1] | HuPadBtn[2] | HuPadBtn[3]) +#define HU_PAD_BTNDOWN_ALL (HuPadBtnDown[0] | HuPadBtnDown[1] | HuPadBtnDown[2] | HuPadBtnDown[3]) +#define HU_PAD_DSTK_ALL (HuPadDStkRep[0] | HuPadDStkRep[1] | HuPadDStkRep[2] | HuPadDStkRep[3]) -//TODO: fill these in correctly -Vec3f lbl_1_rodata_10 = {0.0f, 0.0f, 0.0f}; -Vec3f lbl_1_rodata_1C = {0.0f, 0.0f, 0.0f}; +extern int lbl_801D3A00; -extern f32 lbl_1_bss_1C; -extern Vec3f lbl_1_bss_24; -extern Vec3f lbl_1_bss_3C; -f32 lbl_1_rodata_28; -s32 lbl_1_bss_54; +Process *lbl_1_bss_54; +Vec lbl_1_bss_3C[2]; +Vec lbl_1_bss_24[2]; +float lbl_1_bss_1C[2]; +s16 lbl_1_bss_E[7]; -void fn_1_A0(void) { - UnkOvl* temp_r3; +s16 lbl_1_bss_8[3]; +s16 lbl_1_bss_6; - OSReport("******* Boot ObjectSetup *********\n"); - lbl_1_bss_54 = omInitObjMan(0x32, 0x2000); - lbl_1_bss_3C.x = 0.0f; - lbl_1_bss_3C.y = 0.0f; - lbl_1_bss_3C.z = 0.0f; - lbl_1_bss_24.x = 0.0f; - lbl_1_bss_24.y = 0.0f; - lbl_1_bss_24.z = 0.0f; - lbl_1_bss_1C = 0.0f; - Hu3DCameraCreate(1); - Hu3DCameraPerspectiveSet(1, 0.0f, 0.0f, 0.0f, 0.0f); - Hu3DCameraViewportSet(1, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); - HuPrcCreate(fn_1_26C, 0x64, 0x3000, 0); - Hu3DBGColorSet(0, 0, 0); - temp_r3 = omOvlHisGet(0); - omOvlHisChg(0, temp_r3->unk0, 1, temp_r3->unk8); +s16 lbl_1_bss_4; +s32 lbl_1_bss_0; + +void fn_1_26C(void); +void fn_1_9F8(void); +void fn_1_AC0(void); +void fn_1_2100(void); +BOOL fn_1_2474(void); + +void *logoReadNintendo(void); + +void ModuleProlog(void) +{ + omOvlHisData *history; + OSReport("******* Boot ObjectSetup *********\n"); + lbl_1_bss_54 = omInitObjMan(50, 8192); + lbl_1_bss_3C[0].x = -67; + lbl_1_bss_3C[0].y = 40; + lbl_1_bss_3C[0].z = 0; + lbl_1_bss_24[0].x = 260; + lbl_1_bss_24[0].y = -103; + lbl_1_bss_24[0].z = -18; + lbl_1_bss_1C[0] = 2885; + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30, 20, 15000, 1.2); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + HuPrcCreate(fn_1_26C, 100, 12288, 0); + Hu3DBGColorSet(0, 0, 0); + history = omOvlHisGet(0); + omOvlHisChg(0, history->overlay, 1, history->stat); } -//void fn_1_26C(void) - -void fn_1_9F8(void) { - s32 temp_r30; - s32 i; - - temp_r30 = fn_800578E4(); - for (i = 0; lbl_1_data_38[i*2] != -1; i++) { - if (temp_r30 == lbl_1_data_38[i*2]) { - fn_80045F74(lbl_1_bss_E, i + 0x360000); - } - if (temp_r30 == lbl_1_data_38[i*2+1]) { - fn_80044920(lbl_1_bss_E); - } - } +void fn_1_26C(void) +{ + AnimData *data; + s16 group; + s16 sprite_nintendo; + s16 sprite_hudson; + s16 i; + OSTick tick_prev; + Process *curr = HuPrcCurrentGet(); + if(omovlevtno == 0) { + fn_1_AC0(); + } + group = HuSprGrpCreate(2); + data = HuSprAnimRead(logoReadNintendo()); + sprite_nintendo = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 0, sprite_nintendo); + HuSprPosSet(group, 0, 288, 240); + HuSprAttrSet(group, 0, SPRITE_ATTR_HIDDEN); + if(omovlevtno != 0) { + HuAudSndGrpSetSet(0); + data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 1)); + sprite_hudson = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 1, sprite_hudson); + HuSprPosSet(group, 1, 288, 240); + HuSprAttrSet(group, 1, SPRITE_ATTR_HIDDEN); + HuWinInit(1); + fn_1_2100(); + lbl_801D3A00 = 1; + } else { + s16 group_thp; + BOOL skip_wait; + float win_size[2]; + s16 sprite_thp; + for(i=0; i<4; i++) { + GWPlayerCfg[i].pad_idx = i; + } + repeat: + HuSprAttrReset(group, 0, SPRITE_ATTR_HIDDEN); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + WipeColorSet(255, 255, 255); + if(!lbl_801D3A00) { + tick_prev = OSGetTick(); + fn_800498F0(); + HuWindowInit(); + MGSeqInit(); + HuWinInit(1); + fn_1_2100(); + data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 1)); + sprite_hudson = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 1, sprite_hudson); + HuSprPosSet(group, 1, 288, 240); + HuSprAttrSet(group, 1, SPRITE_ATTR_HIDDEN); + while(OSTicksToMilliseconds(OSGetTick()-tick_prev) < 3000) { + HuPrcVSleep(); + } + } else { + for(i=0; i<180; i++) { + if(HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) { + break; + } + HuPrcVSleep(); + } + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + HuSprAttrSet(group, 0, SPRITE_ATTR_HIDDEN); + HuSprAttrReset(group, 1, SPRITE_ATTR_HIDDEN); + HuPrcSleep(60); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + if(!lbl_801D3A00) { + void *group_samp; + tick_prev = OSGetTick(); + group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0)); + msmSysLoadGroup(0, group_samp, 0); + HuMemDirectFree(group_samp); + while(OSTicksToMilliseconds(OSGetTick()-tick_prev) < 3000) { + HuPrcVSleep(); + } + } else { + for(i=0; i<180; i++) { + if(HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) { + break; + } + HuPrcVSleep(); + } + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + tick_prev = OSGetTick(); + if(!lbl_801D3A00) { + HuAudSndGrpSetSet(0); + lbl_801D3A00 = 1; + } + while(OSTicksToMilliseconds(OSGetTick()-tick_prev) < 1000) { + HuPrcVSleep(); + } + HuSprAttrSet(group, 0, SPRITE_ATTR_HIDDEN); + HuSprAttrSet(group, 1, SPRITE_ATTR_HIDDEN); + group_thp = HuSprGrpCreate(1); + sprite_thp = HuTHPSprCreateVol("movie/opmov_a00.thp", 0, 100, 122); + HuSprGrpMemberSet(group_thp, 0, sprite_thp); + HuSprPosSet(group_thp, 0, 288, 240); + HuWinMesMaxSizeBetGet(win_size, MAKE_MESSID(54, 0), MAKE_MESSID(54, 4)); + lbl_1_bss_E[0] = HuWinCreate(-10000, 448-win_size[1], win_size[0], win_size[1], 0); + HuWinMesSpeedSet(lbl_1_bss_E[0], 0); + HuWinBGTPLvlSet(lbl_1_bss_E[0], 0); + HuWinPriSet(lbl_1_bss_E[0], 10); + HuWinAttrSet(lbl_1_bss_E[0], 0x800); + HuPrcSleep(5); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + while(WipeStatGet()) { + HuPrcVSleep(); + } + skip_wait = FALSE; + while(!HuTHPEndCheck()) { + fn_1_9F8(); + if(HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) { + skip_wait = TRUE; + break; + } + HuPrcVSleep(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + HuWinKill(lbl_1_bss_E[0]); + HuTHPClose(); + HuPrcVSleep(); + HuSprGrpKill(group_thp); + if(!skip_wait) { + HuPrcSleep(60); + } + skip_wait = FALSE; + } + if(!fn_1_2474()) { + HuPrcSleep(60); + goto repeat; + } + WipeColorSet(255, 255, 255); + HuAudSStreamAllFadeOut(500); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + HuPrcVSleep(); + if(omSysExitReq) { + omOvlReturnEx(1, 1); + } else { + omOvlCallEx(OVL_MODESEL, 1, 0, 0); + } + for(i=0; i<4; i++) { + GWPlayerCfg[i].character = -1; + } + HuPrcEnd(); + do { + HuPrcVSleep(); + } while(1); } -//fn_1_AC0 +s16 lbl_1_data_38[] = { + 1686, 1785, + 1850, 1936, + 1993, 2097, + 2135, 2245, + 2258, 2320, + -1, -1, +}; -//fn_1_1178 - -//fn_1_152C - -typedef struct temp2 { - s16 unk0; - s16 unk2; - s16 unk4; -} temp2; - -s32 fn_80008364(s32, s32, s32); -s32 fn_8000DD24(void); -s32 fn_8000DE48(s32, s32, s32); -s16 fn_8000E0F8(s32); -void fn_8000E520(s16, s32, s32); -void fn_8000E808(s16, s32, s32); -s32 fn_8000E960(s16, s32, f32, f32); -void fn_8000F038(s16, s32, s32); -s16 fn_800204D0(s32); -void fn_80021228(s16, s32); -void fn_80022420(s16, s32); -void Hu3DModelLightInfoSet(s16, s32); -extern s16 lbl_1_bss_6; -extern temp2 lbl_1_bss_8; -extern f32 lbl_1_rodata_48; -extern f32 lbl_1_rodata_4C; -extern f32 lbl_1_rodata_98; -extern f32 lbl_1_rodata_9C; -extern f32 lbl_1_rodata_A0; - -void fn_1_2100(void) { - s32 temp_r3_2; - s32 temp_r3; - s16 temp_r3_3; - - temp_r3_3 = fn_800204D0(fn_80008364(0x74000B, 0x10000000, 2)); - lbl_1_bss_8.unk0 = temp_r3_3; - fn_80021228(temp_r3_3, 1); - fn_80021228(temp_r3_3, 0x40000001); - temp_r3_3 = fn_800204D0(fn_80008364(0x74000C, 0x10000000, 2)); - lbl_1_bss_8.unk2 = temp_r3_3; - fn_80021228(temp_r3_3, 1); - fn_80021228(temp_r3_3, 0x40000001); - temp_r3_3 = fn_800204D0(fn_80008364(0x74000D, 0x10000000, 2)); - lbl_1_bss_8.unk4 = temp_r3_3; - fn_80021228(temp_r3_3, 1); - fn_80021228(temp_r3_3, 0x40000001); - fn_80022420(temp_r3_3, 1); - Hu3DModelLightInfoSet(temp_r3_3, 1); - lbl_1_bss_6 = fn_8000E0F8(4); - fn_80008364(0x740008, 0x10000000, 2); - temp_r3 = fn_8000DD24(); - temp_r3_2 = fn_8000DE48(temp_r3, 0, 0); - fn_8000E520(lbl_1_bss_6, 0, temp_r3_2); - fn_8000E808(lbl_1_bss_6, 0, 4); - fn_8000F038(lbl_1_bss_6, 0, 0x7F); - fn_8000E960(lbl_1_bss_6, 0, lbl_1_rodata_48, lbl_1_rodata_4C); - fn_80008364(0x74000A, 0x10000000, 2); - temp_r3 = fn_8000DD24(); - temp_r3_2 = fn_8000DE48(temp_r3, 1, 0); - fn_8000E520(lbl_1_bss_6, 1, temp_r3_2); - fn_8000E808(lbl_1_bss_6, 1, 4); - fn_8000E960(lbl_1_bss_6, 1, lbl_1_rodata_48, lbl_1_rodata_98); - fn_80008364(0x740002, 0x10000000, 2); - temp_r3 = fn_8000DD24(); - temp_r3_2 = fn_8000DE48(temp_r3, 2, 0); - fn_8000E520(lbl_1_bss_6, 2, temp_r3_2); - fn_8000E808(lbl_1_bss_6, 2, 0xC); - fn_8000E960(lbl_1_bss_6, 2, lbl_1_rodata_48, lbl_1_rodata_9C); - fn_80008364(0x740009, 0x10000000, 2); - temp_r3 = fn_8000DD24(); - temp_r3_2 = fn_8000DE48(temp_r3, 0, 0); - fn_8000E520(lbl_1_bss_6, 3, temp_r3_2); - fn_8000E808(lbl_1_bss_6, 3, 0xC); - fn_8000E960(lbl_1_bss_6, 3, lbl_1_rodata_48, lbl_1_rodata_A0); +void fn_1_9F8(void) +{ + int frame = HuTHPFrameGet(); + int i; + for(i=0; lbl_1_data_38[i*2] != -1; i++) { + if(frame == lbl_1_data_38[i*2]) { + HuWinMesSet(lbl_1_bss_E[0], MAKE_MESSID(54, i)); + } + if(frame == lbl_1_data_38[(i*2)+1]) { + HuWinHomeClear(lbl_1_bss_E[0]); + } + } } -//fn_1_2474 +u16 lbl_1_data_50[] = { + 236, 313, + 353, 313 +}; -//fn_1_2944 \ No newline at end of file +void fn_1_AC0(void) +{ + s16 i; + s16 option; + s16 group; + s16 sprite; + AnimData *data; + option = 0; + if(OSGetResetCode() != OS_RESET_RESTART) { + return; + } + if(VIGetDTVStatus() != VI_NON_INTERLACE) { + OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); + return; + } + if(OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_OFF && !(HU_PAD_BTN_ALL & PAD_BUTTON_B)) { + return; + } + if(OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_ON) { + VIConfigure(&GXNtsc480IntDf); + VIFlush(); + } + group = HuSprGrpCreate(3); + data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 3)); + sprite = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 0, sprite); + HuSprPosSet(group, 0, 288, 240); + data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 6)); + sprite = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 1, sprite); + HuSprPosSet(group, 1, lbl_1_data_50[option*2], lbl_1_data_50[(option*2)+1]); + data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 7)); + sprite = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 2, sprite); + HuSprPosSet(group, 2, lbl_1_data_50[option*2], lbl_1_data_50[(option*2)+1]); + HuSprAttrSet(group, 2, SPRITE_ATTR_HIDDEN); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + for(i=0; i<600; i++) { + if(HU_PAD_DSTK_ALL & (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT)) { + option ^= 1; + HuSprPosSet(group, 1, lbl_1_data_50[option*2], lbl_1_data_50[(option*2)+1]); + i=0; + } + if(HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { + HuSprAttrSet(group, 1, SPRITE_ATTR_HIDDEN); + HuSprPosSet(group, 2, lbl_1_data_50[option*2], lbl_1_data_50[(option*2)+1]); + HuSprAttrReset(group, 2, SPRITE_ATTR_HIDDEN); + break; + } + HuPrcVSleep(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while(WipeStatGet()) { + HuPrcVSleep(); + } + if(!option) { + OSSetProgressiveMode(OS_PROGRESSIVE_MODE_ON); + VIConfigure(&GXNtsc480Prog); + VIFlush(); + HuPrcSleep(100); + } else { + OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); + } + HuSprGrpKill(group); + group = HuSprGrpCreate(1); + if(!option) { + data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 4)); + } else { + data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 5)); + } + sprite = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 0, sprite); + HuSprPosSet(group, 0, 288, 240); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while(WipeStatGet()) { + HuPrcVSleep(); + } + HuPrcSleep(60); + for(i=0; i<180; i++) { + if(HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { + break; + } + HuPrcVSleep(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + HuSprGrpKill(group); + HuPrcSleep(30); +} + +u16 lbl_1_data_58[] = { + 1, 2 +}; + +void fn_1_1178(void) +{ + + s16 i; + for(i=0; i<1; i++) { + Vec pos, target, up; + float x, y, z; + + x = lbl_1_bss_3C[i].x; + y = lbl_1_bss_3C[i].y; + z = lbl_1_bss_3C[i].z; + + pos.x = (((sin((M_PI*y)/180.0)*cos((M_PI*x)/180.0))*lbl_1_bss_1C[i])+lbl_1_bss_24[i].x); + pos.y = (-sin((M_PI*x)/180.0)*lbl_1_bss_1C[i])+lbl_1_bss_24[i].y; + pos.z = ((cos((M_PI*y)/180.0)*cos((M_PI*x)/180.0))*lbl_1_bss_1C[i])+lbl_1_bss_24[i].z; + target.x = lbl_1_bss_24[i].x; + target.y = lbl_1_bss_24[i].y; + target.z = lbl_1_bss_24[i].z; + up.x = sin((M_PI*y)/180.0)*sin((M_PI*x)/180.0); + up.y = cos((M_PI*x)/180.0); + up.z = cos((M_PI*y)/180.0)*sin((M_PI*x)/180.0); + Hu3DCameraPosSet(lbl_1_data_58[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); + } +} + +void fn_1_152C(void) +{ + +} + +void fn_1_2100(void) +{ + s16 model; + s16 sprite; + AnimData *sprite_data; + lbl_1_bss_8[0] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 11)); + Hu3DModelAttrSet(model, 1); + Hu3DModelAttrSet(model, 0x40000001); + lbl_1_bss_8[1] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 12)); + Hu3DModelAttrSet(model, 1); + Hu3DModelAttrSet(model, 0x40000001); + lbl_1_bss_8[2] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 13)); + Hu3DModelAttrSet(model, 1); + Hu3DModelAttrSet(model, 0x40000001); + Hu3DModelCameraInfoSet(model, 1); + Hu3DModelLightInfoSet(model, 1); + lbl_1_bss_6 = HuSprGrpCreate(4); + sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 8)); + sprite = HuSprCreate(sprite_data, 0, 0); + HuSprGrpMemberSet(lbl_1_bss_6, 0, sprite); + HuSprAttrSet(lbl_1_bss_6, 0, SPRITE_ATTR_HIDDEN); + HuSprDrawNoSet(lbl_1_bss_6, 0, 127); + HuSprPosSet(lbl_1_bss_6, 0, 288, 240); + sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 10)); + sprite = HuSprCreate(sprite_data, 1, 0); + HuSprGrpMemberSet(lbl_1_bss_6, 1, sprite); + HuSprAttrSet(lbl_1_bss_6, 1, SPRITE_ATTR_HIDDEN); + HuSprPosSet(lbl_1_bss_6, 1, 288, 420); + sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 2)); + sprite = HuSprCreate(sprite_data, 2, 0); + HuSprGrpMemberSet(lbl_1_bss_6, 2, sprite); + HuSprAttrSet(lbl_1_bss_6, 2, SPRITE_ATTR_HIDDEN|SPIRTE_ATTR_BILINEAR); + HuSprPosSet(lbl_1_bss_6, 2, 288, 380); + sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 9)); + sprite = HuSprCreate(sprite_data, 0, 0); + HuSprGrpMemberSet(lbl_1_bss_6, 3, sprite); + HuSprAttrSet(lbl_1_bss_6, 3, SPRITE_ATTR_HIDDEN|SPIRTE_ATTR_BILINEAR); + HuSprPosSet(lbl_1_bss_6, 3, 288, 200); +} + +BOOL fn_1_2474(void) +{ + +} \ No newline at end of file diff --git a/src/REL/w10Dll/w10Dll.c b/src/REL/w10Dll/w10Dll.c index 39364092..28ad5f06 100644 --- a/src/REL/w10Dll/w10Dll.c +++ b/src/REL/w10Dll/w10Dll.c @@ -67,7 +67,7 @@ inline s32 get_current_board(void) { void fn_1_E0(void) { f32 sp10; - f32 spC; + f32 spC[2]; s32 sp8; s32 i; @@ -130,8 +130,8 @@ void fn_1_E0(void) { fn_800A4F6C(lbl_1_data_32); fn_80077AAC(lbl_1_data_2E); fn_8007A83C(lbl_1_data_30); - HuWinMesMaxSizeGet(1, &spC, 0x2E003A); - lbl_1_bss_E = HuWinCreate(-10000.0f, 390.0f, spC, sp10, 1); + HuWinMesMaxSizeGet(1, spC, 0x2E003A); + lbl_1_bss_E = HuWinCreate(-10000.0f, 390.0f, spC[0], spC[1], 1); HuWinMesSet(lbl_1_bss_E, 0x2E003A); HuWinMesSpeedSet(lbl_1_bss_E, 0); HuWinPriSet(lbl_1_bss_E, 1); diff --git a/src/game/hsfman.c b/src/game/hsfman.c index c0d26f6d..9f3a1798 100644 --- a/src/game/hsfman.c +++ b/src/game/hsfman.c @@ -1,4 +1,5 @@ #include "game/hsfman.h" +#include "game/hsfload.h" ModelData Hu3DData[0x200]; CameraData Hu3DCamera[0x10]; @@ -310,7 +311,7 @@ void Hu3DNoSyncSet(s32 arg0) { NoSyncF = arg0; } -s16 Hu3DModelCreate(s32 arg0) { +s16 Hu3DModelCreate(void *arg0) { HsfData* temp_r0; ModelData* var_r31; s16 i; @@ -726,7 +727,7 @@ void Hu3DModelLayerSet(s16 arg0, s16 arg1) { layerNum[arg1] += 1; } -HsfObject* Hu3DModelObjPtrGet(s16 arg0, s32 arg1) { +HsfObject* Hu3DModelObjPtrGet(s16 arg0, char *arg1) { char name[0x100]; s32 spC; s16 sp8; @@ -900,7 +901,7 @@ void Hu3DModelShadowMapSet(s16 arg0) { } } -void Hu3DModelShadowMapObjSet(s16 arg0, s32 arg1) { +void Hu3DModelShadowMapObjSet(s16 arg0, char *arg1) { char name[0x100]; HsfData* temp_r30; s16 i; @@ -931,7 +932,7 @@ void Hu3DModelAmbSet(s16 arg0, f32 arg8, f32 arg9, f32 argA) { temp_r31->unk_58.y = argA; } -void Hu3DModelHookSet(s16 arg0, s32 arg1, s16 arg2) { +void Hu3DModelHookSet(s16 arg0, char *arg1, s16 arg2) { char name[0x100]; ModelData* data; HsfData* temp_r30; @@ -986,7 +987,7 @@ void Hu3DModelHookReset(s16 arg0) { } } -void Hu3DModelHookObjReset(s16 arg0, s32 arg1) { +void Hu3DModelHookObjReset(s16 arg0, char *arg1) { char name[0x100]; ModelData* temp_r28; HsfData* temp_r30; From bdc8355b48f2753c617b19aed9f8053144c135fc Mon Sep 17 00:00:00 2001 From: gamemasterplc Date: Tue, 26 Dec 2023 17:56:14 -0600 Subject: [PATCH 2/3] Decompile fn_1_2474 --- src/REL/bootDll/bootDll.c | 58 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/src/REL/bootDll/bootDll.c b/src/REL/bootDll/bootDll.c index 130ae49b..0ea245f4 100644 --- a/src/REL/bootDll/bootDll.c +++ b/src/REL/bootDll/bootDll.c @@ -10,6 +10,7 @@ #include "game/pad.h" #include "game/window.h" #include "game/thpmain.h" +#include "game/msm.h" #include "math.h" #define HU_PAD_BTN_ALL (HuPadBtn[0] | HuPadBtn[1] | HuPadBtn[2] | HuPadBtn[3]) @@ -429,5 +430,60 @@ void fn_1_2100(void) BOOL fn_1_2474(void) { - + float scale; + float scale_time; + s32 sp8[32]; + s16 i; + Hu3DModelAttrReset(lbl_1_bss_8[0], 1); + Hu3DModelAttrReset(lbl_1_bss_8[1], 1); + HuSprAttrReset(lbl_1_bss_6, 0, SPRITE_ATTR_HIDDEN); + HuSprAttrReset(lbl_1_bss_6, 1, SPRITE_ATTR_HIDDEN); + OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, sp8)); + OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0)); + HuAudSStreamPlay(20); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + HuSprAttrReset(lbl_1_bss_6, 3, SPRITE_ATTR_HIDDEN); + for(i=1; i<=50; i++) { + scale = (cos((i*1.8)*M_PI/180.0)*10.0)+1.0; + HuSprScaleSet(lbl_1_bss_6, 3, scale, scale); + HuSprTPLvlSet(lbl_1_bss_6, 3, i/50.0); + HuPrcVSleep(); + } + HuSprAttrReset(lbl_1_bss_6, 2, SPRITE_ATTR_HIDDEN); + for(i=scale_time=0; i<1800; i++) { + if(i <= 10) { + HuSprTPLvlSet(lbl_1_bss_6, 2, i/10.0); + } + if(HuPadBtnDown[0] & PAD_BUTTON_START) { + s32 ret = HuAudFXPlay(2092); + if(ret < 0) { + OSReport(">>>>>Error %d\n", ret); + } + HuSprAttrSet(lbl_1_bss_6, 2, SPRITE_ATTR_HIDDEN); + return 1; + } + scale = (sin((i*scale_time)*M_PI/180.0)*0.1)+0.9; + scale_time += 0.05; + if(scale_time > 5) { + scale_time = 5; + } + HuSprScaleSet(lbl_1_bss_6, 2, scale, scale); + HuPrcVSleep(); + } + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + Hu3DModelAttrSet(lbl_1_bss_8[0], 1); + Hu3DModelAttrSet(lbl_1_bss_8[1], 1); + Hu3DModelAttrSet(lbl_1_bss_8[2], 1); + HuSprAttrSet(lbl_1_bss_6, 0, SPRITE_ATTR_HIDDEN); + HuSprAttrSet(lbl_1_bss_6, 1, SPRITE_ATTR_HIDDEN); + HuSprAttrSet(lbl_1_bss_6, 2, SPRITE_ATTR_HIDDEN); + HuSprAttrSet(lbl_1_bss_6, 3, SPRITE_ATTR_HIDDEN); + return 0; } \ No newline at end of file From ef448cafc4d7a852c23b56b60ec9e15992b87ff9 Mon Sep 17 00:00:00 2001 From: gamemasterplc Date: Tue, 26 Dec 2023 19:09:19 -0600 Subject: [PATCH 3/3] Name bootdll.c global variables/functions --- config/GMPE01_00/rels/bootDll/symbols.txt | 26 ++-- src/REL/bootDll/bootDll.c | 149 +++++++++++----------- 2 files changed, 89 insertions(+), 86 deletions(-) diff --git a/config/GMPE01_00/rels/bootDll/symbols.txt b/config/GMPE01_00/rels/bootDll/symbols.txt index df4fbfb9..1bdde217 100644 --- a/config/GMPE01_00/rels/bootDll/symbols.txt +++ b/config/GMPE01_00/rels/bootDll/symbols.txt @@ -1,13 +1,13 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global ModuleProlog = .text:0x000000A0; // type:function size:0x1CC -fn_1_26C = .text:0x0000026C; // type:function size:0x78C -fn_1_9F8 = .text:0x000009F8; // type:function size:0xC8 -fn_1_AC0 = .text:0x00000AC0; // type:function size:0x6B8 +BootProc = .text:0x0000026C; // type:function size:0x78C scope:local +UpdateDemoMess = .text:0x000009F8; // type:function size:0xC8 scope:local +ProgressiveProc = .text:0x00000AC0; // type:function size:0x6B8 scope:local fn_1_1178 = .text:0x00001178; // type:function size:0x3B4 fn_1_152C = .text:0x0000152C; // type:function size:0xBD4 -fn_1_2100 = .text:0x00002100; // type:function size:0x374 -fn_1_2474 = .text:0x00002474; // type:function size:0x4D0 +TitleInit = .text:0x00002100; // type:function size:0x374 scope:local +TitleProc = .text:0x00002474; // type:function size:0x4D0 scope:local logoReadNintendo = .text:0x00002944; // type:function size:0x84 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte @@ -50,18 +50,20 @@ lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x24 data:string lbl_1_data_24 = .data:0x00000024; // type:object size:0x14 data:string -lbl_1_data_38 = .data:0x00000038; // type:object size:0x18 data:2byte -lbl_1_data_50 = .data:0x00000050; // type:object size:0x8 +demoTimingTbl = .data:0x00000038; // type:object size:0x18 scope:local data:2byte +progressivePosTbl = .data:0x00000050; // type:object size:0x8 scope:local lbl_1_data_58 = .data:0x00000058; // type:object size:0x4 lbl_1_data_5C = .data:0x0000005C; // type:object size:0x1A data:string lbl_1_data_76 = .data:0x00000076; // type:object size:0x13 data:string lbl_1_data_89 = .data:0x00000089; // type:object size:0x17 logoNintendoData = .data:0x000000A0; // type:object size:0x307D align:32 -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x6 -lbl_1_bss_6 = .bss:0x00000006; // type:object size:0x2 data:2byte -lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x6 data:2byte -lbl_1_bss_E = .bss:0x0000000E; // type:object size:0xE data:2byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 +titleGroup = .bss:0x00000006; // type:object size:0x2 scope:local data:2byte +titleModel = .bss:0x00000008; // type:object size:0x6 scope:local data:2byte +demoWin = .bss:0x0000000E; // type:object size:0x2 data:2byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0xC lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x8 data:float lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x18 data:float lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x18 data:float -lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x8 data:4byte +objman = .bss:0x00000054; // type:object size:0x8 data:4byte diff --git a/src/REL/bootDll/bootDll.c b/src/REL/bootDll/bootDll.c index 0ea245f4..3a19cc64 100644 --- a/src/REL/bootDll/bootDll.c +++ b/src/REL/bootDll/bootDll.c @@ -19,24 +19,26 @@ extern int lbl_801D3A00; -Process *lbl_1_bss_54; +static Process *objman; Vec lbl_1_bss_3C[2]; Vec lbl_1_bss_24[2]; float lbl_1_bss_1C[2]; -s16 lbl_1_bss_E[7]; +Vec lbl_1_bss_10; -s16 lbl_1_bss_8[3]; -s16 lbl_1_bss_6; +static s16 demoWin; + +static s16 titleModel[3]; +static s16 titleGroup; s16 lbl_1_bss_4; s32 lbl_1_bss_0; -void fn_1_26C(void); -void fn_1_9F8(void); -void fn_1_AC0(void); -void fn_1_2100(void); -BOOL fn_1_2474(void); +static void BootProc(void); +static void UpdateDemoMess(void); +static void ProgressiveProc(void); +static void TitleInit(void); +static BOOL TitleProc(void); void *logoReadNintendo(void); @@ -44,7 +46,7 @@ void ModuleProlog(void) { omOvlHisData *history; OSReport("******* Boot ObjectSetup *********\n"); - lbl_1_bss_54 = omInitObjMan(50, 8192); + objman = omInitObjMan(50, 8192); lbl_1_bss_3C[0].x = -67; lbl_1_bss_3C[0].y = 40; lbl_1_bss_3C[0].z = 0; @@ -55,13 +57,13 @@ void ModuleProlog(void) Hu3DCameraCreate(1); Hu3DCameraPerspectiveSet(1, 30, 20, 15000, 1.2); Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); - HuPrcCreate(fn_1_26C, 100, 12288, 0); + HuPrcCreate(BootProc, 100, 12288, 0); Hu3DBGColorSet(0, 0, 0); history = omOvlHisGet(0); omOvlHisChg(0, history->overlay, 1, history->stat); } -void fn_1_26C(void) +static void BootProc(void) { AnimData *data; s16 group; @@ -71,7 +73,7 @@ void fn_1_26C(void) OSTick tick_prev; Process *curr = HuPrcCurrentGet(); if(omovlevtno == 0) { - fn_1_AC0(); + ProgressiveProc(); } group = HuSprGrpCreate(2); data = HuSprAnimRead(logoReadNintendo()); @@ -87,7 +89,7 @@ void fn_1_26C(void) HuSprPosSet(group, 1, 288, 240); HuSprAttrSet(group, 1, SPRITE_ATTR_HIDDEN); HuWinInit(1); - fn_1_2100(); + TitleInit(); lbl_801D3A00 = 1; } else { s16 group_thp; @@ -110,7 +112,7 @@ void fn_1_26C(void) HuWindowInit(); MGSeqInit(); HuWinInit(1); - fn_1_2100(); + TitleInit(); data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 1)); sprite_hudson = HuSprCreate(data, 0, 0); HuSprGrpMemberSet(group, 1, sprite_hudson); @@ -174,11 +176,11 @@ void fn_1_26C(void) HuSprGrpMemberSet(group_thp, 0, sprite_thp); HuSprPosSet(group_thp, 0, 288, 240); HuWinMesMaxSizeBetGet(win_size, MAKE_MESSID(54, 0), MAKE_MESSID(54, 4)); - lbl_1_bss_E[0] = HuWinCreate(-10000, 448-win_size[1], win_size[0], win_size[1], 0); - HuWinMesSpeedSet(lbl_1_bss_E[0], 0); - HuWinBGTPLvlSet(lbl_1_bss_E[0], 0); - HuWinPriSet(lbl_1_bss_E[0], 10); - HuWinAttrSet(lbl_1_bss_E[0], 0x800); + demoWin = HuWinCreate(-10000, 448-win_size[1], win_size[0], win_size[1], 0); + HuWinMesSpeedSet(demoWin, 0); + HuWinBGTPLvlSet(demoWin, 0); + HuWinPriSet(demoWin, 10); + HuWinAttrSet(demoWin, 0x800); HuPrcSleep(5); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); while(WipeStatGet()) { @@ -186,7 +188,7 @@ void fn_1_26C(void) } skip_wait = FALSE; while(!HuTHPEndCheck()) { - fn_1_9F8(); + UpdateDemoMess(); if(HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) { skip_wait = TRUE; break; @@ -197,7 +199,7 @@ void fn_1_26C(void) while(WipeStatGet()) { HuPrcVSleep(); } - HuWinKill(lbl_1_bss_E[0]); + HuWinKill(demoWin); HuTHPClose(); HuPrcVSleep(); HuSprGrpKill(group_thp); @@ -206,7 +208,7 @@ void fn_1_26C(void) } skip_wait = FALSE; } - if(!fn_1_2474()) { + if(!TitleProc()) { HuPrcSleep(60); goto repeat; } @@ -231,7 +233,7 @@ void fn_1_26C(void) } while(1); } -s16 lbl_1_data_38[] = { +static s16 demoTimingTbl[] = { 1686, 1785, 1850, 1936, 1993, 2097, @@ -240,26 +242,26 @@ s16 lbl_1_data_38[] = { -1, -1, }; -void fn_1_9F8(void) +static void UpdateDemoMess(void) { int frame = HuTHPFrameGet(); int i; - for(i=0; lbl_1_data_38[i*2] != -1; i++) { - if(frame == lbl_1_data_38[i*2]) { - HuWinMesSet(lbl_1_bss_E[0], MAKE_MESSID(54, i)); + for(i=0; demoTimingTbl[i*2] != -1; i++) { + if(frame == demoTimingTbl[i*2]) { + HuWinMesSet(demoWin, MAKE_MESSID(54, i)); } - if(frame == lbl_1_data_38[(i*2)+1]) { - HuWinHomeClear(lbl_1_bss_E[0]); + if(frame == demoTimingTbl[(i*2)+1]) { + HuWinHomeClear(demoWin); } } } -u16 lbl_1_data_50[] = { +static u16 progressivePosTbl[] = { 236, 313, 353, 313 }; -void fn_1_AC0(void) +static void ProgressiveProc(void) { s16 i; s16 option; @@ -289,11 +291,11 @@ void fn_1_AC0(void) data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 6)); sprite = HuSprCreate(data, 0, 0); HuSprGrpMemberSet(group, 1, sprite); - HuSprPosSet(group, 1, lbl_1_data_50[option*2], lbl_1_data_50[(option*2)+1]); + HuSprPosSet(group, 1, progressivePosTbl[option*2], progressivePosTbl[(option*2)+1]); data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 7)); sprite = HuSprCreate(data, 0, 0); HuSprGrpMemberSet(group, 2, sprite); - HuSprPosSet(group, 2, lbl_1_data_50[option*2], lbl_1_data_50[(option*2)+1]); + HuSprPosSet(group, 2, progressivePosTbl[option*2], progressivePosTbl[(option*2)+1]); HuSprAttrSet(group, 2, SPRITE_ATTR_HIDDEN); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); while(WipeStatGet()) { @@ -302,12 +304,12 @@ void fn_1_AC0(void) for(i=0; i<600; i++) { if(HU_PAD_DSTK_ALL & (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT)) { option ^= 1; - HuSprPosSet(group, 1, lbl_1_data_50[option*2], lbl_1_data_50[(option*2)+1]); + HuSprPosSet(group, 1, progressivePosTbl[option*2], progressivePosTbl[(option*2)+1]); i=0; } if(HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { HuSprAttrSet(group, 1, SPRITE_ATTR_HIDDEN); - HuSprPosSet(group, 2, lbl_1_data_50[option*2], lbl_1_data_50[(option*2)+1]); + HuSprPosSet(group, 2, progressivePosTbl[option*2], progressivePosTbl[(option*2)+1]); HuSprAttrReset(group, 2, SPRITE_ATTR_HIDDEN); break; } @@ -360,7 +362,6 @@ u16 lbl_1_data_58[] = { void fn_1_1178(void) { - s16 i; for(i=0; i<1; i++) { Vec pos, target, up; @@ -388,56 +389,56 @@ void fn_1_152C(void) } -void fn_1_2100(void) +static void TitleInit(void) { s16 model; s16 sprite; AnimData *sprite_data; - lbl_1_bss_8[0] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 11)); + titleModel[0] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 11)); Hu3DModelAttrSet(model, 1); Hu3DModelAttrSet(model, 0x40000001); - lbl_1_bss_8[1] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 12)); + titleModel[1] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 12)); Hu3DModelAttrSet(model, 1); Hu3DModelAttrSet(model, 0x40000001); - lbl_1_bss_8[2] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 13)); + titleModel[2] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 13)); Hu3DModelAttrSet(model, 1); Hu3DModelAttrSet(model, 0x40000001); Hu3DModelCameraInfoSet(model, 1); Hu3DModelLightInfoSet(model, 1); - lbl_1_bss_6 = HuSprGrpCreate(4); + titleGroup = HuSprGrpCreate(4); sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 8)); sprite = HuSprCreate(sprite_data, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_6, 0, sprite); - HuSprAttrSet(lbl_1_bss_6, 0, SPRITE_ATTR_HIDDEN); - HuSprDrawNoSet(lbl_1_bss_6, 0, 127); - HuSprPosSet(lbl_1_bss_6, 0, 288, 240); + HuSprGrpMemberSet(titleGroup, 0, sprite); + HuSprAttrSet(titleGroup, 0, SPRITE_ATTR_HIDDEN); + HuSprDrawNoSet(titleGroup, 0, 127); + HuSprPosSet(titleGroup, 0, 288, 240); sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 10)); sprite = HuSprCreate(sprite_data, 1, 0); - HuSprGrpMemberSet(lbl_1_bss_6, 1, sprite); - HuSprAttrSet(lbl_1_bss_6, 1, SPRITE_ATTR_HIDDEN); - HuSprPosSet(lbl_1_bss_6, 1, 288, 420); + HuSprGrpMemberSet(titleGroup, 1, sprite); + HuSprAttrSet(titleGroup, 1, SPRITE_ATTR_HIDDEN); + HuSprPosSet(titleGroup, 1, 288, 420); sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 2)); sprite = HuSprCreate(sprite_data, 2, 0); - HuSprGrpMemberSet(lbl_1_bss_6, 2, sprite); - HuSprAttrSet(lbl_1_bss_6, 2, SPRITE_ATTR_HIDDEN|SPIRTE_ATTR_BILINEAR); - HuSprPosSet(lbl_1_bss_6, 2, 288, 380); + HuSprGrpMemberSet(titleGroup, 2, sprite); + HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN|SPIRTE_ATTR_BILINEAR); + HuSprPosSet(titleGroup, 2, 288, 380); sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 9)); sprite = HuSprCreate(sprite_data, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_6, 3, sprite); - HuSprAttrSet(lbl_1_bss_6, 3, SPRITE_ATTR_HIDDEN|SPIRTE_ATTR_BILINEAR); - HuSprPosSet(lbl_1_bss_6, 3, 288, 200); + HuSprGrpMemberSet(titleGroup, 3, sprite); + HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN|SPIRTE_ATTR_BILINEAR); + HuSprPosSet(titleGroup, 3, 288, 200); } -BOOL fn_1_2474(void) +static BOOL TitleProc(void) { float scale; float scale_time; s32 sp8[32]; s16 i; - Hu3DModelAttrReset(lbl_1_bss_8[0], 1); - Hu3DModelAttrReset(lbl_1_bss_8[1], 1); - HuSprAttrReset(lbl_1_bss_6, 0, SPRITE_ATTR_HIDDEN); - HuSprAttrReset(lbl_1_bss_6, 1, SPRITE_ATTR_HIDDEN); + Hu3DModelAttrReset(titleModel[0], 1); + Hu3DModelAttrReset(titleModel[1], 1); + HuSprAttrReset(titleGroup, 0, SPRITE_ATTR_HIDDEN); + HuSprAttrReset(titleGroup, 1, SPRITE_ATTR_HIDDEN); OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, sp8)); OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0)); HuAudSStreamPlay(20); @@ -445,24 +446,24 @@ BOOL fn_1_2474(void) while(WipeStatGet()) { HuPrcVSleep(); } - HuSprAttrReset(lbl_1_bss_6, 3, SPRITE_ATTR_HIDDEN); + HuSprAttrReset(titleGroup, 3, SPRITE_ATTR_HIDDEN); for(i=1; i<=50; i++) { scale = (cos((i*1.8)*M_PI/180.0)*10.0)+1.0; - HuSprScaleSet(lbl_1_bss_6, 3, scale, scale); - HuSprTPLvlSet(lbl_1_bss_6, 3, i/50.0); + HuSprScaleSet(titleGroup, 3, scale, scale); + HuSprTPLvlSet(titleGroup, 3, i/50.0); HuPrcVSleep(); } - HuSprAttrReset(lbl_1_bss_6, 2, SPRITE_ATTR_HIDDEN); + HuSprAttrReset(titleGroup, 2, SPRITE_ATTR_HIDDEN); for(i=scale_time=0; i<1800; i++) { if(i <= 10) { - HuSprTPLvlSet(lbl_1_bss_6, 2, i/10.0); + HuSprTPLvlSet(titleGroup, 2, i/10.0); } if(HuPadBtnDown[0] & PAD_BUTTON_START) { s32 ret = HuAudFXPlay(2092); if(ret < 0) { OSReport(">>>>>Error %d\n", ret); } - HuSprAttrSet(lbl_1_bss_6, 2, SPRITE_ATTR_HIDDEN); + HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN); return 1; } scale = (sin((i*scale_time)*M_PI/180.0)*0.1)+0.9; @@ -470,7 +471,7 @@ BOOL fn_1_2474(void) if(scale_time > 5) { scale_time = 5; } - HuSprScaleSet(lbl_1_bss_6, 2, scale, scale); + HuSprScaleSet(titleGroup, 2, scale, scale); HuPrcVSleep(); } WipeColorSet(255, 255, 255); @@ -478,12 +479,12 @@ BOOL fn_1_2474(void) while(WipeStatGet()) { HuPrcVSleep(); } - Hu3DModelAttrSet(lbl_1_bss_8[0], 1); - Hu3DModelAttrSet(lbl_1_bss_8[1], 1); - Hu3DModelAttrSet(lbl_1_bss_8[2], 1); - HuSprAttrSet(lbl_1_bss_6, 0, SPRITE_ATTR_HIDDEN); - HuSprAttrSet(lbl_1_bss_6, 1, SPRITE_ATTR_HIDDEN); - HuSprAttrSet(lbl_1_bss_6, 2, SPRITE_ATTR_HIDDEN); - HuSprAttrSet(lbl_1_bss_6, 3, SPRITE_ATTR_HIDDEN); + Hu3DModelAttrSet(titleModel[0], 1); + Hu3DModelAttrSet(titleModel[1], 1); + Hu3DModelAttrSet(titleModel[2], 1); + HuSprAttrSet(titleGroup, 0, SPRITE_ATTR_HIDDEN); + HuSprAttrSet(titleGroup, 1, SPRITE_ATTR_HIDDEN); + HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN); + HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN); return 0; } \ No newline at end of file