Start Decompiling bootdll.c

This commit is contained in:
gamemasterplc 2023-12-26 17:10:45 -06:00
parent f383e26929
commit 0fadf3a57f
8 changed files with 460 additions and 140 deletions

View file

@ -39,6 +39,8 @@ struct OSResetFunctionInfo {
OSResetFunctionInfo* prev;
};
u32 OSGetResetCode(void);
#ifdef __cplusplus
}
#endif

View file

@ -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);

View file

@ -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);

View file

@ -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);

18
include/game/thpmain.h Normal file
View file

@ -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

View file

@ -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
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)
{
}

View file

@ -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);

View file

@ -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;