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

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