Merge pull request #56 from gamemasterplc/main

Decompile bootdll.c
This commit is contained in:
gamemasterplc 2023-12-26 19:15:00 -06:00 committed by GitHub
commit beb6f072d2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 531 additions and 152 deletions

View file

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

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,490 @@
#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 "game/msm.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;
static Process *objman;
Vec lbl_1_bss_3C[2];
Vec lbl_1_bss_24[2];
float lbl_1_bss_1C[2];
Vec lbl_1_bss_10;
void fn_1_A0(void) {
UnkOvl* temp_r3;
static s16 demoWin;
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);
static s16 titleModel[3];
static s16 titleGroup;
s16 lbl_1_bss_4;
s32 lbl_1_bss_0;
static void BootProc(void);
static void UpdateDemoMess(void);
static void ProgressiveProc(void);
static void TitleInit(void);
static BOOL TitleProc(void);
void *logoReadNintendo(void);
void ModuleProlog(void)
{
omOvlHisData *history;
OSReport("******* Boot ObjectSetup *********\n");
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;
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(BootProc, 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);
}
}
static void BootProc(void)
{
AnimData *data;
s16 group;
s16 sprite_nintendo;
s16 sprite_hudson;
s16 i;
OSTick tick_prev;
Process *curr = HuPrcCurrentGet();
if(omovlevtno == 0) {
ProgressiveProc();
}
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);
TitleInit();
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);
TitleInit();
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));
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()) {
HuPrcVSleep();
}
skip_wait = FALSE;
while(!HuTHPEndCheck()) {
UpdateDemoMess();
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(demoWin);
HuTHPClose();
HuPrcVSleep();
HuSprGrpKill(group_thp);
if(!skip_wait) {
HuPrcSleep(60);
}
skip_wait = FALSE;
}
if(!TitleProc()) {
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
static s16 demoTimingTbl[] = {
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);
static void UpdateDemoMess(void)
{
int frame = HuTHPFrameGet();
int i;
for(i=0; demoTimingTbl[i*2] != -1; i++) {
if(frame == demoTimingTbl[i*2]) {
HuWinMesSet(demoWin, MAKE_MESSID(54, i));
}
if(frame == demoTimingTbl[(i*2)+1]) {
HuWinHomeClear(demoWin);
}
}
}
//fn_1_2474
static u16 progressivePosTbl[] = {
236, 313,
353, 313
};
//fn_1_2944
static void ProgressiveProc(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, 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, progressivePosTbl[option*2], progressivePosTbl[(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, 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, progressivePosTbl[option*2], progressivePosTbl[(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)
{
}
static void TitleInit(void)
{
s16 model;
s16 sprite;
AnimData *sprite_data;
titleModel[0] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 11));
Hu3DModelAttrSet(model, 1);
Hu3DModelAttrSet(model, 0x40000001);
titleModel[1] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 12));
Hu3DModelAttrSet(model, 1);
Hu3DModelAttrSet(model, 0x40000001);
titleModel[2] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 13));
Hu3DModelAttrSet(model, 1);
Hu3DModelAttrSet(model, 0x40000001);
Hu3DModelCameraInfoSet(model, 1);
Hu3DModelLightInfoSet(model, 1);
titleGroup = HuSprGrpCreate(4);
sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 8));
sprite = HuSprCreate(sprite_data, 0, 0);
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(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(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(titleGroup, 3, sprite);
HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN|SPIRTE_ATTR_BILINEAR);
HuSprPosSet(titleGroup, 3, 288, 200);
}
static BOOL TitleProc(void)
{
float scale;
float scale_time;
s32 sp8[32];
s16 i;
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);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30);
while(WipeStatGet()) {
HuPrcVSleep();
}
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(titleGroup, 3, scale, scale);
HuSprTPLvlSet(titleGroup, 3, i/50.0);
HuPrcVSleep();
}
HuSprAttrReset(titleGroup, 2, SPRITE_ATTR_HIDDEN);
for(i=scale_time=0; i<1800; i++) {
if(i <= 10) {
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(titleGroup, 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(titleGroup, 2, scale, scale);
HuPrcVSleep();
}
WipeColorSet(255, 255, 255);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30);
while(WipeStatGet()) {
HuPrcVSleep();
}
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;
}

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;