More exports

This commit is contained in:
dbalatoni13 2025-04-06 07:05:03 +02:00
parent d3b45cf2b4
commit c1bcbdc067
18 changed files with 1270 additions and 499 deletions

View file

@ -40,7 +40,6 @@ set(DOLPHIN_FILES
set(GAME_FILES
src/game/armem.c
src/game/audio.c
src/game/card.c
src/game/ClusterExec.c
src/game/data.c
@ -73,12 +72,14 @@ set(GAME_FILES
src/game/perf.c
src/game/printfunc.c
src/game/process.c
src/game/window.c
src/game/wipe.c
)
set(PORT_FILES
src/port/ar.c
src/port/arq.c
src/port/audio.c
src/port/byteswap.cpp
src/port/dvd.c
src/port/imgui.cpp

View file

@ -4620,7 +4620,7 @@ lbl_80192160 = .bss:0x80192160; // type:object size:0x100
lbl_80192260 = .bss:0x80192260; // type:object size:0x100
wipeData = .bss:0x80192360; // type:object size:0x4C data:4byte
winData = .bss:0x801923C0; // type:object size:0x3000 align:32 data:byte
winKey = .bss:0x801953C0; // type:object size:0x10
winKey = .bss:0x801953C0; // type:object size:0x10 scope:local
winComKeyBuf = .bss:0x801953D0; // type:object size:0x1400
ARInfo = .bss:0x801967E0; // type:object size:0x400 scope:local data:byte
arqReq = .bss:0x80196BE0; // type:object size:0x20 scope:local

View file

@ -4619,7 +4619,7 @@ lbl_80192160 = .bss:0x80192160; // type:object size:0x100
lbl_80192260 = .bss:0x80192260; // type:object size:0x100
wipeData = .bss:0x80192360; // type:object size:0x4C data:4byte
winData = .bss:0x801923C0; // type:object size:0x3000 align:32 data:byte
winKey = .bss:0x801953C0; // type:object size:0x10
winKey = .bss:0x801953C0; // type:object size:0x10 scope:local
winComKeyBuf = .bss:0x801953D0; // type:object size:0x1400
ARInfo = .bss:0x801967E0; // type:object size:0x400 data:byte
arqReq = .bss:0x80196BE0; // type:object size:0x20 scope:local

View file

@ -4452,7 +4452,7 @@ lbl_80192160 = .bss:0x80191E00; // type:object size:0x100
lbl_80192260 = .bss:0x80191F00; // type:object size:0x100
wipeData = .bss:0x80192000; // type:object size:0x4C data:4byte
winData = .bss:0x80192060; // type:object size:0x3000 data:byte
winKey = .bss:0x80195060; // type:object size:0x10
winKey = .bss:0x80195060; // type:object size:0x10 scope:local
winComKeyBuf = .bss:0x80195070; // type:object size:0x1400
ARInfo = .bss:0x80196480; // type:object size:0x400 scope:local data:byte
arqReq = .bss:0x80196880; // type:object size:0x20 scope:local

View file

@ -5547,7 +5547,7 @@ lbl_80192160 = .bss:0x801AF500; // type:object size:0x100
lbl_80192260 = .bss:0x801AF600; // type:object size:0x100
wipeData = .bss:0x801AF700; // type:object size:0x4C data:4byte
winData = .bss:0x801AF760; // type:object size:0x3000 align:32 data:byte
winKey = .bss:0x801B2760; // type:object size:0x10
winKey = .bss:0x801B2760; // type:object size:0x10 scope:local
winComKeyBuf = .bss:0x801B2770; // type:object size:0x1400
mesWInsert = .bss:0x801B3B70; // type:object size:0x10 scope:local
ARInfo = .bss:0x801B3B80; // type:object size:0x400 data:byte

31
dol.def
View file

@ -1,6 +1,10 @@
EXPORTS
OSReport
OSGetTick
HuAudFXPlay
HuAudSStreamAllFadeOut
HuAudSStreamPlay
HuAudSndGrpSetSet
HuMemDirectMalloc
HuMemDirectFree
HuDataSelHeapReadNum
@ -20,8 +24,35 @@ EXPORTS
HuPrcCurrentGet
HuPrcSleep
HuPrcVSleep
HuSprAnimRead
HuSprCreate
HuSprGrpCreate
HuSprGrpMemberSet
HuSprGrpKill
HuSprAttrSet
HuSprAttrReset
HuSprDrawNoSet
HuSprPosSet
HuSprScaleSet
HuSprTPLvlSet
HuWindowInit
HuWinInit
HuWinCreate
HuWinKill
HuWinHomeClear
HuWinPriSet
HuWinAttrSet
HuWinBGTPLvlSet
HuWinMesSpeedSet
HuWinMesSet
HuWinMesMaxSizeBetGet
omOvlCallEx
omOvlReturnEx
omOvlHisChg
omOvlHisGet
omInitObjMan
WipeColorSet
WipeCreate
WipeExecAlways
WipeInit
WipeStatGet

View file

@ -225,7 +225,7 @@ BOOL OSRestoreInterrupts(BOOL level);
#endif // _DEBUG
__declspec(dllexport) void OSReport(const char *msg, ...);
void OSReport(const char *msg, ...);
void OSPanic(const char *file, int line, const char *msg, ...);
void OSFatal(GXColor fg, GXColor bg, const char *msg);

View file

@ -2,23 +2,24 @@
#define _GAME_PAD_H
#include "dolphin.h"
#include "version.h"
#define PAD_BUTTON_DIR (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT | PAD_BUTTON_UP | PAD_BUTTON_DOWN)
#define PAD_BUTTON_TRIGGER_L 0x4000
#define PAD_BUTTON_TRIGGER_R 0x2000
extern u16 HuPadBtn[4];
extern u16 HuPadBtnDown[4];
extern u16 HuPadBtnRep[4];
extern s8 HuPadStkX[4];
extern s8 HuPadStkY[4];
extern s8 HuPadSubStkX[4];
extern s8 HuPadSubStkY[4];
extern u8 HuPadTrigL[4];
extern u8 HuPadTrigR[4];
extern u8 HuPadDStk[4];
extern u8 HuPadDStkRep[4];
SHARED_SYM extern u16 HuPadBtn[4];
SHARED_SYM extern u16 HuPadBtnDown[4];
SHARED_SYM extern u16 HuPadBtnRep[4];
SHARED_SYM extern s8 HuPadStkX[4];
SHARED_SYM extern s8 HuPadStkY[4];
SHARED_SYM extern s8 HuPadSubStkX[4];
SHARED_SYM extern s8 HuPadSubStkY[4];
SHARED_SYM extern u8 HuPadTrigL[4];
SHARED_SYM extern u8 HuPadTrigR[4];
SHARED_SYM extern u8 HuPadDStk[4];
SHARED_SYM extern u8 HuPadDStkRep[4];
extern s8 HuPadErr[4];
extern u16 _PadBtn[4];
extern u16 _PadBtnDown[4];
@ -32,4 +33,4 @@ void HuPadRumbleAllStop(void);
s16 HuPadStatGet(s16 pad);
u32 HuPadRumbleGet(void);
#endif
#endif

View file

@ -3,6 +3,7 @@
#include "game/animdata.h"
#include "dolphin.h"
#include "version.h"
#define MAKE_MESSID(bank, mess) (((bank) << 16)+(mess))
#define MAKE_MESSID_PTR(ptr) ((u32)(ptr))
@ -75,8 +76,8 @@ typedef struct {
/* 0x160 */ u8 ATTRIBUTE_ALIGN(32) mess_pal[10][3];
} WindowData; // Size 0x180
extern WindowData winData[32];
extern void *messDataPtr;
SHARED_SYM extern WindowData winData[32];
SHARED_SYM extern void *messDataPtr;
void HuWindowInit(void);
void HuWinInit(s32 mess_data_no);
@ -139,6 +140,4 @@ void HuWinExCleanup(s16 window);
void HuWinExAnimPopIn(s16 window, s16 portrait);
void *MessData_MesPtrGet(void *data, u32 index);
extern void *messDataPtr;
#endif

View file

@ -2,6 +2,7 @@
#define _GAME_WIPE_H
#include "dolphin.h"
#include "version.h"
#define WIPE_TYPE_PREV -1
#define WIPE_TYPE_NORMAL 0
@ -37,7 +38,7 @@ void WipeCreate(s16 mode, s16 type, s16 duration);
void WipeColorSet(u8 r, u8 g, u8 b);
u8 WipeStatGet(void);
extern WipeState wipeData;
SHARED_SYM extern WipeState wipeData;
extern BOOL wipeFadeInF;
#endif

View file

@ -23,7 +23,7 @@
#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])
extern int SystemInitF;
SHARED_SYM extern int SystemInitF;
static omObjData *debugOutView;
Process *objman;
@ -158,9 +158,15 @@ void ObjectSetup(void)
WipeColorSet(255, 255, 255);
if (!SystemInitF) {
tick_prev = OSGetTick();
#ifdef __MWERKS__
// TODO PC
CharManInit();
#endif
HuWindowInit();
#ifdef __MWERKS__
// TODO PC
MGSeqInit();
#endif
HuWinInit(1);
BootTitleCreate();
data = HuSprAnimReadFile(TITLE_HUDSON_ANM);
@ -198,11 +204,11 @@ void ObjectSetup(void)
HuPrcVSleep();
}
if (!SystemInitF) {
void *group_samp;
//void *group_samp;
tick_prev = OSGetTick();
group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0));
msmSysLoadGroup(0, group_samp, 0);
HuMemDirectFree(group_samp);
//group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0));
//msmSysLoadGroup(0, group_samp, 0);
//HuMemDirectFree(group_samp);
while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) {
HuPrcVSleep();
}
@ -239,9 +245,9 @@ void ObjectSetup(void)
HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF);
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);
//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));
demoWinId = HuWinCreate(-10000, 448 - win_size[1], win_size[0], win_size[1], 0);
HuWinMesSpeedSet(demoWinId, 0);
@ -254,22 +260,22 @@ void ObjectSetup(void)
HuPrcVSleep();
}
skip_wait = FALSE;
while (!HuTHPEndCheck()) {
UpdateDemoMess();
if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) {
skip_wait = TRUE;
break;
}
HuPrcVSleep();
}
//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(demoWinId);
HuTHPClose();
//HuTHPClose();
HuPrcVSleep();
HuSprGrpKill(group_thp);
//HuSprGrpKill(group_thp);
if (!skip_wait) {
HuPrcSleep(60);
}
@ -330,458 +336,468 @@ void ObjectSetup(void)
}
}
// #if VERSION_NTSC
#if VERSION_NTSC
// static u16 progPosTbl[] = { 236, 313, 353, 313 };
static u16 progPosTbl[] = { 236, 313, 353, 313 };
// void BootProgExec(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(TITLE_PROGRESSIVE_CHOOSE_ANM);
// sprite = HuSprCreate(data, 0, 0);
// HuSprGrpMemberSet(group, 0, sprite);
// HuSprPosSet(group, 0, 288, 240);
// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_ON_ANM);
// sprite = HuSprCreate(data, 0, 0);
// HuSprGrpMemberSet(group, 1, sprite);
// HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]);
// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_OFF_ANM);
// sprite = HuSprCreate(data, 0, 0);
// HuSprGrpMemberSet(group, 2, sprite);
// HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]);
// HuSprAttrSet(group, 2, HUSPR_ATTR_DISPOFF);
// 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, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]);
// i = 0;
// }
// if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) {
// HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF);
// HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]);
// HuSprAttrReset(group, 2, HUSPR_ATTR_DISPOFF);
// 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(TITLE_PROGRESSIVE_ON_ANM);
// }
// else {
// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_OFF_ANM);
// }
// 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);
// }
void BootProgExec(void)
{
s16 i;
s16 option;
s16 group;
s16 sprite;
AnimData *data;
option = 0;
#ifdef __MWERKS__
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();
}
#endif
group = HuSprGrpCreate(3);
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CHOOSE_ANM);
sprite = HuSprCreate(data, 0, 0);
HuSprGrpMemberSet(group, 0, sprite);
HuSprPosSet(group, 0, 288, 240);
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_ON_ANM);
sprite = HuSprCreate(data, 0, 0);
HuSprGrpMemberSet(group, 1, sprite);
HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]);
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_OFF_ANM);
sprite = HuSprCreate(data, 0, 0);
HuSprGrpMemberSet(group, 2, sprite);
HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]);
HuSprAttrSet(group, 2, HUSPR_ATTR_DISPOFF);
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, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]);
i = 0;
}
if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) {
HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF);
HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]);
HuSprAttrReset(group, 2, HUSPR_ATTR_DISPOFF);
break;
}
HuPrcVSleep();
}
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20);
while (WipeStatGet()) {
HuPrcVSleep();
}
#ifdef __MWERKS__
// TODO PC
if (!option) {
OSSetProgressiveMode(OS_PROGRESSIVE_MODE_ON);
VIConfigure(&GXNtsc480Prog);
VIFlush();
HuPrcSleep(100);
}
else {
OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF);
}
#endif
HuSprGrpKill(group);
group = HuSprGrpCreate(1);
if (!option) {
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_ON_ANM);
}
else {
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_OFF_ANM);
}
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);
}
// #endif
#endif
// static u16 debugCamTbl[] = { 1, 2 };
static u16 debugCamTbl[] = { 1, 2 };
// void DebugCamOutView(omObjData *obj)
// {
// s16 i;
// for (i = 0; i < 1; i++) {
// Vec pos, target, up;
// float x, y, z;
void DebugCamOutView(omObjData *obj)
{
s16 i;
for (i = 0; i < 1; i++) {
Vec pos, target, up;
float x, y, z;
// x = debugCamRot[i].x;
// y = debugCamRot[i].y;
// z = debugCamRot[i].z;
x = debugCamRot[i].x;
y = debugCamRot[i].y;
z = debugCamRot[i].z;
// pos.x = (((sind(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].x);
// pos.y = (-sind(x) * debugCamZoom[i]) + debugCamPos[i].y;
// pos.z = ((cosd(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].z;
// target.x = debugCamPos[i].x;
// target.y = debugCamPos[i].y;
// target.z = debugCamPos[i].z;
// up.x = sind(y) * sind(x);
// up.y = cosd(x);
// up.z = cosd(y) * sind(x);
// Hu3DCameraPosSet(debugCamTbl[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z);
// }
// }
pos.x = (((sind(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].x);
pos.y = (-sind(x) * debugCamZoom[i]) + debugCamPos[i].y;
pos.z = ((cosd(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].z;
target.x = debugCamPos[i].x;
target.y = debugCamPos[i].y;
target.z = debugCamPos[i].z;
up.x = sind(y) * sind(x);
up.y = cosd(x);
up.z = cosd(y) * sind(x);
Hu3DCameraPosSet(debugCamTbl[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z);
}
}
// void DebugCamUpdate(omObjData *obj)
// {
// Vec pos;
// Vec offset;
// Vec dir;
// Vec y_offset;
#ifdef __MWERKS__
void DebugCamUpdate(omObjData *obj)
{
Vec pos;
Vec offset;
Vec dir;
Vec y_offset;
// f32 z_rot;
// s8 stick_pos;
f32 z_rot;
s8 stick_pos;
// #if VERSION_NTSC
// if ((HuPadBtnDown[0] & 0x800)) {
// debugCamOnF = (debugCamOnF) ? 0 : 1;
// }
// #endif
// if (debugCamOnF != 0) {
// debugCamRot[0].y += 0.1f * HuPadStkX[0];
// debugCamRot[0].x += 0.1f * HuPadStkY[0];
// debugCamZoom[0] += HuPadTrigL[0] / 2;
// debugCamZoom[0] -= HuPadTrigR[0] / 2;
// if (debugCamZoom[0] < 100.0f) {
// debugCamZoom[0] = 100.0f;
// }
// pos.x = debugCamPos[0].x + (debugCamZoom[0] * (sind(debugCamRot[0].y) * cosd(debugCamRot[0].x)));
// pos.y = (debugCamPos[0].y + (debugCamZoom[0] * -sind(debugCamRot[0].x)));
// pos.z = (debugCamPos[0].z + (debugCamZoom[0] * (cosd(debugCamRot[0].y) * cosd(debugCamRot[0].x))));
// offset.x = debugCamPos[0].x - pos.x;
// offset.y = debugCamPos[0].y - pos.y;
// offset.z = debugCamPos[0].z - pos.z;
// dir.x = (sind(debugCamRot[0].y) * sind(debugCamRot[0].x));
// dir.y = cosd(debugCamRot[0].x);
// dir.z = (cosd(debugCamRot[0].y) * sind(debugCamRot[0].x));
// z_rot = debugCamRot[0].z;
// y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot))
// + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot))
// + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot));
#if VERSION_NTSC
if ((HuPadBtnDown[0] & 0x800)) {
debugCamOnF = (debugCamOnF) ? 0 : 1;
}
#endif
if (debugCamOnF != 0) {
debugCamRot[0].y += 0.1f * HuPadStkX[0];
debugCamRot[0].x += 0.1f * HuPadStkY[0];
debugCamZoom[0] += HuPadTrigL[0] / 2;
debugCamZoom[0] -= HuPadTrigR[0] / 2;
if (debugCamZoom[0] < 100.0f) {
debugCamZoom[0] = 100.0f;
}
pos.x = debugCamPos[0].x + (debugCamZoom[0] * (sind(debugCamRot[0].y) * cosd(debugCamRot[0].x)));
pos.y = (debugCamPos[0].y + (debugCamZoom[0] * -sind(debugCamRot[0].x)));
pos.z = (debugCamPos[0].z + (debugCamZoom[0] * (cosd(debugCamRot[0].y) * cosd(debugCamRot[0].x))));
offset.x = debugCamPos[0].x - pos.x;
offset.y = debugCamPos[0].y - pos.y;
offset.z = debugCamPos[0].z - pos.z;
dir.x = (sind(debugCamRot[0].y) * sind(debugCamRot[0].x));
dir.y = cosd(debugCamRot[0].x);
dir.z = (cosd(debugCamRot[0].y) * sind(debugCamRot[0].x));
z_rot = debugCamRot[0].z;
y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot))
+ dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot))
+ dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot));
// y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot))
// + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot))
// + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot));
y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot))
+ dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot))
+ dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot));
// y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot))
// + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot))
// + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot)));
y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot))
+ (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot))
+ dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot)));
// VECCrossProduct(&dir, &offset, &offset);
// VECNormalize(&offset, &offset);
// stick_pos = (HuPadSubStkX[0] & 0xF8);
// if (stick_pos != 0) {
// debugCamPos[0].x += 0.05f * (offset.x * stick_pos);
// debugCamPos[0].y += 0.05f * (offset.y * stick_pos);
// debugCamPos[0].z += 0.05f * (offset.z * stick_pos);
// }
// VECNormalize(&y_offset, &offset);
// stick_pos = -(HuPadSubStkY[0] & 0xF8);
// if (stick_pos != 0) {
// debugCamPos[0].x += 0.05f * (offset.x * stick_pos);
// debugCamPos[0].y += 0.05f * (offset.y * stick_pos);
// debugCamPos[0].z += 0.05f * (offset.z * stick_pos);
// }
// }
// }
VECCrossProduct(&dir, &offset, &offset);
VECNormalize(&offset, &offset);
stick_pos = (HuPadSubStkX[0] & 0xF8);
if (stick_pos != 0) {
debugCamPos[0].x += 0.05f * (offset.x * stick_pos);
debugCamPos[0].y += 0.05f * (offset.y * stick_pos);
debugCamPos[0].z += 0.05f * (offset.z * stick_pos);
}
VECNormalize(&y_offset, &offset);
stick_pos = -(HuPadSubStkY[0] & 0xF8);
if (stick_pos != 0) {
debugCamPos[0].x += 0.05f * (offset.x * stick_pos);
debugCamPos[0].y += 0.05f * (offset.y * stick_pos);
debugCamPos[0].z += 0.05f * (offset.z * stick_pos);
}
}
}
#endif
// void BootTitleCreate(void)
// {
// s16 model;
// s16 sprite;
// AnimData *sprite_data;
// s16 i;
// titleMdlId[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF);
// Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF);
// Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP);
// titleMdlId[1] = model = Hu3DModelCreateFile(TITLE_CUBE_HSF);
// Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF);
// Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP);
// titleMdlId[2] = model = Hu3DModelCreateFile(TITLE_SKY_HSF);
// Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF);
// Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP);
// Hu3DModelCameraInfoSet(model, 1);
// Hu3DModelLightInfoSet(model, 1);
// #if VERSION_NTSC
// bootGrpId = HuSprGrpCreate(4);
// #else
// bootGrpId = HuSprGrpCreate(13);
// #endif
// sprite_data = HuSprAnimReadFile(TITLE_BG_ANM);
// sprite = HuSprCreate(sprite_data, 0, 0);
// HuSprGrpMemberSet(bootGrpId, 0, sprite);
// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF);
// HuSprDrawNoSet(bootGrpId, 0, 127);
// HuSprPosSet(bootGrpId, 0, 288, 240);
// sprite_data = HuSprAnimReadFile(TITLE_COPYRIGHT_ANM);
// sprite = HuSprCreate(sprite_data, 1, 0);
// HuSprGrpMemberSet(bootGrpId, 1, sprite);
// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF);
// HuSprPosSet(bootGrpId, 1, 288, 420);
// #if VERSION_NTSC
// sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_ANM);
// sprite = HuSprCreate(sprite_data, 2, 0);
// HuSprGrpMemberSet(bootGrpId, 2, sprite);
// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR);
// HuSprPosSet(bootGrpId, 2, 288, 380);
// sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM);
// sprite = HuSprCreate(sprite_data, 0, 0);
// HuSprGrpMemberSet(bootGrpId, 3, sprite);
// HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR);
// HuSprPosSet(bootGrpId, 3, 288, 200);
// #else
// sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM);
// sprite = HuSprCreate(sprite_data, 0, 0);
// HuSprGrpMemberSet(bootGrpId, 2, sprite);
// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR);
// HuSprPosSet(bootGrpId, 2, 288, 200);
// for(i=0; i<5; i++) {
// sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_EN_ANM+i);
// sprite = HuSprCreate(sprite_data, 3+i, 0);
// HuSprGrpMemberSet(bootGrpId, 3+i, sprite);
// HuSprAttrSet(bootGrpId, 3+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR);
// HuSprPosSet(bootGrpId, 3+i, 288, 340);
// }
// for(i=0; i<5; i++) {
// sprite_data = HuSprAnimReadFile(TITLE_LANGUAGE_EN_ANM+i);
// sprite = HuSprCreate(sprite_data, 8+i, 0);
// HuSprGrpMemberSet(bootGrpId, 8+i, sprite);
// HuSprAttrSet(bootGrpId, 8+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR);
// HuSprPosSet(bootGrpId, 8+i, 288, 380);
// }
// #endif
// }
void BootTitleCreate(void)
{
s16 model;
s16 sprite;
AnimData *sprite_data;
s16 i;
titleMdlId[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF);
Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP);
titleMdlId[1] = model = Hu3DModelCreateFile(TITLE_CUBE_HSF);
Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP);
titleMdlId[2] = model = Hu3DModelCreateFile(TITLE_SKY_HSF);
Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP);
Hu3DModelCameraInfoSet(model, 1);
Hu3DModelLightInfoSet(model, 1);
#if VERSION_NTSC
bootGrpId = HuSprGrpCreate(4);
#else
bootGrpId = HuSprGrpCreate(13);
#endif
sprite_data = HuSprAnimReadFile(TITLE_BG_ANM);
sprite = HuSprCreate(sprite_data, 0, 0);
HuSprGrpMemberSet(bootGrpId, 0, sprite);
HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF);
HuSprDrawNoSet(bootGrpId, 0, 127);
HuSprPosSet(bootGrpId, 0, 288, 240);
sprite_data = HuSprAnimReadFile(TITLE_COPYRIGHT_ANM);
sprite = HuSprCreate(sprite_data, 1, 0);
HuSprGrpMemberSet(bootGrpId, 1, sprite);
HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF);
HuSprPosSet(bootGrpId, 1, 288, 420);
#if VERSION_NTSC
sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_ANM);
sprite = HuSprCreate(sprite_data, 2, 0);
HuSprGrpMemberSet(bootGrpId, 2, sprite);
HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR);
HuSprPosSet(bootGrpId, 2, 288, 380);
sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM);
sprite = HuSprCreate(sprite_data, 0, 0);
HuSprGrpMemberSet(bootGrpId, 3, sprite);
HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR);
HuSprPosSet(bootGrpId, 3, 288, 200);
#else
sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM);
sprite = HuSprCreate(sprite_data, 0, 0);
HuSprGrpMemberSet(bootGrpId, 2, sprite);
HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR);
HuSprPosSet(bootGrpId, 2, 288, 200);
for(i=0; i<5; i++) {
sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_EN_ANM+i);
sprite = HuSprCreate(sprite_data, 3+i, 0);
HuSprGrpMemberSet(bootGrpId, 3+i, sprite);
HuSprAttrSet(bootGrpId, 3+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR);
HuSprPosSet(bootGrpId, 3+i, 288, 340);
}
for(i=0; i<5; i++) {
sprite_data = HuSprAnimReadFile(TITLE_LANGUAGE_EN_ANM+i);
sprite = HuSprCreate(sprite_data, 8+i, 0);
HuSprGrpMemberSet(bootGrpId, 8+i, sprite);
HuSprAttrSet(bootGrpId, 8+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR);
HuSprPosSet(bootGrpId, 8+i, 288, 380);
}
#endif
}
// BOOL BootTitleExec(void)
// {
// float scale;
// float scale_time;
// int seNo[32];
// s16 pressStartMemberNo;
// s16 languageMemberNo;
// s16 i;
// s16 choice;
// float temp;
// repeat:
// Hu3DModelAttrReset(titleMdlId[0], HU3D_ATTR_DISPOFF);
// Hu3DModelAttrReset(titleMdlId[1], HU3D_ATTR_DISPOFF);
// HuSprAttrReset(bootGrpId, 0, HUSPR_ATTR_DISPOFF);
// HuSprAttrReset(bootGrpId, 1, HUSPR_ATTR_DISPOFF);
// OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, seNo));
// OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0));
// HuAudSStreamPlay(20);
// WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30);
// while (WipeStatGet()) {
// HuPrcVSleep();
// }
// #if VERSION_NTSC
// HuSprAttrReset(bootGrpId, 3, HUSPR_ATTR_DISPOFF);
// for (i = 1; i <= 50; i++) {
// scale = (cosd(i * 1.8) * 10.0) + 1.0;
// HuSprScaleSet(bootGrpId, 3, scale, scale);
// HuSprTPLvlSet(bootGrpId, 3, i / 50.0);
// HuPrcVSleep();
// }
// HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
// #else
// HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
// for (i = 1; i <= 50; i++) {
// scale = (cosd(i * 1.8) * 10.0) + 1.0;
// HuSprScaleSet(bootGrpId, 2, scale, scale);
// HuSprTPLvlSet(bootGrpId, 2, i / 50.0);
// HuPrcVSleep();
// }
// if(GwLanguage == -1) {
// pressStartMemberNo = 3;
// languageMemberNo = 8;
// } else {
// pressStartMemberNo = GwLanguage+3-1;
// languageMemberNo = GwLanguage+8-1;
// }
// HuSprAttrReset(bootGrpId, pressStartMemberNo, HUSPR_ATTR_DISPOFF);
// HuSprAttrReset(bootGrpId, languageMemberNo, HUSPR_ATTR_DISPOFF);
// for(i=1; i<=20; i++) {
// scale = sind(i*4.5);
// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale);
// HuSprScaleSet(bootGrpId, languageMemberNo, scale*0.7, scale*0.7);
// HuPrcVSleep();
// }
// choice = 0;
// scale_time = 0;
// #endif
BOOL BootTitleExec(void)
{
float scale;
float scale_time;
int seNo[32];
s16 pressStartMemberNo;
s16 languageMemberNo;
s16 i;
s16 choice;
float temp;
repeat:
Hu3DModelAttrReset(titleMdlId[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(titleMdlId[1], HU3D_ATTR_DISPOFF);
HuSprAttrReset(bootGrpId, 0, HUSPR_ATTR_DISPOFF);
HuSprAttrReset(bootGrpId, 1, HUSPR_ATTR_DISPOFF);
#ifdef __MWERKS__
// TODO PC
OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, seNo));
OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0));
#endif
HuAudSStreamPlay(20);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30);
while (WipeStatGet()) {
HuPrcVSleep();
}
#if VERSION_NTSC
HuSprAttrReset(bootGrpId, 3, HUSPR_ATTR_DISPOFF);
for (i = 1; i <= 50; i++) {
scale = (cosd(i * 1.8) * 10.0) + 1.0;
HuSprScaleSet(bootGrpId, 3, scale, scale);
HuSprTPLvlSet(bootGrpId, 3, i / 50.0);
HuPrcVSleep();
}
HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
#else
HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
for (i = 1; i <= 50; i++) {
scale = (cosd(i * 1.8) * 10.0) + 1.0;
HuSprScaleSet(bootGrpId, 2, scale, scale);
HuSprTPLvlSet(bootGrpId, 2, i / 50.0);
HuPrcVSleep();
}
if(GwLanguage == -1) {
pressStartMemberNo = 3;
languageMemberNo = 8;
} else {
pressStartMemberNo = GwLanguage+3-1;
languageMemberNo = GwLanguage+8-1;
}
HuSprAttrReset(bootGrpId, pressStartMemberNo, HUSPR_ATTR_DISPOFF);
HuSprAttrReset(bootGrpId, languageMemberNo, HUSPR_ATTR_DISPOFF);
for(i=1; i<=20; i++) {
scale = sind(i*4.5);
HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale);
HuSprScaleSet(bootGrpId, languageMemberNo, scale*0.7, scale*0.7);
HuPrcVSleep();
}
choice = 0;
scale_time = 0;
#endif
// #if VERSION_NTSC
// for (i = scale_time = 0; i < 1800; i++) {
// #else
// for (i = temp = 0; i < 1800; i++) {
// #endif
// #if VERSION_PAL
// if((choice == 0 && (HuPadDStkRep[0] & PAD_BUTTON_DOWN)) || (choice != 0 && (HuPadDStkRep[0] & PAD_BUTTON_UP))) {
// HuAudFXPlay(0);
// for(i=1; i<=10; i++) {
// scale = ((1-(i/10.0))*(((cosd(scale_time)*0.1)+0.9)-0.7))+0.7;
// if(choice == 0) {
// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale);
// } else {
// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale);
// }
// scale = ((1-(i/10.0))*(((cosd(scale_time/3.0)*0.05)+0.65)-1.0))+1.0;
// if(choice == 0) {
// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale);
// } else {
// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale);
// }
// HuPrcVSleep();
// }
// choice ^= 1;
// scale_time = 0;
// }
// if (HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) {
// if(choice == 0) {
// s32 ret = HuAudFXPlay(2092);
// if (ret < 0) {
// OSReport(">>>>>Error %d\n", ret);
// }
// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
// return 1;
// } else {
// HuAudFXPlay(1);
// HuAudSStreamAllFadeOut(500);
// WipeColorSet(255, 255, 255);
// WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30);
// while (WipeStatGet()) {
// HuPrcVSleep();
// }
// Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF);
// Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF);
// Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF);
// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF);
// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF);
// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
// for(i=0; i<5; i++) {
// HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF);
// }
// for(i=0; i<5; i++) {
// HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF);
// }
// LanguageMenuExec();
// Hu3DModelCameraInfoSet(titleMdlId[2], 1);
// Hu3DModelLightInfoSet(titleMdlId[2], 1);
// HuWinInit(1);
// goto repeat;
// }
// }
// scale = (cosd(scale_time) * 0.1) + 0.9;
// if(choice == 0) {
// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale);
// } else {
// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale);
// }
// scale = (cosd(scale_time/3.0) * 0.05) + 0.65;
// if(choice == 0) {
// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale);
// } else {
// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale);
// }
// scale_time += 5;
// HuPrcVSleep();
// #else
// if (i <= 10) {
// HuSprTPLvlSet(bootGrpId, 2, i / 10.0);
// }
// if (HuPadBtnDown[0] & PAD_BUTTON_START) {
// s32 ret = HuAudFXPlay(2092);
// if (ret < 0) {
// OSReport(">>>>>Error %d\n", ret);
// }
// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
// return 1;
// }
// scale = (sind(i * scale_time) * 0.1) + 0.9;
// scale_time += 0.05;
// if (scale_time > 5) {
// scale_time = 5;
// }
// HuSprScaleSet(bootGrpId, 2, scale, scale);
// HuPrcVSleep();
// #endif
#if VERSION_NTSC
for (i = scale_time = 0; i < 1800; i++) {
#else
for (i = temp = 0; i < 1800; i++) {
#endif
#if VERSION_PAL
if((choice == 0 && (HuPadDStkRep[0] & PAD_BUTTON_DOWN)) || (choice != 0 && (HuPadDStkRep[0] & PAD_BUTTON_UP))) {
HuAudFXPlay(0);
for(i=1; i<=10; i++) {
scale = ((1-(i/10.0))*(((cosd(scale_time)*0.1)+0.9)-0.7))+0.7;
if(choice == 0) {
HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale);
} else {
HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale);
}
scale = ((1-(i/10.0))*(((cosd(scale_time/3.0)*0.05)+0.65)-1.0))+1.0;
if(choice == 0) {
HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale);
} else {
HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale);
}
HuPrcVSleep();
}
choice ^= 1;
scale_time = 0;
}
if (HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) {
if(choice == 0) {
s32 ret = HuAudFXPlay(2092);
if (ret < 0) {
OSReport(">>>>>Error %d\n", ret);
}
HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
return 1;
} else {
HuAudFXPlay(1);
HuAudSStreamAllFadeOut(500);
WipeColorSet(255, 255, 255);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30);
while (WipeStatGet()) {
HuPrcVSleep();
}
Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF);
HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
for(i=0; i<5; i++) {
HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF);
}
for(i=0; i<5; i++) {
HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF);
}
LanguageMenuExec();
Hu3DModelCameraInfoSet(titleMdlId[2], 1);
Hu3DModelLightInfoSet(titleMdlId[2], 1);
HuWinInit(1);
goto repeat;
}
}
scale = (cosd(scale_time) * 0.1) + 0.9;
if(choice == 0) {
HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale);
} else {
HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale);
}
scale = (cosd(scale_time/3.0) * 0.05) + 0.65;
if(choice == 0) {
HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale);
} else {
HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale);
}
scale_time += 5;
HuPrcVSleep();
#else
if (i <= 10) {
HuSprTPLvlSet(bootGrpId, 2, i / 10.0);
}
if (HuPadBtnDown[0] & PAD_BUTTON_START) {
s32 ret = HuAudFXPlay(2092);
if (ret < 0) {
OSReport(">>>>>Error %d\n", ret);
}
HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
return 1;
}
scale = (sind(i * scale_time) * 0.1) + 0.9;
scale_time += 0.05;
if (scale_time > 5) {
scale_time = 5;
}
HuSprScaleSet(bootGrpId, 2, scale, scale);
HuPrcVSleep();
#endif
// }
// WipeColorSet(255, 255, 255);
// WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30);
// while (WipeStatGet()) {
// HuPrcVSleep();
// }
// Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF);
// Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF);
// Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF);
// #if VERSION_NTSC
// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF);
// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF);
// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
// HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF);
// #else
// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF);
// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF);
// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
// for(i=0; i<5; i++) {
// HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF);
// }
// for(i=0; i<5; i++) {
// HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF);
// }
// #endif
// return 0;
// }
}
WipeColorSet(255, 255, 255);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30);
while (WipeStatGet()) {
HuPrcVSleep();
}
Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF);
#if VERSION_NTSC
HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF);
#else
HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
for(i=0; i<5; i++) {
HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF);
}
for(i=0; i<5; i++) {
HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF);
}
#endif
return 0;
}
// #include "nintendoData.inc"
#include "nintendoData.inc"
// void *NintendoDataDecode(void)
// {
// u32 *src = (u32 *)nintendoData;
// u32 size = *src++;
// void *dst = HuMemDirectMalloc(HEAP_DATA, size);
// int decode_type = *src++;
// if(dst) {
// HuDecodeData(src, dst, size, decode_type);
// }
// return dst;
// }
void *NintendoDataDecode(void)
{
u32 *src = (u32 *)nintendoData;
u32 size = *src++;
void *dst = HuMemDirectMalloc(HEAP_DATA, size);
int decode_type = *src++;
if(dst) {
HuDecodeData(src, dst, size, decode_type);
}
return dst;
}

View file

@ -15,6 +15,7 @@
#include "game/sprite.h"
#include "game/sreset.h"
#include "game/wipe.h"
#include "version.h"
#ifdef TARGET_PC
#include "port/imgui.h"
@ -45,7 +46,7 @@ static u32 pe_req;
static u32 rf_req;
static u32 fi_req;
s32 HuDvdErrWait;
s32 SystemInitF;
SHARED_SYM s32 SystemInitF;
#ifdef TARGET_PC
#include <stdio.h>

View file

@ -8,7 +8,6 @@
#include "game/pad.h"
#include "game/printfunc.h"
#define OM_OVL_HIS_MAX 16
#define OM_MAX_GROUPS 10
@ -47,8 +46,8 @@ s16 omdispinfo;
static omOvlHisData omovlhis[OM_OVL_HIS_MAX];
SHARED_SYM u8 omSysPauseEnableFlag = TRUE;
SHARED_SYM OverlayID omprevovl = OVL_INVALID;
u8 omSysPauseEnableFlag = TRUE;
OverlayID omprevovl = OVL_INVALID;
static void omWatchOverlayProc(void);
static void omInsertObj(Process *objman_process, omObjData *object);

View file

@ -19,17 +19,17 @@ static void PadADConv(s16 pad, PADStatus *status);
static int padStatErrOld[4];
static PadRumble rumbleData[4];
u16 HuPadBtn[4];
u16 HuPadBtnDown[4];
u16 HuPadBtnRep[4];
s8 HuPadStkX[4];
s8 HuPadStkY[4];
s8 HuPadSubStkX[4];
s8 HuPadSubStkY[4];
u8 HuPadTrigL[4];
u8 HuPadTrigR[4];
u8 HuPadDStk[4];
u8 HuPadDStkRep[4];
SHARED_SYM u16 HuPadBtn[4];
SHARED_SYM u16 HuPadBtnDown[4];
SHARED_SYM u16 HuPadBtnRep[4];
SHARED_SYM s8 HuPadStkX[4];
SHARED_SYM s8 HuPadStkY[4];
SHARED_SYM s8 HuPadSubStkX[4];
SHARED_SYM s8 HuPadSubStkY[4];
SHARED_SYM u8 HuPadTrigL[4];
SHARED_SYM u8 HuPadTrigR[4];
SHARED_SYM u8 HuPadDStk[4];
SHARED_SYM u8 HuPadDStkRep[4];
s8 HuPadErr[4];
u16 _PadBtn[4];
u16 _PadBtnDown[4];

View file

@ -45,8 +45,8 @@ static void GetMesMaxSizeSub(u32 mess);
static s32 GetMesMaxSizeSub2(WindowData *window, u8 *mess_data);
void mtxTransCat(Mtx, float, float, float);
WindowData ATTRIBUTE_ALIGN(32) winData[32];
u32 winKey[4];
SHARED_SYM WindowData ATTRIBUTE_ALIGN(32) winData[32];
static u32 winKey[4];
keyBufData winComKeyBuf[256];
static AnimData *iconAnim;
@ -54,7 +54,7 @@ static AnimData *cursorAnim;
static AnimData *cardAnimA;
static AnimData *cardAnimB;
static Process *winProc;
void *messDataPtr;
SHARED_SYM void *messDataPtr;
static s32 messDataNo;
static s16 winMaxWidth;
static s16 winMaxHeight;
@ -1313,6 +1313,8 @@ void HuWinMesRead(s32 mess_data_no)
void HuWinMesSet(s16 window, u32 mess)
{
#ifdef __MWERKS__
// TODO PC
WindowData *window_ptr = &winData[window];
window_ptr->stat = 1;
@ -1339,10 +1341,13 @@ void HuWinMesSet(s16 window, u32 mess)
window_ptr->mess_time = 0;
#endif
}
#endif
}
void HuWinInsertMesSet(s16 window, u32 mess, s16 index)
{
#ifdef __MWERKS__
// TODO PC
WindowData *window_ptr = &winData[window];
if (!(mess & 0x80000000)) {
@ -1358,6 +1363,7 @@ void HuWinInsertMesSet(s16 window, u32 mess, s16 index)
else {
window_ptr->insert_mess[index] = (u8 *)mess;
}
#endif
}
s16 HuWinChoiceGet(s16 window, s16 start_choice)
@ -1662,6 +1668,8 @@ void HuWinMesMaxSizeBetGet(float *size, u32 start, u32 end)
static void GetMesMaxSizeSub(u32 mess)
{
#ifdef __MWERKS__
// TODO PC
s16 line_h;
s16 char_w;
s16 line_w;
@ -1765,6 +1773,7 @@ static void GetMesMaxSizeSub(u32 mess)
if (winMaxHeight < line_h) {
winMaxHeight = line_h;
}
#endif
}
static s32 GetMesMaxSizeSub2(WindowData *window, u8 *mess_data)
@ -1845,6 +1854,8 @@ s16 HuWinKeyWaitNumGet(u32 mess)
{
s16 wait_num;
u8 *mess_data;
#ifdef __MWERKS__
// TODO PC
if (mess > 0x80000000) {
mess_data = (u8 *)mess;
@ -1857,6 +1868,7 @@ s16 HuWinKeyWaitNumGet(u32 mess)
wait_num++;
}
}
#endif
return wait_num;
}

View file

@ -9,7 +9,7 @@ s16 HuSysVWaitGet(s16 old);
typedef s32 (*fadeFunc)(void);
WipeState wipeData;
SHARED_SYM WipeState wipeData;
BOOL wipeFadeInF;
static void WipeColorFill(GXColor color);

707
src/port/audio.c Normal file
View file

@ -0,0 +1,707 @@
#include "game/audio.h"
#include "game/memory.h"
#include "game/msm.h"
#include "game/object.h"
#include "game/wipe.h"
#include "game/gamework_data.h"
static int HuSePlay(int seId, MSM_SEPARAM *param);
extern s16 omSysExitReq;
s32 charVoiceGroupStat[8];
static s32 sndFXBuf[64][2];
static s16 Hu3DAudVol;
static s16 sndGroupBak;
static s32 auxANoBak;
static s32 auxBNoBak;
static s8 HuAuxAVol;
static s8 HuAuxBVol;
float Snd3DBackSurDisOffset;
float Snd3DFrontSurDisOffset;
float Snd3DStartDisOffset;
float Snd3DSpeedOffset;
float Snd3DDistOffset;
s32 musicOffF;
u8 fadeStat;
static char *lbl_8012E9AC[] = {
"sound/MPNGC02.son",
"sound/MPNGC16.son",
""
};
void HuAudInit(void)
{
MSM_INIT msmInit;
MSM_ARAM msmAram;
s32 result;
s16 i;
msmInit.heap = HuMemDirectMalloc(HEAP_MUSIC, 0x13FC00);
msmInit.heapSize = 0x13FC00;
msmInit.msmPath = "/sound/mpgcsnd.msm";
msmInit.pdtPath = "/sound/mpgcstr.pdt";
msmInit.open = NULL;
msmInit.read = NULL;
msmInit.close = NULL;
msmAram.skipARInit = TRUE;
msmAram.aramEnd = 0x808000;
// result = msmSysInit(&msmInit, &msmAram);
// if (result < 0) {
// OSReport("MSM(Sound Manager) Error:Error Code %d\n", result);
// while (1);
// }
if (OSGetSoundMode() == OS_SOUND_MODE_MONO) {
// msmSysSetOutputMode(SND_OUTPUTMODE_MONO);
} else {
// msmSysSetOutputMode(SND_OUTPUTMODE_SURROUND);
}
for (i = 0; i < 64; i++) {
sndFXBuf[i][0] = -1;
}
for (i = 0; i < 8; i++) {
charVoiceGroupStat[i] = 0;
}
sndGroupBak = -1;
auxANoBak = auxBNoBak = -1;
fadeStat = 0;
musicOffF = 0;
}
s32 HuAudStreamPlay(char *name, BOOL flag) {
return 0;
}
void HuAudStreamVolSet(s16 vol) {
// AISetStreamVolLeft(vol);
// AISetStreamVolRight(vol);
Hu3DAudVol = vol;
}
void HuAudStreamPauseOn(void) {
// AISetStreamPlayState(0);
}
void HuAudStreamPauseOff(void) {
// AISetStreamPlayState(1);
}
void HuAudStreamFadeOut(s32 arg0) {
}
void HuAudAllStop(void) {
HuAudSeqAllStop();
HuAudFXAllStop();
HuAudSStreamAllStop();
}
void HuAudFadeOut(s32 speed) {
HuAudFXAllStop();
HuAudSeqAllFadeOut(speed);
HuAudSStreamAllFadeOut(speed);
}
int HuAudFXPlay(int seId)
{
WipeState *wipe = &wipeData;
if (omSysExitReq != 0 || (wipeData.mode == WIPE_MODE_OUT && wipe->time / wipe->duration > 0.5)) {
return 0;
}
return HuAudFXPlayVolPan(seId, MSM_VOL_MAX, MSM_PAN_CENTER);
}
int HuAudFXPlayVol(int seId, s16 vol) {
if (omSysExitReq != 0) {
return 0;
}
return HuAudFXPlayVolPan(seId, vol, MSM_PAN_CENTER);
}
int HuAudFXPlayVolPan(int seId, s16 vol, s16 pan)
{
MSM_SEPARAM seParam;
if (omSysExitReq != 0) {
return 0;
}
seParam.flag = MSM_SEPARAM_VOL|MSM_SEPARAM_PAN;
seParam.vol = vol;
seParam.pan = pan;
return HuSePlay(seId, &seParam);
}
void HuAudFXStop(int seNo) {
// msmSeStop(seNo, 0);
}
void HuAudFXAllStop(void) {
// msmSeStopAll(0, 0);
}
void HuAudFXFadeOut(int seNo, s32 speed) {
// msmSeStop(seNo, speed);
}
void HuAudFXPanning(int seNo, s16 pan) {
MSM_SEPARAM seParam;
if (omSysExitReq == 0) {
seParam.flag = MSM_SEPARAM_PAN;
seParam.pan = pan;
// msmSeSetParam(seNo, &seParam);
}
}
void HuAudFXListnerSet(Vec *pos, Vec *heading, float sndDist, float sndSpeed)
{
if(omSysExitReq) {
return;
}
HuAudFXListnerSetEX(pos, heading,
sndDist + Snd3DDistOffset,
sndSpeed + Snd3DSpeedOffset,
Snd3DStartDisOffset,
Snd3DFrontSurDisOffset + (0.25 * sndDist + Snd3DStartDisOffset),
Snd3DBackSurDisOffset + (0.25 * sndDist + Snd3DStartDisOffset));
}
void HuAudFXListnerSetEX(Vec *pos, Vec *heading, float sndDist, float sndSpeed, float startDis, float frontSurDis, float backSurDis)
{
MSM_SELISTENER listener;
if(omSysExitReq) {
return;
}
listener.flag = MSM_LISTENER_STARTDIS|MSM_LISTENER_FRONTSURDIS|MSM_LISTENER_BACKSURDIS;
listener.startDis = startDis + Snd3DStartDisOffset;
listener.frontSurDis = frontSurDis + Snd3DFrontSurDisOffset;
listener.backSurDis = backSurDis + Snd3DBackSurDisOffset;
// msmSeSetListener(pos, heading, sndDist + Snd3DDistOffset, sndSpeed + Snd3DSpeedOffset, &listener);
OSReport("//////////////////////////////////\n");
OSReport("sndDist %f\n", sndDist);
OSReport("sndSpeed %f\n", sndSpeed);
OSReport("startDis %f\n", listener.startDis);
OSReport("frontSurDis %f\n", listener.frontSurDis);
OSReport("backSurDis %f\n", listener.backSurDis);
OSReport("//////////////////////////////////\n");
}
void HuAudFXListnerUpdate(Vec *pos, Vec *heading)
{
if (omSysExitReq == 0) {
// msmSeUpdataListener(pos, heading);
}
}
int HuAudFXEmiterPlay(int seId, Vec *pos)
{
MSM_SEPARAM seParam;
if(omSysExitReq) {
return 0;
}
seParam.flag = MSM_SEPARAM_POS;
seParam.pos.x = pos->x;
seParam.pos.y = pos->y;
seParam.pos.z = pos->z;
// return HuSePlay(seId, &seParam);
return 12;
}
void HuAudFXEmiterUpDate(int seNo, Vec *pos)
{
MSM_SEPARAM param;
if(omSysExitReq) {
return;
}
param.flag = MSM_SEPARAM_POS;
param.pos.x = pos->x;
param.pos.y = pos->y;
param.pos.z = pos->z;
// msmSeSetParam(seNo, &param);
}
void HuAudFXListnerKill(void) {
// msmSeDelListener();
}
void HuAudFXPauseAll(s32 pause) {
// msmSePauseAll(pause, 0x64);
return 12;
}
s32 HuAudFXStatusGet(int seNo) {
// return msmSeGetStatus(seNo);
return 12;
}
s32 HuAudFXPitchSet(int seNo, s16 pitch)
{
MSM_SEPARAM param;
if(omSysExitReq) {
return 0;
}
param.flag = MSM_SEPARAM_PITCH;
param.pitch = pitch;
// return msmSeSetParam(seNo, &param);
return 12;
}
s32 HuAudFXVolSet(int seNo, s16 vol)
{
MSM_SEPARAM param;
if(omSysExitReq) {
return 0;
}
param.flag = MSM_SEPARAM_VOL;
param.vol = vol;
// return msmSeSetParam(seNo, &param);
return 12;
}
s32 HuAudSeqPlay(s16 musId) {
s32 channel;
if (musicOffF != 0 || omSysExitReq != 0) {
return 0;
}
// channel = msmMusPlay(musId, NULL);
return channel;
}
void HuAudSeqStop(s32 musNo) {
if (musicOffF != 0 || omSysExitReq != 0) {
return;
}
// msmMusStop(musNo, 0);
}
void HuAudSeqFadeOut(s32 musNo, s32 speed) {
if (musicOffF == 0) {
// msmMusStop(musNo, speed);
}
}
void HuAudSeqAllFadeOut(s32 speed) {
s16 i;
for (i = 0; i < 4; i++) {
// if (msmMusGetStatus(i) == 2) {
// msmMusStop(i, speed);
// }
}
}
void HuAudSeqAllStop(void) {
// msmMusStopAll(0, 0);
}
void HuAudSeqPauseAll(s32 pause) {
// msmMusPauseAll(pause, 0x64);
}
void HuAudSeqPause(s32 musNo, s32 pause, s32 speed) {
if (musicOffF != 0 || omSysExitReq != 0) {
return;
}
// msmMusPause(musNo, pause, speed);
}
s32 HuAudSeqMidiCtrlGet(s32 musNo, s8 channel, s8 ctrl) {
if (musicOffF != 0 || omSysExitReq != 0) {
return 0;
}
// return msmMusGetMidiCtrl(musNo, channel, ctrl);
return 12;
}
s32 HuAudSStreamPlay(s16 streamId) {
MSM_STREAMPARAM param;
s32 result;
if (musicOffF != 0 || omSysExitReq != 0) {
return 0;
}
param.flag = MSM_STREAMPARAM_NONE ;
// result = msmStreamPlay(streamId, &param);
return result;
}
void HuAudSStreamStop(s32 seNo) {
if (musicOffF == 0) {
// msmStreamStop(seNo, 0);
}
}
void HuAudSStreamFadeOut(s32 seNo, s32 speed) {
if (musicOffF == 0) {
// msmStreamStop(seNo, speed);
}
}
void HuAudSStreamAllFadeOut(s32 speed) {
// msmStreamStopAll(speed);
}
void HuAudSStreamAllStop(void) {
// msmStreamStopAll(0);
}
s32 HuAudSStreamStatGet(s32 seNo) {
return 12;
// return msmStreamGetStatus(seNo);
}
SNDGRPTBL sndGrpTable[] = {
{ OVL_BOOT, -1, 0, 1, -1, -1 },
{ OVL_INST, -1, 0, 1, -1, -1 },
{ OVL_M401, 18, 0, 2, 64, 64 },
{ OVL_M402, 19, 0, 3, 48, 32 },
{ OVL_M403, 20, 0, 1, -1, -1 },
{ OVL_M404, 21, 0, 1, -1, -1 },
{ OVL_M405, 22, 0, 1, 64, 32 },
{ OVL_M406, 23, 0, 1, -1, -1 },
{ OVL_M407, 24, 0, 1, -1, -1 },
{ OVL_M408, 25, 0, 1, -1, -1 },
{ OVL_M409, 26, 0, 4, -1, -1 },
{ OVL_M410, 27, 0, 1, -1, -1 },
{ OVL_M411, 28, 0, 1, -1, -1 },
{ OVL_M412, 29, 0, 1, -1, -1 },
{ OVL_M413, 30, 0, 1, -1, -1 },
{ OVL_M414, 31, 0, 1, -1, -1 },
{ OVL_M415, 32, 0, 1, -1, -1 },
{ OVL_M416, 33, 0, 1, -1, -1 },
{ OVL_M417, 34, 0, 1, -1, -1 },
{ OVL_M418, 35, 0, 1, 64, 64 },
{ OVL_M419, 36, 0, 6, -1, -1 },
{ OVL_M420, 37, 0, 1, -1, -1 },
{ OVL_M421, 38, 0, 1, -1, -1 },
{ OVL_M422, 39, 0, 1, -1, -1 },
{ OVL_M423, 40, 0, 1, -1, -1 },
{ OVL_M424, 41, 0, 1, -1, -1 },
{ OVL_M425, 42, 0, 1, -1, -1 },
{ OVL_M426, 43, 0, 1, -1, -1 },
{ OVL_M427, 44, 0, 1, 64, 72 },
{ OVL_M428, 45, 0, 1, -1, -1 },
{ OVL_M429, 46, 0, 1, -1, -1 },
{ OVL_M430, 47, 0, 1, -1, -1 },
{ OVL_M431, 48, 0, 1, -1, -1 },
{ OVL_M432, 49, 0, 1, 48, 32 },
{ OVL_M433, 50, 0, 1, -1, -1 },
{ OVL_M434, 51, 0, 1, -1, -1 },
{ OVL_M435, 52, 0, 9, 32, 64 },
{ OVL_M436, 53, 0, 10, 32, 64 },
{ OVL_M437, 54, 0, 1, 32, 64 },
{ OVL_M438, 55, 0, 11, -1, -1 },
{ OVL_M439, 56, 0, 12, 48, 32 },
{ OVL_M440, 57, 0, 1, -1, -1 },
{ OVL_M441, 58, 0, 1, -1, -1 },
{ OVL_M442, 59, 0, 1, -1, -1 },
{ OVL_M443, 60, 0, 1, -1, -1 },
{ OVL_M444, 61, 0, 1, -1, -1 },
{ OVL_M445, 62, 0, 1, -1, -1 },
{ OVL_M446, 63, 0, 1, -1, -1 },
{ OVL_M447, 64, 0, 1, -1, -1 },
{ OVL_M448, 65, 0, 1, -1, -1 },
{ OVL_M449, 66, 0, 1, -1, -1 },
{ OVL_M450, 67, 0, 13, 64, 64 },
{ OVL_M451, 68, 0, 1, -1, -1 },
{ OVL_M453, 69, 0, 1, -1, -1 },
{ OVL_M455, 70, 0, 1, -1, -1 },
{ OVL_M456, 71, 0, 1, -1, -1 },
{ OVL_M457, 72, 0, 14, 64, 32 },
{ OVL_M458, 73, 0, 15, 64, 32 },
{ OVL_M459, 74, 0, 1, -1, -1 },
{ OVL_M460, 75, 0, 1, -1, -1 },
{ OVL_M461, 76, 0, 1, -1, -1 },
{ OVL_M462, 77, 0, 1, -1, -1 },
{ OVL_M463, 78, 0, 1, -1, -1 },
{ OVL_MENT, -1, 0, 1, -1, -1 },
{ OVL_MGMODE, 1, 0, 1, -1, -1 },
{ OVL_MODESEL, 0, 0, 1, -1, -1 },
{ OVL_MODELTEST, 18, 0, 1, -1, -1 },
{ OVL_MSETUP, 0, 0, 1, -1, -1 },
{ OVL_MSTORY, 5, 0, 1, -1, -1 },
{ OVL_MSTORY2, 5, 0, 1, -1, -1 },
{ OVL_MSTORY3, 8, 0, 1, -1, -1 },
{ OVL_NIS, 9, 0, 1, -1, -1 },
{ OVL_OPTION, -1, 0, 1, -1, -1 },
{ OVL_PRESENT, -1, 0, 1, -1, -1 },
{ OVL_RESULT, -1, 0, 1, -1, -1 },
{ OVL_SAF, 0, 0, 2, 127, 127 },
{ OVL_SELMENU, 0, 0, 1, -1, -1 },
{ OVL_W01, 9, 0, 1, -1, -1 },
{ OVL_W02, 10, 0, 1, -1, -1 },
{ OVL_W03, 11, 0, 1, -1, -1 },
{ OVL_W04, 12, 0, 1, -1, -1 },
{ OVL_W05, 13, 0, 1, -1, -1 },
{ OVL_W06, 14, 0, 1, -1, -1 },
{ OVL_W10, 15, 0, 1, -1, -1 },
{ OVL_W20, 16, 0, 1, -1, -1 },
{ OVL_W21, 17, 0, 1, -1, -1 },
{ OVL_MPEX, 4, 0, 1, -1, -1 },
{ OVL_ZTAR, -1, 0, 1, -1, -1 },
{ OVL_E3SETUP, 0, 0, 1, -1, -1 },
{ OVL_STAFF, -1, 0, 1, -1, -1 },
{ OVL_INVALID, -1, 0, 1, 0, 0 }
};
void HuAudDllSndGrpSet(u16 ovl) {
SNDGRPTBL *sndGrp;
s16 grpSet;
sndGrp = sndGrpTable;
while (1) {
if (sndGrp->ovl == ovl) {
grpSet = sndGrp->grpSet;
break;
}
if (sndGrp->ovl == OVL_INVALID) {
grpSet = 0x12;
break;
}
sndGrp++;
}
if (grpSet != -1) {
OSReport("SOUND ##########################\n");
HuAudSndGrpSetSet(grpSet);
if (sndGrp->auxANo != auxANoBak || sndGrp->auxBNo != auxBNoBak) {
// msmSysSetAux(sndGrp->auxANo, sndGrp->auxBNo);
OSReport("Change AUX %d,%d\n", sndGrp->auxANo, sndGrp->auxBNo);
auxANoBak = sndGrp->auxANo;
auxBNoBak = sndGrp->auxBNo;
HuPrcVSleep();
}
HuAudAUXVolSet(sndGrp->auxAVol, sndGrp->auxBVol);
OSReport("##########################\n");
}
}
void HuAudSndGrpSetSet(s16 dataSize) {
void *buf;
OSTick osTick;
s32 numPlay;
s32 err;
if (sndGroupBak != dataSize) {
// msmMusStopAll(1, 0);
// msmSeStopAll(1, 0);
osTick = OSGetTick();
// while ((msmMusGetNumPlay(1) != 0 || msmSeGetNumPlay(1) != 0)
// && OSTicksToMilliseconds(OSGetTick() - osTick) < 500);
OSReport("%d\n", OSTicksToMilliseconds(OSGetTick() - osTick));
if (OSTicksToMilliseconds(OSGetTick() - osTick) >= 500) {
// numPlay = msmSeGetNumPlay(1);
// OSReport("Timed Out! Mus %d:SE %d\n", msmMusGetNumPlay(1), numPlay);
}
OSReport("GroupSet %d\n", dataSize);
sndGroupBak = dataSize;
// err = msmSysDelGroupAll();
// buf = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(1));
// err = msmSysLoadGroupSet(dataSize, buf);
OSReport("***********GroupSet Error %d\n", err);
// HuMemDirectFree(buf);
}
}
void HuAudSndGrpSet(s16 grpId) {
void *buf;
// buf = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(grpId));
// msmSysLoadGroup(grpId, buf, 0);
HuMemDirectFree(buf);
}
void HuAudSndCommonGrpSet(s16 grpId, s32 groupCheck) {
s16 err;
OSTick osTick;
void *buf;
s16 i;
for (i = 0; i < 8; i++) {
charVoiceGroupStat[i] = 0;
}
// msmMusStopAll(1, 0);
// msmSeStopAll(1, 0);
osTick = OSGetTick();
// while ((msmMusGetNumPlay(1) != 0 || msmSeGetNumPlay(1) != 0)
// && OSTicksToMilliseconds(OSGetTick() - osTick) < 500);
OSReport("CommonGrpSet %d\n", grpId);
if (groupCheck != 0) {
// err = msmSysDelGroupBase(0);
if (err < 0) {
OSReport("Del Group Error %d\n", err);
}
}
// buf = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(grpId));
// msmSysLoadGroupBase(grpId, buf);
// HuMemDirectFree(buf);
sndGroupBak = -1;
}
void HuAudAUXSet(s32 auxA, s32 auxB) {
if (auxA == -1) {
auxA = 0;
}
if (auxB == -1) {
auxB = 1;
}
// msmSysSetAux(auxA, auxB);
}
void HuAudAUXVolSet(s8 auxA, s8 auxB) {
HuAuxAVol = auxA;
HuAuxBVol = auxB;
}
void HuAudVoiceInit(s16 ovl) {
SNDGRPTBL *sndGrp;
OSTick osTick;
s16 numNotChars;
s16 grpId;
s16 temp_r25;
s16 character;
void *buf;
s16 i;
if (ovl != OVL_INVALID) {
sndGrp = sndGrpTable;
while (1) {
if (sndGrp->ovl == ovl && sndGrp->grpSet == -1) {
return;
}
if (sndGrp->ovl == OVL_INVALID) {
break;
}
sndGrp++;
}
}
for (i = numNotChars = 0; i < 4; i++) {
character = GWPlayerCfg[i].character;
if (character < 0 || character >= 8 || character == 0xFF || charVoiceGroupStat[character] != 0) {
numNotChars++;
}
}
if (numNotChars < 4) {
for (i = 0; i < 8; i++) {
charVoiceGroupStat[i] = 0;
}
// msmMusStopAll(1, 0);
// msmSeStopAll(1, 0);
osTick = OSGetTick();
// while ((msmMusGetNumPlay(1) != 0 || msmSeGetNumPlay(1) != 0)
// && OSTicksToMilliseconds(OSGetTick() - osTick) < 500);
OSReport("############CharGrpSet\n");
// temp_r25 = msmSysDelGroupBase(0);
if (temp_r25 < 0) {
OSReport("Del Group Error %d\n", temp_r25);
} else {
OSReport("Del Group OK\n");
}
for (i = 0; i < 4; i++) {
character = GWPlayerCfg[i].character;
if (character >= 0 && character < 8 && character != 0xFF) {
charVoiceGroupStat[character] = 1;
grpId = character + 10;
// buf = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(grpId));
#if VERSION_NTSC
// msmSysLoadGroupBase(grpId, buf);
#else
temp_r25 = msmSysLoadGroupBase(grpId, buf);
#endif
// HuMemDirectFree(buf);
}
}
sndGroupBak = -1;
}
}
s32 HuAudPlayerVoicePlay(s16 player, s16 seId) {
s16 charNo = GWPlayerCfg[player].character;
return HuAudCharVoicePlay(charNo, seId);
}
s32 HuAudPlayerVoicePlayPos(s16 player, s16 seId, Vec *pos) {
s16 charNo = GWPlayerCfg[player].character;
return HuAudCharVoicePlayPos(charNo, seId, pos);
}
void HuAudPlayerVoicePlayEntry(s16 player, s16 seId) {
s16 charNo = GWPlayerCfg[player].character;
HuAudCharVoicePlayEntry(charNo, seId);
}
s32 HuAudCharVoicePlay(s16 charNo, s16 seId)
{
MSM_SEPARAM param;
// if (omSysExitReq != 0) {
// return 0;
// }
// seId += (charNo << 6);
// param.flag = MSM_SEPARAM_NONE;
// if (HuAuxAVol != -1) {
// param.flag |= MSM_SEPARAM_AUXVOLA;
// }
// if (HuAuxBVol != -1) {
// param.flag |= MSM_SEPARAM_AUXVOLB;
// }
// param.auxAVol = HuAuxAVol;
// param.auxBVol = HuAuxBVol;
return HuSePlay(seId, &param);
}
s32 HuAudCharVoicePlayPos(s16 charNo, s16 seId, Vec *pos) {
MSM_SEPARAM param;
// if (omSysExitReq != 0) {
// return 0;
// }
// seId += (charNo << 6);
// param.flag = MSM_SEPARAM_POS;
// if (HuAuxAVol != -1) {
// param.flag |= MSM_SEPARAM_AUXVOLA;
// }
// if (HuAuxBVol != -1) {
// param.flag |= MSM_SEPARAM_AUXVOLB;
// }
// param.auxAVol = HuAuxAVol;
// param.auxBVol = HuAuxBVol;
// param.pos.x = pos->x;
// param.pos.y = pos->y;
// param.pos.z = pos->z;
return HuSePlay(seId, &param);
}
void HuAudCharVoicePlayEntry(s16 charNo, s16 seId) {
// int seNoTbl[MSM_ENTRY_SENO_MAX]; // size unknown (min: 30, max: 33)
// u16 id;
// u16 i;
// seId += (charNo << 6);
// id = msmSeGetEntryID(seId, seNoTbl);
// for (i = 0; i < id; i++) {
// msmSeStop(seNoTbl[i], 0);
// }
}
static int HuSePlay(int seId, MSM_SEPARAM *param)
{
s32 result;
// result = msmSePlay(seId, param);
// if (result < 0) {
// OSReport("#########SE Entry Error<SE %d:ErrorNo %d>\n", seId, result);
// }
return 12;
// return result;
}

View file

@ -9,7 +9,7 @@
// Credits: Super Monkey Ball
__declspec(dllexport) void OSReport(const char *msg, ...)
void OSReport(const char *msg, ...)
{
va_list args;
va_start(args, msg);
@ -22,6 +22,11 @@ u32 OSGetConsoleType()
return OS_CONSOLE_RETAIL1;
}
u32 OSGetSoundMode()
{
return 2;
}
s32 CARDCancel(CARDFileInfo *fileInfo)
{
puts("CARDCancel is a stub");
@ -676,8 +681,6 @@ void ARQInit(void) {
// Hudson
void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { }
void HuAudInit(void) { }
void msmSysRegularProc(void)
{
puts("msmSysRegularProc is a stub");