Merge branch 'mariopartyrd:main' into main

This commit is contained in:
CreateSource 2024-11-19 12:46:39 -05:00 committed by GitHub
commit 106c158b75
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
298 changed files with 49092 additions and 4634 deletions

280
src/REL/bootDll/language.c Normal file
View file

@ -0,0 +1,280 @@
#include "version.h"
#if VERSION_PAL
#include "dolphin.h"
#include "game/card.h"
#include "game/saveload.h"
#include "game/sprite.h"
#include "game/hsfman.h"
#include "game/hsfanim.h"
#include "game/window.h"
#include "game/gamework_data.h"
#include "game/object.h"
#include "game/wipe.h"
#include "game/pad.h"
#include "game/audio.h"
#include "game/chrman.h"
#include "game/minigame_seq.h"
#include "math.h"
#include "ext_math.h"
#include "data_num/title.h"
s32 flagFileTbl[] = {
TITLE_FLAG_EN_ANM,
TITLE_FLAG_ES_ANM,
TITLE_FLAG_IT_ANM,
TITLE_FLAG_FR_ANM,
TITLE_FLAG_GE_ANM
};
extern int SystemInitF;
extern Process *objman;
extern Vec debugCamRot[2];
extern Vec debugCamPos[2];
extern float debugCamZoom[2];
void DebugCamOutView(omObjData *obj);
void DebugCamUpdate(omObjData *obj);
BOOL LanguageMenuExec(void)
{
s16 language = GWLanguageGet()-1;
s16 i;
s16 gid;
s16 time;
s16 choiceChange;
AnimData *anim;
s16 sprid;
s16 choice;
omObjData *outView;
omObjData *updateCamera;
s16 modelId[5];
s16 winId[5];
float winSize[2];
float dist;
float posX;
float posZ;
for(i=0; i<4; i++) {
GWPlayerCfg[i].character = i;
}
gid = HuSprGrpCreate(1);
anim = HuSprAnimReadFile(TITLE_LANGUAGEBG_ANM);
sprid = HuSprCreate(anim, 0, 0);
HuSprGrpMemberSet(gid, 0, sprid);
HuSprDrawNoSet(gid, 0, 127);
HuSprPosSet(gid, 0, 288, 240);
HuSprTPLvlSet(gid, 0, 0.6f);
Hu3DFogSet(350, 2000, 128, 128, 128);
debugCamRot[0].x = -20;
debugCamRot[0].y = 0;
debugCamRot[0].z = 0;
debugCamPos[0].x = 0;
debugCamPos[0].y = 20;
debugCamPos[0].z = -7;
debugCamZoom[0] = 600;
Hu3DCameraPerspectiveSet(HU3D_CAM0, 60, 20, 5000, 1.2f);
outView = omAddObjEx(objman, 32730, 0, 0, -1, DebugCamOutView);
updateCamera = omAddObjEx(objman, 0, 32, 32, -1, DebugCamUpdate);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30);
while (WipeStatGet()) {
HuPrcVSleep();
}
if(!SystemInitF) {
void *group_samp;
HuWindowInit();
group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0));
msmSysLoadGroup(0, group_samp, 0);
HuMemDirectFree(group_samp);
}
for(i=0; i<5; i++) {
modelId[i] = Hu3DModelCreateFile(TITLE_FLAG_HSF);
anim = HuSprAnimReadFile(flagFileTbl[i]);
Hu3DAnimCreate(anim, modelId[i], "flag");
Hu3DModelPosSet(modelId[i], sind(i*72)*200, 70, cosd(i*72)*200);
Hu3DModelRotSet(modelId[i], -20, 0, 0);
}
for(time=1; time<=30; time++) {
dist = 1.0-(time/30.0);
for(i=0; i<5; i++) {
Hu3DModelPosSet(modelId[i], sind((dist*180.0f)+(i*72)+(language*72))*(200+(300*dist)), 70, cosd((dist*180.0f)+(i*72)+(language*72))*(200+(300*dist)));
}
HuPrcVSleep();
}
HuWinInit(1);
HuWinMesMaxSizeGet(5, winSize, 0x380000, 0x380005, 0x38000A, 0x38000F, 0x380014);
winId[0] = HuWinExCreateStyled(-10000, 50, winSize[0], winSize[1], -1, 0);
HuWinAttrSet(winId[0], 0x800);
HuWinMesSet(winId[0], 0x380000+(language*5));
HuWinBGTPLvlSet(winId[0], 0);
HuWinMesSpeedSet(winId[0], 0);
HuWinDispOn(winId[0]);
HuWinMesMaxSizeGet(5, winSize, 0x380001, 0x380006, 0x38000B, 0x380010, 0x380015);
winId[1] = HuWinExCreateStyled(-10000, 100, winSize[0], winSize[1], -1, 0);
HuWinAttrSet(winId[1], 0x800);
HuWinMesSet(winId[1], 0x380001+(language*5));
HuWinBGTPLvlSet(winId[1], 0);
HuWinMesSpeedSet(winId[1], 0);
HuWinDispOn(winId[1]);
HuWinMesMaxSizeGet(5, winSize, 0x380002, 0x380007, 0x38000C, 0x380011, 0x380016);
winId[2] = HuWinExCreateStyled(-10000, 340, winSize[0], winSize[1], -1, 0);
HuWinAttrSet(winId[2], 0x800);
HuWinMesSet(winId[2], 0x380002+(language*5));
HuWinBGTPLvlSet(winId[2], 0);
HuWinMesSpeedSet(winId[2], 0);
HuWinDispOn(winId[2]);
HuWinMesMaxSizeGet(5, winSize, 0x380004, 0x380009, 0x38000E, 0x380013, 0x380018);
winId[4] = HuWinExCreateStyled(-10000, (448-winSize[1])-10, winSize[0], winSize[1], -1, 0);
HuWinAttrSet(winId[4], 0x800);
choiceChange = FALSE;
while(1) {
if(HuPadDStkRep[0] & PAD_BUTTON_LEFT) {
HuAudFXPlay(0);
for(time=0; time<=10; time++) {
for(i=0; i<5; i++) {
posX = sind((72.0*language)+(i*72)-(72.0*(time/10.0)))*200;
posZ = cosd((72.0*language)+(i*72)-(72.0*(time/10.0)))*200;
Hu3DModelPosSet(modelId[i], posX, 70, posZ);
}
HuPrcVSleep();
}
language--;
if(language < 0) {
language = 4;
}
choiceChange = TRUE;
} else if(HuPadDStkRep[0] & PAD_BUTTON_RIGHT) {
HuAudFXPlay(0);
for(time=0; time<=10; time++) {
for(i=0; i<5; i++) {
posX = sind((72.0*language)+(i*72)+(72.0*(time/10.0)))*200;
posZ = cosd((72.0*language)+(i*72)+(72.0*(time/10.0)))*200;
Hu3DModelPosSet(modelId[i], posX, 70, posZ);
}
HuPrcVSleep();
}
language++;
if(language >= 5) {
language = 0;
}
choiceChange = TRUE;
}
if(choiceChange) {
HuWinMesSet(winId[0], 0x380000+(language*5));
HuWinMesSet(winId[1], 0x380001+(language*5));
HuWinMesSet(winId[2], 0x380002+(language*5));
choiceChange = FALSE;
}
if(HuPadBtnDown[0] & PAD_BUTTON_A) {
HuAudFXPlay(1);
HuWinHomeClear(winId[4]);
HuWinExAnimIn(winId[4]);
HuWinMesSet(winId[4], 0x380004+(language*5));
HuWinMesWait(winId[4]);
choice = HuWinChoiceGet(winId[4], 0);
if(choice == 0) {
GwLanguage = GwLanguageSave = language+1;
GWLanguageSet(GwLanguage);
break;
}
HuWinExAnimOut(winId[4]);
}
if(GwLanguage != -1 && (HuPadBtnDown[0] & PAD_BUTTON_B)) {
HuAudFXPlay(3);
break;
}
HuPrcVSleep();
}
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30);
while (WipeStatGet()) {
HuPrcVSleep();
}
HuSprGrpKill(gid);
for(i=0; i<5; i++) {
Hu3DModelKill(modelId[i]);
}
omDelObjEx(objman, outView);
omDelObjEx(objman, updateCamera);
if(SystemInitF == 0) {
CharManInit();
MGSeqInit();
}
HuWinAllKill();
Hu3DFogClear();
return TRUE;
}
s32 LanguageBootGet(void)
{
s16 result = -1;
s16 i;
s16 j;
for(i=0; i<2; i++) {
if(HuCardSlotCheck(i) < 0) {
continue;
}
if(HuCardMount(i) < 0) {
continue;
}
for(j=0; j<3; j++) {
CARDFileInfo fileInfo;
if(HuCardOpen(i, SaveFileNameTbl[j], &fileInfo) < 0) {
continue;
}
if(HuCardRead(&fileInfo, &saveBuf, SAVE_BUF_SIZE, 0) < 0) {
continue;
}
if(!SLCheckSumCheck()) {
continue;
}
memcpy(&GWGameStat, &saveBuf.data.stat, sizeof(GameStat));
if(GWGameStat.language < 1) {
continue;
}
if(GWGameStat.language > 5) {
continue;
}
result = GWGameStat.language;
OSReport("Language %d\n", GWGameStat.language);
HuCardClose(&fileInfo);
HuCardUnMount(i);
return result;
}
HuCardUnMount(i);
}
if(result == -1) {
OSReport("OS Language %d\n", OSGetLanguage());
switch(OSGetLanguage()) {
case OS_LANG_ENGLISH:
result = 1;
break;
case OS_LANG_GERMAN:
result = 2;
break;
case OS_LANG_FRENCH:
result = 3;
break;
case OS_LANG_SPANISH:
result = 5;
break;
case OS_LANG_ITALIAN:
result = 4;
break;
default:
result = -1;
break;
}
}
return result;
}
#endif

View file

@ -24,51 +24,69 @@
extern int SystemInitF;
static Process *objman[2];
Vec lbl_1_bss_3C[2];
Vec lbl_1_bss_24[2];
float lbl_1_bss_1C[2];
static omObjData *debugOutView;
Process *objman;
Vec debugCamRot[2];
Vec debugCamPos[2];
float debugCamZoom[2];
Vec lbl_1_bss_10;
static s16 demoWin;
static s16 demoWinId;
static s16 titleModel[3];
static s16 titleGroup;
static s16 titleMdlId[3];
static s16 bootGrpId;
s16 lbl_1_bss_4;
s32 lbl_1_bss_0;
#if VERSION_PAL
static BOOL initLanguageF;
#endif
s32 debugCamOnF;
static void BootProc(void);
void BootExec(void);
static void UpdateDemoMess(void);
static void ProgressiveProc(void);
static void TitleInit(void);
static BOOL TitleProc(void);
#if VERSION_NTSC
void BootProgExec(void);
#endif
void BootTitleCreate(void);
BOOL BootTitleExec(void);
void *logoReadNintendo(void);
void *NintendoDataDecode(void);
void ObjectSetup(void)
{
omOvlHisData *history;
OSReport("******* Boot ObjectSetup *********\n");
objman[0] = omInitObjMan(50, 8192);
lbl_1_bss_3C[0].x = -67;
lbl_1_bss_3C[0].y = 40;
lbl_1_bss_3C[0].z = 0;
lbl_1_bss_24[0].x = 260;
lbl_1_bss_24[0].y = -103;
lbl_1_bss_24[0].z = -18;
lbl_1_bss_1C[0] = 2885;
objman = omInitObjMan(50, 8192);
debugCamRot[0].x = -67;
debugCamRot[0].y = 40;
debugCamRot[0].z = 0;
debugCamPos[0].x = 260;
debugCamPos[0].y = -103;
debugCamPos[0].z = -18;
debugCamZoom[0] = 2885;
Hu3DCameraCreate(1);
Hu3DCameraPerspectiveSet(1, 30, 20, 15000, 1.2);
Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1);
HuPrcCreate(BootProc, 100, 12288, 0);
HuPrcCreate(BootExec, 100, 12288, 0);
Hu3DBGColorSet(0, 0, 0);
history = omOvlHisGet(0);
omOvlHisChg(0, history->overlay, 1, history->stat);
#if VERSION_PAL
if(SystemInitF == FALSE) {
initLanguageF = FALSE;
} else {
initLanguageF = TRUE;
}
#endif
}
static void BootProc(void)
#if VERSION_PAL
s32 LanguageBootGet(void);
BOOL LanguageMenuExec(void);
#endif
void BootExec(void)
{
AnimData *data;
s16 group;
@ -77,11 +95,24 @@ static void BootProc(void)
s16 i;
OSTick tick_prev;
Process *curr = HuPrcCurrentGet();
#if VERSION_NTSC
if (omovlevtno == 0) {
ProgressiveProc();
BootProgExec();
}
#else
if(SystemInitF == FALSE) {
GwLanguage = LanguageBootGet();
if(GwLanguage == -1) {
if(LanguageMenuExec()) {
SystemInitF = TRUE;
}
} else {
GWLanguageSet(GwLanguage);
}
}
#endif
group = HuSprGrpCreate(2);
data = HuSprAnimRead(logoReadNintendo());
data = HuSprAnimRead(NintendoDataDecode());
sprite_nintendo = HuSprCreate(data, 0, 0);
HuSprGrpMemberSet(group, 0, sprite_nintendo);
HuSprPosSet(group, 0, 288, 240);
@ -94,7 +125,7 @@ static void BootProc(void)
HuSprPosSet(group, 1, 288, 240);
HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF);
HuWinInit(1);
TitleInit();
BootTitleCreate();
SystemInitF = 1;
}
else {
@ -105,6 +136,18 @@ static void BootProc(void)
for (i = 0; i < 4; i++) {
GWPlayerCfg[i].pad_idx = i;
}
#if VERSION_PAL
if(SystemInitF) {
data = HuSprAnimReadFile(TITLE_HUDSON_ANM);
sprite_hudson = HuSprCreate(data, 0, 0);
HuSprGrpMemberSet(group, 1, sprite_hudson);
HuSprPosSet(group, 1, 288, 240);
HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF);
HuAudSndGrpSetSet(0);
BootTitleCreate();
HuWinInit(1);
}
#endif
repeat:
HuSprAttrReset(group, 0, HUSPR_ATTR_DISPOFF);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30);
@ -118,7 +161,7 @@ static void BootProc(void)
HuWindowInit();
MGSeqInit();
HuWinInit(1);
TitleInit();
BootTitleCreate();
data = HuSprAnimReadFile(TITLE_HUDSON_ANM);
sprite_hudson = HuSprCreate(data, 0, 0);
HuSprGrpMemberSet(group, 1, sprite_hudson);
@ -130,9 +173,15 @@ static void BootProc(void)
}
else {
for (i = 0; i < 180; i++) {
#if VERSION_NTSC
if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) {
break;
}
#else
if (initLanguageF && (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A))) {
break;
}
#endif
HuPrcVSleep();
}
}
@ -159,12 +208,21 @@ static void BootProc(void)
}
else {
for (i = 0; i < 180; i++) {
#if VERSION_NTSC
if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) {
break;
}
#else
if (initLanguageF && (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A))) {
break;
}
#endif
HuPrcVSleep();
}
}
#if VERSION_PAL
initLanguageF = TRUE;
#endif
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30);
while (WipeStatGet()) {
HuPrcVSleep();
@ -184,11 +242,11 @@ static void BootProc(void)
HuSprGrpMemberSet(group_thp, 0, sprite_thp);
HuSprPosSet(group_thp, 0, 288, 240);
HuWinMesMaxSizeBetGet(win_size, MAKE_MESSID(54, 0), MAKE_MESSID(54, 4));
demoWin = HuWinCreate(-10000, 448 - win_size[1], win_size[0], win_size[1], 0);
HuWinMesSpeedSet(demoWin, 0);
HuWinBGTPLvlSet(demoWin, 0);
HuWinPriSet(demoWin, 10);
HuWinAttrSet(demoWin, 0x800);
demoWinId = HuWinCreate(-10000, 448 - win_size[1], win_size[0], win_size[1], 0);
HuWinMesSpeedSet(demoWinId, 0);
HuWinBGTPLvlSet(demoWinId, 0);
HuWinPriSet(demoWinId, 10);
HuWinAttrSet(demoWinId, 0x800);
HuPrcSleep(5);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10);
while (WipeStatGet()) {
@ -207,7 +265,7 @@ static void BootProc(void)
while (WipeStatGet()) {
HuPrcVSleep();
}
HuWinKill(demoWin);
HuWinKill(demoWinId);
HuTHPClose();
HuPrcVSleep();
HuSprGrpKill(group_thp);
@ -216,7 +274,7 @@ static void BootProc(void)
}
skip_wait = FALSE;
}
if (!TitleProc()) {
if (!BootTitleExec()) {
HuPrcSleep(60);
goto repeat;
}
@ -242,7 +300,7 @@ static void BootProc(void)
} while (1);
}
static s16 demoTimingTbl[] = {
static s16 demoMessTimeTbl[] = {
1686,
1785,
1850,
@ -261,19 +319,21 @@ static void UpdateDemoMess(void)
{
int frame = HuTHPFrameGet();
int i;
for (i = 0; demoTimingTbl[i * 2] != -1; i++) {
if (frame == demoTimingTbl[i * 2]) {
HuWinMesSet(demoWin, MAKE_MESSID(54, i));
for (i = 0; demoMessTimeTbl[i * 2] != -1; i++) {
if (frame == demoMessTimeTbl[i * 2]) {
HuWinMesSet(demoWinId, MAKE_MESSID(54, i));
}
if (frame == demoTimingTbl[(i * 2) + 1]) {
HuWinHomeClear(demoWin);
if (frame == demoMessTimeTbl[(i * 2) + 1]) {
HuWinHomeClear(demoWinId);
}
}
}
static u16 progressivePosTbl[] = { 236, 313, 353, 313 };
#if VERSION_NTSC
static void ProgressiveProc(void)
static u16 progPosTbl[] = { 236, 313, 353, 313 };
void BootProgExec(void)
{
s16 i;
s16 option;
@ -303,11 +363,11 @@ static void ProgressiveProc(void)
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_ON_ANM);
sprite = HuSprCreate(data, 0, 0);
HuSprGrpMemberSet(group, 1, sprite);
HuSprPosSet(group, 1, progressivePosTbl[option * 2], progressivePosTbl[(option * 2) + 1]);
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, progressivePosTbl[option * 2], progressivePosTbl[(option * 2) + 1]);
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()) {
@ -316,12 +376,12 @@ static void ProgressiveProc(void)
for (i = 0; i < 600; i++) {
if (HU_PAD_DSTK_ALL & (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT)) {
option ^= 1;
HuSprPosSet(group, 1, progressivePosTbl[option * 2], progressivePosTbl[(option * 2) + 1]);
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, progressivePosTbl[option * 2], progressivePosTbl[(option * 2) + 1]);
HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]);
HuSprAttrReset(group, 2, HUSPR_ATTR_DISPOFF);
break;
}
@ -370,33 +430,35 @@ static void ProgressiveProc(void)
HuPrcSleep(30);
}
u16 lbl_1_data_58[] = { 1, 2 };
#endif
void fn_1_1178(void)
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;
x = lbl_1_bss_3C[i].x;
y = lbl_1_bss_3C[i].y;
z = lbl_1_bss_3C[i].z;
x = debugCamRot[i].x;
y = debugCamRot[i].y;
z = debugCamRot[i].z;
pos.x = (((sind(y) * cosd(x)) * lbl_1_bss_1C[i]) + lbl_1_bss_24[i].x);
pos.y = (-sind(x) * lbl_1_bss_1C[i]) + lbl_1_bss_24[i].y;
pos.z = ((cosd(y) * cosd(x)) * lbl_1_bss_1C[i]) + lbl_1_bss_24[i].z;
target.x = lbl_1_bss_24[i].x;
target.y = lbl_1_bss_24[i].y;
target.z = lbl_1_bss_24[i].z;
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(lbl_1_data_58[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z);
Hu3DCameraPosSet(debugCamTbl[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z);
}
}
void fn_1_152C(void)
void DebugCamUpdate(omObjData *obj)
{
Vec pos;
Vec offset;
@ -405,28 +467,30 @@ void fn_1_152C(void)
f32 z_rot;
s8 stick_pos;
#if VERSION_NTSC
if ((HuPadBtnDown[0] & 0x800)) {
lbl_1_bss_0 = (lbl_1_bss_0) ? 0 : 1;
debugCamOnF = (debugCamOnF) ? 0 : 1;
}
if (lbl_1_bss_0 != 0) {
lbl_1_bss_3C[0].y += 0.1f * HuPadStkX[0];
lbl_1_bss_3C[0].x += 0.1f * HuPadStkY[0];
lbl_1_bss_1C[0] += HuPadTrigL[0] / 2;
lbl_1_bss_1C[0] -= HuPadTrigR[0] / 2;
if (lbl_1_bss_1C[0] < 100.0f) {
lbl_1_bss_1C[0] = 100.0f;
#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 = lbl_1_bss_24[0].x + (lbl_1_bss_1C[0] * (sind(lbl_1_bss_3C[0].y) * cosd(lbl_1_bss_3C[0].x)));
pos.y = (lbl_1_bss_24[0].y + (lbl_1_bss_1C[0] * -sind(lbl_1_bss_3C[0].x)));
pos.z = (lbl_1_bss_24[0].z + (lbl_1_bss_1C[0] * (cosd(lbl_1_bss_3C[0].y) * cosd(lbl_1_bss_3C[0].x))));
offset.x = lbl_1_bss_24[0].x - pos.x;
offset.y = lbl_1_bss_24[0].y - pos.y;
offset.z = lbl_1_bss_24[0].z - pos.z;
dir.x = (sind(lbl_1_bss_3C[0].y) * sind(lbl_1_bss_3C[0].x));
dir.y = cosd(lbl_1_bss_3C[0].x);
dir.z = (cosd(lbl_1_bss_3C[0].y) * sind(lbl_1_bss_3C[0].x));
z_rot = lbl_1_bss_3C[0].z;
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));
@ -443,70 +507,102 @@ void fn_1_152C(void)
VECNormalize(&offset, &offset);
stick_pos = (HuPadSubStkX[0] & 0xF8);
if (stick_pos != 0) {
lbl_1_bss_24[0].x += 0.05f * (offset.x * stick_pos);
lbl_1_bss_24[0].y += 0.05f * (offset.y * stick_pos);
lbl_1_bss_24[0].z += 0.05f * (offset.z * stick_pos);
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) {
lbl_1_bss_24[0].x += 0.05f * (offset.x * stick_pos);
lbl_1_bss_24[0].y += 0.05f * (offset.y * stick_pos);
lbl_1_bss_24[0].z += 0.05f * (offset.z * stick_pos);
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);
}
}
}
static void TitleInit(void)
void BootTitleCreate(void)
{
s16 model;
s16 sprite;
AnimData *sprite_data;
titleModel[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF);
s16 i;
titleMdlId[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF);
Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP);
titleModel[1] = model = Hu3DModelCreateFile(TITLE_CUBE_HSF);
titleMdlId[1] = model = Hu3DModelCreateFile(TITLE_CUBE_HSF);
Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP);
titleModel[2] = model = Hu3DModelCreateFile(TITLE_SKY_HSF);
titleMdlId[2] = model = Hu3DModelCreateFile(TITLE_SKY_HSF);
Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP);
Hu3DModelCameraInfoSet(model, 1);
Hu3DModelLightInfoSet(model, 1);
titleGroup = HuSprGrpCreate(4);
#if VERSION_NTSC
bootGrpId = HuSprGrpCreate(4);
#else
bootGrpId = HuSprGrpCreate(13);
#endif
sprite_data = HuSprAnimReadFile(TITLE_BG_ANM);
sprite = HuSprCreate(sprite_data, 0, 0);
HuSprGrpMemberSet(titleGroup, 0, sprite);
HuSprAttrSet(titleGroup, 0, HUSPR_ATTR_DISPOFF);
HuSprDrawNoSet(titleGroup, 0, 127);
HuSprPosSet(titleGroup, 0, 288, 240);
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(titleGroup, 1, sprite);
HuSprAttrSet(titleGroup, 1, HUSPR_ATTR_DISPOFF);
HuSprPosSet(titleGroup, 1, 288, 420);
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(titleGroup, 2, sprite);
HuSprAttrSet(titleGroup, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR);
HuSprPosSet(titleGroup, 2, 288, 380);
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(titleGroup, 3, sprite);
HuSprAttrSet(titleGroup, 3, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR);
HuSprPosSet(titleGroup, 3, 288, 200);
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
}
static BOOL TitleProc(void)
BOOL BootTitleExec(void)
{
float scale;
float scale_time;
int seNo[32];
s16 pressStartMemberNo;
s16 languageMemberNo;
s16 i;
Hu3DModelAttrReset(titleModel[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(titleModel[1], HU3D_ATTR_DISPOFF);
HuSprAttrReset(titleGroup, 0, HUSPR_ATTR_DISPOFF);
HuSprAttrReset(titleGroup, 1, HUSPR_ATTR_DISPOFF);
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);
@ -514,24 +610,128 @@ static BOOL TitleProc(void)
while (WipeStatGet()) {
HuPrcVSleep();
}
HuSprAttrReset(titleGroup, 3, HUSPR_ATTR_DISPOFF);
#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(titleGroup, 3, scale, scale);
HuSprTPLvlSet(titleGroup, 3, i / 50.0);
HuSprScaleSet(bootGrpId, 3, scale, scale);
HuSprTPLvlSet(bootGrpId, 3, i / 50.0);
HuPrcVSleep();
}
HuSprAttrReset(titleGroup, 2, HUSPR_ATTR_DISPOFF);
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(titleGroup, 2, i / 10.0);
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(titleGroup, 2, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF);
return 1;
}
scale = (sind(i * scale_time) * 0.1) + 0.9;
@ -539,20 +739,48 @@ static BOOL TitleProc(void)
if (scale_time > 5) {
scale_time = 5;
}
HuSprScaleSet(titleGroup, 2, scale, scale);
HuSprScaleSet(bootGrpId, 2, scale, scale);
HuPrcVSleep();
#endif
}
WipeColorSet(255, 255, 255);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30);
while (WipeStatGet()) {
HuPrcVSleep();
}
Hu3DModelAttrSet(titleModel[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(titleModel[1], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(titleModel[2], HU3D_ATTR_DISPOFF);
HuSprAttrSet(titleGroup, 0, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(titleGroup, 1, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(titleGroup, 2, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(titleGroup, 3, HUSPR_ATTR_DISPOFF);
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"
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

@ -1,15 +0,0 @@
#include "game/data.h"
#include "logoNintendoData.inc"
void *logoReadNintendo(void)
{
u32 *src = (u32 *)logoNintendoData;
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

@ -689,7 +689,11 @@ static void fn_1_2804(void)
HuWinMesPalSet(window, 7, 0, 0, 192);
HuWinPosSet(window_other, 142.0f, 320.0f);
for (i = 0; i <= 10; i++) {
#if VERSION_NTSC
HuWinPosSet(window_other, 30.0 * sind(i * 9.0f) + 142.0, 160.0 * (1.0 - cosd(i * 9.0f)) + 320.0);
#else
HuWinPosSet(window_other, 30.0 * sind(i * 9.0f) + 142.0, 180.0 * (1.0 - cosd(i * 9.0f)) + 320.0);
#endif
HuPrcVSleep();
}
HuPrcSleep(5);
@ -711,6 +715,12 @@ static void fn_1_2804(void)
static float lbl_1_data_124[] = { 420, 70, 488, 186, 476, 242, 400, 292 };
#if VERSION_NTSC
#define WIN_ANIM_OFS 201
#else
#define WIN_ANIM_OFS 219
#endif
static void fn_1_2FA0(void)
{
float temp_f31;
@ -763,20 +773,39 @@ static void fn_1_2FA0(void)
temp_r29++;
}
#if VERSION_NTSC
if (temp_r26 == 1) {
temp_r22 = spC[0];
temp_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_INST, 18));
temp_f29 = ((576.0f - temp_r22) - 24.0f) - 16.0f + 227.0f;
temp_f29 = ((576.0f - temp_r22) - 24.0f) - 16.0f + 227;
temp_f28 = 78;
temp_f27 = 0.5f;
}
else {
temp_r22 = (spC[0] > spC[1]) ? spC[0] : spC[1];
temp_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_INST, 15));
temp_f29 = ((576.0f - temp_r22) - 24.0f) - 16.0f + 172.0f;
temp_f28 = 84;
temp_f27 = 1.0f;
}
#else
if (temp_r26 == 1) {
temp_r22 = spC[0];
temp_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_INST, 18));
temp_f29 = ((576.0f - temp_r22) - 24.0f) - 16.0f + 235;
temp_f28 = 78;
temp_f27 = 0.5f;
}
else {
temp_r22 = (spC[0] > spC[1]) ? spC[0] : spC[1];
temp_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_INST, 15));
temp_f29 = ((576.0f - temp_r22) - 24.0f) - 16.0f + 235;
temp_f28 = 84;
temp_f27 = 1.0f;
}
#endif
temp_r25 = HuSprGrpCreate(1);
temp_r17 = HuSprCreate(temp_r28, 0, 0);
HuSprGrpMemberSet(temp_r25, 0, temp_r17);
@ -809,13 +838,13 @@ static void fn_1_2FA0(void)
HuWinMesSet(sp10[2], lbl_1_bss_10 + MAKE_MESSID(0x24, 0x02));
HuWinBGTPLvlSet(sp10[2], 0.0f);
HuWinMesSpeedSet(sp10[2], 0);
temp_r31 = HuWinAnimSet(sp10[2], temp_r28, 0, 201, 18);
temp_r31 = HuWinAnimSet(sp10[2], temp_r28, 0, WIN_ANIM_OFS, 18);
HuWinSprPriSet(sp10[2], temp_r31, 1000);
temp_r27 = HuWinCreate(1000, 292, 456, 42, 0);
HuWinBGTPLvlSet(temp_r27, 0.0f);
HuWinMesSpeedSet(temp_r27, 0);
HuWinMesSet(temp_r27, lbl_1_bss_10 + MAKE_MESSID(0x24, 0x02));
temp_r31 = HuWinAnimSet(temp_r27, temp_r28, 0, 201, 18);
temp_r31 = HuWinAnimSet(temp_r27, temp_r28, 0, WIN_ANIM_OFS, 18);
HuWinPriSet(temp_r27, 10);
HuWinSprPriSet(temp_r27, temp_r31, 11);
while (lbl_1_data_0 != 0) {
@ -824,12 +853,21 @@ static void fn_1_2FA0(void)
for (temp_r31 = 0; temp_r31 < 36; temp_r31++) {
temp_f30 = temp_r31;
if (temp_f30 <= 20.0f) {
#if VERSION_NTSC
temp_f31 = 300.0 * cosd(4.5f * temp_f30) + temp_f29;
HuSprGrpPosSet(temp_r25, temp_f31, temp_f28);
temp_f31 = 300.0 * cosd(4.5f * temp_f30) + (576.0f - (temp_r22 / 2) - 24.0f);
for (temp_r30 = 0; temp_r30 < temp_r26; temp_r30++) {
HuSprGrpPosSet(work.spr_grp[temp_r30], temp_f31, (temp_r30 * 28) + 70);
}
#else
temp_f31 = 500.0 * cosd(4.5f * temp_f30) + temp_f29;
HuSprGrpPosSet(temp_r25, temp_f31, temp_f28);
temp_f31 = 500.0 * cosd(4.5f * temp_f30) + (576.0f - (temp_r22 / 2) - 24.0f);
for (temp_r30 = 0; temp_r30 < temp_r26; temp_r30++) {
HuSprGrpPosSet(work.spr_grp[temp_r30], temp_f31, (temp_r30 * 28) + 70);
}
#endif
}
temp_f30 = temp_r31 - 3;
if (temp_f30 > 0.0f) {
@ -837,7 +875,11 @@ static void fn_1_2FA0(void)
temp_f31 = 300.0 * cosd(4.5f * temp_f30) + lbl_1_data_124[2];
HuSprGrpPosSet(temp_r24, temp_f31, 186.0f);
temp_f31 = 300.0 * cosd(4.5f * temp_f30) + (lbl_1_data_124[2] - 88.0f);
#if VERSION_NTSC
HuWinPosSet(sp10[0], 16.0f + temp_f31, 168.0f);
#else
HuWinPosSet(sp10[0], 8.0f + temp_f31, 168.0f);
#endif
}
}
temp_f30 = temp_r31 - 6;
@ -846,13 +888,17 @@ static void fn_1_2FA0(void)
temp_f31 = 300.0 * cosd(4.5f * temp_f30) + lbl_1_data_124[4];
HuSprGrpPosSet(temp_r23, temp_f31, 242.0f);
temp_f31 = 300.0 * cosd(4.5f * temp_f30) + (lbl_1_data_124[4] - 100.0f);
#if VERSION_NTSC
HuWinPosSet(sp10[1], 16.0f + temp_f31, 224.0f);
#else
HuWinPosSet(sp10[1], 8.0f + temp_f31, 224.0f);
#endif
}
}
temp_f30 = temp_r31 - 9;
if (temp_f30 > 0.0f) {
if (temp_f30 <= 20.0f) {
temp_f31 = 300.0 * cosd(4.5f * temp_f30) + (lbl_1_data_124[6] - 217.0f);
temp_f31 = 300.0 * cosd(4.5f * temp_f30) + (lbl_1_data_124[6] - (WIN_ANIM_OFS+16));
HuWinPosSet(sp10[2], 16.0f + temp_f31, 274.0f);
}
}
@ -860,7 +906,7 @@ static void fn_1_2FA0(void)
}
while (lbl_1_data_0 != 3) {
if (temp_r21 != lbl_1_bss_6) {
temp_f31 = 16.0f + (lbl_1_data_124[6] - 217.0f);
temp_f31 = 16.0f + (lbl_1_data_124[6] - (WIN_ANIM_OFS+16));
HuWinMesSet(temp_r27, MAKE_MESSID(0x24, 0x02) + lbl_1_bss_10 + temp_r21);
temp_r21 = lbl_1_bss_6;
if (lbl_1_bss_6 == 1) {
@ -875,7 +921,11 @@ static void fn_1_2FA0(void)
HuWinMesSet(sp10[2], MAKE_MESSID(0x24, 0x02) + lbl_1_bss_10 + lbl_1_bss_6);
}
for (temp_r31 = 0; temp_r31 <= 10; temp_r31++) {
#if VERSION_NTSC
HuWinPosSet(temp_r27, 30.0 * sind(temp_r31 * 9.0f) + temp_f31, 200.0 * (1.0 - cosd(temp_r31 * 9.0f)) + 274.0);
#else
HuWinPosSet(temp_r27, 30.0 * sind(temp_r31 * 9.0f) + temp_f31, 220.0 * (1.0 - cosd(temp_r31 * 9.0f)) + 274.0);
#endif
HuPrcVSleep();
}
}
@ -897,7 +947,11 @@ static void fn_1_2FA0(void)
HuSprGrpPosSet(temp_r23, temp_f31, 242.0f);
temp_f31 = (lbl_1_data_124[4] - 100.0f) + (300.0f * temp_f30);
HuWinPosSet(sp10[1], 16.0f + temp_f31, 224);
#if VERSION_NTSC
temp_f31 = (lbl_1_data_124[6] - 184.0f) + (400.0f * temp_f30);
#else
temp_f31 = (lbl_1_data_124[6] - 235.0f) + (400.0f * temp_f30);
#endif
HuWinPosSet(sp10[2], 16.0f + temp_f31, 274);
HuPrcVSleep();
}

View file

@ -2769,7 +2769,11 @@ void fn_2_C130(omObjData *object)
case 0:
if (!MGSeqStatGet(lbl_2_bss_C0)) {
object->work[0] = 1;
#if VERSION_NTSC
HuAudFXStop(lbl_2_bss_11C);
#else
HuAudFXFadeOut(lbl_2_bss_11C, 500);
#endif
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30);
WipeColorSet(255, 255, 255);
}

View file

@ -22,6 +22,7 @@
#include "dolphin.h"
#include "ext_math.h"
#include "version.h"
#undef ABS
#define ABS(x) ((0 > (x)) ? -(x) : (x))
@ -425,20 +426,20 @@ static void fn_1_580(s32 *arg0, s32 arg1, s32 arg2)
espBankSet(arg0[arg1 + 1], 10);
espBankSet(arg0[arg1 + 4], 11);
if (36000 <= arg2) {
arg2 = 35999;
if (600 * REFRESH_RATE <= arg2) {
arg2 = 600 * REFRESH_RATE - 1;
}
var_r30 = arg2 / 3600;
arg2 -= var_r30 * 3600;
var_r30 = arg2 / (60 * REFRESH_RATE);
arg2 -= var_r30 * (60 * REFRESH_RATE);
if (var_r30 > 9) {
var_r30 = 9;
}
espBankSet(arg0[arg1], var_r30);
var_r30 = arg2 / 60;
arg2 -= var_r30 * 60;
var_r30 = arg2 / REFRESH_RATE;
arg2 -= var_r30 * REFRESH_RATE;
espBankSet(arg0[arg1 + 2], var_r30 / 10);
espBankSet(arg0[arg1 + 3], var_r30 % 10);
var_r30 = 101.5f * arg2 / 60.0f;
var_r30 = 101.5f * arg2 / REFRESH_RATE;
espBankSet(arg0[arg1 + 5], var_r30 / 10);
espBankSet(arg0[arg1 + 6], var_r30 % 10);
}
@ -1671,7 +1672,7 @@ static void fn_1_8218(omObjData *arg0)
}
break;
case 1006:
MGSeqParamSet(lbl_1_bss_1A8, 1, (lbl_1_bss_1B0 + 59) / 60);
MGSeqParamSet(lbl_1_bss_1A8, 1, (lbl_1_bss_1B0 + REFRESH_RATE - 1) / REFRESH_RATE);
lbl_1_bss_1B0--;
if (lbl_1_bss_1B0 < 0 || lbl_1_bss_26 >= 0) {
lbl_1_bss_1B0 = 1800;

View file

@ -418,20 +418,20 @@ void fn_1_580(s32 *arg0, s32 arg1, s32 arg2)
espBankSet(arg0[arg1 + 1], 10);
espBankSet(arg0[arg1 + 4], 11);
if (36000 <= arg2) {
arg2 = 35999;
if (600 * REFRESH_RATE <= arg2) {
arg2 = 600 * REFRESH_RATE - 1;
}
var_r30 = arg2 / 3600;
arg2 -= var_r30 * 3600;
var_r30 = arg2 / (60 * REFRESH_RATE);
arg2 -= var_r30 * (60 * REFRESH_RATE);
if (var_r30 > 9) {
var_r30 = 9;
}
espBankSet(arg0[arg1], var_r30);
var_r30 = arg2 / 60;
arg2 -= var_r30 * 60;
var_r30 = arg2 / REFRESH_RATE;
arg2 -= var_r30 * REFRESH_RATE;
espBankSet(arg0[arg1 + 2], var_r30 / 10);
espBankSet(arg0[arg1 + 3], var_r30 % 10);
var_r30 = 101.5f * arg2 / 60.0f;
var_r30 = 101.5f * arg2 / REFRESH_RATE;
espBankSet(arg0[arg1 + 5], var_r30 / 10);
espBankSet(arg0[arg1 + 6], var_r30 % 10);
}

View file

@ -1,5 +1,4 @@
#include "ext_math.h"
#include "game/audio.h"
#include "game/flag.h"
#include "game/hsfman.h"
#include "game/minigame_seq.h"
@ -9,6 +8,11 @@
#include "game/wipe.h"
#include "REL/m420dll.h"
#include "version.h"
#ifndef __MWERKS__
#include "game/audio.h"
#endif
s32 fn_1_198(void);
void fn_1_3D4(void);
@ -142,8 +146,8 @@ void fn_1_43C(void)
HuPrcVSleep();
}
MGSeqKill(lbl_1_bss_10);
lbl_1_bss_12 = 0xE10;
lbl_1_bss_14 = MGSeqCreate(1, lbl_1_bss_12 / 60, -1, -1);
lbl_1_bss_12 = 60 * REFRESH_RATE;
lbl_1_bss_14 = MGSeqCreate(1, lbl_1_bss_12 / REFRESH_RATE, -1, -1);
var_r30 = 1;
while (TRUE) {
if (lbl_1_bss_18[0]->unk_48 == 0) {
@ -163,8 +167,8 @@ void fn_1_43C(void)
}
}
if (lbl_1_bss_12 >= 0) {
if (((--lbl_1_bss_12) % 60) == 0) {
MGSeqParamSet(lbl_1_bss_14, 1, lbl_1_bss_12 / 60);
if (((--lbl_1_bss_12) % REFRESH_RATE) == 0) {
MGSeqParamSet(lbl_1_bss_14, 1, lbl_1_bss_12 / REFRESH_RATE);
}
}
if ((fn_1_67E8(0) == 0) && (fn_1_67E8(1) == 0) && (lbl_1_bss_12 > 0)) {

View file

@ -11,6 +11,7 @@
#include "game/sprite.h"
#include "game/wipe.h"
#include "string.h"
#include "version.h"
typedef struct UnkM426Struct {
/* 0x00 */ s32 unk_00;
@ -457,7 +458,7 @@ void fn_1_330(omObjData *object)
}
break;
case 5:
var_r25 = (lbl_1_bss_58 + 59) / 60;
var_r25 = (lbl_1_bss_58 + REFRESH_RATE - 1) / REFRESH_RATE;
if (var_r25 < 0) {
var_r25 = 0;
}

View file

@ -21,6 +21,7 @@
#include "game/sprite.h"
#include "ext_math.h"
#include "version.h"
#undef ABS
#define ABS(x) ((0 > (x)) ? -(x) : (x))
@ -222,20 +223,20 @@ void fn_1_580(s32 *arg0, s32 arg1, s32 arg2)
espBankSet(arg0[arg1 + 1], 10);
espBankSet(arg0[arg1 + 4], 11);
if (36000 <= arg2) {
arg2 = 35999;
if (600 * REFRESH_RATE <= arg2) {
arg2 = 600 * REFRESH_RATE - 1;
}
var_r30 = arg2 / 3600;
arg2 -= var_r30 * 3600;
var_r30 = arg2 / (60 * REFRESH_RATE);
arg2 -= var_r30 * (60 * REFRESH_RATE);
if (var_r30 > 9) {
var_r30 = 9;
}
espBankSet(arg0[arg1], var_r30);
var_r30 = arg2 / 60;
arg2 -= var_r30 * 60;
var_r30 = arg2 / REFRESH_RATE;
arg2 -= var_r30 * REFRESH_RATE;
espBankSet(arg0[arg1 + 2], var_r30 / 10);
espBankSet(arg0[arg1 + 3], var_r30 % 10);
var_r30 = 101.5f * arg2 / 60.0f;
var_r30 = 101.5f * arg2 / REFRESH_RATE;
espBankSet(arg0[arg1 + 5], var_r30 / 10);
espBankSet(arg0[arg1 + 6], var_r30 % 10);
}
@ -2343,7 +2344,7 @@ void fn_1_AD74(float *arg0)
float temp_f30;
temp_r31 = &lbl_1_data_103C[0][0];
temp_f30 = lbl_1_bss_12C / 60;
temp_f30 = lbl_1_bss_12C / REFRESH_RATE;
temp_f31 = sind(90 * temp_f30) * sind(90 * temp_f30);
for (temp_r28 = 0; temp_r28 < 4; temp_r28++, temp_r31 += 4, arg0 += 4) {
sp8[0] = temp_r31[0] + (temp_f31 * (arg0[0] - temp_r31[0]));
@ -2395,8 +2396,8 @@ void fn_1_B01C(void)
temp_f31 = lbl_1_bss_98[lbl_1_bss_28].x - temp_r30->unk4.x;
temp_f30 = lbl_1_bss_98[lbl_1_bss_28].z - temp_r30->unk4.z;
temp_r30->unk64 = atan2d(temp_f31, temp_f30);
omVibrate(temp_r31->unk114, 120, 6, 6);
omVibrate(temp_r30->unk114, 120, 6, 6);
omVibrate(temp_r31->unk114, 2 * REFRESH_RATE, 6, 6);
omVibrate(temp_r30->unk114, 2 * REFRESH_RATE, 6, 6);
}
void fn_1_B754(float *arg0, float arg1, float arg2, s32 arg3)
@ -2438,7 +2439,7 @@ void fn_1_B8E0(omObjData *object)
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
object->func = fn_1_E96C;
}
lbl_1_bss_114 += 1.0f / 60.0f;
lbl_1_bss_114 += 1.0f / REFRESH_RATE;
if (360.0f <= lbl_1_bss_114) {
lbl_1_bss_114 -= 360.0f;
}
@ -2464,12 +2465,12 @@ void fn_1_B8E0(omObjData *object)
case 1002:
lbl_1_bss_12C++;
temp_f30 = lbl_1_bss_12C / 60;
temp_f30 = lbl_1_bss_12C / REFRESH_RATE;
temp_f31 = 1 - (sind(temp_f30 * 90.0f) * sind(temp_f30 * 90.0f));
for (temp_r29 = 0; temp_r29 < 5; temp_r29++) {
espTPLvlSet(lbl_1_bss_10[temp_r29], temp_f31);
}
if (60.0f <= lbl_1_bss_12C) {
if (REFRESH_RATE <= lbl_1_bss_12C) {
object->work[0]++;
lbl_1_bss_12C = 0;
for (temp_r29 = 0; temp_r29 < 5; temp_r29++) {
@ -2480,12 +2481,12 @@ void fn_1_B8E0(omObjData *object)
case 1003:
lbl_1_bss_12C++;
temp_f30 = lbl_1_bss_12C / 60;
temp_f30 = lbl_1_bss_12C / REFRESH_RATE;
temp_f31 = sind(temp_f30 * 90.0f) * sind(temp_f30 * 90.0f);
for (temp_r29 = 0; temp_r29 < 4; temp_r29++) {
lbl_1_bss_130[temp_r29].unk4 = temp_f31;
}
if (60.0f <= lbl_1_bss_12C) {
if (REFRESH_RATE <= lbl_1_bss_12C) {
object->work[0]++;
lbl_1_bss_12C = 0;
lbl_1_bss_4 = HuAudFXPlay(1645);
@ -2511,19 +2512,19 @@ void fn_1_B8E0(omObjData *object)
}
if (!MGSeqStatGet(lbl_1_bss_2FE)) {
object->work[0]++;
lbl_1_bss_304 = 3600;
lbl_1_bss_2FC = MGSeqTimerCreate(lbl_1_bss_304 / 60);
lbl_1_bss_304 = 60 * REFRESH_RATE;
lbl_1_bss_2FC = MGSeqTimerCreate(lbl_1_bss_304 / REFRESH_RATE);
lbl_1_bss_2FE = -1;
}
}
break;
case 1006:
MGSeqParamSet(lbl_1_bss_2FC, 1, (lbl_1_bss_304 + 59) / 60);
MGSeqParamSet(lbl_1_bss_2FC, 1, (lbl_1_bss_304 + REFRESH_RATE - 1) / REFRESH_RATE);
lbl_1_bss_304--;
if (lbl_1_bss_304 < 0 || lbl_1_bss_28 >= 0) {
object->work[0] = 1007;
lbl_1_bss_304 = 3600;
lbl_1_bss_304 = 60 * REFRESH_RATE;
lbl_1_bss_12C = 0;
}
break;
@ -2575,7 +2576,7 @@ void fn_1_B8E0(omObjData *object)
case 1008:
lbl_1_bss_12C++;
if (60.0f < lbl_1_bss_12C) {
if (REFRESH_RATE < lbl_1_bss_12C) {
object->work[0]++;
lbl_1_bss_12C = 0;
HuAudFXPlay(1650);
@ -2587,7 +2588,7 @@ void fn_1_B8E0(omObjData *object)
}
else {
fn_1_AD74(((lbl_1_bss_28 & 0x2) == 0) ? &lbl_1_data_107C[0][0] : &lbl_1_data_10BC[0][0]);
temp_f30 = lbl_1_bss_12C / 60.0f;
temp_f30 = lbl_1_bss_12C / REFRESH_RATE;
temp_f31 = sind(temp_f30 * 90.0f) * sind(temp_f30 * 90.0f);
fn_1_A588(lbl_1_bss_28, &lbl_1_data_FE0, temp_f31);
}
@ -2595,13 +2596,13 @@ void fn_1_B8E0(omObjData *object)
case 1009:
lbl_1_bss_12C++;
if (120.0f < lbl_1_bss_12C) {
if (2 * REFRESH_RATE < lbl_1_bss_12C) {
object->work[0]++;
lbl_1_bss_12C = 0;
HuAudFXPlay(1651);
}
else {
temp_f30 = lbl_1_bss_12C / 120.0f;
temp_f30 = lbl_1_bss_12C / (2 * REFRESH_RATE);
temp_f31 = sind(temp_f30 * 90.0f) * sind(temp_f30 * 90.0f);
temp_f20 = (6.0f * frandf()) - 3.0f;
temp_f19 = (6.0f * frandf()) - 3.0f;

View file

@ -15,6 +15,7 @@
#include "ext_math.h"
#include "REL/m431Dll.h"
#include "version.h"
typedef struct bss_5C_struct {
s16 unk0[6];
@ -167,8 +168,8 @@ u8 fn_1_57C(void)
temp_r31 = &lbl_1_data_4C[0];
temp_r30 = 0;
lbl_1_bss_8++;
temp_f30 = lbl_1_bss_8 / 90.0f;
if (lbl_1_bss_8 > 90) {
temp_f30 = lbl_1_bss_8 / (1.5f * REFRESH_RATE);
if (lbl_1_bss_8 > (s32)(1.5f * REFRESH_RATE)) {
lbl_1_bss_8 = 0;
temp_f30 = 1;
temp_r30 = 1;
@ -210,9 +211,9 @@ s32 fn_1_7B0(void)
temp_r31 = &lbl_1_data_4C[0];
temp_r29 = 0;
lbl_1_bss_8++;
temp_f30 = lbl_1_bss_8 / 120.0f;
if (lbl_1_bss_8 > 120) {
lbl_1_bss_8 = 120;
temp_f30 = lbl_1_bss_8 / (2.0f * REFRESH_RATE);
if (lbl_1_bss_8 > (2 * REFRESH_RATE)) {
lbl_1_bss_8 = 2 * REFRESH_RATE;
temp_f30 = 1;
temp_r29 = 1;
}
@ -258,7 +259,7 @@ void fn_1_A44(omObjData *object)
temp_r26 = object->data;
temp_r26->unk0 = 4;
temp_r26->unk6[0] = 0;
temp_r26->unkA = 900;
temp_r26->unkA = 15 * REFRESH_RATE;
temp_r26->unk10 = -1;
temp_r27 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M431, 0x1A), MEMORY_DEFAULT_NUM));
object->model[0] = fn_1_6C74(temp_r27, 1024, 25, 64, 64);
@ -365,7 +366,7 @@ void fn_1_10A4(omObjData *object)
case 12:
if (temp_r31->unk10 != -1) {
temp_r28 = (temp_r31->unkA + 59) / 60;
temp_r28 = (temp_r31->unkA + REFRESH_RATE - 1) / REFRESH_RATE;
if (temp_r28 < 0) {
temp_r28 = 0;
}
@ -426,7 +427,7 @@ void fn_1_10A4(omObjData *object)
break;
case 20:
if (++lbl_1_bss_C > 210.0f) {
if (++lbl_1_bss_C > (3.5f * REFRESH_RATE)) {
lbl_1_bss_0 = 1;
}
break;
@ -442,11 +443,11 @@ void fn_1_140C(omObjData *object)
return;
}
temp_r31->unk12++;
temp_f31 = temp_r31->unk12 / 18.0f;
if (temp_r31->unk12 > 18.0f) {
temp_f31 = temp_r31->unk12 / (3.0f / 10 * REFRESH_RATE);
if (temp_r31->unk12 > (3.0f / 10 * REFRESH_RATE)) {
temp_r31->unk12 = 0;
temp_f31 = 1.0f;
temp_r31->unk12 = 18;
temp_r31->unk12 = 0.3f * REFRESH_RATE;
temp_r31->unk0 &= ~0x300;
}
temp_f30 = 1.0 - cosd(90.0f * temp_f31);
@ -848,9 +849,9 @@ void fn_1_2C94(Work2110 *arg0)
HuAudFXPlay(1670);
}
lbl_1_bss_10++;
temp_f31 = lbl_1_bss_10 / 60.0f;
temp_f31 = lbl_1_bss_10 / (1.0f * REFRESH_RATE);
if (temp_f31 >= 1.0f) {
temp_r26->unkA = 900;
temp_r26->unkA = 15 * REFRESH_RATE;
lbl_1_bss_10 = 0;
temp_f31 = 1;
lbl_1_data_162++;
@ -870,7 +871,7 @@ void fn_1_2C94(Work2110 *arg0)
HuAudFXPlay(1663);
}
lbl_1_bss_10++;
temp_f31 = lbl_1_bss_10 / 60.0f;
temp_f31 = lbl_1_bss_10 / (1.0f * REFRESH_RATE);
if (temp_f31 >= 1.0f) {
lbl_1_bss_10 = 0;
temp_f31 = 1.0f;
@ -912,7 +913,7 @@ void fn_1_30E0(Work2110 *arg0)
switch (lbl_1_data_162) {
case 0:
lbl_1_bss_10++;
if (lbl_1_bss_10 > 60) {
if (lbl_1_bss_10 > REFRESH_RATE) {
lbl_1_bss_10 = 0;
lbl_1_data_162++;
}
@ -945,7 +946,7 @@ void fn_1_30E0(Work2110 *arg0)
temp_r31 = &arg0[0].unk4[temp_r28];
switch (temp_r22 = temp_r31->unk0 & 0x1C) {
case 4:
if (sp8[temp_r27] > 15) {
if (sp8[temp_r27] > (VERSION_NTSC ? 15 : 12)) {
sp8[temp_r27] = 0;
temp_r25 = 1;
if (temp_r29 - 1 > -6) {
@ -969,7 +970,7 @@ void fn_1_30E0(Work2110 *arg0)
temp_f31 = 50.0f;
temp_r31->unk0 &= ~0x1C;
if (temp_r22 == 8) {
temp_r31->unk20 = 6;
temp_r31->unk20 = 6.0f;
temp_r31->unk0 |= 12;
HuAudFXPlay(1664);
}
@ -1020,7 +1021,7 @@ void fn_1_3540(Work2110 *arg0)
temp_f31 += temp_r29 * 36.0f;
lbl_1_bss_18[0] = lbl_1_bss_20[0] + temp_f31;
lbl_1_bss_18[1] = lbl_1_bss_20[1] - temp_f31;
lbl_1_bss_14 = (0.01f * temp_f31) * 60;
lbl_1_bss_14 = (0.01f * temp_f31) * REFRESH_RATE;
lbl_1_data_162++;
lbl_1_data_164 = HuAudFXPlay(1665);
break;
@ -1119,7 +1120,7 @@ void fn_1_3D7C(Work2110 *arg0)
s16 temp_r27;
switch (lbl_1_data_162) {
case 0:
if (++lbl_1_bss_10 > 60) {
if (++lbl_1_bss_10 > REFRESH_RATE) {
lbl_1_bss_10 = 0;
lbl_1_data_162++;
}
@ -1151,7 +1152,7 @@ void fn_1_3D7C(Work2110 *arg0)
break;
case 2:
if (++lbl_1_bss_10 > 60) {
if (++lbl_1_bss_10 > REFRESH_RATE) {
lbl_1_bss_10 = lbl_1_data_162 = 0;
fn_1_2050(224, 32);
}
@ -1235,7 +1236,7 @@ void fn_1_4028(Work2110 *arg0)
break;
case 2:
if (++lbl_1_bss_10 > 90.0f) {
if (++lbl_1_bss_10 > (1.5f * REFRESH_RATE)) {
lbl_1_bss_10 = 0;
lbl_1_data_162 = 1;
fn_1_2050(224, 128);
@ -1250,7 +1251,7 @@ void fn_1_4028(Work2110 *arg0)
}
if (temp_r31->unk0 & 0x2) {
temp_r31->unk18++;
temp_f31 = temp_r31->unk18 / 30.0f;
temp_f31 = temp_r31->unk18 / (0.5f * REFRESH_RATE);
if (temp_f31 >= 1.0f) {
temp_r31->unk20 -= 1.0f;
if (temp_r31->unk20 < 0.4f) {
@ -1264,16 +1265,16 @@ void fn_1_4028(Work2110 *arg0)
}
else {
if (!temp_r31->unk20) {
if (++temp_r31->unk18 > 30.0f) {
if (++temp_r31->unk18 > (0.5f * REFRESH_RATE)) {
temp_r31->unk20 = 1;
temp_r31->unk18 = 0;
}
}
else {
temp_r31->unk18++;
temp_f31 = temp_r31->unk18 / 54.0f;
temp_f31 = temp_r31->unk18 / (VERSION_NTSC ? 54.0f : 45.0f);
if (temp_f31 >= 1.0f) {
temp_r31->unk18 = 54;
temp_r31->unk18 = VERSION_NTSC ? 54 : 45;
temp_f31 = 1.0f;
}
temp_f31 = cosd(temp_f31 * 90.0f);
@ -1594,7 +1595,7 @@ void fn_1_5708(void)
Hu3DMotionShiftSet(lbl_1_bss_2C->model[5], lbl_1_bss_2C->motion[5], 0, 8, HU3D_MOTATTR_LOOP);
}
else {
if (temp_r29->unkA < 180) {
if (temp_r29->unkA < (3 * REFRESH_RATE)) {
temp_r31->unk12 = 0;
temp_r31->unk10 = 5;
}

View file

@ -13,6 +13,7 @@
#include "REL/m431Dll.h"
#include "ext_math.h"
#include "version.h"
typedef struct bss_struct_62C {
u8 unk0;
@ -319,7 +320,7 @@ void fn_1_8790(omObjData *object)
}
}
if (temp_r31->unk7C && temp_r28 == temp_r31->unk6E - 1) {
if (++temp_r31->unk7C > 120) {
if (++temp_r31->unk7C > 2 * REFRESH_RATE) {
temp_r31->unk7C = 0;
}
if ((temp_r31->unk14->unk0 & 0xC0) == 0x40) {
@ -704,6 +705,12 @@ void fn_1_98D4(omObjData *object)
Hu3DModelRotSet(object->model[0], 0, temp_r31->unk30, 0);
}
#if VERSION_NTSC
#define fn_1_9A04_CHECK (temp_r29->unk_0C == -1 && temp_r29->unk_64 == 14.0f)
#else
#define fn_1_9A04_CHECK (temp_r29->unk_0C == -1 && temp_r29->unk_64 >= 14.0f && temp_r31->unk3C_pal == 0)
#endif
void fn_1_9A04(omObjData *object)
{
Bss61CWork *temp_r31;
@ -725,12 +732,18 @@ void fn_1_9A04(omObjData *object)
if (fn_1_4CDC(temp_r31->unkA, temp_r31->unk40)) {
fn_1_B0E8(object, 3, 4);
fn_1_B130(object, 0, 8);
#if VERSION_PAL
temp_r31->unk3C_pal = 0;
#endif
}
}
}
else {
if (temp_r31->unk38 == 3) {
if (temp_r29->unk_0C == -1 && temp_r29->unk_64 == 14.0f) {
if (fn_1_9A04_CHECK) {
#if VERSION_PAL
temp_r31->unk3C_pal = 1;
#endif
temp_r31->unk5C = fn_1_4B14(temp_r31->unkA, temp_r31->unk40, &temp_r31->unk7E);
if (temp_r31->unk5C != -1) {
if (temp_r31->unkA == 0) {
@ -742,18 +755,18 @@ void fn_1_9A04(omObjData *object)
if (temp_r31->unk7E != 0) {
omVibrate(temp_r31->unk4, 12, 6, 6);
if (temp_r31->unkA == 0) {
fn_1_B494(1666, 30);
fn_1_B494(1666, 0.5f * REFRESH_RATE);
}
else {
fn_1_B494(1671, 30);
fn_1_B494(1671, 0.5f * REFRESH_RATE);
}
}
else {
if (temp_r31->unkA == 0) {
fn_1_B494(1667, 30);
fn_1_B494(1667, 0.5f * REFRESH_RATE);
}
else {
fn_1_B494(1672, 30);
fn_1_B494(1672, 0.5f * REFRESH_RATE);
}
}
temp_r31->unk70++;
@ -891,6 +904,9 @@ void fn_1_A0F8(omObjData *object)
if (fn_1_4CDC(temp_r31->unkA, temp_r31->unk40) && fn_1_2090(28) == 12 && fn_1_2090(224) == 0 && fn_1_4724() < 2) {
fn_1_B0E8(object, 3, 4);
fn_1_B130(object, 0, 8);
#if VERSION_PAL
temp_r31->unk3C_pal = 0;
#endif
temp_r27 = 1;
}
if (temp_r27 == 0) {

View file

@ -26,6 +26,7 @@
#include "ext_math.h"
#include "string.h"
#include "version.h"
#ifndef __MWERKS__
#include "game/audio.h"
@ -76,6 +77,12 @@ float lbl_1_bss_568;
s32 lbl_1_bss_528[16];
UnkBss428Struct lbl_1_bss_428[32];
#if VERSION_NTSC
#define _1606_BY_REFRESH_RATE 26.766666f
#else
#define _1606_BY_REFRESH_RATE 32.120003f
#endif
void fn_1_0(void)
{
lbl_1_bss_5D0.unk04 = NULL;
@ -234,20 +241,20 @@ void fn_1_580(s32 *arg0, s32 arg1, s32 arg2)
espBankSet(arg0[arg1 + 1], 10);
espBankSet(arg0[arg1 + 4], 11);
if (36000 <= arg2) {
arg2 = 35999;
if (600 * REFRESH_RATE <= arg2) {
arg2 = 600 * REFRESH_RATE - 1;
}
var_r30 = arg2 / 3600;
arg2 -= var_r30 * 3600;
var_r30 = arg2 / (60 * REFRESH_RATE);
arg2 -= var_r30 * (60 * REFRESH_RATE);
if (var_r30 > 9) {
var_r30 = 9;
}
espBankSet(arg0[arg1], var_r30);
var_r30 = arg2 / 60;
arg2 -= var_r30 * 60;
var_r30 = arg2 / REFRESH_RATE;
arg2 -= var_r30 * REFRESH_RATE;
espBankSet(arg0[arg1 + 2], var_r30 / 10);
espBankSet(arg0[arg1 + 3], var_r30 % 10);
var_r30 = 101.5f * arg2 / 60.0f;
var_r30 = 101.5f * arg2 / REFRESH_RATE;
espBankSet(arg0[arg1 + 5], var_r30 / 10);
espBankSet(arg0[arg1 + 6], var_r30 % 10);
}
@ -738,7 +745,7 @@ void fn_1_2E34(WorkPlayerOld *player)
player->unk_3C |= 0x100;
player->unk_A4 = 0;
if (!(player2->unk_3C & 0x100)) {
player->unk_84.y = 26.766666f;
player->unk_84.y = _1606_BY_REFRESH_RATE;
}
}
if (state == 3) {
@ -842,7 +849,7 @@ void fn_1_3CE0(WorkPlayerOld *player, s32 *state, u32 *motAttr)
}
if (player->unk_14[3] >= 0 && (player->unk_28 & 0x100)) {
fn_1_2BD0(player, 26.766666f, 1);
fn_1_2BD0(player, _1606_BY_REFRESH_RATE, 1);
*motAttr = HU3D_MOTATTR_NONE;
*state = 3;
}
@ -857,14 +864,14 @@ void fn_1_3DB8(WorkPlayerOld *player, s32 *state, u32 *motAttr)
player->unk_A4 = 0;
}
else {
player->unk_84.y += 3.65f;
player->unk_84.y += 219.0f / REFRESH_RATE;
}
}
else {
player->unk_A4 = 0;
}
}
player->unk_84.y += -2.4333334f;
player->unk_84.y += -146.0f / REFRESH_RATE;
if (player->unk_14[5] >= 0 && (player->unk_28 & 0x140)) {
player->unk_38 = 3;
player->unk_84.y = 0;
@ -1317,7 +1324,7 @@ void fn_1_52B8(UnkM432DllBss0SubStruct *arg0, Vec *arg1)
void fn_1_5364(s32 arg0, omObjData *object)
{
if (lbl_1_bss_0[arg0].unk_1D8 >= 0) {
lbl_1_bss_0[arg0].unk_1DC -= 0.016666668f;
lbl_1_bss_0[arg0].unk_1DC -= 1.0f / REFRESH_RATE;
if (0.0f >= lbl_1_bss_0[arg0].unk_1DC) {
HuAudFXStop(lbl_1_bss_0[arg0].unk_1D8);
lbl_1_bss_0[arg0].unk_1D8 = -1;
@ -2241,7 +2248,7 @@ void fn_1_B234(void)
u32 var_r28;
if (HuPadBtn[0] & 2) {
lbl_1_bss_57C = 0x4650;
lbl_1_bss_57C = 300 * REFRESH_RATE;
}
print8(0x18, 0x20, 1.5f, "COUNT:%d MODE:%d MES:%d", lbl_1_bss_580, lbl_1_bss_41C->work[0], lbl_1_bss_576);
print8(0x18, 0x30, 1.5f, "%f %f %f %f", lbl_1_bss_0[0].unk_64, lbl_1_bss_0[0].unk_68, lbl_1_bss_0[0].unk_6C, lbl_1_bss_0[0].unk_28.z);
@ -2487,7 +2494,7 @@ void fn_1_C724(UnkM432DllStruct *var_r31, omObjData *var_r25, omObjData *var_r24
var_r30 = &lbl_1_bss_0[var_r31->unk_184 >> 1];
fn_1_BF9C(var_r31);
if (fn_1_BF08(var_r31) == 0x7D4) {
var_r30->unk_1D4 += 1.0f - (2.0f * (var_r31->unk_14C / 60.0f));
var_r30->unk_1D4 += 1.0f - (2.0f * (var_r31->unk_14C / REFRESH_RATE));
if (0.0f > var_r30->unk_1D4) {
var_r30->unk_1D4 = 0.0f;
}
@ -2502,7 +2509,7 @@ void fn_1_C724(UnkM432DllStruct *var_r31, omObjData *var_r25, omObjData *var_r24
}
else {
var_r31->unk_14C += 1.0f;
var_r30->unk_1D4 -= 0.016666668f;
var_r30->unk_1D4 -= 1.0f / REFRESH_RATE;
if (0.0f > var_r30->unk_1D4) {
var_r30->unk_1D4 = 0.0f;
}
@ -2538,7 +2545,7 @@ void fn_1_D0E0(UnkM432DllStruct *arg0, omObjData *arg1, omObjData *arg2)
{
fn_1_BF9C(arg0);
if (fn_1_BF08(arg0) == 0x7D5) {
lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC += 1.0f - (2.0f * (arg0->unk_14C / 60.0f));
lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC += 1.0f - (2.0f * (arg0->unk_14C / REFRESH_RATE));
if (0.0f > lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC) {
lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC = 0.0f;
}
@ -2705,7 +2712,7 @@ void fn_1_E9E4(UnkM432DllStruct *arg0)
var_f28 = 100.0f;
}
if ((arg0->unk_C8->unk_2C.y + var_f28) > arg0->unk_00.unk_6C.y) {
arg0->unk_00.unk_84.y = 26.766666f;
arg0->unk_00.unk_84.y = _1606_BY_REFRESH_RATE;
arg0->unk_00.unk_A4 = 1.0f;
return;
}
@ -2938,7 +2945,7 @@ void fn_1_10250(omObjData *object)
var_r31->unk_00.unk_2C = 0x100;
fn_1_40C0(&var_r31->unk_00);
if (200.0f > var_r31->unk_00.unk_6C.y) {
var_r31->unk_00.unk_84.y = 26.766666f;
var_r31->unk_00.unk_84.y = _1606_BY_REFRESH_RATE;
var_r31->unk_00.unk_A4 = 1.0f;
}
else {
@ -3296,6 +3303,7 @@ void fn_1_128C8(omObjData *object)
lbl_1_bss_0[var_r31].unk_1F0[1] = 0.0f;
}
}
#if VERSION_NTSC
if (lbl_1_bss_41C->work[0] >= 0x3EC) {
for (var_r31 = 0; var_r31 < 2; var_r31++) {
if (lbl_1_bss_0[var_r31].unk_1CC >= 0) {
@ -3312,6 +3320,7 @@ void fn_1_128C8(omObjData *object)
lbl_1_bss_0[var_r31].unk_1D8 = -1;
}
}
#endif
}
}
@ -3416,16 +3425,16 @@ void fn_1_131A8(omObjData *var_r28)
case 0x3EB:
lbl_1_bss_57C++;
if (lbl_1_bss_574 >= 0) {
MGSeqParamSet(lbl_1_bss_574, 1, (0x468B - lbl_1_bss_57C) / 60);
MGSeqParamSet(lbl_1_bss_574, 1, (300 * REFRESH_RATE + REFRESH_RATE - 1 - lbl_1_bss_57C) / REFRESH_RATE);
}
else if (lbl_1_bss_57C > 0x3F48) {
lbl_1_bss_574 = MGSeqCreate(1, (0x468B - lbl_1_bss_57C) / 60, -1, -1);
else if (lbl_1_bss_57C > 270 * REFRESH_RATE) {
lbl_1_bss_574 = MGSeqCreate(1, (300 * REFRESH_RATE + REFRESH_RATE - 1 - lbl_1_bss_57C) / REFRESH_RATE, -1, -1);
MGSeqPosSet(lbl_1_bss_574, 288.0f, 400.0f);
}
fn_1_580(lbl_1_bss_528, 0, lbl_1_bss_57C);
fn_1_12EA8();
if ((lbl_1_bss_57C >= 0x4650) || (lbl_1_bss_3FC >= 0)) {
if ((lbl_1_bss_57C >= 300 * REFRESH_RATE) || (lbl_1_bss_3FC >= 0)) {
var_r28->work[0] = 0x3EC;
lbl_1_bss_3F0 = 0.0f;
}
@ -3453,7 +3462,7 @@ void fn_1_131A8(omObjData *var_r28)
lbl_1_bss_3F0 += 1.0f;
if ((var_r17 >= 4) && (60.0f <= lbl_1_bss_3F0) && (MGSeqStatGet(lbl_1_bss_576) == 0)) {
var_r28->work[0] = 0x3EE;
if ((lbl_1_bss_3FC >= 0) && (lbl_1_bss_57C < 0x1518)) {
if ((lbl_1_bss_3FC >= 0) && (lbl_1_bss_57C < (VERSION_NTSC ? 5400 : 5250))) {
if (GWPlayerCfg[fn_1_51A8(lbl_1_bss_3FC)->unk_188].iscom != 0) {
if (GWPlayerCfg[fn_1_51A8(lbl_1_bss_3FC + 1)->unk_188].iscom == 0) {
goto block_81;
@ -3535,17 +3544,17 @@ void fn_1_131A8(omObjData *var_r28)
case 0x3F0:
var_r29 = &lbl_1_bss_0[lbl_1_bss_3FC >> 1];
lbl_1_bss_3F0 += 1.0f;
var_f31 = lbl_1_bss_3F0 / 180.0f;
var_f31 = lbl_1_bss_3F0 / (3.0f * REFRESH_RATE);
var_f30 = sind((90.0f * var_f31)) * sind((90.0f * var_f31));
var_r29->unk_28.y = var_r29->unk_4C.y + (var_f30 * (var_r29->unk_58.y - var_r29->unk_4C.y));
var_r29->unk_1C.y = var_r29->unk_34.y + (var_f30 * (var_r29->unk_40.y - var_r29->unk_34.y));
if (90.0f < lbl_1_bss_3F0) {
var_f31 = (lbl_1_bss_3F0 - 90.0f) / 90.0f;
if ((1.5f * REFRESH_RATE) < lbl_1_bss_3F0) {
var_f31 = (lbl_1_bss_3F0 - 1.5f * REFRESH_RATE) / (1.5f * REFRESH_RATE);
var_f30 = sind((90.0f * var_f31)) * sind((90.0f * var_f31));
var_r29->unk_1C.z = var_r29->unk_34.z + (var_f30 * (var_r29->unk_40.z - var_r29->unk_34.z));
}
Hu3DCameraPosSetV(lbl_1_data_A0[lbl_1_bss_3FC >> 1], &var_r29->unk_1C, &lbl_1_data_C8, &var_r29->unk_28);
if (180.0f <= lbl_1_bss_3F0) {
if ((3 * REFRESH_RATE) <= lbl_1_bss_3F0) {
var_r28->work[0]++;
lbl_1_bss_3F0 = 0.0f;
}
@ -3654,7 +3663,7 @@ void ObjectSetup(void)
lbl_1_bss_578 = GWMGRecordGet(3);
lbl_1_bss_568 = -1.0f;
if (lbl_1_bss_578 == 0) {
lbl_1_bss_578 = 0x1C20;
lbl_1_bss_578 = 120 * REFRESH_RATE;
}
fn_1_414();
for (var_r30 = 0; var_r30 < 2; var_r30++) {

View file

@ -11,6 +11,7 @@
#include "game/gamework_data.h"
#include "game/minigame_seq.h"
#include "math.h"
#include "version.h"
typedef struct bss_7480_struct {
@ -246,16 +247,16 @@ void fn_1_6DBC(omObjData *object)
temp_r31->unk34.y += (75.0f - temp_r31->unk34.y) * 0.02f;
}
temp_r31->unk34.x += (temp_r31->unk34.y - temp_r31->unk34.x) * 0.2f;
temp_r31->unk1C.x += sind(temp_r31->unk34.z) * ((1.0f / 60.0f) * temp_r31->unk34.x);
temp_r31->unk1C.z += cosd(temp_r31->unk34.z) * ((1.0f / 60.0f) * temp_r31->unk34.x);
temp_r31->unk40.y += (1.0f / 60.0f) * temp_r31->unk34.x;
temp_r31->unk1C.x += sind(temp_r31->unk34.z) * ((1.0f / REFRESH_RATE) * temp_r31->unk34.x);
temp_r31->unk1C.z += cosd(temp_r31->unk34.z) * ((1.0f / REFRESH_RATE) * temp_r31->unk34.x);
temp_r31->unk40.y += (1.0f / REFRESH_RATE) * temp_r31->unk34.x;
temp_r31->unk18 = fn_1_8254(temp_r31->unk18, &temp_r31->unk1C);
Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C);
Hu3DModelRotSet(temp_r31->unk2, 0, temp_r31->unk34.z, 0);
break;
case 1:
temp_r31->unk34.z += 3.0000002f;
temp_r31->unk34.z += 1.0f / REFRESH_RATE * 180.0f;
Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C);
Hu3DModelRotSet(temp_r31->unk2, 0, temp_r31->unk34.z, 0);
if (fn_1_1D54() == 4) {
@ -274,9 +275,9 @@ void fn_1_6DBC(omObjData *object)
}
VECSubtract(&sp8, &temp_r31->unk1C, &sp8);
temp_r31->unk40.x = temp_r31->unk34.z = atan2d(sp8.x, sp8.z);
temp_r31->unk28.x = (1.0f / 60.0f) * sp8.x;
temp_r31->unk28.y = 6.666667f;
temp_r31->unk28.z = (1.0f / 60.0f) * sp8.z;
temp_r31->unk28.x = (1.0f / REFRESH_RATE) * sp8.x;
temp_r31->unk28.y = VERSION_NTSC ? 6.666667f : 8.0f;
temp_r31->unk28.z = (1.0f / REFRESH_RATE) * sp8.z;
temp_r31->unk8++;
HuAudFXPlay(1734);
}
@ -284,7 +285,7 @@ void fn_1_6DBC(omObjData *object)
if (temp_r31->unk1C.y <= -15.000001f) {
temp_r29 = 1;
}
temp_r31->unk28.y += -0.27222225f;
temp_r31->unk28.y += VERSION_NTSC ? -0.27222225f : -0.392f;
VECAdd(&temp_r31->unk1C, &temp_r31->unk28, &temp_r31->unk1C);
if (!temp_r29 && temp_r31->unk1C.y <= -15.000001f) {
fn_1_43AC(&temp_r31->unk1C);
@ -345,9 +346,9 @@ void fn_1_6DBC(omObjData *object)
temp_r31->unk34.z = fn_1_6690(temp_r31->unk34.z, temp_r31->unk40.x, 0.07f);
temp_r31->unk34.y += (50.0f - temp_r31->unk34.y) * 0.02f;
temp_r31->unk34.x += (temp_r31->unk34.y - temp_r31->unk34.x) * 0.2f;
temp_r31->unk1C.x += sind(temp_r31->unk34.z) * ((1.0f / 60.0f) * temp_r31->unk34.x);
temp_r31->unk1C.z += cosd(temp_r31->unk34.z) * ((1.0f / 60.0f) * temp_r31->unk34.x);
temp_r31->unk40.y += (1.0f / 60.0f) * temp_r31->unk34.x;
temp_r31->unk1C.x += sind(temp_r31->unk34.z) * ((1.0f / REFRESH_RATE) * temp_r31->unk34.x);
temp_r31->unk1C.z += cosd(temp_r31->unk34.z) * ((1.0f / REFRESH_RATE) * temp_r31->unk34.x);
temp_r31->unk40.y += (1.0f / REFRESH_RATE) * temp_r31->unk34.x;
Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C);
Hu3DModelRotSet(temp_r31->unk2, 0, temp_r31->unk34.z, 0);
@ -363,16 +364,16 @@ void fn_1_6DBC(omObjData *object)
}
VECSubtract(&sp8, &temp_r31->unk1C, &sp8);
temp_r31->unk40.x = temp_r31->unk34.z = atan2d(sp8.x, sp8.z);
temp_r31->unk28.x = (1.0f / 60.0f) * sp8.x;
temp_r31->unk28.y = 6.666667f;
temp_r31->unk28.z = (1.0f / 60.0f) * sp8.z;
temp_r31->unk28.x = (1.0f / REFRESH_RATE) * sp8.x;
temp_r31->unk28.y = VERSION_NTSC ? 6.666667f : 8.0f;
temp_r31->unk28.z = (1.0f / REFRESH_RATE) * sp8.z;
temp_r31->unk8++;
}
temp_r29 = temp_r25 = 0;
if (temp_r31->unk1C.y <= -15.000001f) {
temp_r29 = 1;
}
temp_r31->unk28.y += -0.27222225f;
temp_r31->unk28.y += VERSION_NTSC ? -0.27222225f : -0.392f;
VECAdd(&temp_r31->unk1C, &temp_r31->unk28, &temp_r31->unk1C);
if (temp_r31->unk1C.y <= -15.000001f) {
temp_r25 = 1;
@ -689,8 +690,8 @@ void fn_1_8C14(s32 arg0, Vec *arg1, float arg2)
temp_r31 = lbl_1_bss_7480;
for (temp_r30 = 0; temp_r30 < 32; temp_r30++, temp_r31++) {
if (!temp_r31->unk0) {
temp_r31->unk4 = 30;
temp_r31->unk0 = (60.0f * (3.0f * arg2)) + 150.0f;
temp_r31->unk4 = 0.5 * REFRESH_RATE;
temp_r31->unk0 = (REFRESH_RATE * (3.0f * arg2)) + 2.5f * REFRESH_RATE;
temp_r31->unk8 = arg0;
temp_r31->unk14 = *arg1;
temp_r31->unkC = 0;

View file

@ -11,6 +11,7 @@
#include "game/gamework_data.h"
#include "game/minigame_seq.h"
#include "math.h"
#include "version.h"
typedef struct camera_view {
float zoom;
@ -127,9 +128,9 @@ void fn_1_558(omObjData *object)
switch (fn_1_1D54()) {
case 0:
lbl_1_bss_3C2 = 60;
lbl_1_bss_3C0 = 60;
lbl_1_bss_3C0 = REFRESH_RATE;
fn_1_1D64(1);
lbl_1_bss_10[1] = 60;
lbl_1_bss_10[1] = REFRESH_RATE;
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
HuAudFXPlay(1736);
break;
@ -160,7 +161,7 @@ void fn_1_558(omObjData *object)
if (--lbl_1_bss_3C0 == 0) {
lbl_1_bss_3C2--;
MGSeqParamSet(lbl_1_bss_3B8, 1, lbl_1_bss_3C2);
lbl_1_bss_3C0 = 60;
lbl_1_bss_3C0 = REFRESH_RATE;
}
if (!lbl_1_bss_3C2 || lbl_1_bss_3A8 == 1) {
fn_1_1D64(3);
@ -178,7 +179,7 @@ void fn_1_558(omObjData *object)
}
if (MGSeqStatGet(lbl_1_bss_3BC) == 0) {
fn_1_1D64(4);
lbl_1_bss_10[1] = 60;
lbl_1_bss_10[1] = REFRESH_RATE;
}
break;
@ -215,7 +216,7 @@ void fn_1_558(omObjData *object)
break;
}
fn_1_1D64(5);
lbl_1_bss_10[1] = 210;
lbl_1_bss_10[1] = 3.5 * REFRESH_RATE;
}
break;

View file

@ -14,6 +14,7 @@
#include "game/gamework_data.h"
#include "game/minigame_seq.h"
#include "math.h"
#include "version.h"
typedef struct bss_2468_data {
Vec unk0;
@ -531,8 +532,8 @@ void fn_1_3CC8(ModelData *model, Mtx mtx)
if (temp_r31->unkC == 0) {
continue;
}
temp_f31 = (0.2f + cosd((90.0f * temp_r31->unkC) / 60.0f)) * 128.0f;
lbl_1_data_174.a = 255.0f * sind((90.0f * temp_r31->unkC) / 60.0f);
temp_f31 = (0.2f + cosd((90.0f * temp_r31->unkC) / REFRESH_RATE)) * 128.0f;
lbl_1_data_174.a = 255.0f * sind((90.0f * temp_r31->unkC) / REFRESH_RATE);
GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_174);
MTXScale(sp14, 0.5f * temp_f31, 0.5f * temp_f31, 1.0f);
mtxTransCat(sp14, (200.0f * (600.0f + temp_r31->unk0.x)) / 1200.0f, (200.0f * (600.0f + temp_r31->unk0.z)) / 1200.0f, 0);
@ -550,7 +551,7 @@ void fn_1_43AC(Vec *arg0)
temp_r31->unk0.x = arg0->x;
temp_r31->unk0.y = arg0->y;
temp_r31->unk0.z = arg0->z;
temp_r31->unkC = 60;
temp_r31->unkC = REFRESH_RATE;
lbl_1_bss_2464 = (lbl_1_bss_2464 + 1) % 64;
return;
}

View file

@ -13,6 +13,7 @@
#include "game/gamework_data.h"
#include "game/minigame_seq.h"
#include "math.h"
#include "version.h"
typedef struct data_224_struct {
@ -54,15 +55,15 @@ Vec lbl_1_data_1E4[2] = { { -550, 0, 550 }, { 550, 0, 550 } };
u32 lbl_1_data_1FC[10] = { 0, 2, 23, 133, 0x41000E, 0x410016, 0x41001E, 0x410026, 0x41002E, 0x410036 };
Data224Struct lbl_1_data_224[9] = {
{ 0, 4, 12, 0, HU3D_MOTATTR_LOOP },
{ 1, 6, 6, 0, HU3D_MOTATTR_LOOP },
{ 0, 8, 6, 0, HU3D_MOTATTR_NONE },
{ 0, 5, 6, 0, HU3D_MOTATTR_LOOP },
{ 1, 5, 6, 0, HU3D_MOTATTR_LOOP },
{ 0, 8, 6, 30, HU3D_MOTATTR_NONE },
{ 0, 9, 6, 0, HU3D_MOTATTR_NONE },
{ 2, 0, 12, 0, HU3D_MOTATTR_NONE },
{ 3, 0, 12, 0, HU3D_MOTATTR_NONE },
{ 0, 4, 0.2f * REFRESH_RATE, 0, HU3D_MOTATTR_LOOP },
{ 1, 6, 0.1f * REFRESH_RATE, 0, HU3D_MOTATTR_LOOP },
{ 0, 8, 0.1f * REFRESH_RATE, 0, HU3D_MOTATTR_NONE },
{ 0, 5, 0.1f * REFRESH_RATE, 0, HU3D_MOTATTR_LOOP },
{ 1, 5, 0.1f * REFRESH_RATE, 0, HU3D_MOTATTR_LOOP },
{ 0, 8, 0.1f * REFRESH_RATE, 0.5f * REFRESH_RATE, HU3D_MOTATTR_NONE },
{ 0, 9, 0.1f * REFRESH_RATE, 0, HU3D_MOTATTR_NONE },
{ 2, 0, 0.2f * REFRESH_RATE, 0, HU3D_MOTATTR_NONE },
{ 3, 0, 0.2f * REFRESH_RATE, 0, HU3D_MOTATTR_NONE },
};
void fn_1_4988(omObjData *object);
@ -254,8 +255,8 @@ void fn_1_4E50(omObjData *object)
if (temp_r31->unk1C > spC[temp_r31->unk24]) {
temp_r31->unk24 = 1;
temp_r31->unk44 = temp_r31->unk20;
temp_r31->unk94.x += 225.0f * (temp_r31->unk1C * sind(temp_r31->unk20)) * (1.0f / 60.0f);
temp_r31->unk94.z += 225.0f * (temp_r31->unk1C * cosd(temp_r31->unk20)) * (1.0f / 60.0f);
temp_r31->unk94.x += 225.0f * (temp_r31->unk1C * sind(temp_r31->unk20)) * (1.0f / REFRESH_RATE);
temp_r31->unk94.z += 225.0f * (temp_r31->unk1C * cosd(temp_r31->unk20)) * (1.0f / REFRESH_RATE);
temp_r31->unk48 = 0.2f;
temp_r31->unk4C = 0;
if (CharModelMotionShiftIDGet(temp_r31->unk8) < 0) {
@ -296,7 +297,7 @@ void fn_1_4E50(omObjData *object)
temp_r31->unk3A = 0;
temp_r31->unk3C++;
}
else if (temp_r31->unk3C == 1 && temp_r31->unk3A > 30.0f) {
else if (temp_r31->unk3C == 1 && temp_r31->unk3A > (0.5f * REFRESH_RATE)) {
if (temp_r31->unk54 < 3) {
temp_r28 = fn_1_8884(&temp_r31->unk88, 20, 150, temp_r31->unk40, -30, 30, 1, object->work[0]);
if (temp_r28 >= 0) {
@ -352,7 +353,7 @@ void fn_1_4E50(omObjData *object)
}
}
else {
if (temp_r31->unk3A > 30.0f) {
if (temp_r31->unk3A > (0.5f * REFRESH_RATE)) {
temp_r31->unk38 = 0;
}
}
@ -376,7 +377,7 @@ void fn_1_4E50(omObjData *object)
temp_r31->unk3C++;
}
if (temp_r31->unk3E) {
if (temp_r31->unk3A > 36.0f) {
if (temp_r31->unk3A > (VERSION_NTSC ? 36.0f : 30.000002f)) {
for (temp_r29 = 0; temp_r29 < temp_r31->unk54; temp_r29++) {
fn_1_8B58(temp_r31->unk58[temp_r29]);
}
@ -384,7 +385,7 @@ void fn_1_4E50(omObjData *object)
temp_r31->unk3E = 0;
}
}
if (temp_r31->unk3A > 60.0f) {
if (temp_r31->unk3A > 1.0f * REFRESH_RATE) {
temp_r31->unk38 = 0;
}
break;
@ -514,7 +515,7 @@ void fn_1_5C98(omObjData *object)
}
else {
temp_r31->unk80++;
if (temp_r30 || temp_r31->unk80 > 60.0f) {
if (temp_r30 || temp_r31->unk80 > (1.0f * REFRESH_RATE)) {
if (temp_r30 || frandmod(1000) < 10) {
temp_r31->unk70 = fn_1_8FA0(&temp_r31->unk88);
fn_1_8E2C(temp_r31->unk70, &temp_r31->unk74);
@ -532,7 +533,7 @@ void fn_1_5C98(omObjData *object)
case 2:
temp_r31->unk80++;
if (temp_r31->unk80 < 120 * temp_r31->unk64) {
if (temp_r31->unk80 < (2 * REFRESH_RATE) * temp_r31->unk64) {
temp_r31->unk1C = 0.4f;
temp_r31->unk20 = temp_r31->unk40 + 10.0f;
temp_r31->unk14 = temp_r31->unk18 = PAD_BUTTON_A;

View file

@ -14,6 +14,7 @@
#include "game/wipe.h"
#include "ext_math.h"
#include "version.h"
typedef struct {
/* 0x00 */ omObjData *unk00;
@ -650,7 +651,7 @@ void fn_1_27C8(s32 arg0)
{
if (lbl_1_bss_10 == 0) {
lbl_1_bss_10 = 1;
lbl_1_bss_C = arg0 * 60;
lbl_1_bss_C = arg0 * REFRESH_RATE;
}
}
@ -679,14 +680,14 @@ void fn_1_285C(omObjData *arg0)
switch (lbl_1_bss_10) {
case 1:
if (lbl_1_data_16C == -1) {
lbl_1_data_16C = MGSeqCreate(1, lbl_1_bss_C / 60, -1, -1);
lbl_1_data_16C = MGSeqCreate(1, lbl_1_bss_C / REFRESH_RATE, -1, -1);
}
lbl_1_bss_10 = 2;
break;
case 2:
lbl_1_bss_C--;
if (lbl_1_data_16C != -1) {
MGSeqParamSet(lbl_1_data_16C, 1, (lbl_1_bss_C + 59) / 60);
MGSeqParamSet(lbl_1_data_16C, 1, (lbl_1_bss_C + REFRESH_RATE - 1) / REFRESH_RATE);
}
if (lbl_1_bss_C <= 0) {
lbl_1_bss_C = 30;
@ -1789,9 +1790,9 @@ void fn_1_77F0(void)
HuAudFXPlay(0x6D2);
var_r30->unk00->work[3] = 3;
fn_1_2744(var_r31, MAKE_MESSID(29, 3));
fn_1_24D0(var_r31, 60);
fn_1_24D0(var_r31, REFRESH_RATE);
lbl_1_bss_4 = 2;
fn_1_24D0(var_r31, 60);
fn_1_24D0(var_r31, REFRESH_RATE);
var_r30->unk00->work[3] = 2;
fn_1_2468(var_r31);
lbl_1_bss_4 = 1;
@ -1901,17 +1902,17 @@ void fn_1_A5A8(void)
var_r28->unk00->work[3] = 2;
var_r28->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 21));
fn_1_24D0(var_r31, 180);
fn_1_24D0(var_r31, 3 * REFRESH_RATE);
var_r28->unk00->work[3] = 2;
sp68->unk00->work[0] = 10;
fn_1_2744(var_r31, MAKE_MESSID(29, 22));
fn_1_24D0(var_r31, 60);
fn_1_24D0(var_r31, REFRESH_RATE);
var_r28->unk00->work[3] = 4;
fn_1_2A90(var_r31);
fn_1_2D94(var_r31);
fn_1_3020();
var_r28->unk00->work[3] = 2;
HuPrcSleep(120);
HuPrcSleep(2 * REFRESH_RATE);
var_r28->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 37));
fn_1_24D0(var_r31, 0);
@ -2153,7 +2154,7 @@ s32 fn_1_C090(s32 arg0, s32 arg1, s32 arg2)
if (arg2 % 27 == 2 && temp_r31->unk24 == 0) {
switch (temp_r31->unk10) {
case 0:
if (arg2 <= 120) {
if (arg2 <= 2 * REFRESH_RATE) {
var_r29 = 0;
}
else if (var_r28->unk04 <= 3) {
@ -2164,7 +2165,7 @@ s32 fn_1_C090(s32 arg0, s32 arg1, s32 arg2)
}
break;
case 1:
if (arg2 <= 120) {
if (arg2 <= 2 * REFRESH_RATE) {
var_r29 = 0;
}
else if (var_r28->unk04 <= 6) {
@ -2175,7 +2176,7 @@ s32 fn_1_C090(s32 arg0, s32 arg1, s32 arg2)
}
break;
case 2:
if (arg2 <= 60) {
if (arg2 <= REFRESH_RATE) {
var_r29 = 0;
}
else if (var_r28->unk04 <= 9) {
@ -2186,7 +2187,7 @@ s32 fn_1_C090(s32 arg0, s32 arg1, s32 arg2)
}
break;
case 3:
if (arg2 <= 60) {
if (arg2 <= REFRESH_RATE) {
var_r29 = 0;
}
else if (var_r28->unk04 <= 12) {
@ -2339,14 +2340,14 @@ void fn_1_C90C(void)
s32 sp3C[] = { MAKE_MESSID(29, 31), MAKE_MESSID(29, 32), MAKE_MESSID(29, 33) };
var_r28 = rand8() % 3;
HuPrcSleep(70);
HuPrcSleep(REFRESH_RATE + 10);
fn_1_26D4(sp28, sp3C[var_r28]);
var_r31 = fn_1_2230((580.0f - sp28[0]) / 2, 60.0f, sp28[0], sp28[1], 2);
var_r27->unk00->work[2] = 1;
HuAudFXPlay(0x6D2);
HuAudFXPlay(0x6E3);
fn_1_2744(var_r31, sp3C[var_r28]);
fn_1_24D0(var_r31, 120);
fn_1_24D0(var_r31, 2 * REFRESH_RATE);
fn_1_2468(var_r31);
lbl_1_bss_4 = 1;
HuPrcEnd();
@ -2367,7 +2368,7 @@ void fn_1_CCA4(void)
HuAudFXPlay(0x6D9);
HuAudSeqAllFadeOut(100);
fn_1_2744(var_r31, sp24[var_r28]);
fn_1_24D0(var_r31, 120);
fn_1_24D0(var_r31, 2 * REFRESH_RATE);
fn_1_2468(var_r31);
lbl_1_bss_4 = 1;
HuPrcEnd();
@ -2385,7 +2386,7 @@ void fn_1_D018(void)
HuAudFXPlay(0x6D9);
HuAudSeqAllFadeOut(100);
fn_1_2744(var_r31, MAKE_MESSID(29, 36));
fn_1_24D0(var_r31, 120);
fn_1_24D0(var_r31, 2 * REFRESH_RATE);
fn_1_2468(var_r31);
lbl_1_bss_4 = 1;
HuPrcEnd();
@ -2645,7 +2646,7 @@ s32 fn_1_DEB0(void)
Hu3DModelScaleSet(var_r29->unk00->model[temp_r31->unk1C + 1], 1.0f, 1.0f, 1.0f);
var_r30->unk0C = temp_r31->unk20 = 1;
}
if (temp_r31->unk20 == 1 && temp_r31->unk24++ >= 60) {
if (temp_r31->unk20 == 1 && temp_r31->unk24++ >= REFRESH_RATE) {
temp_r26 = &Hu3DData[var_r29->unk00->model[temp_r31->unk1C + 1]];
var_r28->unk00->work[1] = 3;
temp_r26->pos.y = temp_r27->pos.y;

View file

@ -18,6 +18,7 @@
#include "dolphin.h"
#include "math.h"
#include "string.h"
#include "version.h"
typedef struct {
/* 0x000 */ omObjData *unk00;
@ -524,7 +525,7 @@ void fn_1_1184(s32 arg0)
{
if (lbl_1_bss_8 == 0) {
lbl_1_bss_8 = 1;
lbl_1_bss_4 = arg0 * 60;
lbl_1_bss_4 = arg0 * REFRESH_RATE;
}
}
@ -553,14 +554,14 @@ void fn_1_1218(omObjData *arg0)
switch (lbl_1_bss_8) {
case 1:
if (lbl_1_data_12C == -1) {
lbl_1_data_12C = MGSeqCreate(1, lbl_1_bss_4 / 60, -1, -1);
lbl_1_data_12C = MGSeqCreate(1, lbl_1_bss_4 / REFRESH_RATE, -1, -1);
}
lbl_1_bss_8 = 2;
break;
case 2:
lbl_1_bss_4--;
if (lbl_1_data_12C != -1) {
MGSeqParamSet(lbl_1_data_12C, 1, (lbl_1_bss_4 + 59) / 60);
MGSeqParamSet(lbl_1_data_12C, 1, (lbl_1_bss_4 + REFRESH_RATE - 1) / REFRESH_RATE);
}
if (lbl_1_bss_4 <= 0) {
lbl_1_bss_4 = 30;
@ -1019,7 +1020,7 @@ void fn_1_2BBC(omObjData *arg0)
fn_1_230(1, 10, 4.0f);
}
if (temp_r30->unk04 == 0) {
if (temp_r30->unk14++ >= 300) {
if (temp_r30->unk14++ >= 5 * REFRESH_RATE) {
temp_r30->unk14 = 0;
if (rand8() % 2 != 0) {
fn_1_2BAC(1);
@ -2272,9 +2273,9 @@ void fn_1_9320(void)
HuAudFXPlay(0x6D2);
fn_1_4BAC(2, 10, 0, 1);
fn_1_2A10(var_r31, MAKE_MESSID(29, 4));
fn_1_280C(var_r31, 60);
fn_1_280C(var_r31, REFRESH_RATE);
fn_1_2BAC(3);
fn_1_280C(var_r31, 60);
fn_1_280C(var_r31, REFRESH_RATE);
fn_1_4BAC(0, 30, 1, 1);
fn_1_27A4(var_r31);
lbl_1_bss_C = 1;
@ -2726,9 +2727,9 @@ void fn_1_BE80(void)
HuAudFXPlay(0x6D2);
fn_1_4928(1);
fn_1_2A10(var_r30, sp1C[temp_r27]);
fn_1_280C(var_r30, 60);
fn_1_280C(var_r30, REFRESH_RATE);
lbl_1_bss_C = 1;
fn_1_280C(var_r30, 60);
fn_1_280C(var_r30, REFRESH_RATE);
fn_1_27A4(var_r30);
HuPrcEnd();
}
@ -2747,9 +2748,9 @@ void fn_1_C248(void)
HuAudFXPlay(0x6D2);
fn_1_4928(1);
fn_1_2A10(var_r31, sp1C[temp_r27]);
fn_1_280C(var_r31, 60);
fn_1_280C(var_r31, REFRESH_RATE);
lbl_1_bss_C = 1;
fn_1_280C(var_r31, 60);
fn_1_280C(var_r31, REFRESH_RATE);
fn_1_27A4(var_r31);
HuPrcEnd();
}
@ -2814,7 +2815,7 @@ void fn_1_D03C(void)
var_r31 = fn_1_20F8((580.0f - sp10[0]) / 2, 100.0f, sp10[0], sp10[1], 2);
HuAudFXPlay(0x6D6);
fn_1_2A10(var_r31, sp18[temp_r28]);
fn_1_280C(var_r31, 120);
fn_1_280C(var_r31, 2 * REFRESH_RATE);
fn_1_27A4(var_r31);
HuPrcEnd();
}
@ -2830,7 +2831,7 @@ void fn_1_D3C0(void)
HuAudFXPlay(0x6D6);
fn_1_4BAC(1, 10, 0, 1);
fn_1_2A10(var_r31, MAKE_MESSID(29, 92));
fn_1_280C(var_r31, 120);
fn_1_280C(var_r31, 2 * REFRESH_RATE);
fn_1_4BAC(0, 30, 1, 1);
fn_1_27A4(var_r31);
lbl_1_bss_C = 1;

View file

@ -21,6 +21,7 @@
#include "ext_math.h"
#include "REL/m439data.h"
#include "version.h"
typedef struct camera_params {
float zoom;
@ -28,34 +29,12 @@ typedef struct camera_params {
Vec rot;
} CameraViewParams;
CameraViewParams lbl_1_data_741C[] = { {
4775,
-2800,
0,
-7700,
343,
20,
0,
},
{
5000,
0,
0,
0,
290,
0,
0,
},
{
2800,
0,
0,
-7600,
347,
0,
0,
},
{ 2800, 0, 0, -7600, 290, 0, 0 } };
CameraViewParams lbl_1_data_741C[] = {
{ VERSION_NTSC ? 4775.0f : 4500.0f, -2800.0f, 0.0f, -7700.0f, 343.0f, 20.0f, 0.0f },
{ 5000.0f, 0.f, 0.0f, 0.0f, 290.0f, 0.0f, 0.0f },
{ 2800.0f, 0.f, 0.0f, -7600.0f, 347.0f, 0.0f, 0.0f },
{ 2800.0f, 0.f, 0.0f, -7600.0f, 290.0f, 0.0f, 0.0f },
};
typedef struct struct_data_748C {
s32 unk0;
@ -162,9 +141,9 @@ void fn_1_408(omObjData *object);
void fn_1_384(omObjData *object)
{
fn_1_364(0);
lbl_1_bss_14C = 60;
lbl_1_bss_14C = REFRESH_RATE;
lbl_1_bss_12E = 60;
lbl_1_bss_12C = 60;
lbl_1_bss_12C = REFRESH_RATE;
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
object->func = fn_1_408;
}
@ -181,12 +160,12 @@ void fn_1_408(omObjData *object)
{
switch (fn_1_374()) {
case 0:
if (lbl_1_bss_14C == 60) {
if (lbl_1_bss_14C == REFRESH_RATE) {
HuAudFXPlay(1797);
}
if (--lbl_1_bss_14C == 0) {
fn_1_364(1);
lbl_1_bss_14C = 120;
lbl_1_bss_14C = 2 * REFRESH_RATE;
}
break;
@ -227,7 +206,7 @@ void fn_1_408(omObjData *object)
if (--lbl_1_bss_12C == 0) {
lbl_1_bss_12E--;
MGSeqParamSet(lbl_1_bss_30, 1, lbl_1_bss_12E);
lbl_1_bss_12C = 60;
lbl_1_bss_12C = REFRESH_RATE;
}
if (lbl_1_bss_130 >= 3 || lbl_1_bss_12E == 0) {
fn_1_364(6);
@ -243,7 +222,7 @@ void fn_1_408(omObjData *object)
}
if (!MGSeqStatGet(lbl_1_bss_32)) {
fn_1_364(7);
lbl_1_bss_14C = 60;
lbl_1_bss_14C = REFRESH_RATE;
}
break;
@ -257,7 +236,7 @@ void fn_1_408(omObjData *object)
else {
HuAudSStreamPlay(4);
}
lbl_1_bss_14C = 210;
lbl_1_bss_14C = 3.5f * REFRESH_RATE;
}
break;
@ -823,7 +802,7 @@ void fn_1_2C84(omObjData *object)
if (fn_1_374() >= 6 && !temp_r31->unk0_field2) {
temp_r31->unk0_field7 = 1;
temp_r31->unk12 = 2;
temp_r31->unk3E = 120;
temp_r31->unk3E = 2 * REFRESH_RATE;
object->func = fn_1_3C1C;
return;
}
@ -852,18 +831,18 @@ void fn_1_2C84(omObjData *object)
if (temp_f26 > 72) {
temp_f26 = 72;
}
temp_f23 = (10.0f * temp_f26) / 72.0f;
temp_f23 = ((600.0f / REFRESH_RATE) * temp_f26) / 72.0f;
temp_r31->unk20.x = temp_f31 * temp_f23;
temp_r31->unk20.z = temp_f30 * temp_f23;
temp_r31->unk14.y = temp_f23;
object->rot.y = fn_1_1024(object->rot.y, atan2d(temp_r31->unk20.x, temp_r31->unk20.z), 0.2f);
if (temp_r31->unk14.y < 7.5f) {
if (temp_r31->unk14.y < (450.0f / REFRESH_RATE)) {
temp_r28 = 1;
temp_f25 = temp_r31->unk14.y / 7.5f;
temp_f25 = temp_r31->unk14.y / (450.0f / REFRESH_RATE);
}
else {
temp_r28 = 2;
temp_f25 = temp_r31->unk14.y / 10.0f;
temp_f25 = temp_r31->unk14.y / (600.0f / REFRESH_RATE);
}
}
else {
@ -900,7 +879,7 @@ void fn_1_2C84(omObjData *object)
temp_r31->unk50.z = object->trans.z;
temp_r31->unk68.y = -2000;
temp_r31->unk12 = 2;
temp_r31->unk3E = 12;
temp_r31->unk3E = 0.2f * REFRESH_RATE;
temp_r23 = Hu3DData[object->model[2]].unk_120;
temp_r23->unk_00 = 0;
VECSubtract(&temp_r31->unk5C, &object->trans, &temp_r23->unk_04);
@ -933,7 +912,7 @@ void fn_1_2C84(omObjData *object)
temp_r31->unk0_field4 = 01;
if (temp_r29 > 1 && temp_r29 < 6) {
temp_r31->unk12++;
temp_r31->unk3E = 30;
temp_r31->unk3E = 0.5f * REFRESH_RATE;
temp_r31->unk48 = CenterM[temp_r31->unk2].z;
temp_r31->unk4C = object->trans.z - 350.0f;
temp_r31->unk40 = lbl_1_data_75CC[temp_r31->unk46 - 1];
@ -946,7 +925,7 @@ void fn_1_2C84(omObjData *object)
if (--temp_r31->unk3E == 0) {
temp_r31->unk12 = 0;
}
CenterM[temp_r31->unk2].z = temp_r31->unk48 + ((temp_r31->unk4C - temp_r31->unk48) * cosd((temp_r31->unk3E * 90.0f) / 30.0f));
CenterM[temp_r31->unk2].z = temp_r31->unk48 + ((temp_r31->unk4C - temp_r31->unk48) * cosd((temp_r31->unk3E * 90.0f) / (0.5f * REFRESH_RATE)));
temp_r28 = 0;
temp_f25 = 1;
break;
@ -957,7 +936,7 @@ void fn_1_2C84(omObjData *object)
temp_r24 = temp_r27->data;
switch (temp_r24->unk4) {
case 1:
temp_f28 = 1.0f - (temp_r24->unk24 / 90.0f);
temp_f28 = 1.0f - (temp_r24->unk24 / (1.5f * REFRESH_RATE));
object->trans.x = temp_r31->unk50.x + (temp_f28 * (temp_r31->unk5C.x - temp_r31->unk50.x));
object->trans.y = 100 + (-2000.0f * (temp_f28 - 0.1f)) * (temp_f28 - 0.1f);
object->trans.z = temp_r31->unk50.z + (temp_f28 * (temp_r31->unk5C.z - temp_r31->unk50.z));
@ -978,7 +957,7 @@ void fn_1_2C84(omObjData *object)
if (temp_r31->unk3E) {
temp_r31->unk3E--;
}
temp_f28 = sind((temp_r31->unk3E / 30.0f) * 90.0f);
temp_f28 = sind((temp_r31->unk3E / (0.5f * REFRESH_RATE)) * 90.0f);
object->trans.x = temp_r31->unk74.x - (temp_f28 * (temp_r31->unk74.x - temp_r31->unk68.x));
object->trans.y = temp_r31->unk74.y - (temp_f28 * (temp_r31->unk74.y - temp_r31->unk68.y));
object->trans.z = temp_r31->unk74.z - (temp_f28 * (temp_r31->unk74.z - temp_r31->unk68.z));
@ -1032,7 +1011,7 @@ void fn_1_3C1C(omObjData *object)
switch (temp_r31->unk12) {
case 0:
if (object->trans.z > -7600.0f) {
object->trans.z -= 3.75f;
object->trans.z -= 225.0f / REFRESH_RATE;
}
else {
temp_r31->unk12++;
@ -1113,11 +1092,11 @@ void fn_1_4528(ModelData *model, ParticleData *particle, Mtx matrix)
temp_r31->unk34.x = 100.0f * (0.2f * sind(temp_f31));
temp_r31->unk34.y = 0;
temp_r31->unk34.z = 100.0f * (0.2f * cosd(temp_f31));
temp_f30 = ((frand8() * 2.5f) / 256.0f) + (5.0f / 3.0f);
temp_f30 = ((frand8() * (150.0f / REFRESH_RATE)) / 256.0f) + (100.0f / REFRESH_RATE);
temp_f31 = temp_f29 + (30.0f * (((s32)frand() & 0x1FF) - 256.0f) / 256.0f);
temp_r31->unk08.x = temp_f30 * sind(temp_f31);
temp_r31->unk08.z = temp_f30 * cosd(temp_f31);
temp_r31->unk08.y = (frand8() * (50.0f / 3.0f)) / 256.0f;
temp_r31->unk08.y = (frand8() * (1000.0f / REFRESH_RATE)) / 256.0f;
temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = temp_r31->unk40.a = 255;
}
}
@ -1128,7 +1107,7 @@ void fn_1_4528(ModelData *model, ParticleData *particle, Mtx matrix)
temp_r28++;
}
else {
temp_r31->unk08.y += -0.50000006f;
temp_r31->unk08.y += VERSION_NTSC ? -0.50000006f : -0.6f; // -3.0f / REFRESH_RATE
temp_r31->unk34.x += temp_r31->unk08.x;
temp_r31->unk34.y += temp_r31->unk08.y;
temp_r31->unk34.z += temp_r31->unk08.z;
@ -1193,7 +1172,7 @@ void fn_1_4AA8(omObjData *object)
}
Hu3DMotionSet(object->model[0], object->motion[0]);
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP);
object->trans.y = 500;
object->trans.y = 500.0f;
object->scale.x = object->scale.y = object->scale.z = 0.25f;
if (work->unk2 == 0) {
object->trans.x = -1800;
@ -1202,7 +1181,7 @@ void fn_1_4AA8(omObjData *object)
object->rot.y = -90;
object->func = fn_1_4CC0;
Hu3DMotionSpeedSet(object->model[0], 2.0f);
work->unk24 = 60;
work->unk24 = REFRESH_RATE;
}
else {
object->func = fn_1_4F54;
@ -1218,11 +1197,11 @@ void fn_1_4CC0(omObjData *object)
Work4AA8 *work = object->data;
float pan;
Vec pos2D;
if (42.0f == work->unk24) {
if ((VERSION_NTSC ? 42.0f : 35.0f) == work->unk24) {
HuAudFXPlay(1795);
}
if (work->unk24 == 0) {
object->trans.x -= 25.0f;
object->trans.x -= 1500.0f / REFRESH_RATE;
}
else {
if (--work->unk24 == 0) {
@ -1273,7 +1252,7 @@ void fn_1_4F54(omObjData *object)
case 0:
if (object->work[3]) {
work->unk4++;
work->unk24 = work->unk26 = 90;
work->unk24 = work->unk26 = 1.5f * REFRESH_RATE;
temp_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0);
object->trans.x = work->unk28.x = temp_r29[work->unk2]->trans.x;
object->trans.y = work->unk28.y = 2000;
@ -1301,11 +1280,11 @@ void fn_1_4F54(omObjData *object)
if (--work->unk24 == 0) {
work->unk0 = 1;
work->unk4++;
work->unk24 = 90;
work->unk24 = 1.5f * REFRESH_RATE;
work->unk10 = (200.0f - object->trans.y) / work->unk24;
object->rot.x = 0;
}
if (60.0f == work->unk24) {
if (1.0f * REFRESH_RATE == work->unk24) {
HuAudFXPlay(1796);
}
break;
@ -1314,7 +1293,7 @@ void fn_1_4F54(omObjData *object)
object->trans.y += work->unk10;
if (--work->unk24 == 0) {
work->unk4++;
work->unk24 = work->unk26 = 48;
work->unk24 = work->unk26 = 0.8f * REFRESH_RATE;
work->unk28.x = object->trans.x;
work->unk28.y = object->trans.y;
work->unk28.z = object->trans.z;
@ -1350,7 +1329,7 @@ void fn_1_4F54(omObjData *object)
object->work[3] = 0;
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
}
if (work->unk24 == (int)(work->unk26 - 12.0f)) {
if (work->unk24 == (int)(work->unk26 - (0.2f * REFRESH_RATE))) {
work->unk0 = 0;
temp_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0);
temp_r28 = temp_r29[work->unk2]->data;
@ -1686,7 +1665,7 @@ void fn_1_6DEC(omObjData *object)
switch (object->work[0]) {
case 0:
if (fn_1_374() <= 3) {
CRotM[0].y -= 10.0f / 60.0f;
CRotM[0].y -= 10.0f / REFRESH_RATE;
}
if (fn_1_374() == 3) {
Hu3DCameraCreate(15);

View file

@ -14,6 +14,7 @@
#include "math.h"
#include "string.h"
#include "version.h"
// bss
omObjData *lbl_1_bss_6C;
@ -117,7 +118,7 @@ s32 fn_1_4A4(void)
var_r31 = &lbl_1_data_78[0];
var_r30 = 0;
lbl_1_bss_4++;
var_f31 = lbl_1_bss_4 / 120.0f;
var_f31 = lbl_1_bss_4 / (2 * REFRESH_RATE_F);
if (var_f31 > 1.0f) {
lbl_1_bss_4 = 0;
var_f31 = 1.0f;
@ -144,7 +145,7 @@ s32 fn_1_6C8(void)
var_r31 = &lbl_1_data_78[1];
var_r30 = 0;
lbl_1_bss_4++;
var_f31 = lbl_1_bss_4 / 120.0f;
var_f31 = lbl_1_bss_4 / (2 * REFRESH_RATE_F);
if (var_f31 > 1.0f) {
lbl_1_bss_4 = 0;
var_f31 = 1.0f;
@ -173,7 +174,7 @@ void fn_1_8F0(omObjData *arg0)
temp_r31->unk0 = 1;
temp_r31->unk4 = -1;
temp_r31->unk8 = -1;
temp_r31->unk6 = 0x12C;
temp_r31->unk6 = 5 * REFRESH_RATE;
temp_r31->unkA = 0;
temp_r31->unkC = -1;
@ -215,7 +216,7 @@ void fn_1_AE0(omObjData *arg0)
break;
case 3:
if (temp_r31->unk8 != -1) {
MGSeqParamSet(temp_r31->unk8, 1, ((temp_r31->unk6 + 0x3B) / 60));
MGSeqParamSet(temp_r31->unk8, 1, ((temp_r31->unk6 + REFRESH_RATE - 1) / REFRESH_RATE));
}
if ((temp_r31->unkC < 0) && ((MGSeqStatGet(temp_r31->unk4) & 0x10) != 0)) {
temp_r31->unkC = HuAudSeqPlay(0x49);
@ -226,7 +227,7 @@ void fn_1_AE0(omObjData *arg0)
temp_f31 = (((rand8() << 8) | rand8()) % 361);
Center.x = (lbl_1_data_78[1].center.x + (10.0 * sind(temp_f31)));
Center.y = (lbl_1_data_78[1].center.y + (10.0 * cosd(temp_f31)));
if (temp_r31->unkA > 0x28) {
if (temp_r31->unkA > (2 * REFRESH_RATE / 3)) {
temp_r31->unkA = 0;
return;
}
@ -265,7 +266,7 @@ u8 fn_1_E14(omObjData *arg0)
lbl_1_bss_6++;
break;
case 1:
if (++lbl_1_bss_8 > 0x1E) {
if (++lbl_1_bss_8 > (s16)(0.5f * REFRESH_RATE_F)) {
fn_1_F168();
lbl_1_bss_8 = 0;
lbl_1_bss_6++;
@ -275,7 +276,7 @@ u8 fn_1_E14(omObjData *arg0)
var_r31 = lbl_1_data_78;
var_r30 = 0;
lbl_1_bss_4++;
var_f31 = lbl_1_bss_4 / 120.0f;
var_f31 = lbl_1_bss_4 / (2 * REFRESH_RATE_F);
if (var_f31 > 1.0f) {
lbl_1_bss_4 = 0;
var_f31 = 1.0f;
@ -319,7 +320,7 @@ u8 fn_1_1138(omObjData *object)
temp_r30->unk40 = temp_r30->unk34;
}
lbl_1_bss_8++;
var_f30 = lbl_1_bss_8 / 30.0f;
var_f30 = lbl_1_bss_8 / (0.5f * REFRESH_RATE_F);
if (var_f30 >= 1.0f) {
var_f30 = 1.0f;
if (lbl_1_bss_B == 0) {
@ -331,7 +332,7 @@ u8 fn_1_1138(omObjData *object)
var_r31 = &lbl_1_data_78[1]; // could be fn_1_6C8
var_r28 = 0;
lbl_1_bss_4++;
var_f31 = lbl_1_bss_4 / 120.0f;
var_f31 = lbl_1_bss_4 / (2 * REFRESH_RATE_F);
if (var_f31 > 1.0f) {
lbl_1_bss_4 = 0;
var_f31 = 1.0f;
@ -357,7 +358,7 @@ u8 fn_1_1138(omObjData *object)
lbl_1_bss_8 = 0;
break;
case 2:
if (++lbl_1_bss_8 > 210.0f) {
if (++lbl_1_bss_8 > (3.5f * REFRESH_RATE)) {
lbl_1_bss_6 = 0;
return 1;
}
@ -392,7 +393,7 @@ void fn_1_1768(void)
temp_r31 = (unkStruct2 *)lbl_1_bss_6C->data;
if (temp_r31->unk8 == -1) {
temp_r31->unk6 = 0x12C;
temp_r31->unk6 = 5 * REFRESH_RATE;
temp_r31->unk8 = MGSeqCreate(1, 5, -1, -1);
}
}
@ -695,7 +696,7 @@ void fn_1_2B04(omObjData *object)
switch (lbl_1_data_E4[0]) {
case 0:
lbl_1_data_E8[0]++;
temp_f31 = lbl_1_data_E8[0] / 360.0f;
temp_f31 = lbl_1_data_E8[0] / (6 * REFRESH_RATE_F);
if (temp_f31 > 1.0f) {
temp_f31 = 1.0f;
Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF);
@ -752,15 +753,15 @@ void fn_1_2D28(omObjData *object)
break;
case 0x1:
lbl_1_data_F0[0]++;
var_f31 = lbl_1_data_F0[0] / 120.0f;
var_f31 = lbl_1_data_F0[0] / (2 * REFRESH_RATE_F);
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
lbl_1_data_F0[0] = 0;
lbl_1_data_F0[1] = 0xF;
lbl_1_data_F0[1] = REFRESH_RATE / 4;
lbl_1_data_EC[1] = (lbl_1_data_EC[0] + 1);
lbl_1_data_EC[0] = 0x63;
}
if (110.0f == lbl_1_data_F0[0]) {
if ((11 * REFRESH_RATE_F / 6) == lbl_1_data_F0[0]) {
HuAudFXPlay(0x70A);
}
var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0);
@ -771,11 +772,11 @@ void fn_1_2D28(omObjData *object)
HuAudFXPlay(0x713);
}
lbl_1_data_F0[0]++;
var_f31 = lbl_1_data_F0[0] / 60.0f;
var_f31 = lbl_1_data_F0[0] / REFRESH_RATE_F;
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
lbl_1_data_F0[0] = 0;
lbl_1_data_F0[1] = 0xF;
lbl_1_data_F0[1] = REFRESH_RATE / 4;
lbl_1_data_EC[1] = lbl_1_data_EC[0] + 1;
lbl_1_data_EC[0] = 0x63;
HuAudFXPlay(0x714);
@ -788,7 +789,7 @@ void fn_1_2D28(omObjData *object)
if (lbl_1_data_F0[0] == 0) {
HuAudFXPlay(0x711);
}
if (++lbl_1_data_F0[0] > 12.0) {
if (++lbl_1_data_F0[0] > (0.2 * REFRESH_RATE)) {
if (fn_1_4EA8(0x40) != 0) {
fn_1_4EEC(0x40, 0);
fn_1_F228();
@ -801,7 +802,7 @@ void fn_1_2D28(omObjData *object)
break;
case 0x4:
lbl_1_data_F0[0]++;
var_f31 = lbl_1_data_F0[0] / 360.0f;
var_f31 = lbl_1_data_F0[0] / (6 * REFRESH_RATE_F);
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF);
@ -1021,7 +1022,7 @@ void fn_1_46E0(omObjData *object)
break;
case 0x1:
lbl_1_data_108[0]++;
var_f31 = lbl_1_data_108[0] / 60.0f;
var_f31 = lbl_1_data_108[0] / REFRESH_RATE_F;
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
lbl_1_data_108[0] = 0;
@ -1083,7 +1084,7 @@ void fn_1_4B44(omObjData *object)
switch (lbl_1_data_104[0]) {
case 0:
lbl_1_data_108[0]++;
var_f31 = lbl_1_data_108[0] / 60.0f;
var_f31 = lbl_1_data_108[0] / REFRESH_RATE_F;
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
lbl_1_data_108[0] = 0;
@ -1094,7 +1095,7 @@ void fn_1_4B44(omObjData *object)
break;
case 1:
lbl_1_data_108[0]++;
var_f31 = (lbl_1_data_108[0] / 30.0f);
var_f31 = (lbl_1_data_108[0] / (0.5f * REFRESH_RATE_F));
if (var_f31 >= 1.0f) {
lbl_1_data_108[0] = 0;
lbl_1_data_104[0] = 0;
@ -1301,7 +1302,7 @@ void fn_1_57B4(unkStruct6 *arg0)
}
}
if ((arg0->unk2 & 4) != 0) {
if (++arg0->unk3E > 0x50) {
if (++arg0->unk3E > (4 * REFRESH_RATE / 3)) {
arg0->unk3C = ((arg0->unk3C - 10) < 0) ? 0 : arg0->unk3C - 10;
}
}

View file

@ -8,6 +8,12 @@
#include "game/pad.h"
#include "math.h"
#include "string.h"
#include "version.h"
#ifdef __MWERKS__
#include "game/audio.h"
#endif
// bss
@ -78,7 +84,7 @@ void fn_1_AEE4(omObjData *arg0)
temp_r31->unk30.x = temp_r31->unk30.y = temp_r31->unk30.z = 0.0f;
temp_r31->unk3C.y = 90.0f;
temp_r31->unkC = 0;
temp_r31->unkE = 0x78;
temp_r31->unkE = 2 * REFRESH_RATE_F;
temp_r31->unk10 = temp_r31->unk12 = temp_r31->unk14 = 0;
if (temp_r31->unk8 == 5) {
var_f31 = 350.0f;
@ -173,7 +179,7 @@ void fn_1_B3A4(omObjData *arg0)
var_r31->unk18.y = 0.0f;
var_r31->unk18.z = var_r31->unk24.z + (lbl_1_bss_88[var_r28].z - var_r31->unk24.z) * var_f31;
var_r31->unk14++;
var_f31 = var_r31->unk14 / 20.0f;
var_f31 = var_r31->unk14 / (REFRESH_RATE_F / 3.0f);
if (var_f31 >= 1.0f) {
var_f31 = 1.0f;
}
@ -181,7 +187,7 @@ void fn_1_B3A4(omObjData *arg0)
break;
case 7:
var_r31->unkC++;
var_f31 = (f32)var_r31->unkC / 40.0f;
var_f31 = (f32)var_r31->unkC / (2.0f * REFRESH_RATE_F / 3);
if (var_f31 >= 1.0f) {
var_f31 = 1.0f;
var_r31->unkC = 0;
@ -239,7 +245,7 @@ void fn_1_B884(omObjData *arg0, unkObjStruct *arg1)
switch (lbl_1_bss_74) {
case 0:
lbl_1_data_250 -= 0.5f;
lbl_1_data_250 -= (REFRESH_RATE_F / 120);
if (lbl_1_data_250 <= 45.0f) {
lbl_1_data_250 = 45.0f;
lbl_1_bss_74++;
@ -258,14 +264,14 @@ void fn_1_B884(omObjData *arg0, unkObjStruct *arg1)
return;
case 1:
arg1->unkE++;
var_f31 = arg1->unkE / 10.0f;
var_f31 = arg1->unkE / (REFRESH_RATE_F / 6.0f);
if (var_f31 >= 1.0f) {
var_f31 = 1.0f;
}
var_f30 = 225.0f;
arg1->unk30.y = arg1->unk68 + (var_f31 * (var_f30 - arg1->unk68));
arg1->unkC++;
var_f31 = arg1->unkC / 50.0f;
var_f31 = arg1->unkC / (5.0f * REFRESH_RATE_F / 6.0f);
if (var_f31 >= 1.0f) {
var_f31 = 1.0f;
arg1->unkC = arg1->unkE = 0;
@ -294,7 +300,7 @@ void fn_1_B884(omObjData *arg0, unkObjStruct *arg1)
}
break;
case 2:
lbl_1_data_250++;
lbl_1_data_250 += REFRESH_RATE_F / 60.0f;
if (lbl_1_data_250 >= lbl_1_data_0[arg1->unk60]) {
lbl_1_data_250 = lbl_1_data_0[arg1->unk60];
lbl_1_bss_74++;
@ -309,7 +315,7 @@ void fn_1_B884(omObjData *arg0, unkObjStruct *arg1)
var_f30 += 360.0f;
}
arg1->unkC++;
var_f31 = arg1->unkC / 10.0f;
var_f31 = arg1->unkC / (REFRESH_RATE_F / 6.0f);
if (var_f31 < 1.0f) {
arg1->unk30.y = arg1->unk68 + (var_f31 * (var_f30 - arg1->unk68));
}
@ -320,7 +326,7 @@ void fn_1_B884(omObjData *arg0, unkObjStruct *arg1)
return;
case 3:
arg1->unkE++;
var_f31 = arg1->unkE / 10.0f;
var_f31 = arg1->unkE / (REFRESH_RATE_F / 6.0f);
if (var_f31 >= 1.0f) {
var_f31 = 1.0f;
arg1->unkC = arg1->unkE = 0;
@ -332,7 +338,7 @@ void fn_1_B884(omObjData *arg0, unkObjStruct *arg1)
arg1->unk30.y = fn_1_927C(arg1->unk6C, var_f30, var_f31);
return;
case 4:
if (++arg1->unkC > 15) {
if (++arg1->unkC > (REFRESH_RATE / 4)) {
lbl_1_bss_74++;
}
break;
@ -443,7 +449,7 @@ void fn_1_C1D4(omObjData *arg0, unkObjStruct *arg1)
if (var_f30 < 5.0f) {
if (arg1->unk5A != 0) {
arg1->unk56++;
var_f31 = arg1->unk56 / 40.0f;
var_f31 = arg1->unk56 / (2.0f * REFRESH_RATE_F / 3.0f);
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
arg1->unk5A = 0;
@ -523,7 +529,7 @@ void fn_1_C944(omObjData *arg0, unkObjStruct *arg1)
}
}
if ((arg1->unk48 & 1) != 0) {
arg1->unk68 -= 1.0f;
arg1->unk68 -= REFRESH_RATE_F / 60.0f;
if ((var_r30 != -1) && (lbl_1_data_0[var_r30] > arg1->unk68)) {
arg1->unk68 = lbl_1_data_0[var_r30];
arg1->unk4A = var_r30;
@ -531,7 +537,7 @@ void fn_1_C944(omObjData *arg0, unkObjStruct *arg1)
}
}
else if ((arg1->unk48 & 2) != 0) {
arg1->unk68++;
arg1->unk68 += REFRESH_RATE_F / 60.0f;
if ((var_r30 != -1) && (lbl_1_data_0[var_r30] < arg1->unk68)) {
arg1->unk68 = lbl_1_data_0[var_r30];
arg1->unk4A = var_r30;
@ -659,7 +665,7 @@ void fn_1_D24C(unkObjStruct *arg0, f32 arg1, f32 arg2)
f32 var_f30;
f32 var_f31;
var_f28 = 10.0f;
var_f28 = REFRESH_RATE_F / 6.0f;
arg0->unk6C = arg1;
arg0->unk70 = arg2;
var_f31 = ABS(arg1 - arg2);
@ -702,7 +708,7 @@ void fn_1_D34C(omObjData *arg0, unkObjStruct *arg1)
arg1->unk6C = 0.0f;
arg1->unk48 = 0;
lbl_1_data_14[arg1->unk4A] = 0;
if (fn_1_17CC() < 270.0f) {
if (fn_1_17CC() < (4.5f * REFRESH_RATE)) {
fn_1_1708();
}
fn_1_F4D4(arg1, 15, 4);
@ -793,7 +799,7 @@ void fn_1_D7F8(omObjData *arg0, unkObjStruct *arg1)
}
break;
case 1:
if (++arg1->unkC > 0xA) {
if (++arg1->unkC > (REFRESH_RATE / 6)) {
arg1->unkC = 0;
Hu3DMotionSpeedSet(arg0->model[0], 2.0f);
if ((arg1->unk6C - arg1->unk68) > 0.0f) {
@ -808,7 +814,7 @@ void fn_1_D7F8(omObjData *arg0, unkObjStruct *arg1)
break;
case 2:
arg1->unkC++;
var_f31 = arg1->unkC / 30.0f;
var_f31 = arg1->unkC / (0.5f * REFRESH_RATE_F);
arg1->unk18.x = ((410.0f + (var_f31 * (arg1->unk5C - 410.0f))) * cosd(lbl_1_data_0[arg1->unk4A]));
arg1->unk18.z = ((410.0f + (var_f31 * (arg1->unk5C - 410.0f))) * sind(lbl_1_data_0[arg1->unk4A]));
if (var_f31 >= 1.0f) {
@ -825,7 +831,7 @@ void fn_1_D7F8(omObjData *arg0, unkObjStruct *arg1)
arg1->unk30.y = fn_1_927C(arg1->unk68, arg1->unk6C, var_f31);
break;
case 3:
if (++arg1->unkC > 0x3C) {
if (++arg1->unkC > (s32)REFRESH_RATE_F) {
if (fn_1_4E54(arg1->unk4A) == 0) {
fn_1_4EEC(7U, 3U);
}
@ -852,7 +858,7 @@ void fn_1_D7F8(omObjData *arg0, unkObjStruct *arg1)
break;
}
if (fn_1_17F4() >= 0) {
if (fn_1_17CC() < 270.0f) {
if (fn_1_17CC() < (4.5f * REFRESH_RATE)) {
fn_1_1708();
return;
}
@ -874,7 +880,11 @@ void fn_1_E034(omObjData *arg0, unkObjStruct *arg1)
switch (arg1->unk60) {
case 0:
lbl_1_bss_84 = lbl_1_data_0[arg1->unk4A];
#if VERSION_NTSC
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[4], 0.0f, 7.0f, HU3D_MOTATTR_LOOP);
#else
Hu3DMotionSet(arg0->model[0], arg0->motion[4]);
#endif
HuAudCharVoicePlay(arg1->unk8, 0x125);
arg1->unk60++;
break;
@ -898,7 +908,7 @@ void fn_1_E034(omObjData *arg0, unkObjStruct *arg1)
}
break;
case 2:
lbl_1_bss_84++;
lbl_1_bss_84 += REFRESH_RATE_F / 60.0f;
if (lbl_1_bss_84 >= 135.0f) {
lbl_1_bss_84 = 135.0f;
arg1->unkE = arg1->unk10 = 0;
@ -915,7 +925,7 @@ void fn_1_E034(omObjData *arg0, unkObjStruct *arg1)
var_f30 += 360.0f;
}
arg1->unkC++;
var_f31 = arg1->unkC / 10.0f;
var_f31 = arg1->unkC / (REFRESH_RATE_F / 6.0f);
if (var_f31 >= 1.0f) {
var_f31 = 1.0f;
}
@ -924,14 +934,14 @@ void fn_1_E034(omObjData *arg0, unkObjStruct *arg1)
break;
case 3:
arg1->unkE++;
var_f31 = arg1->unkE / 10.0f;
var_f31 = arg1->unkE / (REFRESH_RATE_F / 6.0f);
if (var_f31 >= 1.0f) {
var_f31 = 1.0f;
}
var_f30 = 315.0f;
arg1->unk30.y = arg1->unk6C + (var_f31 * (var_f30 - arg1->unk6C));
arg1->unk10++;
var_f31 = arg1->unk10 / 50.0f;
var_f31 = arg1->unk10 / (5.0f * REFRESH_RATE_F / 6.0f);
if (var_f31 >= 1.0f) {
var_f31 = 1.0f;
arg1->unkC = arg1->unkE = arg1->unk10 = 0;
@ -953,12 +963,12 @@ void fn_1_E034(omObjData *arg0, unkObjStruct *arg1)
}
break;
case 4:
lbl_1_bss_84 -= 0.5f;
lbl_1_bss_84 -= REFRESH_RATE_F / 120;
if (lbl_1_bss_84 <= 110.0f) {
lbl_1_bss_84 = 110.0f;
arg1->unk60 = 0;
arg1->unkC = 0;
arg1->unkE = (3 - lbl_1_data_1D8) * 0x1E;
arg1->unkE = (3 - lbl_1_data_1D8) * (s32)(0.5f * REFRESH_RATE_F);
arg1->unk14 = 0;
arg1->unk3C.y = 90.0f;
fn_1_F4D4(arg1, 15, 1);
@ -973,7 +983,7 @@ void fn_1_E034(omObjData *arg0, unkObjStruct *arg1)
var_f30 += 360.0f;
}
arg1->unk10++;
var_f31 = arg1->unk10 / 10.0f;
var_f31 = arg1->unk10 / (REFRESH_RATE_F / 6.0f);
if (var_f31 >= 1.0f) {
var_f31 = 1.0f;
}
@ -1025,7 +1035,7 @@ u8 fn_1_E8AC(omObjData *arg0, unkObjStruct *arg1)
case 2:
arg1->unkC++;
arg1->unk68 += 40.0f;
var_f31 = arg1->unkC / 90.0f;
var_f31 = arg1->unkC / (1.5f * REFRESH_RATE_F);
if (var_f31 >= 1.0f) {
var_f31 = 1.0f;
arg1->unk60++;
@ -1165,7 +1175,7 @@ void fn_1_F228(void)
temp_r31->unkA--;
temp_r31->unk24 = temp_r31->unk18;
temp_r31->unkC = 0;
temp_r31->unkE = 0x1E;
temp_r31->unkE = (s32)(0.5f * REFRESH_RATE_F);
temp_r31->unk14 = 0;
fn_1_F4D4(temp_r31, 15, 1);
}

View file

@ -21,6 +21,7 @@
#include "game/sprite.h"
#include "ext_math.h"
#include "version.h"
#undef ABS
#define ABS(x) ((0 > (x)) ? -(x) : (x))
@ -222,20 +223,20 @@ void fn_1_580(s32 *arg0, s32 arg1, s32 arg2)
espBankSet(arg0[arg1 + 1], 10);
espBankSet(arg0[arg1 + 4], 11);
if (36000 <= arg2) {
arg2 = 35999;
if (600 * REFRESH_RATE <= arg2) {
arg2 = 600 * REFRESH_RATE - 1;
}
var_r30 = arg2 / 3600;
arg2 -= var_r30 * 3600;
var_r30 = arg2 / (60 * REFRESH_RATE);
arg2 -= var_r30 * (60 * REFRESH_RATE);
if (var_r30 > 9) {
var_r30 = 9;
}
espBankSet(arg0[arg1], var_r30);
var_r30 = arg2 / 60;
arg2 -= var_r30 * 60;
var_r30 = arg2 / REFRESH_RATE;
arg2 -= var_r30 * REFRESH_RATE;
espBankSet(arg0[arg1 + 2], var_r30 / 10);
espBankSet(arg0[arg1 + 3], var_r30 % 10);
var_r30 = 101.5f * arg2 / 60.0f;
var_r30 = 101.5f * arg2 / REFRESH_RATE;
espBankSet(arg0[arg1 + 5], var_r30 / 10);
espBankSet(arg0[arg1 + 6], var_r30 % 10);
}
@ -871,7 +872,7 @@ void fn_1_3404(Work53E8 *arg0)
}
arg0->unk94 = 1;
arg0->unk8C = arg0->unk0[1] + ((frandf() * arg0->unk0[1]) / 2);
temp_f25 = 1.0f - (lbl_1_bss_1A4 / 3600.0f);
temp_f25 = 1.0f - (lbl_1_bss_1A4 / (60.0f * REFRESH_RATE));
if (0.25f < temp_f25) {
arg0->unk8C *= arg0->unk90 / (arg0->unk0[2] * temp_f25);
}
@ -1490,7 +1491,7 @@ void fn_1_5C04(omObjData *object)
if (2.0f > temp_f23) {
temp_r31->unk24.x--;
if (0.0f > temp_r31->unk24.x) {
temp_r31->unk24.x = 60.0f;
temp_r31->unk24.x = 1.0f * REFRESH_RATE;
if (frandmod(100) > 50) {
temp_r31->unk24.y = (frandf() * 220.0f) + 80.0f;
}
@ -1618,7 +1619,7 @@ void fn_1_74F4(s32 arg0)
work->unk18.z = 0;
work->unk38 = 0;
work->unk18.y = 2;
work->unk24.x = (frandf() * 180.0f) + 180.0f;
work->unk24.x = (frandf() * (3.0f * REFRESH_RATE)) + (3.0f * REFRESH_RATE);
if (arg0) {
work->unk18.y = 3;
work->unk18.x = 180.0f - (frandf() * 120.0f);
@ -1820,7 +1821,7 @@ void fn_1_8D58(omObjData *object)
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
object->func = fn_1_AA4C;
}
lbl_1_bss_24 += (1.0f / 60.0f);
lbl_1_bss_24 += (1.0f / REFRESH_RATE);
if (360.0f <= lbl_1_bss_24) {
lbl_1_bss_24 -= 360.0f;
}
@ -1849,8 +1850,8 @@ void fn_1_8D58(omObjData *object)
case 1002:
lbl_1_bss_28++;
fn_1_13DC(lbl_1_bss_28 / 180.0f, &lbl_1_data_40);
if (180.0f <= lbl_1_bss_28) {
fn_1_13DC(lbl_1_bss_28 / (3.0f * REFRESH_RATE), &lbl_1_data_40);
if ((3.0f * REFRESH_RATE) <= lbl_1_bss_28) {
object->work[0]++;
fn_1_1350(&lbl_1_data_34, &lbl_1_data_40, &lbl_1_data_4C);
}
@ -1868,19 +1869,19 @@ void fn_1_8D58(omObjData *object)
}
if (!MGSeqStatGet(lbl_1_bss_19E)) {
object->work[0]++;
lbl_1_bss_1A4 = 3600;
lbl_1_bss_19C = MGSeqTimerCreate(lbl_1_bss_1A4 / 60);
lbl_1_bss_1A4 = 60 * REFRESH_RATE;
lbl_1_bss_19C = MGSeqTimerCreate(lbl_1_bss_1A4 / REFRESH_RATE);
lbl_1_bss_19E = -1;
}
}
break;
case 1004:
MGSeqParamSet(lbl_1_bss_19C, 1, (lbl_1_bss_1A4 + 59) / 60);
MGSeqParamSet(lbl_1_bss_19C, 1, (lbl_1_bss_1A4 + REFRESH_RATE - 1) / REFRESH_RATE);
lbl_1_bss_1A4--;
if (lbl_1_bss_1A4 < 0) {
object->work[0] = 1005;
lbl_1_bss_1A4 = 3600;
lbl_1_bss_1A4 = 60 * REFRESH_RATE;
lbl_1_bss_28 = 0;
}
break;
@ -1912,9 +1913,9 @@ void fn_1_8D58(omObjData *object)
case 1006:
lbl_1_bss_28++;
fn_1_13DC(lbl_1_bss_28 / 120.0f, &lbl_1_data_64);
if (120.0f <= lbl_1_bss_28) {
lbl_1_bss_28 = 120.0f;
fn_1_13DC(lbl_1_bss_28 / (2.0f * REFRESH_RATE), &lbl_1_data_64);
if ((2.0f * REFRESH_RATE) <= lbl_1_bss_28) {
lbl_1_bss_28 = 2.0f * REFRESH_RATE;
for (i = 0; i < 4; i++) {
float temp;
if (OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unk98 != 2010) {

View file

@ -1,3 +1,4 @@
#include "version.h"
#define HUSPR_USE_OLD_DEFS
#include "ext_math.h"
#include "game/audio.h"
@ -213,6 +214,9 @@ M442StructBssC084 lbl_1_bss_C084[11][11];
M442StructBssC05C lbl_1_bss_C05C[2];
M442StructBss5C lbl_1_bss_5C[0x400];
float lbl_1_bss_20[0xF];
#if VERSION_PAL
s32 lbl_1_bss_20_pal;
#endif
Vec lbl_1_bss_14;
s16 lbl_1_bss_12;
s16 lbl_1_bss_10;
@ -268,9 +272,9 @@ u32 fn_1_384(void)
void fn_1_394(omObjData *object)
{
lbl_1_bss_11F30 = 0;
lbl_1_bss_11F24 = 60;
lbl_1_bss_11F24 = REFRESH_RATE;
lbl_1_bss_11F1C = 60;
lbl_1_bss_11F1A = 60;
lbl_1_bss_11F1A = REFRESH_RATE;
lbl_1_bss_11F18 = -1;
lbl_1_bss_11F16 = 0;
lbl_1_bss_11EE8 = 0;
@ -286,19 +290,19 @@ void fn_1_448(omObjData *object)
switch (lbl_1_bss_11F30) {
case 0:
if (lbl_1_bss_11F24 == 60) {
if (lbl_1_bss_11F24 == REFRESH_RATE) {
HuAudFXPlay(0x71B);
HuAudFXPlay(0x71F);
}
if (--lbl_1_bss_11F24 == 0) {
lbl_1_bss_11F30 = 1;
lbl_1_bss_11F24 = 0x78;
lbl_1_bss_11F24 = 2 * REFRESH_RATE;
}
break;
case 1:
if (--lbl_1_bss_11F24 == 0) {
lbl_1_bss_11F30 = 2;
lbl_1_bss_11F24 = 0x78;
lbl_1_bss_11F24 = 2 * REFRESH_RATE;
}
break;
case 2:
@ -320,7 +324,7 @@ void fn_1_448(omObjData *object)
if (--lbl_1_bss_11F1A == 0) {
lbl_1_bss_11F1C -= 1;
MGSeqParamSet(lbl_1_bss_10, 1, lbl_1_bss_11F1C);
lbl_1_bss_11F1A = 0x3C;
lbl_1_bss_11F1A = REFRESH_RATE;
}
if (lbl_1_bss_11F1C == 0 || lbl_1_bss_11EE4 == 0) {
lbl_1_bss_11F30 = 5;
@ -337,13 +341,13 @@ void fn_1_448(omObjData *object)
if (GWMGRecordGet(4) < lbl_1_bss_11EE8) {
GWMGRecordSet(4, lbl_1_bss_11EE8);
lbl_1_bss_11F30 = 6;
lbl_1_bss_11F24 = 60;
lbl_1_bss_11F24 = REFRESH_RATE;
lbl_1_bss_12 = MGSeqCreate(0xE, lbl_1_bss_11EE8);
fn_1_94AC(1);
}
else {
lbl_1_bss_11F30 = 9;
lbl_1_bss_11F24 = 60;
lbl_1_bss_11F24 = REFRESH_RATE;
}
mgRecordExtra = lbl_1_bss_11EE8;
}
@ -351,7 +355,7 @@ void fn_1_448(omObjData *object)
case 6:
if (MGSeqStatGet(lbl_1_bss_12) == 0) {
lbl_1_bss_11F30 = 9;
lbl_1_bss_11F24 = 60;
lbl_1_bss_11F24 = REFRESH_RATE;
}
break;
case 9:
@ -363,7 +367,7 @@ void fn_1_448(omObjData *object)
else {
HuAudSStreamPlay(4);
}
lbl_1_bss_11F24 = 0xD2;
lbl_1_bss_11F24 = 3.5f * REFRESH_RATE;
}
break;
case 11:
@ -410,6 +414,10 @@ void fn_1_A90(Process *arg0)
lbl_1_bss_11F28[0] = lbl_1_bss_11F28[1] = lbl_1_bss_11F28[2] = lbl_1_bss_11F28[3] = -1;
lbl_1_bss_11F20 = 0;
#if VERSION_PAL
lbl_1_bss_20_pal = fn_1_90FC();
#endif
for (var_r31 = 0; var_r31 < 4; var_r31++) {
if (GWPlayerCfg[var_r31].iscom != 1) {
break;
@ -495,7 +503,11 @@ void fn_1_E88(omObjData *object)
memset(var_r30, 0, sizeof(M442MainWork));
var_r30->unk_02 = lbl_1_bss_11F20++;
var_r30->unk_04 = GWPlayerCfg[var_r30->unk_02].pad_idx;
#if VERSION_NTSC
var_r30->unk_0C = fn_1_90FC();
#else
var_r30->unk_0C = lbl_1_bss_20_pal;
#endif
var_r26 = GWPlayerCfg[var_r30->unk_02].character;
var_r30->unk_10 = var_r26;
var_r30->unk_12 = GWPlayerCfg[var_r30->unk_02].diff;
@ -740,7 +752,7 @@ void fn_1_1230(omObjData *object)
var_r30->unk_06 = var_f29 * sind(var_r30->unk_18);
var_r30->unk_07 = var_f29 * -cosd(var_r30->unk_18);
if (++var_r30->unk_7C > 300) {
if (++var_r30->unk_7C > 5 * REFRESH_RATE) {
var_r30->unk_00_field2 = 1;
var_r30->unk_7C = 0;
}
@ -863,18 +875,18 @@ void fn_1_2254(omObjData *object)
if (var_f27 > 72.0f) {
var_f27 = 72.0f;
}
var_f26 = (10.0f * var_f27) / 72.0f;
var_f26 = ((VERSION_NTSC ? 10.0f : 12.0f) * var_f27) / 72.0f;
var_r31->unk_24.x = var_f31 * var_f26;
var_r31->unk_24.z = var_f30 * var_f26;
var_r31->unk_1C = var_f26;
object->rot.y = fn_1_85E8(object->rot.y, atan2d(var_r31->unk_24.x, var_r31->unk_24.z), 0.5f);
if (var_r31->unk_1C < 7.5f) {
if (var_r31->unk_1C < (450.0f / REFRESH_RATE)) {
var_r29 = 1;
var_f28 = var_r31->unk_1C / 7.5f;
var_f28 = var_r31->unk_1C / (450.0f / REFRESH_RATE);
}
else {
var_r29 = 2;
var_f28 = var_r31->unk_1C / 10.0f;
var_f28 = var_r31->unk_1C / (VERSION_NTSC ? 10.0f : 12.0f);
}
}
else {
@ -935,7 +947,7 @@ void fn_1_2254(omObjData *object)
}
if ((var_r31->unk_48 >= 0) && (lbl_1_bss_C9F8[var_r31->unk_48].unk_0C < 3)) {
lbl_1_bss_C9F8[var_r31->unk_48].unk_0C += 1;
lbl_1_bss_C9F8[var_r31->unk_48].unk_0E = 120;
lbl_1_bss_C9F8[var_r31->unk_48].unk_0E = 2 * REFRESH_RATE;
HuAudFXPlay(0x71C);
if (lbl_1_bss_C9F8[var_r31->unk_48].unk_0C == 3) {
var_r31->unk_00_field2 = 1;
@ -998,21 +1010,27 @@ void fn_1_2254(omObjData *object)
}
switch (var_r31->unk_40) {
case 0:
var_r31->unk_44 = 0.75 + sind(((90.0f * (var_r31->unk_42 % 15)) / 15.0f));
if ((var_r31->unk_42 % 20) == 0) {
omVibrate(var_r31->unk_02, 0xC, 0xC, 0);
var_r31->unk_44 = 0.75 + sind(((90.0f * (var_r31->unk_42 % (REFRESH_RATE / 4))) / (float)(REFRESH_RATE / 4)));
if (VERSION_NTSC ? 1 : var_r31->unk_0C == 1) {
if ((var_r31->unk_42 % (REFRESH_RATE / 3)) == 0) {
omVibrate(var_r31->unk_02, 0xC, 0xC, 0);
}
}
break;
case 1:
var_r31->unk_44 = 0.75 + (0.75 * sind(((90.0f * (var_r31->unk_42 % 30)) / 30.0f)));
if ((var_r31->unk_42 % 20) == 0) {
omVibrate(var_r31->unk_02, 0xC, 4, 2);
var_r31->unk_44 = 0.75 + (0.75 * sind(((90.0f * (var_r31->unk_42 % (REFRESH_RATE / 2))) / (0.5f * REFRESH_RATE))));
if (VERSION_NTSC ? 1 : var_r31->unk_0C == 1) {
if ((var_r31->unk_42 % (REFRESH_RATE / 3)) == 0) {
omVibrate(var_r31->unk_02, 0xC, 4, 2);
}
}
break;
case 2:
var_r31->unk_44 = 0.75 + (0.5 * sind(((90.0f * (var_r31->unk_42 % 60)) / 60.0f)));
if ((var_r31->unk_42 % 20) == 0) {
omVibrate(var_r31->unk_02, 12, 6, 6);
var_r31->unk_44 = 0.75 + (0.5 * sind(((90.0f * (var_r31->unk_42 % REFRESH_RATE)) / (1.0f * REFRESH_RATE))));
if (VERSION_NTSC ? 1 : var_r31->unk_0C == 1) {
if ((var_r31->unk_42 % (REFRESH_RATE / 3)) == 0) {
omVibrate(var_r31->unk_02, 12, 6, 6);
}
}
break;
}
@ -1273,7 +1291,7 @@ void fn_1_3C20(omObjData *object)
Hu3DMotionOverlayReset(object->model[0]);
Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF);
var_r30->unk_3C = 10;
var_r30->unk_3C = REFRESH_RATE / 5.5;
object->func = fn_1_3C94;
}
@ -1414,7 +1432,7 @@ void fn_1_4444(s32 arg0)
lbl_1_bss_5C[arg0].unk_04 = 0.0f;
lbl_1_bss_5C[arg0].unk_08 = 100.0f * (18.0f * ((frand() & 0x1FF) - 256.0f)) / 256;
lbl_1_bss_5C[arg0].unk_0C = lbl_1_bss_5C[arg0].unk_00;
lbl_1_bss_5C[arg0].unk_10 = 0.41666666f + (1.6666666f * (frand() & 0xFF) / 256);
lbl_1_bss_5C[arg0].unk_10 = (25.0f / REFRESH_RATE) + ((100.0f / REFRESH_RATE) * (frand() & 0xFF) / 256);
lbl_1_bss_5C[arg0].unk_18 = lbl_1_bss_5C[arg0].unk_1A = (frand() & 0x3F) + 0x20;
lbl_1_bss_5C[arg0].unk_1C = 0.1f + (0.9f * (frand() & 0xFF) / 256);
lbl_1_bss_5C[arg0].unk_20 = 360.0f * (frand() & 0xFF) / 256;
@ -1965,7 +1983,7 @@ void fn_1_72C4(omObjData *object)
Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF);
var_r31->unk_02 = 1;
var_r31->unk_18 = 0.0f;
var_r31->unk_0C = 60;
var_r31->unk_0C = REFRESH_RATE;
}
break;
case 1:
@ -1973,7 +1991,7 @@ void fn_1_72C4(omObjData *object)
var_r31->unk_18 += 0.05f;
}
var_r31->unk_02 = 2;
var_r31->unk_0C = var_r31->unk_0E = 45;
var_r31->unk_0C = var_r31->unk_0E = 0.75 * REFRESH_RATE;
var_r31->unk_10 = HuAudFXPlay(lbl_1_data_23C[var_r31->unk_14]);
break;
case 2:
@ -2070,11 +2088,11 @@ void fn_1_7890(ModelData *model, ParticleData *particle, Mtx matrix)
var_r31->unk34.x = 100.0 * (0.20000000298023224 * sind(var_f31));
var_r31->unk34.y = 0.0f;
var_r31->unk34.z = 100.0 * (0.20000000298023224 * cosd(var_f31));
var_f30 = 1.6666666f + (2.5f * (frand() & 0xFF) / 256);
var_f30 = (100.0f / REFRESH_RATE) + ((150.0f / REFRESH_RATE) * (frand() & 0xFF) / 256);
var_f31 = 360.0f * (frand() & 0xFF) / 256;
var_r31->unk08.x = var_f30 * sind(var_f31);
var_r31->unk08.z = var_f30 * cosd(var_f31);
var_r31->unk08.y = 16.666666f * (frand() & 0xFF) / 256;
var_r31->unk08.y = (1000.0f / REFRESH_RATE) * (frand() & 0xFF) / 256;
var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = var_r31->unk40.a = 0xFF;
}
}
@ -2085,7 +2103,7 @@ void fn_1_7890(ModelData *model, ParticleData *particle, Mtx matrix)
var_r28++;
}
else {
var_r31->unk08.y += -0.50000006f;
var_r31->unk08.y += VERSION_NTSC ? -0.50000006f : -0.6f;
var_r31->unk34.x += var_r31->unk08.x;
var_r31->unk34.y += var_r31->unk08.y;
var_r31->unk34.z += var_r31->unk08.z;
@ -2210,7 +2228,7 @@ void fn_1_8988(omObjData *arg0)
case 1:
fn_1_8738(0, 1, sind((90.0f * lbl_1_data_250[0])));
if (lbl_1_data_250[0] < 1.0f) {
lbl_1_data_250[0] += 0.016666668f;
lbl_1_data_250[0] += 1.0f / REFRESH_RATE;
if (lbl_1_data_250[0] > 1.0f) {
lbl_1_data_250[0] = 1.0f;
return;
@ -2222,7 +2240,7 @@ void fn_1_8988(omObjData *arg0)
case 2:
fn_1_8738(1, 2, 1.0 - cosd((90.0f * lbl_1_data_250[1])));
if (lbl_1_data_250[1] < 1.0f) {
lbl_1_data_250[1] += 0.016666668f;
lbl_1_data_250[1] += 1.0f / REFRESH_RATE;
if (lbl_1_data_250[1] > 1.0f) {
lbl_1_data_250[1] = 1.0f;
return;

View file

@ -20,8 +20,10 @@
#include "REL/m444dll.h"
#include "ext_math.h"
#include "version.h"
#include "math.h"
s16 lbl_1_bss_198F0[5][2];
Vec lbl_1_bss_D8F0[4096];
Vec lbl_1_bss_18F0[4096];
@ -844,7 +846,7 @@ s16 fn_1_B1E8(Vec *arg0, Vec *arg1, s16 arg2)
if (temp_f31 < 0.0f) {
temp_f28 -= temp_f31;
temp_f31 = ABS(temp_f31);
#if VERSION > 0
#if VERSION_REV1
if (temp_f31 == 0.0) {
sp1C.x = sp1C.y = sp1C.z = 0.0f;
break;
@ -886,7 +888,7 @@ s16 fn_1_B1E8(Vec *arg0, Vec *arg1, s16 arg2)
}
}
temp_f31 = VECMag(arg1);
#if VERSION > 0
#if VERSION_REV1
if (VECMag(&sp1C) == 0.0) {
sp1C.x = 0.0f;
sp1C.y = 1.0f;
@ -912,7 +914,7 @@ s16 fn_1_B1E8(Vec *arg0, Vec *arg1, s16 arg2)
break;
}
if (temp_f30 < 20.0f
#if VERSION > 0
#if VERSION_REV1
&& !(temp_f30 < 0.000001)
#endif
) {
@ -925,7 +927,7 @@ s16 fn_1_B1E8(Vec *arg0, Vec *arg1, s16 arg2)
}
if (temp_r30 == lbl_1_data_3A4[arg2]) {
arg1->y += 0.3;
#if VERSION > 0
#if VERSION_REV1
if (VECMag((Vec *)&arg1) < 0.000001) {
arg1->y += 0.3;
}

View file

@ -20,6 +20,7 @@
#include "dolphin.h"
#include "ext_math.h"
#include "version.h"
typedef struct {
/* 0x00 */ s32 unk00;
@ -1431,7 +1432,7 @@ void fn_1_7148(omObjData *arg0)
case 1005:
lbl_1_bss_84++;
if (lbl_1_data_19A != -1) {
MGSeqParamSet(lbl_1_data_19A, 1, ((lbl_1_bss_0 < 0 ? 0 : lbl_1_bss_0) + 59) / 60);
MGSeqParamSet(lbl_1_data_19A, 1, ((lbl_1_bss_0 < 0 ? 0 : lbl_1_bss_0) + REFRESH_RATE - 1) / REFRESH_RATE);
lbl_1_bss_0--;
if (lbl_1_bss_0 <= -30) {
MGSeqParamSet(lbl_1_data_19A, 2, -1);

View file

@ -34,6 +34,7 @@
#include "game/window.h"
#include "string.h"
#include "version.h"
#ifndef __MWERKS__
#include "game/audio.h"
@ -242,20 +243,20 @@ void fn_1_580(s32 *arg0, s32 arg1, s32 arg2)
espBankSet(arg0[arg1 + 1], 10);
espBankSet(arg0[arg1 + 4], 11);
if (36000 <= arg2) {
arg2 = 35999;
if (600 * REFRESH_RATE <= arg2) {
arg2 = 600 * REFRESH_RATE - 1;
}
var_r30 = arg2 / 3600;
arg2 -= var_r30 * 3600;
var_r30 = arg2 / (60 * REFRESH_RATE);
arg2 -= var_r30 * (60 * REFRESH_RATE);
if (var_r30 > 9) {
var_r30 = 9;
}
espBankSet(arg0[arg1], var_r30);
var_r30 = arg2 / 60;
arg2 -= var_r30 * 60;
var_r30 = arg2 / REFRESH_RATE;
arg2 -= var_r30 * REFRESH_RATE;
espBankSet(arg0[arg1 + 2], var_r30 / 10);
espBankSet(arg0[arg1 + 3], var_r30 % 10);
var_r30 = 101.5f * arg2 / 60.0f;
var_r30 = 101.5f * arg2 / REFRESH_RATE;
espBankSet(arg0[arg1 + 5], var_r30 / 10);
espBankSet(arg0[arg1 + 6], var_r30 % 10);
}
@ -835,6 +836,12 @@ s32 lbl_1_bss_8;
s32 lbl_1_bss_4;
s32 lbl_1_bss_0;
#if VERSION_NTSC
#define _1606_BY_REFRESH_RATE 26.766666f
#else
#define _1606_BY_REFRESH_RATE 32.120003f
#endif
void fn_1_23B4(WorkPlayerOld *player)
{
s32 i;
@ -1018,7 +1025,7 @@ void fn_1_2E34(WorkPlayerOld *player)
player->unk_3C |= 0x100;
player->unk_A4 = 0;
if (!(player2->unk_3C & 0x100)) {
player->unk_84.y = 26.766666f;
player->unk_84.y = _1606_BY_REFRESH_RATE;
}
}
if (state == 3) {
@ -1122,7 +1129,7 @@ void fn_1_3CE0(WorkPlayerOld *player, s32 *state, u32 *motAttr)
}
if (player->unk_14[3] >= 0 && (player->unk_28 & 0x100)) {
fn_1_2BD0(player, 26.766666f, 1.0f);
fn_1_2BD0(player, _1606_BY_REFRESH_RATE, 1.0f);
*motAttr = HU3D_MOTATTR_NONE;
*state = 3;
}
@ -1137,14 +1144,14 @@ void fn_1_3DB8(WorkPlayerOld *player, s32 *state, u32 *motAttr)
player->unk_A4 = 0;
}
else {
player->unk_84.y += 3.65f;
player->unk_84.y += 219.0f / REFRESH_RATE;
}
}
else {
player->unk_A4 = 0;
}
}
player->unk_84.y += -2.4333334f;
player->unk_84.y += -146.0f / REFRESH_RATE;
if (player->unk_14[5] >= 0 && (player->unk_28 & 0x140)) {
player->unk_38 = 3;
player->unk_84.y = 0;
@ -1271,7 +1278,7 @@ void fn_1_40C0(WorkPlayerOld *player)
if (player->unk_3C & 0x2000) {
player->unk_84.y = 0;
}
temp_f28 = 0;
temp_f28 = 0.0f;
if (50.0f < ABS(player->unk_84.y)) {
player->unk_84.y = 50.0f * ((0.0f > player->unk_84.y) ? -1 : 1);
}
@ -2019,25 +2026,25 @@ s32 lbl_1_data_18C[8] = { 0, 1, 2, 1, 1, -1, -1, -1 };
s32 lbl_1_data_1AC[8] = { 0, 1, 2, 1, 1, -1, -1, -1 };
s32 lbl_1_data_1CC[4] = { 0x3E, 0x65, 0x3F, 0x66 };
UnkData204Struct lbl_1_data_1DC[5] = {
{ 510.0f, 0 },
{ 300.0f, 1 },
{ 300.0f, 0 },
{ 300.0f, 1 },
{ 8.5f * REFRESH_RATE, 0 },
{ 5.0f * REFRESH_RATE, 1 },
{ 5.0f * REFRESH_RATE, 0 },
{ 5.0f * REFRESH_RATE, 1 },
{ 0.0f, 0 },
};
UnkData204Struct lbl_1_data_204[6] = {
{ 210.0f, 0 },
{ 300.0f, 1 },
{ 300.0f, 0 },
{ 300.0f, 1 },
{ 300.0f, 0 },
{ 3.5f * REFRESH_RATE, 0 },
{ 5.0f * REFRESH_RATE, 1 },
{ 5.0f * REFRESH_RATE, 0 },
{ 5.0f * REFRESH_RATE, 1 },
{ 5.0f * REFRESH_RATE, 0 },
{ 0.0f, 0 },
};
Vec2f lbl_1_data_234[4] = {
{ 300.0f, 300.0f },
{ 300.0f, 240.0f },
{ 300.0f, 210.0f },
{ 300.0f, 180.0f },
{ 5.0f * REFRESH_RATE, 5.0f * REFRESH_RATE },
{ 5.0f * REFRESH_RATE, 4.0f * REFRESH_RATE },
{ 5.0f * REFRESH_RATE, 3.5f * REFRESH_RATE },
{ 5.0f * REFRESH_RATE, 3.0f * REFRESH_RATE },
};
float lbl_1_data_254[5] = { 0.4f, 0.35f, 0.3f, 0.25f, 0.2f };
float lbl_1_data_268[5] = { 0.45f, 0.4f, 0.35f, 0.3f, 0.25f };
@ -2381,9 +2388,9 @@ void fn_1_8500(void)
HuPrcVSleep();
}
HuAudFXPlay(0x3B);
fn_1_A968(4, 8.0f, 0, 0, 60.0f);
fn_1_E1A8(0, 9, 8.0f, 0, 7, 60.0f);
fn_1_E1A8(1, 9, 8.0f, 0, 7, 60.0f);
fn_1_A968(4, 8.0f, 0, 0, REFRESH_RATE);
fn_1_E1A8(0, 9, 8.0f, 0, 7, REFRESH_RATE);
fn_1_E1A8(1, 9, 8.0f, 0, 7, REFRESH_RATE);
fn_1_7B90(var_r31, 0x2D0004);
fn_1_7C14(var_r31, -1);
HuAudFXPlay(0x3C);
@ -2786,7 +2793,7 @@ void fn_1_AAB0(UnkM450Struct3 *arg0, Vec2f *arg1, s32 arg2)
float var_f31 = 1.0f;
if (arg2 != 0) {
var_f31 = arg0->unk_F4;
if ((lbl_1_data_F6C[lbl_1_bss_118] - lbl_1_bss_304) > 0xE10) {
if ((lbl_1_data_F6C[lbl_1_bss_118] - lbl_1_bss_304) > 60 * REFRESH_RATE) {
arg0->unk_F4 = arg0->unk_F4 - 0.1f;
if (0.0f > arg0->unk_F4) {
arg0->unk_F4 = 0.0f;
@ -2916,7 +2923,7 @@ void fn_1_AD58(omObjData *object)
}
break;
case 0xBBE:
fn_1_A828(var_r31, 120.0f, 3000.0f, 1605.0f);
fn_1_A828(var_r31, 2 * REFRESH_RATE, 3000.0f, 1605.0f);
if (lbl_1_bss_1A4->work[0] >= 0x40B) {
var_r31->unk_150++;
var_r31->unk_E0 = 0.0f;
@ -3048,7 +3055,7 @@ void fn_1_AD58(omObjData *object)
fn_1_19A10(&var_r31->unk_00, &spE4);
fn_1_40C0(&var_r31->unk_00);
var_r31->unk_E0 += 1.0f;
spC8 = (60.0f * (3.0f + lbl_1_data_A0C[1].unk_14));
spC8 = (REFRESH_RATE * (3.0f + lbl_1_data_A0C[1].unk_14));
if (spC8 < var_r31->unk_E0) {
var_r31->unk_150++;
var_r31->unk_154 &= ~0x70;
@ -3115,7 +3122,7 @@ void fn_1_AD58(omObjData *object)
Hu3DMotionTimeSet(object->model[0], 50.0f);
}
var_r31->unk_E0 += 1.0f;
if (180.0f < var_r31->unk_E0) {
if (3 * REFRESH_RATE < var_r31->unk_E0) {
var_r31->unk_150 = 0xBC6;
var_r31->unk_E0 = 0.0f;
var_r31->unk_154 |= 0x20;
@ -3154,7 +3161,7 @@ void fn_1_AD58(omObjData *object)
fn_1_19A10(&var_r31->unk_00, &spE4);
fn_1_40C0(&var_r31->unk_00);
var_r31->unk_E0 += 1.0f;
if (180.0f < var_r31->unk_E0) {
if (3 * REFRESH_RATE < var_r31->unk_E0) {
var_r31->unk_150 = 0xBC6;
var_r31->unk_E0 = 0.0f;
var_r31->unk_154 |= 0x20;
@ -3660,7 +3667,7 @@ void fn_1_ED4C(omObjData *object)
}
break;
case 0xFA8:
fn_1_A828(var_r31, 120.0f, 3000.0f, 1605.0f);
fn_1_A828(var_r31, 2 * REFRESH_RATE, 3000.0f, 1605.0f);
if (lbl_1_bss_1A4->work[0] >= 0x3F9) {
var_r31->unk_150 = var_r31->unk_150 + 1;
var_r31->unk_E0 = 0.0f;
@ -4038,7 +4045,7 @@ void fn_1_12688(omObjData *object)
if (object->work[0] != 0) {
if (lbl_1_bss_1A4->work[0] <= 0x3EB) {
object->work[0] = object->work[0] - (3.0f - (lbl_1_bss_128 / 120.0f));
if (object->work[0] > 0x258) {
if (object->work[0] > 10 * REFRESH_RATE) {
object->work[0] = 1;
}
}
@ -4055,7 +4062,7 @@ void fn_1_12688(omObjData *object)
}
}
else if (Hu3DMotionEndCheck(object->model[0]) != 0) {
object->work[0] = frandmod(0x258);
object->work[0] = frandmod(10 * REFRESH_RATE);
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE);
}
@ -4063,7 +4070,7 @@ void fn_1_12688(omObjData *object)
void fn_1_1291C(omObjData *object)
{
object->work[0] = frandmod(0x258);
object->work[0] = frandmod(10 * REFRESH_RATE);
omSetTra(object, 0.0f, 0.0f, 0.0f);
omSetRot(object, 0.0f, 0.0f, 0.0f);
object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M450, 0x22));
@ -4312,27 +4319,27 @@ UnkDataA0CStruct lbl_1_data_A0C[2] = {
{ 0x00510067, DATA_MAKE_NUM(DATADIR_M450, 0x66), DATA_MAKE_NUM(DATADIR_M450, 0x69), DATA_MAKE_NUM(DATADIR_M450, 0x6A), 5, 5, NULL },
};
UnkDataA80Struct lbl_1_data_A80[9] = {
{ "m450mex06-s2hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 135.0f, 0.6f, 350.0f }, -1, 0 },
{ "m450mex06-s2hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 315.0f, 0.6f, 350.0f }, -2, 0 },
{ "m450mex06-s2hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 45.0f, -0.6f, 350.0f }, -1, 0 },
{ "m450mex06-s2hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 225.0f, -0.6f, 350.0f }, -2, 0 },
{ "m450mex06-s2hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 0.0f, 0.6f, 350.0f }, -1, 0 },
{ "m450mex06-s2hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 120.0f, 0.6f, 350.0f }, -2, 0 },
{ "m450mex06-s2hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 240.0f, 0.6f, 350.0f }, -2, 0 },
{ "m450mex06-s2hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 0.0f, 0.6f, 300.0f }, -1, 0 },
{ "m450mex06-s2hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 180.0f, 0.6f, 300.0f }, -2, 0 },
{ "m450mex06-s2hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 135.0f, 36.0f / REFRESH_RATE, 350.0f }, -1, 0 },
{ "m450mex06-s2hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 315.0f, 36.0f / REFRESH_RATE, 350.0f }, -2, 0 },
{ "m450mex06-s2hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 45.0f, -36.0f / REFRESH_RATE, 350.0f }, -1, 0 },
{ "m450mex06-s2hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 225.0f, -36.0f / REFRESH_RATE, 350.0f }, -2, 0 },
{ "m450mex06-s2hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 0.0f, 36.0f / REFRESH_RATE, 350.0f }, -1, 0 },
{ "m450mex06-s2hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 120.0f, 36.0f / REFRESH_RATE, 350.0f }, -2, 0 },
{ "m450mex06-s2hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 240.0f, 36.0f / REFRESH_RATE, 350.0f }, -2, 0 },
{ "m450mex06-s2hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 0.0f, 36.0f / REFRESH_RATE, 300.0f }, -1, 0 },
{ "m450mex06-s2hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 180.0f, 36.0f / REFRESH_RATE, 300.0f }, -2, 0 },
};
UnkDataA80Struct lbl_1_data_C58[0xA] = {
{ "m450mex06-s4hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 60.0f, -0.6f, 300.0f }, -1, 0 },
{ "m450mex06-s4hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 180.0f, -0.6f, 300.0f }, -2, 0 },
{ "m450mex06-s4hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 300.0f, -0.6f, 300.0f }, -2, 0 },
{ "m450mex06-s4hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 135.0f, -1.2f, 300.0f }, -1, 0 },
{ "m450mex06-s4hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 315.0f, -1.2f, 300.0f }, -2, 0 },
{ "m450mex06-s4hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 225.0f, -0.6f, 300.0f }, -1, 0 },
{ "m450mex06-s4hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 45.0f, -0.6f, 300.0f }, -2, 0 },
{ "m450mex06-s4hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 0.0f, 1.2f, 300.0f }, -1, 0 },
{ "m450mex06-s4hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 120.0f, 1.2f, 300.0f }, -2, 0 },
{ "m450mex06-s4hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 240.0f, 1.2f, 300.0f }, -2, 0 },
{ "m450mex06-s4hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 60.0f, -36.0f / REFRESH_RATE, 300.0f }, -1, 0 },
{ "m450mex06-s4hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 180.0f, -36.0f / REFRESH_RATE, 300.0f }, -2, 0 },
{ "m450mex06-s4hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 300.0f, -36.0f / REFRESH_RATE, 300.0f }, -2, 0 },
{ "m450mex06-s4hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 135.0f, -72.0f / REFRESH_RATE, 300.0f }, -1, 0 },
{ "m450mex06-s4hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 315.0f, -72.0f / REFRESH_RATE, 300.0f }, -2, 0 },
{ "m450mex06-s4hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 225.0f, -36.0f / REFRESH_RATE, 300.0f }, -1, 0 },
{ "m450mex06-s4hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 45.0f, -36.0f / REFRESH_RATE, 300.0f }, -2, 0 },
{ "m450mex06-s4hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 0.0f, 72.0f / REFRESH_RATE, 300.0f }, -1, 0 },
{ "m450mex06-s4hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 120.0f, 72.0f / REFRESH_RATE, 300.0f }, -2, 0 },
{ "m450mex06-s4hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 240.0f, 72.0f / REFRESH_RATE, 300.0f }, -2, 0 },
};
char *lbl_1_data_E68[5] = {
"m450m01-from1to2",
@ -4403,7 +4410,7 @@ s32 lbl_1_data_F00[0x17] = {
};
s32 lbl_1_data_F5C[4]
= { DATA_MAKE_NUM(DATADIR_M450, 0x24), DATA_MAKE_NUM(DATADIR_M450, 0x25), DATA_MAKE_NUM(DATADIR_M450, 0x26), DATA_MAKE_NUM(DATADIR_M450, 0x27) };
s32 lbl_1_data_F6C[6] = { 0, 0xE10, 0x4650, 0xE10, 0x4650, 0x4650 };
s32 lbl_1_data_F6C[6] = { 0, 60 * REFRESH_RATE, 300 * REFRESH_RATE, 60 * REFRESH_RATE, 300 * REFRESH_RATE, 300 * REFRESH_RATE };
float lbl_1_data_F84[5] = { 1200.0f, 1500.0f, 0.0f, 200.0f, 300.0f };
float lbl_1_data_F98[5] = { 1200.0f, 1500.0f, 0.0f, 200.0f, 300.0f };
float *lbl_1_data_FAC[6] = { NULL, lbl_1_data_F84, NULL, lbl_1_data_F98, NULL, NULL };
@ -4502,7 +4509,7 @@ void fn_1_12A1C(omObjData *object)
}
}
else if (Hu3DMotionEndCheck(object->model[0]) != 0) {
object->work[0] = frandmod(0xB4);
object->work[0] = frandmod(3 * REFRESH_RATE);
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE);
}
@ -4513,7 +4520,7 @@ void fn_1_12B80(omObjData *object)
s32 var_r30;
s16 var_r29;
object->work[0] = frandmod(0xB4);
object->work[0] = frandmod(3 * REFRESH_RATE);
omSetTra(object, 0.0f, 0.0f, 0.0f);
omSetRot(object, 0.0f, 0.0f, 0.0f);
@ -4813,7 +4820,7 @@ void fn_1_13F28(omObjData *object)
}
if (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_10C < 3) {
var_r31->unk_14 += 1.0f;
if (1200.0f < var_r31->unk_14) {
if (20 * REFRESH_RATE < var_r31->unk_14) {
var_r31->unk_1C = 0;
fn_1_1B510(var_r29);
}
@ -6012,7 +6019,7 @@ void fn_1_19CE0(omObjData *object)
var_r31->unk_FC &= ~0x3000;
var_r31->unk_FC &= ~0x30000;
var_r31->unk_FC &= ~0x300000;
var_r31->unk_100 = 0x78;
var_r31->unk_100 = 2 * REFRESH_RATE;
var_r31->unk_F8 = 0.0f;
var_r31->unk_00.unk_3C &= ~0x210;
}
@ -6567,7 +6574,7 @@ s32 fn_1_1C898(UnkM450Struct5 *var_r31, omObjData *var_r30)
HuAudCharVoicePlay(var_r31->unk_11C, 0x123);
var_r31->unk_FC |= 0x10;
var_r31->unk_00.unk_3C |= 0x210;
fn_1_2BD0(&var_r31->unk_00, 48.179996f, 0.0f);
fn_1_2BD0(&var_r31->unk_00, VERSION_NTSC ? 48.179995f : 57.816f, 0.0f);
Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[8], 0.0f, 8.0f, 0);
if (fn_1_125C0(0, 1) <= 0) {
var_r31->unk_FC |= 0x80000;
@ -6615,7 +6622,7 @@ s32 fn_1_1C898(UnkM450Struct5 *var_r31, omObjData *var_r30)
var_r31->unk_FC |= 0x100000;
var_r31->unk_00.unk_3C |= 0x200;
var_r31->unk_00.unk_3C &= ~0x10;
var_f31 = 40.15f;
var_f31 = VERSION_NTSC ? 40.15f : 48.180005f;
if (var_r31->unk_FC & 4) {
var_f31 = var_f31 / 2;
}
@ -6690,7 +6697,7 @@ void fn_1_1E150(omObjData *var_r29)
HuAudCharVoicePlay(var_r31->unk_11C, 0x123);
var_r31->unk_FC |= 0x800000;
var_r31->unk_118 = 0x7EB;
fn_1_2BD0(&var_r31->unk_00, 53.533333f, 0.0f);
fn_1_2BD0(&var_r31->unk_00, VERSION_NTSC ? 53.533333f : 64.240005f, 0.0f);
Hu3DMotionSet(var_r29->model[0], var_r29->motion[8]);
Hu3DModelAttrReset(var_r29->model[0], HU3D_ATTR_DISPOFF);
fn_1_125C0(0, 0);
@ -7074,7 +7081,7 @@ void fn_1_20170(omObjData *var_r30)
break;
case 0x7E9:
if (lbl_1_bss_1A4->work[0] >= 0x417) {
if (100.0f < lbl_1_bss_128) {
if ((VERSION_NTSC ? 100.0f : 80.0f) < lbl_1_bss_128) {
var_r31->unk_118++;
GWPlayerCoinWinSet(lbl_1_bss_120, 10);
Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[21], 0.0f, 8.0f, 0);
@ -7092,14 +7099,13 @@ void fn_1_20170(omObjData *var_r30)
break;
case 0x7EB:
if (var_r31->unk_FC & 0x800000) {
// inline?
var_r29 = var_r31;
var_r29->unk_00.unk_84.y += -2.4333334f;
var_r29->unk_00.unk_84.y += -146.0f / REFRESH_RATE;
var_r29->unk_00.unk_6C.y += var_r29->unk_00.unk_84.y;
var_r29->unk_00.unk_A8 = MapPos(
var_r29->unk_00.unk_6C.x, var_r29->unk_00.unk_6C.y, var_r29->unk_00.unk_6C.z, var_r29->unk_00.unk_C0, &var_r29->unk_00.unk_AC);
if (var_r29->unk_00.unk_A8 > var_r29->unk_00.unk_6C.y) {
fn_1_2BD0(&var_r31->unk_00, 53.533333f, 0.0f);
fn_1_2BD0(&var_r31->unk_00, VERSION_NTSC ? 53.533333f : 64.240005f, 0.0f);
}
var_f31 = var_r29->unk_00.unk_6C.x;
var_f30 = var_r29->unk_00.unk_6C.z;
@ -7367,12 +7373,12 @@ void fn_1_24620(omObjData *var_r31)
case 0x40D:
case 0x415:
if (lbl_1_bss_2FC >= 0) {
MGSeqParamSet(lbl_1_bss_2FC, 1, (lbl_1_bss_304 + 0x3B) / 60);
MGSeqParamSet(lbl_1_bss_2FC, 1, (lbl_1_bss_304 + REFRESH_RATE - 1) / REFRESH_RATE);
}
else {
sp120 = 0;
if ((lbl_1_bss_118 == 2) || (lbl_1_bss_118 == 4) || (lbl_1_bss_118 == 5)) {
if (lbl_1_bss_304 < 0x708) {
if (lbl_1_bss_304 < 30 * REFRESH_RATE) {
sp120 = 1;
}
}
@ -7380,7 +7386,7 @@ void fn_1_24620(omObjData *var_r31)
sp120 = 1;
}
if (sp120 != 0) {
lbl_1_bss_2FC = MGSeqCreate(1, lbl_1_bss_304 / 60, -1, -1);
lbl_1_bss_2FC = MGSeqCreate(1, lbl_1_bss_304 / REFRESH_RATE, -1, -1);
}
}
lbl_1_bss_304--;
@ -7390,7 +7396,7 @@ void fn_1_24620(omObjData *var_r31)
}
break;
case 0x3F4:
fn_1_23CA0(var_r31, 270.0f, 120.0f);
fn_1_23CA0(var_r31, 270.0f, 2 * REFRESH_RATE);
break;
case 0x3F5:
lbl_1_bss_128 += 1.0f;
@ -7413,7 +7419,7 @@ void fn_1_24620(omObjData *var_r31)
omVibrate(lbl_1_bss_120, 0xC, 6, 6);
lbl_1_bss_128 += 1.0f;
Hu3DModelPosSet(lbl_1_bss_1A0->model[6], 0.0f, -(2.0f * lbl_1_bss_128), 0.0f);
if (120.0f < lbl_1_bss_128) {
if (2 * REFRESH_RATE < lbl_1_bss_128) {
var_r31->work[0] += 1;
fn_1_6CB0(fn_1_9074, 2);
HuAudFXPlay(0x7BB);
@ -7433,7 +7439,7 @@ void fn_1_24620(omObjData *var_r31)
}
break;
case 0x3FC:
var_f31 = lbl_1_bss_128 / 120.0f;
var_f31 = lbl_1_bss_128 / (2 * REFRESH_RATE);
if (1.0f < var_f31) {
var_f31 = 1.0f;
}
@ -7442,7 +7448,7 @@ void fn_1_24620(omObjData *var_r31)
Hu3DModelRotSet(lbl_1_bss_1A0->model[5], 0.0f, 90.0f, 0.0f);
Hu3DModelPosSet(lbl_1_bss_1A0->model[5], var_r30->unk_30[3].x, var_r30->unk_30[3].y, var_r30->unk_30[3].z);
Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[5], var_f31);
fn_1_23CA0(var_r31, 270.0f, 120.0f);
fn_1_23CA0(var_r31, 270.0f, 2 * REFRESH_RATE);
break;
case 0x3FD:
case 0x3FE:
@ -7493,7 +7499,7 @@ void fn_1_24620(omObjData *var_r31)
}
break;
case 0x406:
fn_1_23CA0(var_r31, 270.0f, 120.0f);
fn_1_23CA0(var_r31, 270.0f, 2 * REFRESH_RATE);
break;
case 0x407:
lbl_1_bss_128 += 1.0f;
@ -7516,7 +7522,7 @@ void fn_1_24620(omObjData *var_r31)
omVibrate(lbl_1_bss_120, 0xC, 6, 6);
lbl_1_bss_128 += 1.0f;
Hu3DModelPosSet(lbl_1_bss_1A0->model[17], 0.0f, -(2.0f * lbl_1_bss_128), 0.0f);
if (120.0f < lbl_1_bss_128) {
if (2 * REFRESH_RATE < lbl_1_bss_128) {
var_r31->work[0] += 1;
fn_1_6CB0(fn_1_9824, 4);
HuAudFXPlay(0x7BB);
@ -7536,7 +7542,7 @@ void fn_1_24620(omObjData *var_r31)
}
break;
case 0x40E:
var_f31 = lbl_1_bss_128 / 120.0f;
var_f31 = lbl_1_bss_128 / (2 * REFRESH_RATE);
if (1.0f < var_f31) {
var_f31 = 1.0f;
}
@ -7545,7 +7551,7 @@ void fn_1_24620(omObjData *var_r31)
Hu3DModelRotSet(lbl_1_bss_1A0->model[16], 0.0f, -90.0f, 0.0f);
Hu3DModelPosSet(lbl_1_bss_1A0->model[16], var_r30->unk_30[8].x, var_r30->unk_30[8].y, var_r30->unk_30[8].z);
Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[16], var_f31);
fn_1_23CA0(var_r31, 270.0f, 120.0f);
fn_1_23CA0(var_r31, 270.0f, 2 * REFRESH_RATE);
break;
case 0x40F:
lbl_1_bss_20 = -1;
@ -7598,7 +7604,7 @@ void fn_1_24620(omObjData *var_r31)
lbl_1_bss_128 += 1.0f;
break;
case 0x417:
fn_1_23CA0(var_r31, 0.0f, 120.0f);
fn_1_23CA0(var_r31, 0.0f, 2 * REFRESH_RATE);
break;
case 0x418:
lbl_1_bss_128 += 1.0f;

View file

@ -87,7 +87,7 @@ typedef struct M453DllWork2 {
M453DllUnkStruct unk_5C;
u8 unk_9C;
s32 unk_A0;
} M453DllWork2; /* size 0xA4 */
} M453DllWork2; /* size 0xA4 */ // same as Unkm403Struct_01
void fn_1_440(omObjData *object);
void fn_1_460(omObjData *object);

1015
src/REL/m460Dll/main.c Normal file

File diff suppressed because it is too large Load diff

547
src/REL/m460Dll/map.c Normal file
View file

@ -0,0 +1,547 @@
#include "datadir_enum.h"
#include "dolphin/gx/GXEnum.h"
#include "dolphin/gx/GXVert.h"
#include "ext_math.h"
#include "game/audio.h"
#include "game/chrman.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/memory.h"
#include "game/object.h"
#include "game/pad.h"
#include "game/sprite.h"
#include "string.h"
#include "REL/m460Dll.h"
#ifndef __MWERKS__
#include "game/frand.h"
#endif
typedef struct UnkM460MapWork {
s32 unk_00;
u32 unk_04;
s32 unk_08;
s32 unk_0C;
s32 unk_10;
s32 unk_14;
s32 unk_18;
s32 unk_1C;
char unk20[4];
u32 unk_24;
s32 unk_28;
s32 unk_2C;
u32 unk_30;
float unk_34;
float unk_38;
Vec unk_3C;
Vec unk_48;
HsfObject *unk_54;
u32 unk_58;
void *unk_5C;
} UnkM460MapWork; /* size = 0x60 */
void fn_1_6818(omObjData *object);
void fn_1_6C00(omObjData *object);
void fn_1_73F8(omObjData *object);
u32 fn_1_76C4(u32 arg0, u32 arg1);
void fn_1_7724(ModelData *model, Mtx mtx);
void fn_1_7790(ModelData *model, Mtx mtx);
void fn_1_7B94(s32 arg0);
void fn_1_7DA8(omObjData *object, Vec *arg1, u32 arg2);
float lbl_1_data_1E8[8][8] = {
{ 0.0f, 325.0f, -387.0f, -8.25f, 15.0f, 0.0f, 1208.0f, 38.65f },
{ 0.0f, 325.0f, -387.0f, -8.25f, -15.0f, 0.0f, 1208.0f, 38.65f },
{ 0.0f, 325.0f, -700.0f, -45.0f, 18.0f, 0.0f, 1500.0f, 41.5f },
{ 0.0f, 325.0f, -700.0f, -45.0f, 0.0f, 0.0f, 1500.0f, 41.5f },
{ 0.0f, 325.0f, -700.0f, -45.0f, -18.0f, 0.0f, 925.0f, 68.0f },
{ 0.0f, 302.0f, -783.0f, 14.25f, 28.5f, 0.0f, 833.0f, 61.0f },
{ 0.0f, 302.0f, -783.0f, 14.25f, 0.0f, 0.0f, 833.0f, 61.0f },
{ 0.0f, 302.0f, -783.0f, 14.25f, -28.5f, 0.0f, 833.0f, 61.0f },
};
float lbl_1_data_2E8[2][8] = {
{ -250.0f, 200.0f, -1000.0f, -10.0f, 0.0f, 0.0f, 1200.0f, 41.5f },
{ 250.0f, 200.0f, -1000.0f, -10.0f, 0.0f, 0.0f, 1200.0f, 41.5f },
};
s32 lbl_1_data_328[3] = { DATA_MAKE_NUM(DATADIR_M460, 0x00), DATA_MAKE_NUM(DATADIR_M460, 0x01), DATA_MAKE_NUM(DATADIR_M460, 0x02) };
s32 lbl_1_data_334[3] = { DATA_MAKE_NUM(DATADIR_M460, 0x03), DATA_MAKE_NUM(DATADIR_M460, 0x04), DATA_MAKE_NUM(DATADIR_M460, 0x05) };
s32 lbl_1_data_340[3] = { DATA_MAKE_NUM(DATADIR_M460, 0x06), DATA_MAKE_NUM(DATADIR_M460, 0x07), DATA_MAKE_NUM(DATADIR_M460, 0x08) };
s32 lbl_1_data_34C[2] = { DATA_MAKE_NUM(DATADIR_M460, 0x09), DATA_MAKE_NUM(DATADIR_M460, 0x0A) };
s32 lbl_1_data_354[2] = { DATA_MAKE_NUM(DATADIR_M460, 0x0B), DATA_MAKE_NUM(DATADIR_M460, 0x0C) };
// UnkM460MapWork
omObjData *lbl_1_bss_48;
void fn_1_67B4(Process *process)
{
omObjData *var_r31 = omAddObjEx(process, 0x1E, 0x10, 0, -1, fn_1_6818);
lbl_1_bss_48 = var_r31;
var_r31->work[0] = 0;
}
void fn_1_6814(void) { }
void fn_1_6818(omObjData *object)
{
s32 var_r31;
s32 var_r30;
UnkM460MapWork *var_r28;
HsfanimStruct01 *var_r27;
var_r28 = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM460MapWork), MEMORY_DEFAULT_NUM);
memset(var_r28, 0, sizeof(UnkM460MapWork));
omSetTra(object, 0.0f, 0.0f, 0.0f);
for (var_r31 = 0; var_r31 < 3; var_r31++) {
var_r30 = Hu3DModelCreateFile(lbl_1_data_328[var_r31]);
object->model[var_r31] = var_r30;
Hu3DModelLayerSet(var_r30, 1);
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
}
for (var_r31 = 0; var_r31 < 3; var_r31++) {
var_r30 = Hu3DModelCreateFile(lbl_1_data_334[var_r31]);
object->model[var_r31 + 3] = var_r30;
Hu3DModelLayerSet(var_r30, 1);
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
}
for (var_r31 = 0; var_r31 < 3; var_r31++) {
var_r30 = Hu3DModelCreateFile(lbl_1_data_340[var_r31]);
object->model[var_r31 + 6] = var_r30;
Hu3DModelLayerSet(var_r30, 1);
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
}
for (var_r31 = 0; var_r31 < 2; var_r31++) {
var_r30 = Hu3DModelCreateFile(lbl_1_data_34C[var_r31]);
object->model[var_r31 + 9] = var_r30;
Hu3DModelLayerSet(var_r30, 1);
Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP);
}
for (var_r31 = 0; var_r31 < 2; var_r31++) {
var_r30 = Hu3DModelCreateFile(lbl_1_data_354[var_r31]);
object->model[var_r31 + 0xB] = var_r30;
Hu3DModelLayerSet(var_r30, 3);
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
}
var_r28->unk_08 = 8;
fn_1_73F8(object);
var_r30 = Hu3DHookFuncCreate(fn_1_7724);
object->model[13] = var_r30;
Hu3DModelCameraSet(var_r30, 1);
Hu3DModelLayerSet(var_r30, 7);
var_r30 = Hu3DHookFuncCreate(fn_1_7790);
object->model[14] = var_r30;
Hu3DModelCameraSet(var_r30, 2);
Hu3DModelLayerSet(var_r30, 7);
var_r28->unk_58 = GXGetTexBufferSize(0x280, 0x1E0, 5, 0, 0);
var_r28->unk_5C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r28->unk_58, MEMORY_DEFAULT_NUM);
DCFlushRange(var_r28->unk_5C, var_r28->unk_58);
var_r30 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M460, 0x23)), 0x100);
object->model[15] = var_r30;
Hu3DModelLayerSet(var_r30, 4);
for (var_r27 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_48, var_r31 = 0; var_r31 < 0x100; var_r31++, var_r27++) {
var_r27->unk2C = 0.0f;
var_r27->unk40.a = 0;
var_r27->unk00 = 0;
}
DCStoreRange(((ParticleData *)Hu3DData[var_r30].unk_120)->unk_48, 0x4400);
var_r28->unk_28 = 1;
var_r28->unk_2C = -1;
object->func = fn_1_6C00;
}
void fn_1_6C00(omObjData *object)
{
Vec sp14;
Vec sp8;
float var_f31;
UnkM460MapWork *var_r31;
M460DllCameraStruct *var_r30;
M460DllCameraStruct *var_r28;
u32 var_r27;
s32 var_r26;
s32 var_r25;
var_r31 = object->data;
var_r30 = fn_1_3E90(1);
var_r28 = fn_1_3E90(2);
switch (fn_1_4164()) {
case 1:
var_r31->unk_18 = 0;
var_r31->unk_1C = 0;
var_r31->unk_24 = 0;
if (var_r31->unk_00 != 0) {
fn_1_73F8(object);
var_r31->unk_00 = 0;
}
break;
case 3:
var_r27 = fn_1_42F0();
Hu3DMotionSpeedSet(object->model[var_r27 + 9], 1.5f);
if (var_r31->unk_18 == 0) {
if (fn_1_4324() != 0) {
var_r31->unk_18 = 1;
if (var_r27 == 0) {
var_r31->unk_2C = object->model[var_r31->unk_14 + 3];
var_r31->unk_54 = Hu3DModelObjPtrGet(var_r31->unk_2C, "door_l");
}
else if (var_r27 == 1) {
var_r31->unk_2C = object->model[var_r31->unk_10 + 6];
var_r31->unk_54 = Hu3DModelObjPtrGet(var_r31->unk_2C, "door_r");
}
var_r31->unk_28 = 0;
var_r31->unk_30 = 0;
Hu3DModelAttrReset(object->model[var_r27 + 0xB], HU3D_ATTR_DISPOFF);
}
}
else if (var_r31->unk_28 != 0) {
fn_1_433C();
var_r30->unk_10 -= 0.116666675f;
}
if (var_r31->unk_1C == 0) {
var_r31->unk_24++;
if (var_r31->unk_24 > 102.0f) {
var_r31->unk_1C = 1;
fn_1_8BA0(0.041666668f);
var_r30->unk_1C.x = lbl_1_data_2E8[var_r27][0];
var_r30->unk_1C.y = lbl_1_data_2E8[var_r27][1];
var_r30->unk_1C.z = lbl_1_data_2E8[var_r27][2];
var_r30->unk_28.x = lbl_1_data_2E8[var_r27][3];
var_r30->unk_28.y = lbl_1_data_2E8[var_r27][4];
var_r30->unk_28.z = lbl_1_data_2E8[var_r27][5];
var_r30->unk_34 = lbl_1_data_2E8[var_r27][6];
var_r30->unk_10 = lbl_1_data_2E8[var_r27][7];
}
}
break;
case 4:
var_r30->unk_10 -= 0.116666675f;
var_r31->unk_00 = 1;
break;
}
if ((var_r31->unk_28 == 0) && (var_r31->unk_2C >= 0)) {
if (var_r31->unk_30 == 0) {
var_r31->unk_34 = 0.0f;
var_r31->unk_38 = 0.0f;
var_r31->unk_3C.x = var_r31->unk_3C.y = var_r31->unk_3C.z = 0.0f;
var_r31->unk_48 = var_r31->unk_3C;
var_r31->unk_38 = 2.9166667f;
if (var_r31->unk_54) {
sp14.x = var_r31->unk_54->data.base.pos.x;
sp14.y = 10.0f + var_r31->unk_54->data.base.pos.y;
sp14.z = 20.0f + var_r31->unk_54->data.base.pos.z;
fn_1_7DA8(object, &sp14, 0);
}
HuAudFXPlay(0x818);
}
if (var_r31->unk_30 < 24.0f) {
var_r31->unk_38 *= 0.93f;
}
else {
var_f31 = 3.888889f;
var_r31->unk_38 = var_r31->unk_38 + (0.033333335f * var_f31);
if (var_r31->unk_38 > var_f31) {
var_r31->unk_38 = var_f31;
}
}
var_r26 = 0.5f + (0.2f * var_r31->unk_34);
var_r31->unk_34 = var_r31->unk_34 + var_r31->unk_38;
if (var_r31->unk_34 >= 350.0f) {
var_r31->unk_34 = 350.0f;
var_r31->unk_28 = 1;
HuAudFXPlay(0x819);
if (var_r31->unk_54) {
sp14.x = var_r31->unk_54->data.base.pos.x;
sp14.y = (var_r31->unk_54->data.base.pos.y + var_r31->unk_34) - 15.000001f;
sp14.z = 10.0f + var_r31->unk_54->data.base.pos.z;
fn_1_7DA8(object, &sp14, 2);
}
}
var_r25 = 0.5f + (0.2f * var_r31->unk_34);
if (var_r26 != var_r25) {
var_r31->unk_48.x = 100.0f * ((0.00003f * frandmod(0x3E8)) - 0.015f);
var_r31->unk_48.y = 100.0f * ((0.00006f * frandmod(0x3E8)) - 0.03f);
var_r31->unk_48.z = 100.0f * ((0.00006f * frandmod(0x3E8)) - 0.03f);
if (var_r31->unk_54) {
sp14.x = var_r31->unk_54->data.base.pos.x;
sp14.y = (var_r31->unk_54->data.base.pos.y + var_r31->unk_34) - 15.000001f;
sp14.z = 15.000001f + var_r31->unk_54->data.base.pos.z;
fn_1_7DA8(object, &sp14, 1);
}
}
PSVECSubtract(&var_r31->unk_48, &var_r31->unk_3C, &sp8);
PSVECScale(&sp8, &sp8, 0.4f);
PSVECAdd(&var_r31->unk_3C, &sp8, &sp14);
sp14.y += var_r31->unk_34;
Hu3DModelPosSetV(var_r31->unk_2C, &sp14);
var_r31->unk_30++;
}
fn_1_7B94(object->model[15]);
if (var_r28->unk_00 != 0) {
var_r28->unk_90 = var_r28->unk_90 + var_r28->unk_8C;
if (var_r28->unk_90 > 1.0f) {
var_r28->unk_00 = 0;
var_r28->unk_90 = 1.0f;
fn_1_3E68(1);
}
}
}
Vec lbl_1_data_36C = { 0.0f, 0.0f, 0.0f };
GXColor lbl_1_data_378 = { 0, 0, 0, 0x80 };
void fn_1_73F8(omObjData *object)
{
UnkM460MapWork *var_r31;
M460DllCameraStruct *var_r29;
u32 var_r28;
var_r31 = object->data;
Hu3DModelAttrSet(object->model[var_r31->unk_0C], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(object->model[var_r31->unk_10 + 6], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(object->model[var_r31->unk_14 + 3], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(object->model[11], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(object->model[12], HU3D_ATTR_DISPOFF);
if (var_r31->unk_04 != 0) {
var_r31->unk_0C = fn_1_76C4(3, var_r31->unk_0C);
var_r31->unk_14 = fn_1_76C4(3, var_r31->unk_14);
var_r31->unk_10 = fn_1_76C4(3, var_r31->unk_10);
var_r29 = fn_1_3E90(1);
var_r28 = var_r31->unk_08 = fn_1_76C4(8, var_r31->unk_08);
var_r29->unk_1C.x = lbl_1_data_1E8[var_r28][0];
var_r29->unk_1C.y = lbl_1_data_1E8[var_r28][1];
var_r29->unk_1C.z = lbl_1_data_1E8[var_r28][2];
var_r29->unk_28.x = lbl_1_data_1E8[var_r28][3];
var_r29->unk_28.y = lbl_1_data_1E8[var_r28][4];
var_r29->unk_28.z = lbl_1_data_1E8[var_r28][5];
var_r29->unk_34 = lbl_1_data_1E8[var_r28][6];
var_r29->unk_10 = lbl_1_data_1E8[var_r28][7];
}
Hu3DMotionTimeSet(object->model[9], 0.0f);
Hu3DMotionSpeedSet(object->model[9], 0.0f);
Hu3DMotionTimeSet(object->model[10], 0.0f);
Hu3DMotionSpeedSet(object->model[10], 0.0f);
Hu3DModelAttrReset(object->model[var_r31->unk_0C], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(object->model[var_r31->unk_14 + 3], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(object->model[var_r31->unk_10 + 6], HU3D_ATTR_DISPOFF);
Hu3DModelPosSetV(object->model[var_r31->unk_14 + 3], &lbl_1_data_36C);
Hu3DModelPosSetV(object->model[var_r31->unk_10 + 6], &lbl_1_data_36C);
var_r31->unk_04++;
}
u32 fn_1_76C4(u32 arg0, u32 arg8)
{
u32 var_r31 = frandmod(arg0);
if (var_r31 == arg8) {
var_r31++;
}
var_r31 %= arg0;
return var_r31;
}
void fn_1_7724(ModelData *model, Mtx mtx)
{
UnkM460MapWork *var_r31 = lbl_1_bss_48->data;
GXSetTexCopySrc(0, 0, 0x280, 0x1E0);
GXSetTexCopyDst(0x280, 0x1E0, GX_TF_RGB5A3, 0);
GXCopyTex(var_r31->unk_5C, 0);
GXPixModeSync();
}
void fn_1_7790(ModelData *model, Mtx mtx)
{
Mtx sp5C;
Mtx sp2C;
GXTexObj spC;
float var_f31;
float var_f30;
float var_f29;
UnkM460MapWork *var_r31;
M460DllCameraStruct *var_r30;
var_r31 = lbl_1_bss_48->data;
var_r30 = fn_1_3F2C(2);
lbl_1_data_378.a = 255.0f * var_r30->unk_90;
DCStoreRange(&lbl_1_data_378, 4);
C_MTXPerspective(sp2C, 41.5f, 1.2f, 100.0f, 5500.0f);
GXSetProjection(sp2C, GX_PERSPECTIVE);
PSMTXIdentity(sp5C);
GXLoadPosMtxImm(sp5C, 0);
GXSetNumChans(1);
GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE);
GXInitTexObj(&spC, var_r31->unk_5C, 0x280, 0x1E0, 5, GX_CLAMP, GX_CLAMP, 0);
GXInitTexObjLOD(&spC, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1);
GXLoadTexObj(&spC, GX_TEXMAP0);
C_MTXLightPerspective(sp2C, 41.5f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f);
GXLoadTexMtxImm(sp2C, 0x1E, GX_MTX3x4);
GXSetNumTexGens(1);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, 0x1E, 0, 0x7D);
GXSetNumTevStages(1);
GXSetTevColor(GX_TEVREG0, lbl_1_data_378);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 0, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 0, GX_TEVPREV);
GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
GXSetZMode(0, GX_LEQUAL, 0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
var_f31 = 4125.0f;
var_f30 = 2750.0f;
var_f29 = 2530.0f;
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3f32(-var_f31, var_f30, -var_f29);
GXPosition3f32(var_f31, var_f30, -var_f29);
GXPosition3f32(var_f31, -var_f30, -var_f29);
GXPosition3f32(-var_f31, -var_f30, -var_f29);
}
void fn_1_7B94(s32 arg0)
{
HsfanimStruct01 *var_r31;
ParticleData *var_r30;
s32 var_r29;
var_r30 = Hu3DData[arg0].unk_120;
for (var_r31 = var_r30->unk_48, var_r29 = 0; var_r29 < var_r30->unk_30; var_r29++, var_r31++) {
if (var_r31->unk00_s16 != 0) {
PSVECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34);
switch (var_r31->unk02) {
case 0:
var_r31->unk2C += 1.0f;
var_r31->unk20 *= 0.99f;
var_r31->unk08.y += 0.019444447f;
break;
case 1:
var_r31->unk2C += 2.0f;
var_r31->unk20 *= 0.98f;
break;
case 2:
var_r31->unk2C += 1.0f;
var_r31->unk20 *= 0.995f;
break;
}
if (var_r31->unk00_s16 < 12.0f) {
var_r31->unk20 = 0.9f * var_r31->unk20;
}
var_r31->unk40.a = var_r31->unk20;
if (--var_r31->unk00_s16 == 0) {
var_r31->unk00 = 0;
var_r31->unk2C = 0.0f;
var_r31->unk40.a = 0;
}
}
}
DCStoreRange(var_r30->unk_48, var_r30->unk_30 * 0x44);
}
void fn_1_7DA8(omObjData *object, Vec *arg1, u32 arg2)
{
Vec sp1C;
float var_f31;
HsfanimStruct01 *var_r31;
ParticleData *var_r30;
s32 var_r28;
u32 var_r27;
GXColor spC = { 0xA2, 0x97, 0x7B, 0x80 };
GXColor sp8 = { 0xE7, 0xDD, 0xC0, 0xFF };
s32 sp10[3] = { 0x00000032, 4, 0x00000046 };
var_r30 = Hu3DData[object->model[15]].unk_120;
if (arg2 > 2) {
arg2 = 1;
}
var_r27 = sp10[arg2];
for (var_r31 = var_r30->unk_48, var_r28 = 0; var_r28 < var_r30->unk_30; var_r28++, var_r31++) {
if (var_r31->unk00_s16 == 0) {
var_r31->unk02 = arg2;
sp1C.x = 100.0f * ((0.0026f * frandmod(0x3E8)) - 1.3f);
sp1C.y = 0.0f;
sp1C.z = 100.0f * ((0.000100000005f * frandmod(0x3E8)) - 0.05f);
PSVECAdd(&sp1C, arg1, &var_r31->unk34);
var_r31->unk30 = 0.0031415902f * frandmod(0x3E8);
switch (arg2) {
case 0:
var_r31->unk00_s16 = 60.0f * (0.8f + (0.0007f * frandmod(0x3E8)));
var_r31->unk08.x = 1.6666667f * (0.000100000005f * frandmod(0x3E8) - 0.05f);
var_r31->unk08.y = 1.6666667f * (0.05f + (0.00020000001f * frandmod(0x3E8)));
var_r31->unk08.z = 1.6666667f * (0.1f + (0.0006f * frandmod(0x3E8)));
var_f31 = 0.001f * frandmod(0x3E8);
var_r31->unk2C = 30.0f + (30.0f * var_f31);
var_r31->unk40.a = 40.0f + (40.0f * (1.0f - var_f31));
var_r31->unk40.r = spC.r + (var_f31 * (sp8.r - spC.r));
var_r31->unk40.g = spC.g + (var_f31 * (sp8.g - spC.g));
var_r31->unk40.b = spC.b + (var_f31 * (sp8.b - spC.b));
break;
case 1:
sp1C.x = 100.0f * (1.1f + (0.00020000001f * frandmod(0x3E8)));
sp1C.y = 100.0f * (0.2f + (0.0005f * frandmod(0x3E8)));
if (frandmod(0x3E8) < 0x1F4) {
sp1C.x *= -1.0f;
}
PSVECAdd(&sp1C, arg1, &var_r31->unk34);
var_r31->unk00 = 60.0f * (0.2f + (0.0005f * frandmod(0x3E8)));
var_r31->unk08.x = 1.6666667f * ((0.000100000005f * frandmod(0x3E8)) - 0.05f);
var_r31->unk08.y = -1.6666667f * (0.2f + (0.0003f * frandmod(0x3E8)));
var_r31->unk08.z = 1.6666667f * (0.05f + (0.000100000005f * frandmod(0x3E8)));
var_f31 = 0.001f * frandmod(0x3E8);
var_r31->unk2C = 20.0f + (30.0f * var_f31);
var_r31->unk40.a = 8.0f + (13.0f * (1.0f - var_f31));
var_r31->unk40.r = spC.r + (var_f31 * (sp8.r - spC.r));
var_r31->unk40.g = spC.g + (var_f31 * (sp8.g - spC.g));
var_r31->unk40.b = spC.b + (var_f31 * (sp8.b - spC.b));
break;
case 2:
var_r31->unk00 = 60.0f * (0.9f + (0.00080000004f * frandmod(0x3E8)));
var_r31->unk08.x = 1.6666667f * ((0.00020000001f * frandmod(0x3E8)) - 0.1f);
var_r31->unk08.y = -1.6666667f * (0.1f + (0.0007f * frandmod(0x3E8)));
var_r31->unk08.z = 1.6666667f * ((0.00020000001f * frandmod(0x3E8)) - 0.1f);
var_f31 = 0.001f * frandmod(0x3E8);
var_r31->unk2C = 40.0f + (60.0f * var_f31);
var_r31->unk40.a = 8.0f + (10.0f * (1.0f - var_f31));
var_r31->unk40.r = spC.r + (var_f31 * (sp8.r - spC.r));
var_r31->unk40.g = spC.g + (var_f31 * (sp8.g - spC.g));
var_r31->unk40.b = spC.b + (var_f31 * (sp8.b - spC.b));
break;
}
var_r31->unk20 = var_r31->unk40.a;
var_r27--;
if (var_r27 < 1) {
break;
}
}
}
DCStoreRange(var_r30->unk_48, var_r30->unk_30 * sizeof(HsfanimStruct01));
}
void fn_1_8BA0(float arg8)
{
M460DllCameraStruct *var_r31;
M460DllCameraStruct *var_r30;
var_r30 = fn_1_3E90(1);
var_r31 = fn_1_3E90(2);
var_r31->unk_00 = 1;
var_r31->unk_1C = var_r30->unk_1C;
var_r31->unk_28 = var_r30->unk_28;
var_r31->unk_34 = var_r30->unk_34;
var_r31->unk_10 = var_r30->unk_10;
var_r31->unk_44 = var_r30->unk_44;
var_r31->unk_40 = var_r30->unk_40;
var_r31->unk_8C = arg8;
var_r31->unk_90 = 0.0f;
fn_1_3E68(2);
}
s32 fn_1_8C78(void)
{
M460DllCameraStruct *var_r31 = fn_1_3E90(2);
return var_r31->unk_00;
}

658
src/REL/m460Dll/player.c Normal file
View file

@ -0,0 +1,658 @@
#include "datadir_enum.h"
#include "ext_math.h"
#include "game/audio.h"
#include "game/chrman.h"
#include "game/gamework_data.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/memory.h"
#include "game/object.h"
#include "game/pad.h"
#include "string.h"
#include "REL/m460Dll.h"
#ifndef __MWERKS__
#include "game/frand.h"
#endif
typedef struct UnkData110Struct {
/* 0x00 */ u16 unk_00;
/* 0x04 */ float unk_04;
/* 0x08 */ float unk_08;
/* 0x0C */ float unk_0C;
/* 0x10 */ u32 unk_10;
} UnkData110Struct; /* size = 0x14 */
typedef struct UnkM460DllPlayerWork {
s32 unk_00;
s32 unk_04;
s32 unk_08;
s32 unk_0C;
s32 unk_10;
u32 unk_14;
u32 unk_18;
float unk_1C;
float unk_20;
s32 unk_24;
s32 unk_28;
u16 unk_2C;
s32 unk_30;
char unk34[0x4];
s16 unk_38;
char unk3A[6];
s32 unk_40;
float unk_44;
float unk_48;
float unk_4C;
float unk_50;
float unk_54;
s32 unk_58;
float unk_5C;
Vec unk_60;
Vec unk_6C;
Vec unk_78;
s32 unk_84;
} UnkM460DllPlayerWork; /* size = 0x88 */
void fn_1_4C08(omObjData *object);
void fn_1_4F6C(omObjData *object);
void fn_1_5168(omObjData *object);
void fn_1_55EC(omObjData *object);
void fn_1_57D8(omObjData *object);
s32 fn_1_58C8(omObjData *object, float arg8, float arg9);
void fn_1_5A14(omObjData *object);
void fn_1_5C88(omObjData *object);
void fn_1_5CE0(omObjData *object, u32 arg1);
s32 fn_1_5E6C(omObjData *object);
void fn_1_60B0(omObjData *object);
void fn_1_61F4(omObjData *object);
u32 lbl_1_data_F0[8] = { 0, 2, 3, 0x590015, 0x59000D, 0x17, 0x18, 0x1A };
struct UnkData110Struct lbl_1_data_110[8] = {
{ 0, 0.2f, 0.0f, -1.0f, 0x40000001 },
{ 1, 0.2f, 0.0f, -1.0f, 0x40000001 },
{ 2, 0.2f, 0.0f, -1.0f, 0x40000001 },
{ 3, 0.2f, 0.0f, -1.0f, 0x40000001 },
{ 4, 0.2f, 0.0f, -1.0f, 0 },
{ 5, 0.2f, 0.0f, -1.0f, 0 },
{ 6, 0.2f, 0.0f, -1.0f, 0 },
{ 7, 0.2f, 0.0f, -1.0f, 0x40000001 },
};
omObjData *lbl_1_bss_40[1];
omObjData *lbl_1_bss_3C;
s32 lbl_1_bss_38[1];
void fn_1_49A0(Process *process)
{
u32 spC[1];
u32 sp8[1];
s16 var_r31;
s16 var_r30;
u32 var_r29;
omObjData *var_r27;
for (var_r31 = 0; var_r31 < 1; var_r31++) {
spC[var_r31] = GWPlayerCfg[var_r31].group;
sp8[var_r31] = var_r31;
}
for (var_r31 = 0; var_r31 < 0; var_r31++) {
for (var_r30 = var_r31 + 1; var_r30 < 1; var_r30++) {
if (spC[var_r31] > spC[var_r30]) {
var_r29 = spC[var_r31];
spC[var_r31] = spC[var_r30];
spC[var_r30] = var_r29;
var_r29 = sp8[var_r31];
sp8[var_r31] = sp8[var_r30];
sp8[var_r30] = var_r29;
}
}
}
for (var_r31 = 0; var_r31 < 1; var_r31++) {
lbl_1_bss_38[sp8[var_r31]] = var_r31;
}
omMakeGroupEx(process, 0, 1);
omGetGroupMemberListEx(process, 0);
for (var_r31 = 0; var_r31 < 1; var_r31++) {
var_r27 = lbl_1_bss_40[var_r31] = omAddObjEx(process, 0x28, 1, 8, 0, fn_1_4C08);
var_r27->work[0] = var_r31;
}
lbl_1_bss_3C = omAddObjEx(process, 0x28, 1, 5, -1, fn_1_60B0);
}
void fn_1_4BE4(void)
{
CharModelKill(-1);
}
void fn_1_4C08(omObjData *object)
{
UnkM460DllPlayerWork *var_r31;
s32 var_r29;
float sp8[4] = { 0.25f, 0.5f, 0.75f, 1.0f };
Vec sp18[4] = {
{ 0.0f, 0.0f, 300.0f },
{ -450.0f, 0.0f, -50.0f },
{ 0.0f, 0.0f, -350.0f },
{ 450.0f, 0.0f, -50.0f },
};
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM460DllPlayerWork), MEMORY_DEFAULT_NUM);
var_r31 = object->data;
memset(var_r31, 0, sizeof(UnkM460DllPlayerWork));
object->stat |= 0x100;
var_r31->unk_00 = GWPlayerCfg[object->work[0]].character;
var_r31->unk_08 = lbl_1_bss_38[object->work[0]];
fn_1_41B4(object->work[0], var_r31->unk_08, var_r31->unk_00);
var_r31->unk_54 = sp8[GWPlayerCfg[object->work[0]].diff & 3];
var_r31->unk_24 = GWPlayerCfg[object->work[0]].iscom;
object->model[0] = CharModelCreate(var_r31->unk_00, 2);
Hu3DModelLayerSet(object->model[0], 1);
CharModelLayerSetAll(2);
Hu3DModelShadowSet(object->model[0]);
for (var_r29 = 0; var_r29 < 8; var_r29++) {
if (lbl_1_data_F0[var_r29] < 0x10000) {
object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_00, lbl_1_data_F0[var_r29]);
}
else {
object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], var_r31->unk_00 + lbl_1_data_F0[var_r29]);
}
}
CharModelMotionDataClose(var_r31->unk_00);
CharModelEffectNpcInitSilent(object->model[0], object->motion[3], 1);
object->trans.x = var_r31->unk_60.x = sp18[var_r31->unk_08].x;
object->trans.y = var_r31->unk_60.y = sp18[var_r31->unk_08].y;
object->trans.z = var_r31->unk_60.z = sp18[var_r31->unk_08].z;
var_r31->unk_44 = var_r31->unk_48 = 0.0f;
var_r31->unk_4C = 0.0f;
var_r31->unk_50 = 0.02f;
var_r31->unk_5C = 50.0f;
var_r31->unk_58 = 0;
var_r31->unk_2C = 0;
var_r31->unk_04 = -1;
fn_1_5CE0(object, 0);
var_r31->unk_84 = -1;
object->func = fn_1_4F6C;
}
void fn_1_4F6C(omObjData *object)
{
UnkM460DllPlayerWork *var_r31;
s32 var_r29;
var_r31 = object->data;
var_r31->unk_14 = var_r31->unk_18 = 0;
var_r31->unk_0C = var_r31->unk_10 = 0;
var_r31->unk_1C = 0.0f;
var_r31->unk_20 = 0.0f;
switch (var_r31->unk_2C) {
case 0:
var_r31->unk_44 = var_r31->unk_48 = 180.0f;
var_r31->unk_60.x = 0.0f;
var_r31->unk_60.y = 0.0f;
var_r31->unk_60.z = -450.0f;
fn_1_5CE0(object, 7);
var_r31->unk_2C = 1;
var_r31->unk_30 = 0;
break;
case 1:
if (fn_1_414C() == 1) {
var_r31->unk_60.x = 0.0f;
var_r31->unk_60.y = 0.0f;
var_r31->unk_60.z = -100.0f;
var_r31->unk_78.x = 0.0f;
var_r31->unk_78.y = 0.0f;
var_r31->unk_78.z = -450.0f;
var_r31->unk_2C = 2;
var_r31->unk_30 = 0;
}
break;
case 2:
var_r29 = fn_1_58C8(object, 0.5f, 20.0f);
fn_1_5A14(object);
if (var_r29 != 0) {
var_r31->unk_2C = 3;
var_r31->unk_30 = 0;
}
break;
}
PSVECAdd(&var_r31->unk_60, &var_r31->unk_6C, &var_r31->unk_60);
fn_1_57D8(object);
if (fn_1_414C() == 2) {
var_r31->unk_2C = 0;
object->func = fn_1_5168;
}
}
void fn_1_5168(omObjData *object)
{
UnkM460DllPlayerWork *var_r31;
s32 var_r29;
u32 var_r28;
s32 var_r27;
var_r31 = object->data;
var_r27 = 0;
{
Vec sp20[2] = {
{ -250.0f, 0.0f, -900.0f },
{ 250.0f, 0.0f, -900.0f },
};
Vec sp8[2] = {
{ -250.0f, 0.0f, -1400.0f },
{ 250.0f, 0.0f, -1400.0f },
};
var_r31->unk_14 = var_r31->unk_18 = 0;
var_r31->unk_0C = var_r31->unk_10 = 0;
var_r31->unk_1C = 0.0f;
var_r31->unk_20 = 0.0f;
if (fn_1_4164() == 2) {
if (var_r31->unk_24 != 0) {
fn_1_5C88(object);
}
else {
if (HuPadTrigL[GWPlayerCfg[object->work[0]].pad_idx] > 0x28) {
var_r31->unk_14 = 1;
}
if (HuPadTrigR[GWPlayerCfg[object->work[0]].pad_idx] > 0x28) {
var_r31->unk_18 = 1;
}
}
}
switch (var_r31->unk_2C) {
case 0:
if (fn_1_4370() != 0) {
var_r31->unk_60.x = -140.0f;
var_r31->unk_60.y = 0.0f;
var_r31->unk_60.z = -150.0f;
}
var_r31->unk_78.x = 0.0f;
var_r31->unk_78.y = 0.0f;
var_r31->unk_78.z = -450.0f;
var_r31->unk_40 = 3;
var_r31->unk_2C = 4;
case 4:
var_r29 = fn_1_58C8(object, 0.5f, 20.0f);
fn_1_5A14(object);
if ((var_r29 != 0) && (fn_1_4164() == 2)) {
var_r31->unk_48 = 180.0f;
var_r31->unk_6C.x = var_r31->unk_6C.y = var_r31->unk_6C.z = 0.0f;
var_r31->unk_2C = 5;
}
break;
case 5:
var_r29 = 0;
fn_1_5A14(object);
if (CharModelMotionShiftIDGet(var_r31->unk_00) < 0) {
var_r29 = 1;
}
var_r28 = fn_1_42F0();
if (var_r28 == 3) {
if (var_r29 != 0) {
if (var_r31->unk_14 != 0) {
var_r28 = 0;
}
else if (var_r31->unk_18 != 0) {
var_r28 = 1;
}
if (var_r28 != 3) {
fn_1_42BC(var_r28);
}
}
}
else {
var_r31->unk_40 = var_r28;
var_r31->unk_78 = sp20[var_r31->unk_40];
var_r31->unk_2C = 6;
}
break;
case 6:
var_r29 = fn_1_58C8(object, 1.0f, 20.0f);
fn_1_5A14(object);
if (var_r29 != 0) {
fn_1_4308();
var_r31->unk_48 = 180.0f;
var_r31->unk_6C.x = var_r31->unk_6C.y = var_r31->unk_6C.z = 0.0f;
var_r31->unk_2C = 7;
}
break;
case 7:
fn_1_5A14(object);
if (fn_1_4358() != 0) {
if (fn_1_419C() == 0) {
var_r31->unk_78 = sp8[var_r31->unk_40];
var_r31->unk_2C = 8;
}
else {
var_r27 = 1;
}
}
break;
case 8:
var_r29 = fn_1_58C8(object, 0.5f, 20.0f);
fn_1_5A14(object);
default:
if (fn_1_4164() == 1) {
var_r31->unk_2C = 0;
}
var_r27 = 1;
break;
}
}
PSVECAdd(&var_r31->unk_60, &var_r31->unk_6C, &var_r31->unk_60);
fn_1_57D8(object);
if ((fn_1_4164() == 5) && (var_r27 != 0)) {
var_r31->unk_2C = 0;
object->func = fn_1_55EC;
}
}
void fn_1_55EC(omObjData *object)
{
Vec sp8;
UnkM460DllPlayerWork *var_r31;
s32 var_r29;
var_r31 = object->data;
var_r29 = 0;
switch (var_r31->unk_2C) {
case 0:
fn_1_41F4(object->work[0]);
fn_1_5CE0(object, 4);
sp8 = var_r31->unk_60;
sp8.y += 160.0f;
var_r31->unk_2C = 9;
break;
case 9:
if (fn_1_5E6C(object) != 0) {
var_r31->unk_78.x = 0.0f;
var_r31->unk_78.y = 0.0f;
var_r31->unk_78.z = 500.0f;
fn_1_4224(object->work[0]);
HuAudCharVoicePlay(var_r31->unk_00, 0x128);
var_r31->unk_28 = 1;
var_r31->unk_2C = 0xA;
}
break;
case 10:
var_r29 = fn_1_58C8(object, 1.0f, 20.0f);
fn_1_5A14(object);
if (var_r29 != 0) {
var_r31->unk_6C.x = var_r31->unk_6C.y = var_r31->unk_6C.z = 0.0f;
var_r31->unk_2C = 0xB;
}
break;
case 11:
fn_1_5CE0(object, 0);
break;
}
PSVECAdd(&var_r31->unk_60, &var_r31->unk_6C, &var_r31->unk_60);
fn_1_57D8(object);
if (var_r31->unk_84 >= 0) {
sp8 = var_r31->unk_60;
sp8.y += 160.0f;
HuAudFXEmiterUpDate(var_r31->unk_84, &sp8);
}
}
void fn_1_57D8(omObjData *object)
{
UnkM460DllPlayerWork *var_r31 = object->data;
var_r31->unk_38++;
var_r31->unk_30++;
object->trans.x = var_r31->unk_60.x;
object->trans.y = var_r31->unk_60.y;
object->trans.z = var_r31->unk_60.z;
var_r31->unk_4C = var_r31->unk_4C + var_r31->unk_50;
if (var_r31->unk_4C > 0.45f) {
var_r31->unk_4C = 0.45f;
}
var_r31->unk_44 = fn_1_47D0(var_r31->unk_44, var_r31->unk_48, var_r31->unk_4C);
object->rot.y = var_r31->unk_44;
Hu3DModelPosSetV(object->model[0], &var_r31->unk_60);
Hu3DModelRotSet(object->model[0], 0.0f, var_r31->unk_44, 0.0f);
}
s32 fn_1_58C8(omObjData *object, float arg8, float arg9)
{
Vec spC;
float var_f31;
UnkM460DllPlayerWork *var_r31;
s32 var_r30;
var_r31 = object->data;
var_r30 = 0;
PSVECSubtract(&var_r31->unk_78, &var_r31->unk_60, &spC);
spC.y = 0.0f;
var_f31 = PSVECMag(&spC);
if (var_f31 < arg9) {
var_f31 = 0.0f;
var_r30 = 1;
}
else {
if (PSVECMag(&spC) >= 100.0f) {
var_f31 = 100.0f;
}
var_f31 = 0.2f + (0.008f * var_f31);
}
var_r31->unk_1C = atan2d(spC.x, spC.z);
var_r31->unk_20 = var_f31;
if (var_r31->unk_20 > arg8) {
var_r31->unk_20 = arg8;
}
return var_r30;
}
void fn_1_5A14(omObjData *object)
{
float var_f31;
float var_f30;
UnkM460DllPlayerWork *var_r31 = object->data;
if (var_r31->unk_20 > 0.0f) {
var_r31->unk_48 = var_r31->unk_1C;
}
if (var_r31->unk_20 > 0.05f) {
// 1 / REFRESH_RATE?
var_r31->unk_6C.x = 0.01666666753590107 * (550.0 * (var_r31->unk_20 * sind(var_r31->unk_1C)));
var_r31->unk_6C.z = 0.01666666753590107 * (550.0 * (var_r31->unk_20 * cosd(var_r31->unk_1C)));
if (var_r31->unk_28 != 0) {
var_r31->unk_6C.x *= 1.5f;
var_r31->unk_6C.z *= 1.5f;
}
var_r31->unk_4C = 0.2f;
var_r31->unk_50 = 0.0f;
if (CharModelMotionShiftIDGet(var_r31->unk_00) < 0) {
var_f31 = 0.5f;
if (var_r31->unk_04 == 2) {
var_f31 = 0.45f;
}
if (var_r31->unk_20 > var_f31) {
if (var_r31->unk_28 != 0) {
fn_1_5CE0(object, 3);
}
else {
fn_1_5CE0(object, 2);
}
var_f30 = var_r31->unk_20;
}
else {
fn_1_5CE0(object, 1);
var_f30 = var_r31->unk_20 / var_f31;
}
CharModelMotionSpeedSet(var_r31->unk_00, var_f30);
}
}
else {
var_r31->unk_6C.x = var_r31->unk_6C.y = var_r31->unk_6C.z = 0.0f;
if (CharModelMotionShiftIDGet(var_r31->unk_00) < 0) {
fn_1_5CE0(object, 0);
}
}
}
void fn_1_5C88(omObjData *object)
{
UnkM460DllPlayerWork *var_r31 = object->data;
if (frandmod(0x3E8) < 0x1F4) {
var_r31->unk_14 = 1;
return;
}
var_r31->unk_18 = 1;
}
void fn_1_5CE0(omObjData *object, u32 arg1)
{
UnkM460DllPlayerWork *var_r30 = object->data;
if ((var_r30->unk_04 != arg1) && (arg1 < 8)) {
float var_f31 = 60.0f * lbl_1_data_110[arg1].unk_04;
if (var_r30->unk_04 < 0) {
var_f31 = 0.0f;
}
var_r30->unk_04 = arg1;
CharModelMotionShiftSet(
var_r30->unk_00, object->motion[lbl_1_data_110[arg1].unk_00], 60.0f * lbl_1_data_110[arg1].unk_08, var_f31, lbl_1_data_110[arg1].unk_10);
if (lbl_1_data_110[arg1].unk_0C >= 0.0f) {
Hu3DMotionShiftStartEndSet(object->model[0], 60.0f * lbl_1_data_110[arg1].unk_08, 60.0f * lbl_1_data_110[arg1].unk_0C);
}
}
}
s32 fn_1_5E6C(omObjData *object)
{
M460DllCameraStruct *var_r31 = object->data;
s32 var_r30 = 0;
if ((CharModelMotionEndCheck(var_r31->unk_00) != 0) && (CharModelMotionShiftIDGet(var_r31->unk_00) < 0)) {
var_r30 = 1;
}
return var_r30;
}
s32 fn_1_5EE0(omObjData *object, u32 arg1)
{
s32 var_r27 = 0;
if (fn_1_5E6C(object)) {
fn_1_5CE0(object, arg1);
var_r27 = 1;
}
return var_r27;
}
s32 lbl_1_data_1D4[5] = {
DATA_MAKE_NUM(DATADIR_M460, 0x1E),
DATA_MAKE_NUM(DATADIR_M460, 0x1F),
DATA_MAKE_NUM(DATADIR_M460, 0x20),
DATA_MAKE_NUM(DATADIR_M460, 0x21),
DATA_MAKE_NUM(DATADIR_M460, 0x22),
};
void fn_1_60B0(omObjData *object)
{
s32 var_r30;
s32 var_r29;
omSetTra(object, 0.0f, 0.0f, 0.0f);
var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M460, 0x1D));
object->model[0] = var_r30;
Hu3DModelLayerSet(var_r30, 1);
Hu3DModelShadowSet(var_r30);
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
for (var_r29 = 0; var_r29 < 5; var_r29++) {
object->motion[var_r29] = Hu3DJointMotionFile(var_r30, lbl_1_data_1D4[var_r29]);
}
CharModelEffectNpcInitSilent(var_r30, object->motion[1], 0);
CharModelEffectNpcInitSilent(var_r30, object->motion[2], 1);
CharModelEffectNpcInitSilent(var_r30, object->motion[3], 1);
object->work[1] = 0;
object->func = fn_1_61F4;
}
void fn_1_61F4(omObjData *object)
{
float var_f31;
float var_f30;
s32 var_r30;
s32 var_r29;
Vec sp1C[2] = {
{ -250.0f, 0.0f, -2200.0f },
{ 250.0f, 0.0f, -2200.0f },
};
Vec sp10;
s32 sp8[2] = { 6, 21 };
switch (object->work[1]) {
case 0:
if ((fn_1_4164() == 3) && (fn_1_419C() != 0) && (fn_1_4324() != 0)) {
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 0.0f, HU3D_MOTATTR_LOOP);
var_r30 = fn_1_42F0();
object->trans.x = sp1C[var_r30].x;
object->trans.y = sp1C[var_r30].y;
object->trans.z = sp1C[var_r30].z;
object->rot.y = 0.0f;
object->work[1] = 1;
object->work[2] = 0;
}
break;
case 1:
object->work[2]++;
if (object->work[2] > 18.0f) {
Hu3DMotionShiftSet(object->model[0], object->motion[2], 0.0f, 30.0f, HU3D_MOTATTR_LOOP);
object->work[1] = 2;
}
break;
case 2:
sp10.x = (*lbl_1_bss_40)->trans.x - object->trans.x;
sp10.y = 0.0f;
sp10.z = (*lbl_1_bss_40)->trans.z - object->trans.z;
object->rot.y = fn_1_47D0(object->rot.y, atan2d(sp10.x, sp10.z), 0.1f);
object->trans.z += 6.666667f;
if (fn_1_4358() != 0) {
HuAudFXPlay(0x3C);
Hu3DMotionShiftSet(object->model[0], object->motion[3], 0.0f, 30.0f, HU3D_MOTATTR_LOOP);
object->work[1] = 3;
object->work[3] = 0x3C;
}
break;
case 3:
Hu3DMotionSpeedSet(object->model[0], 0.9f);
var_r29 = Hu3DMotionTimeGet(object->model[0]);
for (var_r30 = 0; var_r30 < 2; var_r30++) {
if (var_r29 == sp8[var_r30]) {
var_f30 = 2.1166666f * object->work[3];
HuAudFXPlayVol(0x6B, var_f30);
}
}
sp10.x = (*lbl_1_bss_40)->trans.x - object->trans.x;
sp10.y = 0.0f;
sp10.z = (*lbl_1_bss_40)->trans.z - object->trans.z;
object->rot.y = fn_1_47D0(object->rot.y, atan2d(sp10.x, sp10.z), 0.1f);
if (object->trans.z < -900.0f) {
// depending on refresh rate?
object->trans.z += 11.666667f;
}
else {
var_f31 = PSVECMag(&sp10);
if (var_f31 < 20.0f) {
var_f31 = 0.0f;
}
else {
if (PSVECMag(&sp10) >= 100.0f) {
var_f31 = 100.0f;
}
var_f31 = 0.2f + (0.008f * var_f31);
var_f31 *= 11.666667f;
}
object->trans.x = object->trans.x + (var_f31 * sind(object->rot.y));
object->trans.z = object->trans.z + (var_f31 * cosd(object->rot.y));
}
if ((object->trans.z > 450.0f) && (object->work[3] != 0)) {
object->work[3]--;
}
break;
}
}

183
src/REL/m460Dll/score.c Normal file
View file

@ -0,0 +1,183 @@
#include "datadir_enum.h"
#include "game/data.h"
#include "REL/m460Dll.h"
#include "game/memory.h"
#include "game/esprite.h"
#ifndef __MWERKS__
#endif
typedef struct UnkM460DllScoreWork {
s32 unk_00;
s32 unk_04;
s16 unk_08;
s16 unk_0A;
s16 unk_0C[6];
s32 unk_18;
float unk_1C;
} UnkM460DllScoreWork; /* size = 0x20 */
typedef void (*UnkM460DllScoreFunc)(void);
void fn_1_9020(s32 arg0);
void fn_1_9050(omObjData *object);
void fn_1_916C(void);
void fn_1_91E4(void);
void fn_1_9270(void);
UnkM460DllScoreFunc lbl_1_data_380[3] = { fn_1_916C, fn_1_91E4, fn_1_9270 };
Process *lbl_1_bss_54;
omObjData *lbl_1_bss_50;
// ? lbl_1_rodata_3D0;
void fn_1_8CAC(Process *process, s16 arg1)
{
UnkM460DllScoreWork *var_r31;
u32 var_r30;
lbl_1_bss_54 = process;
lbl_1_bss_50 = omAddObjEx(lbl_1_bss_54, 0x800, 0, 0, 7, fn_1_9050);
lbl_1_bss_50->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM460DllScoreWork), MEMORY_DEFAULT_NUM);
var_r31 = lbl_1_bss_50->data;
var_r31->unk_08 = arg1;
var_r31->unk_0A = 0;
var_r31->unk_0C[4] = espEntry(0x590024, 2, 0);
espColorSet(var_r31->unk_0C[4], 0, 0, 0);
espTPLvlSet(var_r31->unk_0C[4], 0.5f);
espPosSet(var_r31->unk_0C[4], 508.0f, 64.0f);
var_r31->unk_0C[5] = espEntry(0x610037, 1, 0);
espPosSet(var_r31->unk_0C[5], 490.0f, 56.0f);
for (var_r30 = 0; var_r30 < 2; var_r30++) {
var_r31->unk_0C[var_r30] = espEntry(0x610030, 0, 0);
espPosSet(var_r31->unk_0C[var_r30], (var_r30 * 0x10) + 0x1FE, 56.0f);
espDispOff(var_r31->unk_0C[var_r30]);
}
for (var_r30 = 0; var_r30 < 2; var_r30++) {
var_r31->unk_0C[var_r30 + 2] = espEntry(0x610031, 1, 0);
espPosSet(var_r31->unk_0C[var_r30 + 2], (var_r30 * 0x10) + 0x1FE, 74.0f);
}
for (var_r30 = 0; var_r30 < 6; var_r30++) {
espDispOff(var_r31->unk_0C[var_r30]);
}
HuDataDirClose(DATA_MAKE_NUM(DATADIR_MGCONST, 0));
fn_1_9020(0);
}
void fn_1_8F38(void)
{
s32 var_r31;
UnkM460DllScoreWork *var_r30 = lbl_1_bss_50->data;
for (var_r31 = 0; var_r31 < 6; var_r31++) {
espKill(var_r30->unk_0C[var_r31]);
}
HuMemDirectFree(lbl_1_bss_50->data);
}
void fn_1_8FAC(s32 arg0)
{
s32 sp8;
s32 var_r3;
switch (arg0) {
case 0:
fn_1_9020(1);
break;
case 1:
fn_1_9020(2);
break;
}
}
void fn_1_8FFC(void)
{
fn_1_9020(0);
}
void fn_1_9020(s32 arg0)
{
UnkM460DllScoreWork *var_r31;
var_r31 = lbl_1_bss_50->data;
var_r31->unk_00 = arg0;
var_r31->unk_04 = 0;
}
void fn_1_9050(omObjData *arg0)
{
UnkM460DllScoreWork *var_r31;
s16 var_r30;
var_r31 = lbl_1_bss_50->data;
lbl_1_data_380[var_r31->unk_00]();
var_r30 = var_r31->unk_08;
espBankSet(var_r31->unk_0C[0], var_r30 / 10);
var_r30 -= (var_r30 / 10) * 10;
espBankSet(var_r31->unk_0C[1], var_r30);
var_r30 = var_r31->unk_0A;
espBankSet(var_r31->unk_0C[2], var_r30 / 10);
var_r30 -= (var_r30 / 10) * 10;
espBankSet(var_r31->unk_0C[3], var_r30);
}
void fn_1_916C(void)
{
UnkM460DllScoreWork *var_r31;
s32 var_r30;
var_r31 = lbl_1_bss_50->data;
if (var_r31->unk_04 == 0) {
for (var_r30 = 0; var_r30 < 6; var_r30++) {
espDispOff(var_r31->unk_0C[var_r30]);
}
var_r31->unk_04++;
}
}
void fn_1_91E4(void)
{
UnkM460DllScoreWork *var_r31;
s16 var_r30;
var_r31 = lbl_1_bss_50->data;
if (var_r31->unk_04 == 0) {
for (var_r30 = 0; var_r30 < 6; var_r30++) {
espDispOn(var_r31->unk_0C[var_r30]);
}
var_r31->unk_04++;
}
var_r31->unk_0A = fn_1_4370();
}
void fn_1_9270(void)
{
UnkM460DllScoreWork *var_r31;
s32 var_r30;
var_r31 = lbl_1_bss_50->data;
if (var_r31->unk_04 == 0) {
var_r31->unk_18 = 0;
var_r31->unk_1C = 1.0f;
if (var_r31->unk_0A > var_r31->unk_08) {
var_r31->unk_08 = var_r31->unk_0A;
}
var_r31->unk_04++;
}
if (var_r31->unk_18 == 0) {
if ((var_r31->unk_1C += 0.02f) >= 1.2f) {
var_r31->unk_1C = 1.2f;
var_r31->unk_18 = 1;
}
}
else {
if ((var_r31->unk_1C -= 0.04f) <= 1.0f) {
var_r31->unk_1C = 1.0f;
var_r31->unk_18 = 0;
}
}
for (var_r30 = 0; var_r30 <= 1; var_r30++) {
espScaleSet(var_r31->unk_0C[var_r30], var_r31->unk_1C, var_r31->unk_1C);
}
espScaleSet(var_r31->unk_0C[5], var_r31->unk_1C, var_r31->unk_1C);
}

View file

@ -223,20 +223,20 @@ void fn_1_580(s32 *arg0, s32 arg1, s32 arg2)
espBankSet(arg0[arg1 + 1], 10);
espBankSet(arg0[arg1 + 4], 11);
if (36000 <= arg2) {
arg2 = 35999;
if (600 * REFRESH_RATE <= arg2) {
arg2 = 600 * REFRESH_RATE - 1;
}
var_r30 = arg2 / 3600;
arg2 -= var_r30 * 3600;
var_r30 = arg2 / (60 * REFRESH_RATE);
arg2 -= var_r30 * (60 * REFRESH_RATE);
if (var_r30 > 9) {
var_r30 = 9;
}
espBankSet(arg0[arg1], var_r30);
var_r30 = arg2 / 60;
arg2 -= var_r30 * 60;
var_r30 = arg2 / REFRESH_RATE;
arg2 -= var_r30 * REFRESH_RATE;
espBankSet(arg0[arg1 + 2], var_r30 / 10);
espBankSet(arg0[arg1 + 3], var_r30 % 10);
var_r30 = 101.5f * arg2 / 60.0f;
var_r30 = 101.5f * arg2 / REFRESH_RATE;
espBankSet(arg0[arg1 + 5], var_r30 / 10);
espBankSet(arg0[arg1 + 6], var_r30 % 10);
}

View file

@ -3768,6 +3768,8 @@ s32 lbl_1_data_5BC[4][2] = {
{ 0x77, 0x18 },
{ 0xA5, 0x18 },
};
#if VERSION_NTSC
float lbl_1_data_5DC[5][5] = {
{ 262.0f, 119.0f, 1.3f, 227.0f, 455.0f },
{ 314.0f, 168.0f, 0.75f, 265.0f, 416.0f },
@ -3775,6 +3777,16 @@ float lbl_1_data_5DC[5][5] = {
{ 418.0f, 240.0f, 0.75f, 300.0f, 381.0f },
{ -1.0f, 289.0f, 1.3f, 220.0f, 460.0f },
};
#else
float lbl_1_data_5DC[5][5] = {
{ 262.0f, 119.0f, 1.3f, 227.0f, 455.0f },
{ 314.0f, 168.0f, 0.75f, 300.0f, 381.0f },
{ 366.0f, 204.0f, 0.75f, 240.0f, 440.0f },
{ 418.0f, 240.0f, 0.75f, 300.0f, 381.0f },
{ -1.0f, 289.0f, 1.3f, 220.0f, 460.0f },
};
#endif
s32 lbl_1_data_640[4][5] = {
{ 0xB4, 0x60, 0x87, 0, 0 },
{ 0xFC, 0xB8, 0xF6, 0xD4, 0x1D4 },
@ -4633,6 +4645,18 @@ void fn_1_18F74(omObjData *arg0, MentDllUnkBss35BCStruct *arg1)
}
}
#if VERSION_PAL
#define POSX1 353
#define POSX2 325
#else
#define POSX1 321
#define POSX2 295
#endif
void fn_1_190E8(void)
{
s32 var_r31;
@ -4690,16 +4714,18 @@ void fn_1_190E8(void)
HuSprPosSet(var_r30, 0x47, 340.0f, lbl_1_data_5DC[0][1]);
HuSprScaleSet(var_r30, 0x47, 0.0f, 0.0f);
HuSprAttrReset(var_r30, 0x47, 4);
#if VERSION_NTSC
HuSprAttrReset(var_r30, 0x48, 4);
HuSprPosSet(var_r30, 0x48, 366.0f, lbl_1_data_5DC[1][1]);
HuSprAttrReset(var_r30, 0x49, 4);
HuSprPosSet(var_r30, 0x49, 367.0f, 2.0f + lbl_1_data_5DC[1][1]);
#endif
for (var_r31 = 0; var_r31 < 2; var_r31++) {
HuSprAttrReset(var_r30, var_r31 + 0x4A, 4);
HuSprPosSet(var_r30, var_r31 + 0x4A, 0x141 - (var_r31 * 0x1A), lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, var_r31 + 0x4A, POSX1 - (var_r31 * (POSX1-POSX2)), lbl_1_data_5DC[1][1]);
HuSprBankSet(var_r30, var_r31 + 0x4A, var_r31);
HuSprAttrReset(var_r30, var_r31 + 0x4C, 4);
HuSprPosSet(var_r30, var_r31 + 0x4C, 0x142 - (var_r31 * 0x1A), 2.0f + lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, var_r31 + 0x4C, POSX1+1 - (var_r31 * (POSX1-POSX2)), 2.0f + lbl_1_data_5DC[1][1]);
HuSprBankSet(var_r30, var_r31 + 0x4C, var_r31);
}
HuSprAttrReset(var_r30, 0x4E, 4);
@ -4964,23 +4990,29 @@ void fn_1_19C98(omObjData *arg0, MentDllUnkBss35BCStruct *arg1)
break;
case 1:
if (var_r26 == 1) {
#if VERSION_NTSC
HuSprPosSet(var_r30, 0x48, 366.0f + var_f31, lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x49, 367.0f + var_f31, 2.0f + lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x4A, 321.0f + var_f31, lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x4C, 322.0f + var_f31, 2.0f + lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x4B, 295.0f + var_f31, lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x4D, 296.0f + var_f31, 2.0f + lbl_1_data_5DC[1][1]);
#endif
HuSprPosSet(var_r30, 0x4A, POSX1 + var_f31, lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x4C, POSX1+1 + var_f31, 2.0f + lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x4B, POSX2 + var_f31, lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x4D, POSX2+1 + var_f31, 2.0f + lbl_1_data_5DC[1][1]);
}
else {
#if VERSION_NTSC
HuSprPosSet(var_r30, 0x48, 366.0f - var_f31, lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x49, 367.0f - var_f31, 2.0f + lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x4A, 321.0f - var_f31, lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x4C, 322.0f - var_f31, 2.0f + lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x4B, 295.0f - var_f31, lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x4D, 296.0f - var_f31, 2.0f + lbl_1_data_5DC[1][1]);
#endif
HuSprPosSet(var_r30, 0x4A, POSX1 - var_f31, lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x4C, POSX1+1 - var_f31, 2.0f + lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x4B, POSX2 - var_f31, lbl_1_data_5DC[1][1]);
HuSprPosSet(var_r30, 0x4D, POSX2+1 - var_f31, 2.0f + lbl_1_data_5DC[1][1]);
}
#if VERSION_NTSC
HuSprScaleSet(var_r30, 0x48, 1.0f, var_f30);
HuSprScaleSet(var_r30, 0x49, 1.0f, var_f30);
#endif
HuSprScaleSet(var_r30, 0x4A, 1.0f, var_f30);
HuSprScaleSet(var_r30, 0x4C, 1.0f, var_f30);
HuSprScaleSet(var_r30, 0x4B, 1.0f, var_f30);
@ -5103,6 +5135,9 @@ void fn_1_19C98(omObjData *arg0, MentDllUnkBss35BCStruct *arg1)
}
}
#undef POSX2
#undef POSX1
void fn_1_1BB2C(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3)
{
s32 var_r31;

View file

@ -13,7 +13,7 @@
#include "REL/mpexDll.h"
s32 lbl_1_data_788[0xC6] = {
static s32 fontDataTbl[0xC6] = {
0,
0,
0,
@ -229,7 +229,7 @@ s32 fn_1_1CB80(SeqWork *arg0, u8 *arg1, s16 arg2)
s16 var_r20;
s16 var_r19;
var_r27 = lbl_1_data_788;
var_r27 = fontDataTbl;
for (var_r23 = 0; var_r23 < 0x10; var_r23++) {
if (arg0->spr_grp[var_r23] == -1) {

View file

@ -1606,7 +1606,7 @@ void fn_1_9988(s32 arg0)
u32 var_r29;
fn_1_1B834();
if (((mgRecordExtra == 0) && (arg0 != 4)) || ((mgRecordExtra >= 0x8CA0) && (arg0 == 4))) {
if (((mgRecordExtra == 0) && (arg0 != 4)) || ((mgRecordExtra >= 600*REFRESH_RATE) && (arg0 == 4))) {
HuAudFXPlay(0x4A);
fn_1_25C4(lbl_1_bss_2D8[1].unk_00, 1, 3, 0xF, 1);
fn_1_1BA78(arg0 + 0x330096, -1, -1);
@ -1615,23 +1615,23 @@ void fn_1_9988(s32 arg0)
else {
if ((arg0 == 4) || (arg0 == 8)) {
var_r31 = mgRecordExtra;
var_r30 = var_r31 / 36000;
var_r31 -= var_r30 * 36000;
var_r29 = var_r31 / 3600;
var_r31 -= var_r29 * 3600;
var_r30 = var_r31 / (600*REFRESH_RATE);
var_r31 -= var_r30 * (600*REFRESH_RATE);
var_r29 = var_r31 / (60*REFRESH_RATE);
var_r31 -= var_r29 * (60*REFRESH_RATE);
sprintf(lbl_1_bss_120, "%d", var_r29);
fn_1_1BB4C((u32)&lbl_1_bss_120, 0);
var_r30 = var_r31 / 600;
var_r31 -= var_r30 * 600;
var_r29 = var_r31 / 60;
var_r31 -= var_r29 * 60;
var_r30 = var_r31 / (10*REFRESH_RATE);
var_r31 -= var_r30 * (10*REFRESH_RATE);
var_r29 = var_r31 / REFRESH_RATE;
var_r31 -= var_r29 * REFRESH_RATE;
sprintf(lbl_1_bss_118, "%d%d", var_r30, var_r29);
fn_1_1BB4C((u32)lbl_1_bss_118, 1);
if (arg0 == 8) {
var_r31 = 1.6916666666666667 * (float)var_r31;
var_r31 = (101.5/REFRESH_RATE) * (float)var_r31;
}
else {
var_r31 = 1.6666666666666667 * (float)var_r31;
var_r31 = (100.0/REFRESH_RATE) * (float)var_r31;
}
var_r30 = var_r31 / 10;
var_r31 -= var_r30 * 0xA;
@ -1856,12 +1856,21 @@ void fn_1_AD34(void)
HuAudFXPlay(0x9E);
fn_1_1B7D0(0xA5);
lbl_1_bss_1B8[0].unk_04 = (MpexDllUnkFunc2)fn_1_A0E4;
if (((mgRecordExtra == 0) && (lbl_1_bss_1B0 != 4)) || ((mgRecordExtra >= 0x8CA0) && (lbl_1_bss_1B0 == 4))) {
#if VERSION_NTSC
if (((mgRecordExtra == 0) && (lbl_1_bss_1B0 != 4)) || ((mgRecordExtra >= 600*REFRESH_RATE) && (lbl_1_bss_1B0 == 4))) {
fn_1_25C4(lbl_1_bss_1B8[0].unk_00, 1, 5, 0xF, 0);
}
else {
fn_1_25C4(lbl_1_bss_1B8[0].unk_00, 1, 4, 0xF, 0);
}
#else
if (((mgRecordExtra == 0) && (lbl_1_bss_1B0 != 4)) || ((mgRecordExtra >= 500*REFRESH_RATE) && (lbl_1_bss_1B0 == 4))) {
fn_1_25C4(lbl_1_bss_1B8[0].unk_00, 1, 5, 0xF, 0);
}
else {
fn_1_25C4(lbl_1_bss_1B8[0].unk_00, 1, 4, 0xF, 0);
}
#endif
fn_1_BC18();
fn_1_1B7D0(1);
HuAudFXPlay(0x9F);
@ -2232,6 +2241,7 @@ void fn_1_C860(void)
s32 fn_1_C898(s32 arg0, s32 arg1, s32 arg2, s32 arg3)
{
#if VERSION_NTSC
s32 sp88[5][9] = {
{ 0x64, 0xC8, 0x12C, 0x136, 0x140, 0x14A, 0x154, 0x15E, 0x168 },
{ 0x05, 0x0A, 0x0F, 0x14, 0x19, 0x1E, 0x23, 0x28, 0x32 },
@ -2244,6 +2254,21 @@ s32 fn_1_C898(s32 arg0, s32 arg1, s32 arg2, s32 arg3)
{ 0x4650, 0x3840, 0x2A30, 0x1C20, 0x1770, 0x12C0, 0x0E10, 0, 0 },
{ 0x4650, 0x3840, 0x2A30, 0x2328, 0x1C20, 0x19C8, 0x1770, 0x1644, 0x1518 },
};
#else
s32 sp88[5][9] = {
{ 0x32, 0x64, 0xC8, 0x12C, 0x136, 0x140, 0x14A, 0x154, 0x15E },
{ 0x05, 0x0A, 0x0F, 0x14, 0x19, 0x1E, 0x23, 0x28, 0x32 },
{ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 },
{ 60*REFRESH_RATE, 120*REFRESH_RATE, 180*REFRESH_RATE, 240*REFRESH_RATE, 300*REFRESH_RATE,
360*REFRESH_RATE, 420*REFRESH_RATE, 480*REFRESH_RATE, 540*REFRESH_RATE },
{ 0x0A, 0xF, 0x14, 0x19, 0x1E, 0x23, 0x28, 0x2B, 0x2D },
};
s32 sp1C[3][9] = {
{ 300*REFRESH_RATE, 240*REFRESH_RATE, 180*REFRESH_RATE, 120*REFRESH_RATE, 60*REFRESH_RATE, 0, 0, 0, 0 },
{ 300*REFRESH_RATE, 240*REFRESH_RATE, 180*REFRESH_RATE, 120*REFRESH_RATE, 110*REFRESH_RATE, 100*REFRESH_RATE, 90*REFRESH_RATE, 0, 0 },
{ 300*REFRESH_RATE, 240*REFRESH_RATE, 180*REFRESH_RATE, 170*REFRESH_RATE, 124*REFRESH_RATE, 150*REFRESH_RATE, 140*REFRESH_RATE, 130*REFRESH_RATE, 120*REFRESH_RATE },
};
#endif
s32 sp10[3];
s32 var_r31;
s32 var_r30;
@ -2324,6 +2349,7 @@ void fn_1_CA98(s32 arg0, u32 arg1)
case 3:
OSReport("#################### HI-SCORE(%d) : %d\n", arg1, GWGameStat.mg_record[sp8[arg1]]);
var_r31 = GWGameStat.mg_record[sp8[arg1]];
#if VERSION_NTSC
if (var_r31 < 0xA) {
sprintf(lbl_1_bss_FC, " %d", var_r31);
}
@ -2333,28 +2359,31 @@ void fn_1_CA98(s32 arg0, u32 arg1)
else {
sprintf(lbl_1_bss_FC, "%d", var_r31);
}
#else
sprintf(lbl_1_bss_FC, " %d", var_r31);
#endif
HuWinInsertMesSet(arg0, (u32)lbl_1_bss_FC, 0);
break;
case 8:
OSReport("#################### HI-SCORE(%d) : %d\n", arg1, GWGameStat.mg_record[sp8[arg1]]);
var_r31 = GWGameStat.mg_record[sp8[arg1]];
var_r29 = var_r31 / 36000;
var_r31 -= var_r29 * 36000;
var_r28 = var_r31 / 3600;
var_r31 -= var_r28 * 3600;
var_r29 = var_r31 / (600 *REFRESH_RATE);
var_r31 -= var_r29 * (600 *REFRESH_RATE);
var_r28 = var_r31 / (60 *REFRESH_RATE);
var_r31 -= var_r28 * (60 *REFRESH_RATE);
sprintf(lbl_1_bss_F4, " %d", var_r28);
HuWinInsertMesSet(arg0, (u32)lbl_1_bss_F4, 0);
var_r29 = var_r31 / 600;
var_r31 -= var_r29 * 600;
var_r28 = var_r31 / 60;
var_r31 -= var_r28 * 60;
var_r29 = var_r31 / (10 *REFRESH_RATE);
var_r31 -= var_r29 * (10 *REFRESH_RATE);
var_r28 = var_r31 / REFRESH_RATE;
var_r31 -= var_r28 * REFRESH_RATE;
sprintf(lbl_1_bss_EC, "%d%d", var_r29, var_r28);
HuWinInsertMesSet(arg0, (u32)lbl_1_bss_EC, 1);
var_r31 = 1.6916666666666667 * (float)var_r31;
var_r31 = (101.5/REFRESH_RATE) * (float)var_r31;
var_r29 = var_r31 / 10;
var_r31 -= var_r29 * 0xA;
var_r28 = var_r31;
if (GWGameStat.mg_record[sp8[arg1]] >= 0x8C9F) {
if (GWGameStat.mg_record[sp8[arg1]] >= ((600*REFRESH_RATE)-1)) {
sprintf(lbl_1_bss_E4, "99");
}
else {
@ -2678,24 +2707,24 @@ void fn_1_E568(void)
HuSprPosSet(var_r29, 0x0D + var_r28 + (var_r31 * 7), (var_r28 * 0x14) + 0x512, (var_r31 * 0x38) + 0xBA);
}
var_r30 = GWGameStat.mg_record[var_r31 + 6];
var_r27 = var_r30 / 36000;
var_r30 -= var_r27 * 36000;
var_r26 = var_r30 / 3600;
var_r30 -= var_r26 * 3600;
var_r27 = var_r30 / (600*REFRESH_RATE);
var_r30 -= var_r27 * (600*REFRESH_RATE);
var_r26 = var_r30 / (60*REFRESH_RATE);
var_r30 -= var_r26 * (60*REFRESH_RATE);
HuSprBankSet(var_r29, (var_r31 * 7) + 0xD, var_r26);
HuSprBankSet(var_r29, (var_r31 * 7) + 0xE, 0xA);
var_r27 = var_r30 / 600;
var_r30 -= var_r27 * 600;
var_r26 = var_r30 / 60;
var_r30 -= var_r26 * 60;
var_r27 = var_r30 / (10*REFRESH_RATE);
var_r30 -= var_r27 * (10*REFRESH_RATE);
var_r26 = var_r30 / REFRESH_RATE;
var_r30 -= var_r26 * REFRESH_RATE;
HuSprBankSet(var_r29, (var_r31 * 7) + 0xF, var_r27);
HuSprBankSet(var_r29, (var_r31 * 7) + 0x10, var_r26);
HuSprBankSet(var_r29, (var_r31 * 7) + 0x11, 0xB);
var_r30 = 1.6666666666666667 * (float)var_r30;
var_r30 = (100.0/REFRESH_RATE) * (float)var_r30;
var_r27 = var_r30 / 10;
var_r30 -= var_r27 * 0xA;
var_r26 = var_r30;
if (GWGameStat.mg_record[var_r31 + 6] == 0x8C9F) {
if (GWGameStat.mg_record[var_r31 + 6] == ((600*REFRESH_RATE)-1)) {
HuSprBankSet(var_r29, (var_r31 * 7) + 0x12, 9);
HuSprBankSet(var_r29, (var_r31 * 7) + 0x13, 9);
}
@ -3426,26 +3455,38 @@ void fn_1_121E8(void)
else if (GWGameStat.mg_record[9] >= 0x63) {
GWGameStat.mg_record[9] = 0x63;
}
#if VERSION_NTSC
OSReport("HIScore 451A(0-35999):%d\n", GWGameStat.mg_record[6]);
#else
OSReport("HIScore 451A(0-29999):%d\n", GWGameStat.mg_record[6]);
#endif
if (GWGameStat.mg_record[6] == 0) {
GWGameStat.mg_record[6] = 0;
}
else if (GWGameStat.mg_record[6] >= 0x8C9F) {
GWGameStat.mg_record[6] = 0x8C9F;
else if (GWGameStat.mg_record[6] >= ((REFRESH_RATE*600)-1)) {
GWGameStat.mg_record[6] = ((REFRESH_RATE*600)-1);
}
#if VERSION_NTSC
OSReport("HIScore 451B(0-35999):%d\n", GWGameStat.mg_record[7]);
#else
OSReport("HIScore 451B(0-29999):%d\n", GWGameStat.mg_record[7]);
#endif
if (GWGameStat.mg_record[7] == 0) {
GWGameStat.mg_record[7] = 0;
}
else if (GWGameStat.mg_record[7] >= 0x8C9F) {
GWGameStat.mg_record[7] = 0x8C9F;
else if (GWGameStat.mg_record[7] >= ((REFRESH_RATE*600)-1)) {
GWGameStat.mg_record[7] = ((REFRESH_RATE*600)-1);
}
#if VERSION_NTSC
OSReport("HIScore 451C(0-35999):%d\n", GWGameStat.mg_record[8]);
#else
OSReport("HIScore 451C(0-29999):%d\n", GWGameStat.mg_record[8]);
#endif
if (GWGameStat.mg_record[8] == 0) {
GWGameStat.mg_record[8] = 0;
}
else if (GWGameStat.mg_record[8] >= 0x8C9F) {
GWGameStat.mg_record[8] = 0x8C9F;
else if (GWGameStat.mg_record[8] >= ((REFRESH_RATE*600)-1)) {
GWGameStat.mg_record[8] = ((REFRESH_RATE*600)-1);
}
OSReport("HIScore 442(0-999):%d\n", GWGameStat.mg_record[4]);
if (GWGameStat.mg_record[4] == 0) {
@ -3468,12 +3509,16 @@ void fn_1_121E8(void)
else if (GWGameStat.mg_record[0xC] >= 0x63) {
GWGameStat.mg_record[0xC] = 0x63;
}
OSReport("HIScore 461(0-35999):%d\n", GWGameStat.mg_record[0xD]);
#if VERSION_NTSC
OSReport("HIScore 461(0-35999):%d\n", GWGameStat.mg_record[13]);
#else
OSReport("HIScore 461(0-29999):%d\n", GWGameStat.mg_record[13]);
#endif
if (GWGameStat.mg_record[0xD] == 0) {
GWGameStat.mg_record[0xD] = 0;
}
else if (GWGameStat.mg_record[0xD] >= 0x8C9F) {
GWGameStat.mg_record[0xD] = 0x8C9F;
else if (GWGameStat.mg_record[0xD] >= ((REFRESH_RATE*600)-1)) {
GWGameStat.mg_record[0xD] = ((REFRESH_RATE*600)-1);
}
OSReport("HIScore 462(0-99):%d\n", GWGameStat.mg_record[0xE]);
if (GWGameStat.mg_record[0xE] == 0) {

View file

@ -10,6 +10,7 @@
#include "dolphin.h"
#include "math.h"
#include "version.h"
#define RECORD_TYPE_BOARD 0
#define RECORD_TYPE_MG 1
@ -572,7 +573,7 @@ static void ShowBoard(omObjData *object, s32 board)
espPosSet(work->sprList[board], 275.0f, 72.0f);
value = work->boardRecord[work->board].playCount;
for (i = 0; i < PLAY_COUNT_NUM_DIGITS; i++) {
espPosSet(work->sprList[i + 11], 323.0f + 20.0f * i, 116.0f);
espPosSet(work->sprList[i + 11], (VERSION_NTSC ? 323.0f : 392.0f) + 20.0f * i, 116.0f);
if (value > 999) {
espBankSet(work->sprList[i + 11], i + 10);
}
@ -583,7 +584,7 @@ static void ShowBoard(omObjData *object, s32 board)
espPosSet(work->sprList[8], 416.0f, 120.0f);
value = work->boardRecord[work->board].maxCoins;
for (i = 0; i < MAX_COINS_NUM_DIGITS; i++) {
espPosSet(work->sprList[i + 15], 364.0f + 20.0f * i, 268.0f);
espPosSet(work->sprList[i + 15], (VERSION_NTSC ? 364.0f : 392.0f) + 20.0f * i, 268.0f);
if (value > 999) {
espBankSet(work->sprList[i + 15], i + 10);
}
@ -591,10 +592,12 @@ static void ShowBoard(omObjData *object, s32 board)
espBankSet(work->sprList[i + 15], GetDigit(value, 3 - i));
}
}
#if VERSION_NTSC
espPosSet(work->sprList[9], 456.0f, 268.0f);
#endif
value = work->boardRecord[work->board].maxStars;
for (i = 0; i < MAX_STARS_NUM_DIGITS; i++) {
espPosSet(work->sprList[i + 19], 364.0f + 20.0f * i, 312.0f);
espPosSet(work->sprList[i + 19], (VERSION_NTSC ? 364.0f : 392.0f) + 20.0f * i, 312.0f);
if (value > 999) {
espBankSet(work->sprList[i + 19], i + 10);
}
@ -602,7 +605,9 @@ static void ShowBoard(omObjData *object, s32 board)
espBankSet(work->sprList[i + 19], GetDigit(value, 3 - i));
}
}
#if VERSION_NTSC
espPosSet(work->sprList[10], 456.0f, 312.0f);
#endif
for (i = 0; i < NUM_CHARACTERS; i++) {
espPosSet(work->sprList[i + 49], 92.0f + 50.0f * i, 200.0f);
for (j = 0; j < WIN_COUNT_NUM_DIGITS; j++) {
@ -616,11 +621,15 @@ static void ShowBoard(omObjData *object, s32 board)
for (i = 0; i < PLAY_COUNT_NUM_DIGITS; i++) {
espDispOn(work->sprList[i + 11]);
}
#if VERSION_NTSC
espDispOn(work->sprList[8]);
#endif
for (i = 0; i < MAX_COINS_NUM_DIGITS; i++) {
espDispOn(work->sprList[i + 15]);
}
#if VERSION_NTSC
espDispOn(work->sprList[9]);
#endif
for (i = 0; i < MAX_STARS_NUM_DIGITS; i++) {
espDispOn(work->sprList[i + 19]);
}
@ -759,14 +768,14 @@ static void ShowMG(omObjData *object, s32 page)
}
break;
case DISPLAY_TYPE_TIME:
timeMin = value / 3600;
timeSec = (value % 3600) / 60;
timeCenti = (value % 3600) % 60;
timeMin = value / (60 * REFRESH_RATE);
timeSec = (value % (60 * REFRESH_RATE)) / REFRESH_RATE;
timeCenti = (value % (60 * REFRESH_RATE)) % REFRESH_RATE;
if (mgTbl[mg].id == 405 || mgTbl[mg].id == 432) {
timeCenti *= 1.6916667f;
timeCenti *= (101.5f / REFRESH_RATE);
}
else {
timeCenti *= 1.6666666f;
timeCenti *= (100.0f / REFRESH_RATE);
}
for (j = 1; j < MG_TIME_NUM_DIGITS; j++) {
espPosSet(work->sprList[i * 8 + 89 + j], 336.0f + 16.0f * j, 116.0f + 40.0f * i);

View file

@ -5,6 +5,8 @@
#include "game/process.h"
#include "game/sprite.h"
#include "version.h"
static void ExecWindow(void);
OptionWindow *OptionWinCreate(s32 id)
@ -33,13 +35,13 @@ OptionWindow *OptionWinCreate(s32 id)
HuWinMesSpeedSet(work->window, 0);
break;
case 2:
work->window = HuWinExCreateStyled(-10000.0f, 88.0f, 224, 34, -1, 0);
work->window = HuWinExCreateStyled(-10000.0f, 88.0f, VERSION_NTSC ? 224 : 320, 34, -1, 0);
HuWinAttrSet(work->window, 0x800);
HuWinBGTPLvlSet(work->window, 0.0f);
HuWinMesSpeedSet(work->window, 0);
break;
case 3:
work->window = HuWinExCreateStyled(175.0f, 100.0f, 300, 34, -1, 0);
work->window = HuWinExCreateStyled(175.0f, 100.0f, VERSION_NTSC ? 300 : 320, 34, -1, 0);
HuWinBGTPLvlSet(work->window, 0.0f);
HuWinMesSpeedSet(work->window, 0);
break;

View file

@ -6,7 +6,9 @@
#include "math.h"
s32 lbl_1_data_0 = 100;
#if VERSION_NTSC
s32 lbl_1_bss_0[192];
#endif
void fn_1_0(void)
{

View file

@ -178,9 +178,32 @@ static StaffData staffData[] = {
{ 0x0035005F, 2, 0.0f, 0, 0, 0 },
{ 0x00350060, 2, 0.0f, 0, 0, 0 },
{ -3, 0, 48.0f, 0, 0, 0 },
#if VERSION_PAL
{ 0x00340026, 0, 0.0f, 0, 0, 0 },
{ -3, 0, 24.0f, 0, 0, 0 },
{ 0x00340027, 1, 0.0f, 0, 0, 0 },
{ -3, 0, 24.0f, 0, 0, 0 },
{ 0x00340028, 1, 0.0f, 0, 0, 0 },
{ 0x00350061, 2, 0.0f, 0, 0, 0 },
{ -3, 0, 24.0f, 0, 0, 0 },
{ 0x00340029, 1, 0.0f, 0, 0, 0 },
{ 0x0034002A, 1, 0.0f, 0, 0, 0 },
{ 0x00350062, 2, 0.0f, 0, 0, 0 },
{ 0x0034002B, 1, 0.0f, 0, 0, 0 },
{ 0x00350063, 2, 0.0f, 0, 0, 0 },
{ 0x0034002C, 1, 0.0f, 0, 0, 0 },
{ 0x00350064, 2, 0.0f, 0, 0, 0 },
{ 0x0034002D, 1, 0.0f, 0, 0, 0 },
{ 0x00350065, 2, 0.0f, 0, 0, 0 },
{ -3, 0, 24.0f, 0, 0, 0 },
{ 0x0034002E, 1, 0.0f, 0, 0, 0 },
{ -3, 0, 72.0f, 0, 0, 0 },
#endif
{ 0x00340016, 0, 0.0f, 0, 0, 0 },
{ 0x00350044, 2, 0.0f, 0, 0, 0 },
#if VERSION_NTSC
{ 0x00350045, 2, 0.0f, 0, 0, 0 },
#endif
{ -3, 0, 24.0f, 0, 0, 0 },
{ 0x00350046, 2, 0.0f, 0, 0, 0 },
{ 0x00350047, 2, 0.0f, 0, 0, 0 },
@ -216,7 +239,11 @@ static StaffData staffData[] = {
{ -1, 0, 0.0f, 0, 0, 0 },
};
#if VERSION_NTSC
static float staffLogoPosTbl[] = { 460.0f, 293.0f, 293.0f };
#else
static float staffLogoPosTbl[] = { 460.0f, 290.0f, 293.0f };
#endif
static void MainProc(void);
static void CreateStaff(void);
@ -305,7 +332,36 @@ static void CreateStaff(void)
}
for (var_r31 = 0; var_r31 < 3; var_r31++) {
int languageNo;
#if VERSION_NTSC
var_r29 = HuDataSelHeapReadNum(var_r31 + DATA_MAKE_NUM(DATADIR_STAFF, 0x1A), MEMORY_DEFAULT_NUM, HEAP_DATA);
#else
if(var_r31 == 2) {
switch(GWGameStat.language) {
case 1:
languageNo = 0;
break;
case 2:
languageNo = 1;
break;
case 4:
languageNo = 3;
break;
default:
languageNo = 2;
break;
}
var_r29 = HuDataSelHeapReadNum(var_r31 + DATA_MAKE_NUM(DATADIR_STAFF, 0x1A) + languageNo, MEMORY_DEFAULT_NUM, HEAP_DATA);
} else {
var_r29 = HuDataSelHeapReadNum(var_r31 + DATA_MAKE_NUM(DATADIR_STAFF, 0x1A), MEMORY_DEFAULT_NUM, HEAP_DATA);
}
#endif
var_r28 = HuSprAnimRead(var_r29);
var_r30 = HuSprCreate(var_r28, 256, 0);
staffLogoGroup[var_r31] = HuSprGrpCreate(1);
@ -319,7 +375,11 @@ static void CreateStaff(void)
HuSprGrpPosSet(thpGroup, 280.0f, 200.0f);
HuSprAttrSet(thpGroup, 0, HUSPR_ATTR_DISPOFF);
HuTHPStop();
#if VERSION_NTSC
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_STAFF, 0x1D), MEMORY_DEFAULT_NUM, HEAP_DATA);
#else
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_STAFF, 0x20), MEMORY_DEFAULT_NUM, HEAP_DATA);
#endif
var_r28 = HuSprAnimRead(var_r29);
var_r30 = HuSprCreate(var_r28, 16385, 0);
thpCoverGroup = HuSprGrpCreate(1);
@ -462,12 +522,19 @@ static void ShowPicture(void)
HuSprTPLvlSet(imgGroup[currImg], 0, 1.0f);
while (TRUE) {
#if VERSION_NTSC
if (currImg >= 24) {
HuPrcSleep(430);
}
else {
} else {
HuPrcSleep(550);
}
#else
if (currImg >= 24) {
HuPrcSleep(480);
} else {
HuPrcSleep(600);
}
#endif
if (currImg >= 25) {
break;
}
@ -548,7 +615,11 @@ static void MainProc(void)
HuPrcVSleep();
}
HuSprGrpPosSet(staffLogoGroup[1], var_f29, 400.0f);
#if VERSION_NTSC
HuPrcSleep(240);
#else
HuPrcSleep(60);
#endif
HuSprAttrReset(thpGroup, 0, HUSPR_ATTR_DISPOFF);
HuSprAttrReset(thpCoverGroup, 0, HUSPR_ATTR_DISPOFF);
HuTHPRestart();
@ -579,15 +650,20 @@ static void MainProc(void)
HuSprAttrSet(staffLogoGroup[1], 0, HUSPR_ATTR_DISPOFF);
HuPrcSleep(120);
HuSprAttrReset(staffLogoGroup[2], 0, HUSPR_ATTR_DISPOFF);
#if VERSION_NTSC
HuSprGrpPosSet(staffLogoGroup[2], 280.0f, 240.0f);
#else
HuSprGrpPosSet(staffLogoGroup[2], 275.0f, 240.0f);
#endif
for (var_r31 = 0, var_f31 = 0.0f; var_r31 < 30; var_r31++, var_f31 += 1.0f / 30.0f) {
HuSprTPLvlSet(staffLogoGroup[2], 0, var_f31);
HuPrcVSleep();
}
#if VERSION_NTSC
HuPrcSleep(600);
#else
HuPrcSleep(480);
#endif
while (TRUE) {
for (var_r31 = 0; var_r31 < 4; var_r31++) {
if (HuPadBtn[var_r31] & PAD_BUTTON_START) {

View file

@ -248,7 +248,7 @@ void fn_1_9DD8(void)
}
lbl_1_bss_72C = 0;
lbl_1_bss_74C = 5;
lbl_1_bss_748 = 0x3C;
lbl_1_bss_748 = REFRESH_RATE;
lbl_1_bss_72A = 0;
fn_1_CEC4();
lbl_1_bss_788 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 17), NULL, 0);
@ -566,11 +566,11 @@ static void fn_1_B478(omObjData *arg0)
u16 var_r29;
temp_r31 = arg0->data;
if ((lbl_1_bss_748 -= 1) == 0) {
if ((lbl_1_bss_74C -= 1) >= 0) {
if ((--lbl_1_bss_748) == 0) {
if ((--lbl_1_bss_74C) >= 0) {
MGSeqParamSet(lbl_1_bss_744, 1, lbl_1_bss_74C);
}
lbl_1_bss_748 = 60;
lbl_1_bss_748 = REFRESH_RATE;
}
if (GWPlayerCfg[lbl_1_bss_798].iscom == 1) {
fn_1_B1CC(arg0, &var_r29, &var_r27);

View file

@ -342,7 +342,7 @@ static void fn_1_ECD4(omObjData *arg0)
lbl_1_bss_7E8 = 4.0f;
arg0->func = fn_1_EED8;
lbl_1_bss_7D2 = 5;
lbl_1_bss_7D0 = 60;
lbl_1_bss_7D0 = REFRESH_RATE;
lbl_1_bss_7D4 = MGSeqTimerCreateXY(lbl_1_bss_7D2, 288, 64);
}
BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], lbl_1_bss_7EC);
@ -368,11 +368,11 @@ static void fn_1_EED8(omObjData *arg0)
fn_1_10CF0(arg0->work[2]);
temp_r29 = GWPlayer[lbl_1_bss_7E4].port;
if ((lbl_1_bss_7D0 -= 1) == 0) {
if ((lbl_1_bss_7D2 -= 1) >= 0) {
if ((--lbl_1_bss_7D0) == 0) {
if ((--lbl_1_bss_7D2) >= 0) {
MGSeqParamSet(lbl_1_bss_7D4, 1, lbl_1_bss_7D2);
}
lbl_1_bss_7D0 = 60;
lbl_1_bss_7D0 = REFRESH_RATE;
}
if (GWPlayerCfg[lbl_1_bss_7E4].iscom == 1) {
fn_1_EEA0(arg0, &var_r30);

View file

@ -253,7 +253,7 @@ void fn_1_4378(omObjData *object)
HuAudFXPlay(1067);
object->work[0] &= ~temp_r28;
temp_r31->unkC[temp_r30] = 0;
lbl_1_bss_A8->work[2] = 60;
lbl_1_bss_A8->work[2] = REFRESH_RATE;
if (temp_r30 != 2) {
lbl_1_bss_A8->func = fn_1_5290;
}
@ -468,7 +468,7 @@ void fn_1_5290(omObjData *object)
if (object->work[2] == 0) {
temp_r31 = object->data;
temp_r31->unk18 = 5;
temp_r31->unk1A = 60;
temp_r31->unk1A = REFRESH_RATE;
temp_r31->unk1C = MGSeqTimerCreateXY(temp_r31->unk18, 288, 64);
HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x13, 0x15));
temp_r31->unk1E = HuWinCreate(-10000, 400, sp8[0], sp8[1], 0);
@ -495,7 +495,7 @@ void fn_1_53B8(omObjData *object)
temp_r31 = object->data;
temp_r28 = GWPlayer[lbl_1_bss_86].port;
if (--temp_r31->unk1A == 0) {
temp_r31->unk1A = 60;
temp_r31->unk1A = REFRESH_RATE;
if (--temp_r31->unk18 >= 0) {
MGSeqParamSet(temp_r31->unk1C, 1, temp_r31->unk18);
}

View file

@ -92,11 +92,11 @@ void fn_1_5D28(void)
HuPrcVSleep();
}
BoardPlayerIdleSet(lbl_1_bss_196);
HuPrcSleep(120);
HuPrcSleep(REFRESH_RATE*2);
BoardAudSeqPause(0, 1, 1000);
HuAudFXPlay(781);
fn_1_8570();
HuPrcSleep(60);
HuPrcSleep(REFRESH_RATE);
lbl_1_bss_104 = omAddObjEx(boardObjMan, 257, 0, 0, -1, fn_1_5F08);
lbl_1_bss_108 = omAddObjEx(boardObjMan, 257, 0, 0, -1, fn_1_606C);
lbl_1_bss_10C = omAddObjEx(boardObjMan, 257, 0, 0, -1, NULL);
@ -155,7 +155,7 @@ void fn_1_606C(omObjData *object)
temp_r31->unk44[1].x += lbl_1_bss_110;
BoardModelPosGet(lbl_1_bss_18A[1], &temp_r31->unk44[2]);
BoardMusStart(1, 19, 127, 0);
object->work[0] = 300;
object->work[0] = REFRESH_RATE*5;
object->work[1] = 0;
object->func = fn_1_6248;
}
@ -199,7 +199,7 @@ void fn_1_6248(omObjData *object)
temp_r31->unk2A[1] = temp_r31->unk24[1];
sp28 = lbl_1_bss_160[0];
sp34 = lbl_1_bss_160[1];
temp_f31 = 15;
temp_f31 = (VERSION_PAL) ? 13 : 15;
break;
case 1:
@ -207,13 +207,13 @@ void fn_1_6248(omObjData *object)
temp_r31->unk2A[1] = temp_r31->unk24[2];
sp28 = lbl_1_bss_160[1];
sp34 = lbl_1_bss_160[2];
temp_f31 = 15;
temp_f31 = (VERSION_PAL) ? 13 : 15;
break;
case 2:
temp_r31->unk2A[0] = temp_r31->unk24[0];
temp_r31->unk2A[1] = temp_r31->unk24[2];
temp_f31 = 22.5f;
temp_f31 = (VERSION_PAL) ? 19.5f : 22.5f;
break;
}
temp_r31->unk68 = temp_r28;
@ -429,8 +429,8 @@ void fn_1_6EA8(void)
sp20.y = sp2C.y = 0;
VECSubtract(&sp20, &sp2C, &sp14);
temp_f30 = VECMag(&sp14);
VECScale(&sp14, &sp14, 1.0f / 60.0f);
for (temp_r30 = 0; temp_r30 < 60; temp_r30++) {
VECScale(&sp14, &sp14, 1.0f / REFRESH_RATE);
for (temp_r30 = 0; temp_r30 < REFRESH_RATE; temp_r30++) {
BoardModelPosGet(lbl_1_bss_184[temp_r31], &sp2C);
VECAdd(&sp2C, &sp14, &sp2C);
BoardModelPosSetV(lbl_1_bss_184[temp_r31], &sp2C);
@ -452,9 +452,9 @@ void fn_1_6EA8(void)
BoardModelScaleGet(lbl_1_bss_184[temp_r31], &sp8);
temp_f31 = sp8.x;
temp_f29 = -0.04f;
temp_f30 = (sp20.y - sp2C.y) / 30.0f;
temp_f30 = (sp20.y - sp2C.y) / (REFRESH_RATE/2);
temp_r29 = 0;
HuAudFXFadeOut(lbl_1_bss_D8, 499);
HuAudFXFadeOut(lbl_1_bss_D8, (((REFRESH_RATE*500)+30)/60)-1);
while (!temp_r29) {
sp2C.y += temp_f30;
temp_f31 += temp_f29;
@ -476,7 +476,7 @@ void fn_1_6EA8(void)
while (!BoardPlayerMotionEndCheck(lbl_1_bss_196)) {
HuPrcVSleep();
}
HuPrcSleep(30);
HuPrcSleep(REFRESH_RATE/2);
while (HuAudSStreamStatGet(temp_r28)) {
HuPrcVSleep();
}
@ -505,7 +505,7 @@ void fn_1_732C(s32 arg0)
void fn_1_7358(WorkMGItem *arg0)
{
if (--arg0->unk2 == 0) {
arg0->unk2 = 60;
arg0->unk2 = REFRESH_RATE;
if (--arg0->unk0 >= 0) {
MGSeqParamSet(arg0->unk4, 1, arg0->unk0);
}
@ -520,7 +520,7 @@ void fn_1_73C8(omObjData *object)
WorkMGItem *temp_r31;
temp_r31 = object->data;
temp_r31->unk0 = 5;
temp_r31->unk2 = 60;
temp_r31->unk2 = REFRESH_RATE;
temp_r31->unk4 = MGSeqTimerCreateXY(temp_r31->unk0, 288, 64);
HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x13, 0x1B));
temp_r31->unk6 = HuWinCreate(-10000, 368, sp8[0], sp8[1], 0);
@ -564,14 +564,14 @@ void fn_1_74E4(omObjData *object)
else if (spC & PAD_BUTTON_LEFT) {
if (temp_r31->unk8 != 0) {
temp_r31->unk8--;
BoardPlayerPosLerpStart(lbl_1_bss_196, &lbl_1_bss_DC[temp_r31->unk8 + 1], &lbl_1_bss_DC[temp_r31->unk8], 12);
BoardPlayerPosLerpStart(lbl_1_bss_196, &lbl_1_bss_DC[temp_r31->unk8 + 1], &lbl_1_bss_DC[temp_r31->unk8], REFRESH_RATE/5);
object->func = fn_1_7750;
}
}
else if (spC & PAD_BUTTON_RIGHT) {
if (temp_r31->unk8 != 2) {
temp_r31->unk8++;
BoardPlayerPosLerpStart(lbl_1_bss_196, &lbl_1_bss_DC[temp_r31->unk8 - 1], &lbl_1_bss_DC[temp_r31->unk8], 12);
BoardPlayerPosLerpStart(lbl_1_bss_196, &lbl_1_bss_DC[temp_r31->unk8 - 1], &lbl_1_bss_DC[temp_r31->unk8], REFRESH_RATE/5);
object->func = fn_1_7750;
}
}

View file

@ -913,9 +913,13 @@ static void fn_1_8A60(void) {
HuPrcVSleep();
}
fn_1_7300();
#if VERSION_NTSC
sprintf(sp10, "%d", var_r29);
BoardWinCreate(2, MAKE_MESSID(32, 11), 9);
BoardWinInsertMesSet(MAKE_MESSID_PTR(sp10), 0);
#else
BoardWinCreate(2, MAKE_MESSID(32, 11), 9);
#endif
BoardWinWait();
BoardWinKill();
BoardAudSeqFadeOut(1, 1000);

View file

@ -273,7 +273,7 @@ static void fn_1_D2A4(omObjData *arg0) {
sp8 = BoardModelRotYGet(lbl_1_bss_14[9]);
BoardModelPosGet(lbl_1_bss_14[9], &spC);
if (arg0->scale.x != 0.0f) {
arg0->scale.x -= 8.5f;
arg0->scale.x -= 510.0f/REFRESH_RATE;
if (arg0->scale.x < 0.0f) {
arg0->scale.x = 0.0f;
}
@ -294,7 +294,7 @@ static void fn_1_D2A4(omObjData *arg0) {
Hu3DMotionExec(BoardModelIDGet(lbl_1_bss_2F8), temp_r30->unk_08, temp_r30->unk_64, 0);
}
lbl_1_bss_31C->work[0] = 60;
lbl_1_bss_31C->unk10 = frandmod(40) + 10;
lbl_1_bss_31C->unk10 = frandmod((REFRESH_RATE*2)/3) + (REFRESH_RATE/6);
lbl_1_bss_31C->work[1] = arg0->work[1];
lbl_1_bss_31C->func = fn_1_E18C;
}
@ -304,7 +304,7 @@ static void fn_1_D554(omObjData *arg0) {
float sp8;
sp8 = BoardModelRotYGet(lbl_1_bss_14[9]);
arg0->scale.x += 8.5f;
arg0->scale.x += 510.0f/REFRESH_RATE;
if (arg0->scale.x > 255.0f) {
arg0->scale.x = 255.0f;
}
@ -567,7 +567,7 @@ static void fn_1_E4C0(omObjData *arg0) {
sp14.z = arg0->scale.z;
sp20.x = arg0->trans.x;
sp20.z = arg0->trans.z;
sp20.y = arg0->trans.y - arg0->rot.x * arg0->rot.x * 0.25f * 0.075f;
sp20.y = arg0->trans.y - arg0->rot.x * arg0->rot.x * 0.25f * ((VERSION_PAL) ? 0.1125f : 0.075f);
arg0->rot.x += 1.0f;
VECAdd(&sp2C, &sp20, &sp2C);
sp8 = sp2C;

View file

@ -130,9 +130,9 @@ void fn_1_A1F0(void) {
BoardAudSeqPause(0, 1, 1000);
BoardModelMotionTimeSet(lbl_1_bss_14[6], 0.0f);
BoardModelAttrReset(lbl_1_bss_14[6], 0x40000002);
HuPrcSleep(20);
HuPrcSleep((REFRESH_RATE+2)/3);
HuAudFXPlay(0x469);
HuPrcSleep(50);
HuPrcSleep(((REFRESH_RATE*5)+3)/6);
BoardMusStart(1, 0x1E, 0x7F, 0);
HuAudFXPlay(0x46C);
while (BoardModelMotionTimeGet(lbl_1_bss_14[6]) < 202.0f) {
@ -349,7 +349,7 @@ static void fn_1_A7E8(void) {
}
BoardModelHookSet(lbl_1_bss_14[6], lbl_1_data_51C[1], lbl_1_bss_298[temp_r29]);
BoardModelAttrReset(lbl_1_bss_14[6], 0x40000002);
HuPrcSleep(30);
HuPrcSleep(REFRESH_RATE/2);
HuAudFXPlay(0x310);
while (BoardModelMotionTimeGet(lbl_1_bss_14[6]) < BoardModelMotionMaxTimeGet(lbl_1_bss_14[6])) {
HuPrcVSleep();
@ -471,7 +471,7 @@ static void fn_1_A7E8(void) {
HuPrcVSleep();
}
BoardModelRotYSet(lbl_1_bss_14[10], 0.0f);
HuPrcSleep(30);
HuPrcSleep(REFRESH_RATE/2);
while (HuAudSStreamStatGet(sp8) != 0) {
HuPrcVSleep();
}

View file

@ -80,7 +80,7 @@ void fn_1_6B7C(void)
BoardModelAttrReset(lbl_1_bss_14[0], 0x40000002);
BoardMusStart(1, 0x22, 0x7F, 0);
BoardPlayerMotionShiftSet(lbl_1_bss_B6, lbl_1_bss_9E[0], 0.0f, 30.0f, HU3D_MOTATTR_LOOP);
HuPrcSleep(0x1E);
HuPrcSleep(REFRESH_RATE/2);
BoardModelVisibilitySet(lbl_1_bss_A2, 1);
BoardModelHookSet(BoardPlayerModelGet(lbl_1_bss_B6), "a-itemhook-r", lbl_1_bss_A2);
Hu3DModelObjPosGet(BoardModelIDGet(*lbl_1_bss_14), "chara1", &sp10);
@ -353,7 +353,7 @@ void fn_1_799C(void)
while (BoardPlayerMotionEndCheck(lbl_1_bss_B6) == 0) {
HuPrcVSleep();
}
HuPrcSleep(0x1E);
HuPrcSleep(REFRESH_RATE/2);
while (HuAudSStreamStatGet(temp_r27) != 0) {
HuPrcVSleep();
@ -605,10 +605,10 @@ void fn_1_896C(void)
}
}
if ((temp_r30 & 0x80) != 0) {
HuPrcSleep(0x19);
HuPrcSleep(((REFRESH_RATE*5)+6)/12);
}
else {
HuPrcSleep(0xF);
HuPrcSleep((REFRESH_RATE+2)/4);
}
spC.x = spC.y = spC.z = 0.0f;
@ -706,7 +706,7 @@ void fn_1_896C(void)
for (var_r31 = 0; var_r31 < 3; var_r31++) {
BoardModelMotionStartEndSet(lbl_1_bss_AA[var_r31], 0x28, 0x46);
}
HuPrcSleep(13);
HuPrcSleep((REFRESH_RATE*2)/9);
var_f31 = -8.0f;
while (1) {
for (var_r28 = 0, var_r31 = 0; var_r31 < 3; var_r31++) {

View file

@ -49,6 +49,24 @@ static s16 lbl_1_data_22A = -1;
static s16 lbl_1_data_22C = -1;
static s16 lbl_1_data_22E = -1;
#if VERSION_PAL
static s32 lbl_1_data_230[] = {
MAKE_MESSID(8, 0),
MAKE_MESSID(8, 1),
MAKE_MESSID(8, 2),
MAKE_MESSID(8, 3),
MAKE_MESSID(8, 4),
MAKE_MESSID(8, 5),
MAKE_MESSID(8, 6),
MAKE_MESSID(8, 7),
MAKE_MESSID(8, 8),
MAKE_MESSID(8, 9),
MAKE_MESSID(8, 10),
MAKE_MESSID(8, 11),
MAKE_MESSID(8, 12),
MAKE_MESSID(8, 13)
};
#else
static s32 lbl_1_data_230[] = {
MAKE_MESSID(8, 14),
MAKE_MESSID(8, 15),
@ -65,7 +83,7 @@ static s32 lbl_1_data_230[] = {
MAKE_MESSID(8, 26),
MAKE_MESSID(8, 27)
};
#endif
void fn_1_6EF0(void) {
BoardRollDispSet(0);
lbl_1_bss_90 = HuPrcChildCreate(fn_1_6F80, 0x2003, 0x3800, 0, boardMainProc);
@ -203,9 +221,12 @@ static void fn_1_74BC(s32 arg0) {
static void fn_1_7574(void) {
s32 temp_r3;
s32 temp_r29;
#if VERSION_PAL
s32 playerNo = GWSystem.player_curr;
#endif
s32 temp_r28;
s32 i;
for (i = 0; i < 4; i++) {
if (lbl_1_bss_C2[i] == 0) {
continue;
@ -218,11 +239,17 @@ static void fn_1_7574(void) {
BoardWinCreate(0, MAKE_MESSID(48, 16), -1);
BoardWinInsertMesSet(temp_r28, 0);
BoardWinInsertMesSet(lbl_1_data_230[temp_r29], 1);
#if VERSION_PAL
GWSystem.player_curr = i;
#endif
BoardWinPlayerSet(i);
BoardWinWait();
BoardWinKill();
}
}
#if VERSION_PAL
GWSystem.player_curr = playerNo;
#endif
}
static void fn_1_7674(s32 arg0) {

View file

@ -9,7 +9,7 @@ static int HuSePlay(int seId, MSM_SEPARAM *param);
extern s16 omSysExitReq;
static s32 charVoiceGroupStat[8];
s32 charVoiceGroupStat[8];
static s32 sndFXBuf[64][2];
static s16 Hu3DAudVol;
@ -555,10 +555,11 @@ void HuAudAUXVolSet(s8 arg0, s8 arg1) {
void HuAudVoiceInit(s16 ovl) {
SNDGRPTBL *var_r29;
OSTick temp_r23;
s16 var_r27;
s16 temp_r26;
s16 temp_r25;
s16 temp_r30;
s16 var_r27;
void *temp_r3;
s16 i;
@ -602,7 +603,11 @@ void HuAudVoiceInit(s16 ovl) {
charVoiceGroupStat[temp_r30] = 1;
temp_r26 = temp_r30 + 0xA;
temp_r3 = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(temp_r26));
#if VERSION_NTSC
msmSysLoadGroupBase(temp_r26, temp_r3);
#else
temp_r25 = msmSysLoadGroupBase(temp_r26, temp_r3);
#endif
HuMemDirectFree(temp_r3);
}
}

View file

@ -1335,7 +1335,7 @@ static void TakeBallCoinPosSet(BallTakeCoinData *arg0, Vec *arg1) {
BoardModelPosSetV(arg0->unk00, &arg0->unk04);
}
BOOL CheckBallCoinDone(void) {
static BOOL CheckBallCoinDone(void) {
BallTakeCoinData *var_r31;
s32 i;
@ -1351,7 +1351,7 @@ BOOL CheckBallCoinDone(void) {
return TRUE;
}
void TakeBallStar(void) {
static void TakeBallStar(void) {
BallTakeCoinWork *temp_r31;
Vec sp8;
@ -1376,7 +1376,7 @@ void TakeBallStar(void) {
HuAudFXPlay(0x361);
}
void ExecTakeBallStar(omObjData *arg0) {
static void ExecTakeBallStar(omObjData *arg0) {
BallTakeCoinWork *temp_r29 = OM_GET_WORK_PTR(arg0, BallTakeCoinWork);
Vec sp8;
float var_f30;
@ -1405,7 +1405,7 @@ void ExecTakeBallStar(omObjData *arg0) {
BoardModelRotYSet(temp_r29->unk02, arg0->rot.y);
}
BOOL CheckTakeBallStarDone(void) {
static BOOL CheckTakeBallStarDone(void) {
if (ballTakeCoinObj) {
return FALSE;
} else {

View file

@ -132,6 +132,12 @@ static void ExecCharWheel(omObjData *arg0) {
temp_r31 = OM_GET_WORK_PTR(arg0, CharWheelWork);;
if (temp_r31->unk00_field0 != 0 || BoardIsKill()) {
KillCharWheelSpr();
#if VERSION_PAL
if (wheelFXStat != -1) {
HuAudFXStop(wheelFXStat);
wheelFXStat = -1;
}
#endif
charWheelObj = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
@ -322,7 +328,13 @@ static void UpdateCharWheel(CharWheelWork *arg0) {
}
var_f23 = 8191.0f - 8191.0f * (var_f25 / wheelSpeed);
OSf32tos16(&var_f23, &var_r17);
#if VERSION_PAL
if(wheelFXStat != -1) {
HuAudFXPitchSet(wheelFXStat, -var_r17);
}
#else
HuAudFXPitchSet(wheelFXStat, -var_r17);
#endif
if (var_f25 > -0.0000001f && var_f25 < 0.0000001f) {
arg0->unk00_field3 = 3;
if (wheelFXStat != -1) {
@ -379,7 +391,14 @@ static void GrowCharWheel(CharWheelWork *arg0) {
}
arg0->unk02 = 90;
arg0->unk00_field3 = 2;
#if VERSION_PAL
if(!BoardIsKill()) {
wheelFXStat = HuAudFXPlay(0x30A);
}
#else
wheelFXStat = HuAudFXPlay(0x30A);
#endif
}
OSs8tof32(&arg0->unk02, &temp_f30);
HuSprGrpScaleSet(wheelSprGrp, sind(temp_f30), sind(temp_f30));

View file

@ -112,7 +112,7 @@ static AnimData *genieParticleAnim;
static s16 geniePlayerMot[3];
static Process *itemProc;
s32 lbl_801D37A0[2] = { DATA_MAKE_NUM(DATADIR_BOARD, 117), -1 };
static s32 itemMotTbl[2] = { DATA_MAKE_NUM(DATADIR_BOARD, 117), -1 };
static void (*itemFuncTbl[])(void) = { ExecItemMini, ExecItemMega, ExecItemMiniSuper, ExecItemMegaSuper, ExecItemHammer, ExecItemPipe, ExecItemSwap,
ExecItemSpark, ExecItemLight, ExecItemWhistle, ExecItemBowser, ExecItemBooBall, ExecItemGenie, ExecItemBag };
@ -1183,7 +1183,7 @@ static void ExecItemSpark(void)
BoardModelLayerSet(temp_r30, 3);
BoardModelVisibilitySet(temp_r30, 0);
HuAudFXPlay(0x350);
suitMdl = BoardModelCreate(itemMdlTbl[currItem], lbl_801D37A0, 0);
suitMdl = BoardModelCreate(itemMdlTbl[currItem], itemMotTbl, 0);
BoardModelLayerSet(suitMdl, 2);
ItemShowProc(NULL, NULL);
temp_r28 = GWPlayer[currItemRestore].space_curr;

View file

@ -403,8 +403,11 @@ static void MainFunc(void)
if(_CheckFlag(FLAG_ID_MAKE(1, 11))) {
BoardTutorialWorkSave();
BoardTutorialPlayerInit();
GWSystem.mess_speed = 1;
GWSystem.mess_delay = 32;
#if VERSION_PAL
GWMessSpeedSet(3);
#else
GWMessSpeedSet(1);
#endif
}
CreateBoard();
if(!_CheckFlag(FLAG_ID_MAKE(1, 1))) {

View file

@ -139,6 +139,71 @@ s32 BoardRollExec(s32 arg0)
return destMode;
}
static void RollWinCreate(s32 playerNo)
{
float sp8[2];
float posX;
float posY;
s32 var_r29;
s32 var_r27;
s32 temp_r25;
if (!_CheckFlag(FLAG_ID_MAKE(1, 11))) {
var_r27 = BoardPlayerItemCount(playerNo);
if (GWTeamGet()) {
temp_r25 = BoardPlayerSameTeamFind(playerNo);
var_r27 += BoardPlayerItemCount(temp_r25);
}
if (BoardItemPrevGet() != -1 || var_r27 == 0 || _CheckFlag(FLAG_ID_MAKE(1, 9)) || BoardMegaDoubleDiceCheck()) {
var_r29 = MAKE_MESSID(0x09, 0x04);
}
else {
var_r29 = MAKE_MESSID(0x09, 0x02);
}
if (inputTimer != 0) {
var_r29 = MAKE_MESSID(0x30, 0x25);
}
HuWinMesMaxSizeGet(1, sp8, var_r29);
#if VERSION_PAL
posY = HU_DISP_HEIGHT - 176;
switch (GWGameStat.language) {
case 0:
case 4:
posX = -10000.0f;
break;
case 3:
posX = HU_DISP_CENTERX - (sp8[0] / 2 - 32.0f);
break;
case 5:
posX = HU_DISP_CENTERX - (sp8[0] / 2 - 16.0f);
posY = 258;
break;
default:
posX = HU_DISP_CENTERX - (sp8[0] / 2 - 16.0f);
break;
}
#else
switch (GWGameStat.language) {
case 0:
posX = -10000.0f;
break;
case 1:
posX = HU_DISP_CENTERX - (sp8[0] / 2 - 16.0f);
break;
}
posY = HU_DISP_HEIGHT - 176;
#endif
rollWin = HuWinCreate(posX, posY, sp8[0], sp8[1], 0);
HuWinBGTPLvlSet(rollWin, 0.0f);
HuWinMesSpeedSet(rollWin, 0);
HuWinMesSet(rollWin, var_r29);
}
}
void BoardRollKill(void)
{
if (rollProc) {
@ -177,15 +242,11 @@ void BoardRollWinDispSet(s32 arg0)
static void RollMain(void)
{
float sp8[2];
float var_f31;
float var_f30;
s32 var_r28;
s32 var_r27;
s32 temp_r26;
s32 temp_r25;
s32 var_r30;
s32 var_r29;
s32 i;
diceValue[0] = diceValue[1] = diceValue[2] = 0;
@ -195,37 +256,7 @@ static void RollMain(void)
BoardCameraMotionWait();
BoardCameraTargetModelSet(-1);
for (i = 0; i < numDice; i++) {
temp_r26 = rollPlayer;
if (!_CheckFlag(FLAG_ID_MAKE(1, 11))) {
var_r27 = BoardPlayerItemCount(temp_r26);
if (GWTeamGet()) {
temp_r25 = BoardPlayerSameTeamFind(temp_r26);
var_r27 += BoardPlayerItemCount(temp_r25);
}
if (BoardItemPrevGet() != -1 || var_r27 == 0 || _CheckFlag(FLAG_ID_MAKE(1, 9)) || BoardMegaDoubleDiceCheck()) {
var_r29 = MAKE_MESSID(0x09, 0x04);
}
else {
var_r29 = MAKE_MESSID(0x09, 0x02);
}
if (inputTimer != 0) {
var_r29 = MAKE_MESSID(0x30, 0x25);
}
HuWinMesMaxSizeGet(1, sp8, var_r29);
switch (GWGameStat.language) {
case 0:
var_f31 = -10000.0f;
break;
case 1:
var_f31 = HU_DISP_CENTERX - (sp8[0] / 2 - 16.0f);
break;
}
var_f30 = HU_DISP_HEIGHT - 176;
rollWin = HuWinCreate(var_f31, var_f30, sp8[0], sp8[1], 0);
HuWinBGTPLvlSet(rollWin, 0.0f);
HuWinMesSpeedSet(rollWin, 0);
HuWinMesSet(rollWin, var_r29);
}
RollWinCreate(rollPlayer);
DiceCreate(i);
DiceWaitFull(i);
DoInput(i);

View file

@ -984,7 +984,12 @@ static void CreateShopItemChoice(s32 arg0, s32 arg1) {
omObjData *temp_r30;
ItemChoiceWork *var_r31;
s16 spC;
s16 i;
#if VERSION_PAL
for(i=0; i<6; i++) {
cursorPosTbl[i][0] = 190;
}
#endif
temp_r30 = omAddObjEx(boardObjMan, 0x7E01, 0, 0, -1, UpdateShopItemChoice);
itemChoiceObj = temp_r30;
itemChoice = -1;
@ -996,11 +1001,29 @@ static void CreateShopItemChoice(s32 arg0, s32 arg1) {
var_r31->unk02 = 0;
var_r31->unk03 = arg1;
var_r31->unk06 = HuSprGrpCreate(1);
#if VERSION_PAL
if (GWLanguageGet() != 0) {
s16 winId = BoardWinIDGet();
if(winId != -1) {
WindowData *winP = &winData[winId];
for(i=0; i<6; i++) {
cursorPosTbl[i][0] = winP->pos_x+96;
}
} else {
for(i=0; i<6; i++) {
cursorPosTbl[i][0] = 166;
}
}
}
temp_r30->trans.x = cursorPosTbl[0][0];
temp_r30->trans.y = cursorPosTbl[0][1];
#else
temp_r30->trans.x = cursorPosTbl[0][0];
temp_r30->trans.y = cursorPosTbl[0][1];
if (GWLanguageGet() != 0) {
temp_r30->trans.x -= 24.0f;
}
#endif
if (GWPlayer[arg0].com) {
var_r31->unk01 = GWMessDelayGet();
}
@ -1032,9 +1055,11 @@ static void MoveShopItemChoice(omObjData *arg0, ItemChoiceWork *arg1) {
temp_r28 = arg1->unk02;
arg0->trans.x = cursorPosTbl[arg1->unk02][0];
arg0->trans.y = cursorPosTbl[arg1->unk02][1];
#if VERSION_NTSC
if (GWLanguageGet() != 0) {
arg0->trans.x -= 24.0f;
}
#endif
if (GWPlayer[arg1->unk00_field1].com) {
GetShopItemChoiceInput(arg1, arg0, &sp8);
} else {

View file

@ -74,7 +74,7 @@ static Process *starProc;
static s16 starParman = -1;
static s16 hostMdl = -1;
const s32 lbl_8011E040[9] = {
static const s32 starMesTbl1[9] = {
MAKE_MESSID(12, 0),
MAKE_MESSID(12, 9),
MAKE_MESSID(12, 18),
@ -86,7 +86,7 @@ const s32 lbl_8011E040[9] = {
MAKE_MESSID(12, 0)
};
const s32 lbl_8011E064[9][2] = {
static const s32 starMesTbl2[9][2] = {
{ MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) },
{ MAKE_MESSID(21, 35), MAKE_MESSID(21, 41) },
{ MAKE_MESSID(21, 36), MAKE_MESSID(21, 42) },
@ -249,12 +249,12 @@ static void ExecStar(void) {
BoardCameraViewSet(3);
BoardCameraMotionWait();
if (GWStarsGet(temp_r31) >= 999) {
temp_r29 = lbl_8011E040[temp_r27] + 5;
temp_r29 = starMesTbl1[temp_r27] + 5;
BoardWinCreate(0, temp_r29, BoardWinPortraitGetStar());
BoardWinWait();
BoardWinKill();
} else if (BoardPlayerCoinsGet(temp_r31) < 20 && GWSystem.last5_effect != 4) {
temp_r29 = lbl_8011E040[temp_r27] + 2;
temp_r29 = starMesTbl1[temp_r27] + 2;
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
BoardWinWait();
BoardWinKill();
@ -263,7 +263,7 @@ static void ExecStar(void) {
while (!BoardStatusStopCheck(0) || !BoardStatusStopCheck(1) || !BoardStatusStopCheck(2) || !BoardStatusStopCheck(3)) {
HuPrcVSleep();
}
temp_r29 = lbl_8011E040[temp_r27];
temp_r29 = starMesTbl1[temp_r27];
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
BoardWinInsertMesSet(BoardPlayerGetCharMess(temp_r31), 0);
BoardWinWait();
@ -275,12 +275,12 @@ static void ExecStar(void) {
HuPrcVSleep();
}
if (GWSystem.last5_effect == 4) {
temp_r29 = lbl_8011E040[temp_r27] + 8;
temp_r29 = starMesTbl1[temp_r27] + 8;
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
BoardWinWait();
break;
}
temp_r29 = lbl_8011E040[temp_r27] + 1;
temp_r29 = starMesTbl1[temp_r27] + 1;
BoardWinCreateChoice(1, temp_r29, BoardWinPortraitGetStar(), 0);
BoardWinAttrSet(0x10);
if (GWPlayer[temp_r31].com) {
@ -294,7 +294,7 @@ static void ExecStar(void) {
switch (BoardWinChoiceGet()) {
case 0:
if (BoardPlayerCoinsGet(temp_r31) < 20) {
temp_r29 = lbl_8011E040[temp_r27] + 2;
temp_r29 = starMesTbl1[temp_r27] + 2;
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
BoardWinWait();
BoardStatusShowSet(temp_r31, 0);
@ -306,7 +306,7 @@ static void ExecStar(void) {
}
goto block_A;
case 1:
temp_r29 = lbl_8011E040[temp_r27] + 4;
temp_r29 = starMesTbl1[temp_r27] + 4;
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
BoardWinWait();
BoardStatusShowSet(temp_r31, 0);
@ -326,7 +326,7 @@ static void ExecStar(void) {
}
}
block_A:
temp_r29 = lbl_8011E040[temp_r27] + 3;
temp_r29 = starMesTbl1[temp_r27] + 3;
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
BoardWinWait();
BoardWinKill();
@ -734,9 +734,9 @@ void BoardStarShowNext(s32 arg0) {
HuPrcVSleep();
}
if (var_r28 == 0) {
var_r30 = lbl_8011E040[GWBoardGet()] + 6;
var_r30 = starMesTbl1[GWBoardGet()] + 6;
} else {
var_r30 = lbl_8011E064[GWBoardGet()][0];
var_r30 = starMesTbl2[GWBoardGet()][0];
}
BoardWinCreate(3, var_r30, -1);
BoardWinPause();
@ -748,9 +748,9 @@ void BoardStarShowNext(s32 arg0) {
BoardWinKill();
HuPrcSleep(3);
if (var_r28 == 0) {
var_r30 = lbl_8011E040[GWBoardGet()] + 7;
var_r30 = starMesTbl1[GWBoardGet()] + 7;
} else {
var_r30 = lbl_8011E064[GWBoardGet()][1];
var_r30 = starMesTbl2[GWBoardGet()][1];
}
BoardWinCreate(3, var_r30, -1);
BoardWinWait();

View file

@ -1951,28 +1951,32 @@ static void UpdateItemWindow(omObjData *arg0) {
static void CreatePickerWindow(UnkUiWork01 *arg0, s32 arg1) {
float spC[2];
float var_f31;
float var_f30;
float var_f29;
float posX;
float posY;
float yOfs;
s32 var_r30;
#if VERSION_NTSC
switch (GWGameStat.language) {
case 1:
var_f31 = 0.0f;
yOfs = 0.0f;
break;
case 0:
var_f31 = 0.0f;
yOfs = 0.0f;
break;
}
#else
yOfs = 0;
#endif
if (arg1 != 0) {
var_r30 = MAKE_MESSID(0x10, 0x1A);
} else {
var_r30 = MAKE_MESSID(0x10, 0x1B);
}
HuWinMesMaxSizeGet(1, spC, var_r30);
var_f30 = -10000.0f;
var_f29 = var_f31 + (HU_DISP_HEIGHT-128);
arg0->unk06 = HuWinCreate(var_f30, var_f29, spC[0], spC[1], 0);
posX = -10000.0f;
posY = yOfs + (HU_DISP_HEIGHT-128);
arg0->unk06 = HuWinCreate(posX, posY, spC[0], spC[1], 0);
HuWinBGTPLvlSet(arg0->unk06, 0.0f);
HuWinMesSpeedSet(arg0->unk06, 0);
HuWinMesSet(arg0->unk06, var_r30);

View file

@ -396,20 +396,32 @@ static void DestroyFocus(void) {
static void CreateButtonWin(void) {
float sp8[2];
float var_f31;
float var_f30;
float posX;
float posY;
s32 var_r31;
if (viewControls != 2) {
var_r31 = MAKE_MESSID(0x09, 0x05);
var_f31 = 286.0f;
#if VERSION_PAL
HuWinMesMaxSizeGet(1, sp8, var_r31);
posX = 288-((sp8[0]/2)-32);
#endif
posY = 286.0f;
} else {
var_r31 = MAKE_MESSID(0x10, 0x4D);
var_f31 = 328.0f;
#if VERSION_PAL
posX = -10000.0f;
posY = 324.0f;
#else
posY = 328.0f;
#endif
}
HuWinMesMaxSizeGet(1, sp8, var_r31);
var_f30 = -10000.0f;
buttonWin = HuWinCreate(var_f30, var_f31, sp8[0], sp8[1], 0);
#if VERSION_NTSC
posX = -10000.0f;
#endif
buttonWin = HuWinCreate(posX, posY, sp8[0], sp8[1], 0);
HuWinBGTPLvlSet(buttonWin, 0.0f);
HuWinMesSpeedSet(buttonWin, 0);
HuWinMesSet(buttonWin, var_r31);

View file

@ -97,6 +97,11 @@ static void ExecBoardWindow(void) {
if (size[0] <= size_win[0]) {
size[0] = size_win[0];
pos[0] = pos_win[0];
#if VERSION_PAL
if(winPosIdx == 1) {
size[0] += 4;
}
#endif
} else {
pos[0] = -10000.0f;
}
@ -338,7 +343,7 @@ s32 BoardWinPortraitGetStar(void) {
void BoardWinPlayerSet(s32 player) {
s32 i;
#if VERSION_NTSC
if (player == -1) {
if (GWPartyGet() != 1) {
for (i = 0, disablePlayer = i; i < 4; i++) {
@ -354,6 +359,21 @@ void BoardWinPlayerSet(s32 player) {
} else {
disablePlayer = ~(1 << GWPlayer[player].port);
}
#else
if (player == -1) {
if (GWPartyGet() != 1) {
for (i = 0, disablePlayer = i; i < 4; i++) {
if (GWPlayer[i].com != 0) {
disablePlayer |= 1 << GWPlayer[i].port;
}
}
} else {
disablePlayer = 0;
}
} else {
disablePlayer = ~(1 << GWPlayer[player].port);
}
#endif
if (_CheckFlag(FLAG_ID_MAKE(1, 11)) != 0) {
disablePlayer = 0;
}
@ -405,4 +425,9 @@ void BoardWinStartComKeySet(void) {
void BoardWinComKeyFuncSet(BoardWinComKeyFunc func) {
comKeyFunc = func;
}
s16 BoardWinIDGet(void)
{
return windowID;
}

View file

@ -1,6 +1,7 @@
#include "dolphin.h"
#include "game/memory.h"
#include "game/card.h"
#include "version.h"
static void *cardWork;
u8 UnMountCnt;
@ -98,7 +99,11 @@ s32 HuCardFormat(s16 slot)
static void MountCallBack(s32 chan, s32 result)
{
#if VERSION_ENG
UnMountCnt = (1 << chan);
#else
UnMountCnt |= (1 << chan);
#endif
}
s32 HuCardOpen(s16 slot, const char *fileName, CARDFileInfo *fileInfo)

View file

@ -6,7 +6,7 @@
#define PTR_OFFSET(ptr, offset) (void *)(((u8 *)(ptr)+(u32)(offset)))
#define DATA_EFF_SIZE(size) (((size)+1) & ~0x1)
static void **HuDataReadMultiSub(s32 *data_ids, BOOL use_num, s32 num);
void **HuDataReadMultiSub(s32 *data_ids, BOOL use_num, s32 num);
#define DATA_MAX_READSTAT 128
@ -406,7 +406,7 @@ void **HuDataReadMulti(s32 *data_ids)
return HuDataReadMultiSub(data_ids, FALSE, 0);
}
static void **HuDataReadMultiSub(s32 *data_ids, BOOL use_num, s32 num)
void **HuDataReadMultiSub(s32 *data_ids, BOOL use_num, s32 num)
{
s32 *dir_ids;
char **paths;

View file

@ -8,7 +8,7 @@ struct decode_data
u32 size;
};
static u8 TextBuffer[1024];
static u8 textBuffer[1024];
static void HuDecodeNone(struct decode_data *decode)
{
@ -27,7 +27,7 @@ static void HuDecodeLz(struct decode_data *decode)
for(i=0; i<1024; i++) {
TextBuffer[i] = 0;
textBuffer[i] = 0;
}
while(decode->size) {
flag >>= 1;
@ -35,7 +35,7 @@ static void HuDecodeLz(struct decode_data *decode)
flag = (*decode->src++)|0xFF00;
}
if(flag & 0x1) {
TextBuffer[pos++] = *decode->dst++ = *decode->src++;
textBuffer[pos++] = *decode->dst++ = *decode->src++;
pos = pos & 0x3FF;
decode->size--;
} else {
@ -44,7 +44,7 @@ static void HuDecodeLz(struct decode_data *decode)
i |= ((copy_len & ~0x3F) << 2);
copy_len = (copy_len & 0x3F)+3;
for(j=0; j<copy_len; j++) {
TextBuffer[pos++] = *decode->dst++ = TextBuffer[(i+j) & 0x3FF];
textBuffer[pos++] = *decode->dst++ = textBuffer[(i+j) & 0x3FF];
pos &= 0x3FF;
}
decode->size -= j;

View file

@ -1,7 +1,12 @@
#include "string.h"
#include "game/gamework.h"
#include "game/gamework_data.h"
#include "game/flag.h"
#include "game/gamework_data.h"
#include "string.h"
#include "version.h"
s16 GwLanguage = 1;
s16 GwLanguageSave = -1;
GameStat GWGameStatDefault;
GameStat GWGameStat;
@ -20,15 +25,16 @@ static inline void InitPlayerConfig(void)
{
PlayerConfig *config;
s32 i;
for(i=0; i<4; i++) {
for (i = 0; i < 4; i++) {
config = &GWPlayerCfg[i];
config->character = i;
config->pad_idx = i;
config->diff = 0;
config->group = i;
if(!HuPadStatGet(i)) {
if (!HuPadStatGet(i)) {
config->iscom = 0;
} else {
}
else {
config->iscom = 1;
}
}
@ -36,11 +42,11 @@ static inline void InitPlayerConfig(void)
static inline void ResetBoardSettings(void)
{
GWRumbleSet(1);
GWMGExplainSet(1);
GWMGShowComSet(1);
GWMessSpeedSet(1);
GWSaveModeSet(0);
GWRumbleSet(1);
GWMGExplainSet(1);
GWMGShowComSet(1);
GWMessSpeedSet(1);
GWSaveModeSet(0);
}
void GWInit(void)
@ -49,23 +55,29 @@ void GWInit(void)
_InitFlag();
GWErase();
InitPlayerConfig();
#if VERSION_JAP
GWGameStat.language = 0;
#elif VERSION_ENG
GWGameStat.language = 1;
#else
GWLanguageSet(GwLanguage);
#endif
ResetBoardSettings();
}
static inline void ResetMGRecord(GameStat *game_stat)
{
game_stat->mg_record[0] = 18000;
game_stat->mg_record[0] = 300 * REFRESH_RATE;
game_stat->mg_record[1] = 80;
game_stat->mg_record[2] = 3600;
game_stat->mg_record[3] = 7200;
game_stat->mg_record[2] = 60 * REFRESH_RATE;
game_stat->mg_record[3] = 120 * REFRESH_RATE;
game_stat->mg_record[4] = 0;
game_stat->mg_record[5] = 3600;
game_stat->mg_record[6] = 18000;
game_stat->mg_record[7] = 18000;
game_stat->mg_record[8] = 18000;
game_stat->mg_record[5] = 60 * REFRESH_RATE;
game_stat->mg_record[6] = 300 * REFRESH_RATE;
game_stat->mg_record[7] = 300 * REFRESH_RATE;
game_stat->mg_record[8] = 300 * REFRESH_RATE;
game_stat->mg_record[9] = 0;
game_stat->mg_record[10] = 300;
game_stat->mg_record[10] = 5 * REFRESH_RATE;
game_stat->mg_record[11] = 0;
game_stat->mg_record[12] = 0;
game_stat->mg_record[13] = 0;
@ -76,9 +88,9 @@ static inline void ResetBoardRecord(GameStat *game_stat)
{
s32 i;
s32 j;
for(i=0; i<9; i++) {
for(j=0; j<8; j++) {
for (i = 0; i < 9; i++) {
for (j = 0; j < 8; j++) {
game_stat->board_win_count[i][j] = 0;
}
game_stat->board_play_count[i] = 0;
@ -90,10 +102,10 @@ static inline void ResetBoardRecord(GameStat *game_stat)
static inline void ResetPresent(GameStat *game_stat)
{
s32 i;
for(i=0; i<60; i++) {
for (i = 0; i < 60; i++) {
game_stat->present[i] = 0;
}
(void)i; //HACK to match GWResetGameStat
(void)i; // HACK to match GWResetGameStat
}
static inline void ResetFlag(GameStat *game_stat)
@ -120,7 +132,13 @@ void GWGameStatReset(void)
GameStat *game_stat = &GWGameStatDefault;
memset(game_stat, 0, sizeof(GameStat));
game_stat->unk_00 = 0;
#if VERSION_JAP
game_stat->language = 0;
#elif VERSION_ENG
game_stat->language = 1;
#else
game_stat->language = GwLanguage;
#endif
game_stat->sound_mode = 1;
game_stat->rumble = 1;
game_stat->total_stars = 0;
@ -133,23 +151,30 @@ void GWGameStatReset(void)
ResetBoardRecord(game_stat);
ResetPresent(game_stat);
ResetFlag(game_stat);
ResetPauseConfig(game_stat);
ResetPauseConfig(game_stat);
memcpy(&GWGameStat, &GWGameStatDefault, sizeof(GameStat));
ResetBoardSettings();
}
s32 GWMessDelayGet(void)
{
if(GWSystem.mess_delay > 48) {
#if VERSION_NTSC
if (GWSystem.mess_delay > 48) {
GWSystem.mess_speed = 1;
GWSystem.mess_delay = 32;
}
#else
if (GWSystem.mess_delay > 64) {
GWSystem.mess_speed = 1;
GWSystem.mess_delay = 48;
}
#endif
return GWSystem.mess_delay;
}
void GWMGRecordSet(s32 index, u32 value)
{
if(!_CheckFlag(FLAG_ID_MAKE(1, 12))) {
if (!_CheckFlag(FLAG_ID_MAKE(1, 12))) {
GWGameStat.mg_record[index] = value;
}
}
@ -161,22 +186,14 @@ u32 GWMGRecordGet(s32 index)
void GWCharColorGet(s32 character, GXColor *color)
{
GXColor char_color[] = {
{ 227, 67, 67, 255 },
{ 68, 67, 227, 255 },
{ 241, 158, 220, 255 },
{ 67, 228, 68, 255 },
{ 138, 60, 180, 255 },
{ 146, 85, 55, 255 },
{ 227, 228, 68, 255 },
{ 40, 40, 40, 255 }
};
GXColor char_color[] = { { 227, 67, 67, 255 }, { 68, 67, 227, 255 }, { 241, 158, 220, 255 }, { 67, 228, 68, 255 }, { 138, 60, 180, 255 },
{ 146, 85, 55, 255 }, { 227, 228, 68, 255 }, { 40, 40, 40, 255 } };
*color = char_color[character];
}
void GWBoardPlayCountSet(s32 board, u8 value)
{
if(value > 99) {
if (value > 99) {
value = 99;
}
GWGameStat.board_play_count[board] = value;
@ -185,13 +202,12 @@ void GWBoardPlayCountSet(s32 board, u8 value)
void GWBoardPlayCountAdd(s32 board, u8 value)
{
value += GWGameStat.board_play_count[board];
if(value > 99) {
if (value > 99) {
value = 99;
}
GWGameStat.board_play_count[board] = value;
}
u8 GWBoardPlayCountGet(s32 board)
{
return GWGameStat.board_play_count[board];
@ -219,8 +235,8 @@ u16 GWBoardMaxCoinsGet(s32 board)
s32 GWBoardWinCountInc(s32 character, s32 board)
{
s32 win_count = GWGameStat.board_win_count[board][character]+1;
if(win_count > 99) {
s32 win_count = GWGameStat.board_win_count[board][character] + 1;
if (win_count > 99) {
win_count = 99;
}
GWGameStat.board_win_count[board][character] = win_count;
@ -244,9 +260,10 @@ s32 GWMGAvailGet(s32 id)
id -= 401;
word = id >> 5;
bit = id % 32;
if(GWGameStat.mg_avail[word] & (1 << bit)) {
if (GWGameStat.mg_avail[word] & (1 << bit)) {
return 1;
} else {
}
else {
return 0;
}
}
@ -268,9 +285,10 @@ s32 GWMGCustomGet(s32 id)
id -= 401;
word = id >> 5;
bit = id % 32;
if(GWGameStat.mg_custom[word] & (1 << bit)) {
if (GWGameStat.mg_custom[word] & (1 << bit)) {
return 1;
} else {
}
else {
return 0;
}
}
@ -302,14 +320,14 @@ s16 GWCoinsGet(s32 player)
void GWCoinsSet(s32 player, s16 value)
{
if(!_CheckFlag(FLAG_ID_MAKE(1, 12))) {
if(value < 0) {
if (!_CheckFlag(FLAG_ID_MAKE(1, 12))) {
if (value < 0) {
value = 0;
}
if(value > 999) {
if (value > 999) {
value = 999;
}
if(value > GWPlayer[player].coins_max) {
if (value > GWPlayer[player].coins_max) {
GWPlayer[player].coins_max = value;
}
GWPlayer[player].coins = value;
@ -318,18 +336,18 @@ void GWCoinsSet(s32 player, s16 value)
void GWCoinsAdd(s32 player, s16 amount)
{
GWCoinsSet(player, GWPlayer[player].coins+amount);
GWCoinsSet(player, GWPlayer[player].coins + amount);
}
void GWStarsSet(s32 player, s16 value)
{
if(value < 0) {
if (value < 0) {
value = 0;
}
if(value > 999) {
if (value > 999) {
value = 999;
}
if(value > GWPlayer[player].stars_max) {
if (value > GWPlayer[player].stars_max) {
GWPlayer[player].stars_max = value;
}
GWPlayer[player].stars = value;
@ -337,7 +355,7 @@ void GWStarsSet(s32 player, s16 value)
void GWStarsAdd(s32 player, s16 amount)
{
GWStarsSet(player, GWPlayer[player].stars+amount);
GWStarsSet(player, GWPlayer[player].stars + amount);
}
s32 GWStarsGet(s32 player)
@ -347,10 +365,10 @@ s32 GWStarsGet(s32 player)
void GWTotalStarsSet(s16 value)
{
if(value < 0) {
if (value < 0) {
value = 0;
}
if(value > 10000) {
if (value > 10000) {
value = 10000;
}
GWGameStat.total_stars = value;
@ -358,7 +376,7 @@ void GWTotalStarsSet(s16 value)
void GWTotalStarsAdd(s16 amount)
{
GWTotalStarsSet(GWGameStat.total_stars+amount);
GWTotalStarsSet(GWGameStat.total_stars + amount);
}
u16 GWTotalStarsGet(void)

View file

@ -24,7 +24,7 @@ typedef struct {
/* 0x3C */ HsfanimStruct00 *unk3C;
} ParManProcUserData; // Size 0x40
static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1);
static void particleFunc(ModelData *arg0, Mtx arg1);
static void ParManFunc(void);
static void ParManHook(ModelData *arg0, ParticleData *arg1, Mtx matrix);
@ -493,7 +493,7 @@ s16 Hu3DParticleCreate(AnimData *arg0, s16 arg1) {
s16 i;
void *temp_r24;
temp_r25 = Hu3DHookFuncCreate((void*) &_Hu3DParticleAttrReset);
temp_r25 = Hu3DHookFuncCreate((void*) &particleFunc);
temp_r28 = &Hu3DData[temp_r25];
Hu3DModelAttrSet(temp_r25, HU3D_ATTR_PARTICLE_KILL);
temp_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(ParticleData), temp_r28->unk_48);
@ -658,7 +658,7 @@ static float baseST[] = {
1.0f, 1.0f, 0.0f, 1.0f
};
static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1) {
static void particleFunc(ModelData *arg0, Mtx arg1) {
Vec *var_r30;
float temp_f31;
float temp_f29;

View file

@ -39,6 +39,8 @@ static void InitVI();
static void SwapBuffers();
static void LoadMemInfo();
#define ASSERT_LINE(ntsc, pal) ((VERSION_NTSC) ? (ntsc) : (pal))
void HuSysInit(GXRenderModeObj *mode)
{
u32 rnd_temp;
@ -46,13 +48,19 @@ void HuSysInit(GXRenderModeObj *mode)
DVDInit();
VIInit();
PADInit();
#if VERSION_NTSC
if(OSGetProgressiveMode() == 1 && VIGetDTVStatus() == 1) {
mode = &GXNtsc480Prog;
}
#else
mode->efbHeight = 480;
#endif
InitRenderMode(mode);
InitMem();
VIConfigure(RenderMode);
#if VERSION_NTSC
VIConfigurePan(0, 0, 640, 480);
#endif
DefaultFifo = OSAlloc(0x100000);
DefaultFifoObj = GXInit(DefaultFifo, 0x100000);
InitGX();
@ -91,7 +99,7 @@ static void InitRenderMode(GXRenderModeObj *mode)
break;
default:
OSPanic("init.c", 169, "DEMOInit: invalid TV format\n");
OSPanic("init.c", ASSERT_LINE(169, 167), "DEMOInit: invalid TV format\n");
break;
}
GXAdjustForOverscan(RenderMode, &rmodeobj, 0, 16);
@ -104,7 +112,12 @@ static void InitGX()
GXSetScissor(0, 0, RenderMode->fbWidth, RenderMode->efbHeight);
GXSetDispCopySrc(0, 0, RenderMode->fbWidth, RenderMode->efbHeight);
GXSetDispCopyDst(RenderMode->fbWidth, RenderMode->xfbHeight);
#if VERSION_NTSC
GXSetDispCopyYScale((float)RenderMode->xfbHeight/(float)RenderMode->efbHeight);
#else
OSReport("%D\n", RenderMode->xfbHeight);
GXSetDispCopyYScale(GXGetYScaleFactor(RenderMode->efbHeight, RenderMode->xfbHeight));
#endif
GXSetCopyFilter(RenderMode->aa, RenderMode->sample_pattern, GX_TRUE, RenderMode->vfilter);
if(RenderMode->aa) {
GXSetPixelFmt(GX_PF_RGB565_Z16, GX_ZC_LINEAR);
@ -120,9 +133,21 @@ static void InitMem()
void *arena_lo = OSGetArenaLo();
void *arena_hi = OSGetArenaHi();
u32 fb_size = (u16)(((u16)RenderMode->fbWidth+15) & ~15)*RenderMode->xfbHeight*2;
u32 *fb1;
u32 *fb2;
u32 i;
DemoFrameBuffer1 = (void *)OSRoundUp32B((u32)arena_lo);
DemoFrameBuffer2 = (void *)OSRoundUp32B((u32)DemoFrameBuffer1+fb_size);
DemoCurrentBuffer = DemoFrameBuffer2;
#if VERSION_PAL
fb1 = DemoFrameBuffer1;
fb2 = DemoFrameBuffer2;
for(i=0; i<fb_size/4; i++, fb1++, fb2++) {
*fb1 = *fb2 = 0x800080;
}
DCStoreRangeNoSync(DemoFrameBuffer1, fb_size);
DCStoreRangeNoSync(DemoFrameBuffer2, fb_size);
#endif
arena_lo = (void *)OSRoundUp32B((u32)DemoFrameBuffer2+fb_size);
OSSetArenaLo(arena_lo);
if(OSGetConsoleType() == OS_CONSOLE_DEVHW1 && OSGetPhysicalMemSize() != 0x400000 && OSGetConsoleSimulatedMemSize() < 0x1800000) {
@ -256,7 +281,7 @@ static void LoadMemInfo()
OSReport("loop\n");
copy_size = (size < 32) ? size : 32;
if(DVDRead(&file, buf_ptr, OSRoundUp32B(copy_size), offset) < 0) {
OSPanic("init.c", 576, "An error occurred when issuing read to /meminfo.bin\n");
OSPanic("init.c", ASSERT_LINE(576, 586), "An error occurred when issuing read to /meminfo.bin\n");
}
entries = copy_size/sizeof(struct memory_info);
for(i=0; i<entries; i++) {

View file

@ -43,10 +43,17 @@ void main(void)
u32 met1;
s16 i;
s32 retrace;
#if VERSION_PAL
s16 temp = 0;
#endif
HuDvdErrWait = 0;
SystemInitF = 0;
#if VERSION_NTSC
HuSysInit(&GXNtsc480IntDf);
#else
HuSysInit(&GXPal528IntDf);
#endif
HuPrcInit();
HuPadInit();
GWInit();

File diff suppressed because it is too large Load diff

View file

@ -11,6 +11,14 @@
#include "string.h"
#include "stddef.h"
#if VERSION_ENG
#define SAVE_WRITE_BEGIN _SetFlag(FLAG_ID_MAKE(3, 0));
#define SAVE_WRITE_END _ClearFlag(FLAG_ID_MAKE(3, 0));
#else
#define SAVE_WRITE_BEGIN
#define SAVE_WRITE_END
#endif
#define SAVE_GET_PLAYER(player_idx) &saveBuf.buf[((player_idx)*sizeof(PlayerState))+offsetof(SaveBufData, player)]
#define SAVE_GET_PLAYER_STORY(player_idx) &saveBuf.buf[((player_idx)*sizeof(PlayerState))+offsetof(SaveBufData, playerStory)]
@ -135,9 +143,9 @@ s32 SLFileCreate(char *fileName, u32 size, void *addr) {
HuWinExAnimIn(window);
HuWinMesSet(window, MAKE_MESSID(16, 11));
HuWinMesWait(window);
_SetFlag(FLAG_ID_MAKE(3, 0));
SAVE_WRITE_BEGIN
result = HuCardCreate(curSlotNo, fileName, size, &curFileInfo);
_ClearFlag(FLAG_ID_MAKE(3, 0));
SAVE_WRITE_END
if (result < 0) {
HuWinExAnimOut(window);
HuWinExCleanup(window);
@ -150,9 +158,9 @@ s32 SLFileCreate(char *fileName, u32 size, void *addr) {
SLMessOut(1);
return CARD_RESULT_FATAL_ERROR;
}
_SetFlag(FLAG_ID_MAKE(3, 0));
SAVE_WRITE_BEGIN
result = HuCardWrite(&curFileInfo, addr, size, 0);
_ClearFlag(FLAG_ID_MAKE(3, 0));
SAVE_WRITE_END
if (result < 0) {
HuWinExAnimOut(window);
HuWinExCleanup(window);
@ -165,9 +173,9 @@ s32 SLFileCreate(char *fileName, u32 size, void *addr) {
SLMessOut(1);
return CARD_RESULT_FATAL_ERROR;
}
_SetFlag(FLAG_ID_MAKE(3, 0));
SAVE_WRITE_BEGIN
result = SLStatSet(1);
_ClearFlag(FLAG_ID_MAKE(3, 0));
SAVE_WRITE_END
HuWinExAnimOut(window);
HuWinExCleanup(window);
if (result < 0) {
@ -191,12 +199,12 @@ s32 SLFileWrite(s32 length, void *addr) {
HuWinMesSet(window, MAKE_MESSID(16, 11));
HuWinMesWait(window);
HuPrcSleep(60);
_SetFlag(FLAG_ID_MAKE(3, 0));
SAVE_WRITE_BEGIN
result = HuCardWrite(&curFileInfo, addr, length, 0);
if (result == 0) {
result = SLStatSet(1);
}
_ClearFlag(FLAG_ID_MAKE(3, 0));
SAVE_WRITE_END
HuWinExAnimOut(window);
HuWinExCleanup(window);
return result;
@ -277,7 +285,8 @@ void SLSaveDataInfoSet(OSTime *time) {
s16 year;
s16 digit;
OSCalendarTime sp8;
#if VERSION_ENG
OSTicksToCalendarTime(*time, &sp8);
saveBuf.data.comment[37] = curBoxNo + '1';
digit = (sp8.mon + 1) / 10;
@ -299,6 +308,52 @@ void SLSaveDataInfoSet(OSTime *time) {
saveBuf.data.comment[48] = digit + '0';
year -= digit * 10;
saveBuf.data.comment[49] = year + '0';
#elif VERSION_PAL
OSTicksToCalendarTime(*time, &sp8);
saveBuf.data.comment[37] = curBoxNo + '1';
digit = sp8.mday / 10;
saveBuf.data.comment[40] = digit + '0';
digit = sp8.mday % 10;
saveBuf.data.comment[41] = digit + '0';
digit = (sp8.mon + 1) / 10;
saveBuf.data.comment[43] = digit + '0';
digit = (sp8.mon + 1) % 10;
saveBuf.data.comment[44] = digit + '0';
year = sp8.year;
digit = year / 1000;
saveBuf.data.comment[46] = digit + '0';
year -= digit * 1000;
digit = year / 100;
saveBuf.data.comment[47] = digit + '0';
year -= digit * 100;
digit = year / 10;
saveBuf.data.comment[48] = digit + '0';
year -= digit * 10;
saveBuf.data.comment[49] = year + '0';
#else
//TODO: Japanese Version
OSTicksToCalendarTime(*time, &sp8);
saveBuf.data.comment[37] = curBoxNo + '1';
digit = sp8.mday / 10;
saveBuf.data.comment[40] = digit + '0';
digit = sp8.mday % 10;
saveBuf.data.comment[41] = digit + '0';
digit = (sp8.mon + 1) / 10;
saveBuf.data.comment[43] = digit + '0';
digit = (sp8.mon + 1) % 10;
saveBuf.data.comment[44] = digit + '0';
year = sp8.year;
digit = year / 1000;
saveBuf.data.comment[46] = digit + '0';
year -= digit * 1000;
digit = year / 100;
saveBuf.data.comment[47] = digit + '0';
year -= digit * 100;
digit = year / 10;
saveBuf.data.comment[48] = digit + '0';
year -= digit * 10;
saveBuf.data.comment[49] = year + '0';
#endif
}
void SLCommonSet(void) {
@ -409,6 +464,12 @@ block_36:
return 0;
}
#if VERSION_NTSC
#define SAVEWIN_POS 150
#else
#define SAVEWIN_POS 120
#endif
static s16 SLCreateSaveWin(void) {
float size[2];
s16 window;
@ -416,7 +477,7 @@ static s16 SLCreateSaveWin(void) {
HuWinInit(1);
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
HuWinMesMaxSizeGet(1, size, MAKE_MESSID(16, 68));
window = HuWinExCreateStyled(-10000.0f, 150.0f, size[0], size[1], -1, 2);
window = HuWinExCreateStyled(-10000.0f, SAVEWIN_POS, size[0], size[1], -1, 2);
saveMessWin = window;
HuWinExAnimIn(window);
HuWinInsertMesSet(window, MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
@ -641,7 +702,7 @@ s32 SLFormat(s16 slotNo) {
HuWinInit(1);
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
HuWinMesMaxSizeGet(1, winSize, MAKE_MESSID(16, 56));
window1 = HuWinExCreateStyled(-10000.0f, 150.0f, winSize[0], winSize[1], -1, 2);
window1 = HuWinExCreateStyled(-10000.0f, SAVEWIN_POS, winSize[0], winSize[1], -1, 2);
HuWinExAnimIn(window1);
HuWinInsertMesSet(window1, MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
HuWinMesSet(window1, MAKE_MESSID(16, 56));
@ -659,9 +720,9 @@ s32 SLFormat(s16 slotNo) {
SLMessOut(12);
return 0;
}
_SetFlag(FLAG_ID_MAKE(3, 0));
SAVE_WRITE_BEGIN
result = HuCardFormat(curSlotNo);
_ClearFlag(FLAG_ID_MAKE(3, 0));
SAVE_WRITE_END
if (result < 0) {
HuWinExAnimOut(window1);
HuWinExCleanup(window1);
@ -721,11 +782,19 @@ s16 SLMessOut(s16 mess) {
case 2:
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]);
#if VERSION_NTSC
save_mess = MAKE_MESSID(16, 74);
#else
save_mess = MAKE_MESSID(16, 72);
#endif
break;
case 3:
#if VERSION_NTSC
save_mess = MAKE_MESSID(16, 74);
#else
save_mess = MAKE_MESSID(16, 72);
#endif
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]);
break;
@ -772,7 +841,11 @@ s16 SLMessOut(s16 mess) {
case 11:
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]);
#if VERSION_NTSC
save_mess = MAKE_MESSID(16, 72);
#else
save_mess = MAKE_MESSID(16, 76);
#endif
break;
case 12:

View file

@ -4,6 +4,9 @@
#include "game/pad.h"
#include "game/audio.h"
#include "game/thpmain.h"
#include "game/gamework_data.h"
#include "version.h"
#define SR_DVD_LOADING 0
#define SR_DVD_COVER_OPEN 1
@ -19,6 +22,8 @@ extern s32 HuDvdErrWait;
static s32 SR_PreRstChk[4] = {};
#if VERSION_NTSC
#include "coveropen_en.inc"
#include "fatalerror_en.inc"
#include "loading_en.inc"
@ -26,6 +31,45 @@ static s32 SR_PreRstChk[4] = {};
#include "retryerror_en.inc"
#include "wrongdisc_en.inc"
#else
#include "coveropen_en.inc"
#include "fatalerror_en.inc"
#include "loading_en.inc"
#include "nodisc_en.inc"
#include "retryerror_en.inc"
#include "wrongdisc_en.inc"
#include "coveropen_fr.inc"
#include "fatalerror_fr.inc"
#include "loading_fr.inc"
#include "nodisc_fr.inc"
#include "retryerror_fr.inc"
#include "wrongdisc_fr.inc"
#include "coveropen_ge.inc"
#include "fatalerror_ge.inc"
#include "loading_ge.inc"
#include "nodisc_ge.inc"
#include "retryerror_ge.inc"
#include "wrongdisc_ge.inc"
#include "coveropen_it.inc"
#include "fatalerror_it.inc"
#include "loading_it.inc"
#include "nodisc_it.inc"
#include "retryerror_it.inc"
#include "wrongdisc_it.inc"
#include "coveropen_sp.inc"
#include "fatalerror_sp.inc"
#include "loading_sp.inc"
#include "nodisc_sp.inc"
#include "retryerror_sp.inc"
#include "wrongdisc_sp.inc"
#endif
static s16 SR_PushTime[4] = {};
static s8 SR_ResetPad = -1;
@ -103,9 +147,17 @@ void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2)
XfbW = (u16)(((u16)rmode->fbWidth+15) & ~0xF);
XfbH = rmode->xfbHeight;
} else {
#if VERSION_NTSC
XfbW = 640;
XfbH = 480;
#else
XfbW = 640;
XfbH = 528;
#endif
}
#if VERSION_PAL
(void)(VIGetTvFormat() == VI_PAL);
#endif
if((u16)rmode->xFBmode == VI_XFBMODE_SF) {
XfbProg = 0;
} else {
@ -223,20 +275,39 @@ static void ToeDispCheck(void)
_HuDvdErrDispXFB(status);
}
#if VERSION_NTSC
#define XFB_SIZE 0x96000
#else
#define XFB_SIZE (XfbW*XfbH*2)
#endif
static void _HuDvdErrDispXFB(s32 error)
{
#if VERSION_NTSC
static void *bmpMes[][6] = {
loading_en, coveropen_en, nodisc_en, wrongdisc_en, retryerror_en, fatalerror_en
};
volatile s32 status;
u8 color[2];
s8 language;
#else
static void *bmpMes[][6] = {
loading_en, coveropen_en, nodisc_en, wrongdisc_en, retryerror_en, fatalerror_en,
loading_fr, coveropen_fr, nodisc_fr, wrongdisc_fr, retryerror_fr, fatalerror_fr,
loading_ge, coveropen_ge, nodisc_ge, wrongdisc_ge, retryerror_ge, fatalerror_ge,
loading_it, coveropen_it, nodisc_it, wrongdisc_it, retryerror_it, fatalerror_it,
loading_sp, coveropen_sp, nodisc_sp, wrongdisc_sp, retryerror_sp, fatalerror_sp
};
#endif
s16 *bmpData;
u8 *xfb1_ptr;
u8 *xfb2_ptr;
u32 i;
u32 data;
u32 row;
s8 language;
u32 *xfb1;
u32 *xfb2;
u32 j;
@ -246,25 +317,59 @@ static void _HuDvdErrDispXFB(s32 error)
u32 *data_ptr;
u32 row_offset;
u32 row_pitch;
void *tempfb1;
void *tempfb2;
s32 status;
u8 color[2];
#if VERSION_PAL
switch(GWGameStat.language) {
case 2:
language = 2;
break;
case 3:
language = 1;
break;
case 4:
language = 3;
break;
case 5:
language = 4;
break;
default:
language = 0;
break;
}
#else
language = 0;
#endif
xfb1 = Xfb[0];
xfb2 = Xfb[1];
for(i=0; i<0x25800; i++, xfb1++, xfb2++) {
for(i=0; i<XFB_SIZE/4; i++, xfb1++, xfb2++) {
#if VERSION_NTSC
*xfb1 = *xfb2 = 0x800080;
#else
*xfb1 = *xfb2 = 0x10801080;
#endif
}
DCStoreRangeNoSync(Xfb[0], 0x96000);
DCStoreRangeNoSync(Xfb[1], 0x96000);
DCStoreRangeNoSync(Xfb[0], XFB_SIZE);
DCStoreRangeNoSync(Xfb[1], XFB_SIZE);
bmpData = bmpMes[language][error];
data_ptr = (u32 *)(bmpData+2);
row_offset = ((XfbW/2)-(bmpData[0]/2))*2;
row_pitch = XfbW*2;
color[1] = color[0] = 128;
for(row=0; row<bmpData[1]; row++) {
void *sp14[2];
xfb1_ptr = ((u8 *)(Xfb[0])+((row+200)*row_pitch)+row_offset);
sp14[1] = xfb1_ptr;
tempfb1 = xfb1_ptr;
xfb2_ptr = ((u8 *)(Xfb[1])+((row+200)*row_pitch)+row_offset);
sp14[0] = xfb2_ptr;
tempfb2 = xfb2_ptr;
for(i=0; i<bmpData[0]; i += 32) {
data = *data_ptr++;
for(j=0; j<32; j += 2, data >>= 2, xfb1_ptr += 4, xfb2_ptr += 4) {
@ -290,8 +395,8 @@ static void _HuDvdErrDispXFB(s32 error)
}
}
}
DCStoreRangeNoSync(sp14[1], bmpData[0]*2);
DCStoreRangeNoSync(sp14[0], bmpData[0]*2);
DCStoreRangeNoSync(tempfb1, bmpData[0]*2);
DCStoreRangeNoSync(tempfb2, bmpData[0]*2);
}
status = DVDGetDriveStatus();
while(status) {

View file

@ -58,7 +58,12 @@ void *messDataPtr;
static s32 messDataNo;
static s16 winMaxWidth;
static s16 winMaxHeight;
#if VERSION_NTSC
static u8 mesWInsert[8];
#else
static u16 mesWInsert[8];
#endif
static u8 winTabSize;
static u8 winInsertF;
static u32 winAMemP;
@ -96,6 +101,7 @@ static spcFontTblData spcFontTbl[] = {
{ &cardAnimB, 0, 32, 32, 16, 16 }
};
#if VERSION_NTSC
u8 charWETbl[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -118,6 +124,31 @@ u8 charWETbl[] = {
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20
};
#else
u8 charWETbl[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 18, 20, 12, 12, 11, 14,
8, 13, 12, 12, 12, 12, 12, 12, 12, 9, 11, 12, 11, 15, 12, 13,
12, 13, 12, 12, 11, 12, 11, 15, 12, 13, 11, 12, 6, 8, 8, 12,
20, 12, 11, 12, 11, 11, 9, 12, 11, 4, 8, 11, 4, 14, 11, 12,
11, 12, 9, 11, 9, 11, 11, 15, 11, 11, 11, 4, 13, 8, 14, 12,
9, 8, 8, 8, 20, 4, 12, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 12, 12, 12, 12, 12, 12, 12, 12, 8, 8, 12, 12, 12, 12, 12,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
13, 13, 6, 12, 18, 14, 14, 8, 20, 20, 20, 20, 20, 20, 20, 20,
20, 10, 10, 10, 12, 12, 12, 12, 12, 10, 10, 12, 12, 10, 10, 10,
10, 7, 7, 12, 12, 10, 12, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 16, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20
};
#endif
u8 charWJTbl[] = {
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 20, 20, 20,
@ -171,12 +202,29 @@ static s32 frameFileTbl[] = {
WIN_FRAME1_ANM
};
#if VERSION_NTSC
static char *mesDataTbl[] = {
"mess/mini.dat",
"mess/board.dat",
"mess/mini_e.dat",
"mess/board_e.dat"
};
#else
static char *mesDataTbl[] = {
"mess/mini.dat",
"mess/board.dat",
"mess/mini_e.dat",
"mess/board_e.dat",
"mess/mini_g.dat",
"mess/board_g.dat",
"mess/mini_f.dat",
"mess/board_f.dat",
"mess/mini_i.dat",
"mess/board_i.dat",
"mess/mini_s.dat",
"mess/board_s.dat"
};
#endif
static s32 winVoiceTbl[] = {
0x37, 0x36, 0x38, 0x44,
@ -609,12 +657,13 @@ static inline void charEntry(s16 window, s16 x, s16 y, s16 char_idx, s16 color)
static void HuWinDrawMes(s16 window) {
WindowData *window_ptr = &winData[window];
HuSprGrp *group = &HuSprGrpData[window_ptr->group];
s16 c;
s16 i;
s16 char_w;
s16 tab_w;
s16 insert_mess;
s16 mess_end;
s16 c;
s16 shadow_color;
s16 color;
s16 mess_w;
@ -790,6 +839,7 @@ static void HuWinDrawMes(s16 window) {
}
c = window_ptr->mess[0];
window_ptr->attr |= 0x200;
#if VERSION_NTSC
if (window_ptr->mess[1] == 128) {
if (c >= 150 && c <= 164) {
c = c+106;
@ -809,6 +859,7 @@ static void HuWinDrawMes(s16 window) {
}
window_ptr->mess++;
}
#endif
color = (window_ptr->attr & 0x20) ? 8 : window_ptr->mess_color;
if (window_ptr->attr & 1) {
shadow_color = 0;
@ -1249,11 +1300,15 @@ void HuWinMesRead(s32 mess_data_no) {
HuMemDirectFree(messDataPtr);
}
messDataNo = mess_data_no;
#if VERSION_NTSC
if (LanguageNo == 0) {
mess_path = mesDataTbl[messDataNo];
} else {
mess_path = mesDataTbl[messDataNo + 2];
}
#else
mess_path = mesDataTbl[messDataNo+(LanguageNo*2)];
#endif
dvd_mess = HuDvdDataRead(mess_path);
messDataPtr = HuMemDirectMalloc(HEAP_SYSTEM, DirDataSize);
memcpy(messDataPtr, dvd_mess, DirDataSize);
@ -1653,9 +1708,15 @@ static void GetMesMaxSizeSub(u32 mess) {
char_w = mesWInsert[*mess_data - 1];
break;
}
#if VERSION_NTSC
if ((*mess_data != 255 && *mess_data >= 32) || *mess_data == 16) {
cr_flag = 1;
}
#else
if ((*mess_data != 255 && *mess_data >= 32) || *mess_data == 16 || mess_data[-1] == 31) {
cr_flag = 1;
}
#endif
line_w += char_w;
line_h += char_h;
mess_data++;

View file

@ -3,6 +3,7 @@
#include "game/memory.h"
#include "game/flag.h"
#include "game/board/tutorial.h"
#include "version.h"
s16 HuSysVWaitGet(s16 old);
@ -141,6 +142,11 @@ void WipeCreate(s16 mode, s16 type, s16 duration)
void WipeColorSet(u8 r, u8 g, u8 b)
{
#if VERSION_PAL
if(r > 160 && g > 160 && b > 160) {
r = g = b = 160;
}
#endif
wipeData.color.r = r;
wipeData.color.g = g;
wipeData.color.b = b;