Fix dll killing, load modeseldll

This commit is contained in:
dbalatoni13 2025-04-12 22:16:44 +02:00
parent c133583b3b
commit 176f6f9638
15 changed files with 159 additions and 52 deletions

View file

@ -189,4 +189,4 @@ foreach (dir ${REL_DIRS})
endif () endif ()
endforeach () endforeach ()
add_dependencies(marioparty4 bootDll) add_dependencies(marioparty4 bootDll modeseldll)

96
dol.def
View file

@ -1,7 +1,18 @@
EXPORTS EXPORTS
game_main game_main
C_MTXCopy
C_MTXScale
C_VECAdd
C_VECScale
C_VECSubtract
C_VECNormalize
C_VECMag
C_VECCrossProduct
mtxRotCat
byteswap_u32 byteswap_u32
byteswap_s32 byteswap_s32
msmMusSetMasterVolume
msmSysGetOutputMode
BoardRollExec BoardRollExec
BoardRollKill BoardRollKill
BoardDiceValueSet BoardDiceValueSet
@ -390,12 +401,30 @@ EXPORTS
espTPLvlSet espTPLvlSet
espZRotSet espZRotSet
HuAudFXPlay HuAudFXPlay
HuAudFXStop
HuAudSeqPlay
HuAudSeqAllFadeOut
HuAudSStreamAllFadeOut HuAudSStreamAllFadeOut
HuAudSStreamPlay HuAudSStreamPlay
HuAudSndGrpSetSet HuAudSndGrpSetSet
HuMemDirectMalloc HuMemDirectMalloc
HuMemDirectMallocNum
HuMemDirectFree HuMemDirectFree
HuDataInit
HuDataDirRead
HuDataRead
HuDataReadNum
HuDataReadMulti
HuDataDirReadAsync
HuDataDirReadNumAsync
HuDataSelHeapRead
HuDataSelHeapReadNum HuDataSelHeapReadNum
HuDataGetSize
HuDataDirClose
HuDataDirCloseNum
HuDataClose
HuDataCloseMulti
HuDataReadNumHeapShortForce
HuDecodeData HuDecodeData
Hu3DLayerHookSet Hu3DLayerHookSet
Hu3DNoSyncSet Hu3DNoSyncSet
@ -597,16 +626,32 @@ EXPORTS
Hu3DProjectionPosSet Hu3DProjectionPosSet
Hu3DProjectionTPLvlSet Hu3DProjectionTPLvlSet
Hu3DProjectionKill Hu3DProjectionKill
HuPrcEnd HuPrcInit
HuPrcCall
HuPrcCreate HuPrcCreate
HuPrcCurrentGet HuPrcKill
HuPrcEnd
HuPrcWakeup
HuPrcSleep HuPrcSleep
HuPrcVSleep HuPrcVSleep
HuPrcCurrentGet
HuPrcDestructorSet
HuPrcDestructorSet2
HuPrcChildCreate
HuPrcChildLink
HuPrcChildUnlink
HuPrcChildKill
HuPrcMemAlloc
HuPrcMemFree
HuSetVecF HuSetVecF
HuSprAnimRead HuSprAnimRead
HuSprBankSet
HuSprCreate HuSprCreate
HuSprGrpCreate HuSprGrpCreate
HuSprGrpMemberSet HuSprGrpMemberSet
HuSprGrpPosSet
HuSprGrpScaleSet
HuSprGrpScissorSet
HuSprGrpKill HuSprGrpKill
HuSprAttrSet HuSprAttrSet
HuSprAttrReset HuSprAttrReset
@ -626,6 +671,45 @@ EXPORTS
HuTHPFrameGet HuTHPFrameGet
HuTHPTotalFrameGet HuTHPTotalFrameGet
HuTHPSetVolume HuTHPSetVolume
HuCardCheck
HuCardMount
HuCardUnMount
HuCardFormat
HuCardOpen
HuCardRead
HuCardCreate
HuCardClose
HuCardWrite
HuCardDelete
HuCardSectorSizeGet
HuCardFreeSpaceGet
HuCardSlotCheck
SLFileOpen
SLFileCreate
SLFileWrite
SLFileClose
SLFileRead
SLCurSlotNoSet
SLSaveDataMake
SLCommonSet
SLSaveBoard
SLSaveBoardStory
SLSave
SLLoadGameStat
SLLoadBoard
SLLoadBoardStory
SLLoad
SLCurBoxNoSet
SLSaveFlagSet
SLSaveFlagGet
SLCheckSumCheck
SLCheckSumSet
SLSerialNoGet
SLSerialNoCheck
SLStatSet
_CheckFlag
_SetFlag
_ClearFlag
HuWindowInit HuWindowInit
HuWinInit HuWinInit
HuWinCreate HuWinCreate
@ -709,15 +793,21 @@ EXPORTS
MGSeqInit MGSeqInit
MGSeqCreate MGSeqCreate
MGSeqPosSet MGSeqPosSet
omAddObjEx
omGameSysInit
omOvlCallEx omOvlCallEx
omOvlReturnEx omOvlGotoEx
omOvlHisChg omOvlHisChg
omOvlHisGet omOvlHisGet
omOvlReturnEx
omInitObjMan omInitObjMan
OSGetTick OSGetTick
OSGetTime
OSTicksToCalendarTime
OSReport OSReport
WipeColorSet WipeColorSet
WipeCreate WipeCreate
WipeExecAlways WipeExecAlways
WipeInit WipeInit
WipeStatGet WipeStatGet
GWGameStatReset

View file

@ -2,8 +2,9 @@
#define _GAME_CARD_H #define _GAME_CARD_H
#include "dolphin.h" #include "dolphin.h"
#include "version.h"
extern u8 UnMountCnt; SHARED_SYM extern u8 UnMountCnt;
void HuCardInit(void); void HuCardInit(void);
s32 HuCardCheck(void); s32 HuCardCheck(void);

View file

@ -5,6 +5,7 @@
#include "game/hsfanim.h" #include "game/hsfanim.h"
#include "game/hsfformat.h" #include "game/hsfformat.h"
#include "game/memory.h" #include "game/memory.h"
#include "version.h"
#define HU3D_MODEL_MAX 512 #define HU3D_MODEL_MAX 512
#define HU3D_MOTION_MAX 256 #define HU3D_MOTION_MAX 256
@ -297,7 +298,7 @@ void Hu3DProjectionPosSet(s16, Vec *, Vec *, Vec *);
void Hu3DProjectionTPLvlSet(s16, float); void Hu3DProjectionTPLvlSet(s16, float);
void Hu3DMipMapSet(char *, s16, s32, float); void Hu3DMipMapSet(char *, s16, s32, float);
extern ModelData Hu3DData[0x200]; SHARED_SYM extern ModelData Hu3DData[0x200];
extern CameraData Hu3DCamera[0x10]; extern CameraData Hu3DCamera[0x10];
extern AnimData *reflectAnim[5]; extern AnimData *reflectAnim[5];
extern AnimData *hiliteAnim[4]; extern AnimData *hiliteAnim[4];

View file

@ -4,6 +4,7 @@
#include "dolphin.h" #include "dolphin.h"
#include "game/process.h" #include "game/process.h"
#include "game/gamework_data.h" #include "game/gamework_data.h"
#include "version.h"
typedef struct mg_info { typedef struct mg_info {
u16 ovl; u16 ovl;
@ -27,10 +28,10 @@ extern s16 mgBattleStar[4];
extern s16 mgBattleStarMax; extern s16 mgBattleStarMax;
extern u8 lbl_801D3E94; extern u8 lbl_801D3E94;
extern u32 mgRecordExtra; extern u32 mgRecordExtra;
extern s32 mgQuitExtraF; SHARED_SYM extern s32 mgQuitExtraF;
extern s32 mgPracticeEnableF; SHARED_SYM extern s32 mgPracticeEnableF;
extern s32 mgInstExitEnableF; extern s32 mgInstExitEnableF;
extern u8 mgBoardHostEnableF; SHARED_SYM extern u8 mgBoardHostEnableF;
extern s16 mgTicTacToeGrid[3][3]; extern s16 mgTicTacToeGrid[3][3];
extern u8 mgIndexList[256]; extern u8 mgIndexList[256];

View file

@ -24,13 +24,13 @@ typedef union save_buf_all {
u8 ATTRIBUTE_ALIGN(32) buf[SAVE_BUF_SIZE]; u8 ATTRIBUTE_ALIGN(32) buf[SAVE_BUF_SIZE];
} SaveBufAll; } SaveBufAll;
extern char *SaveFileNameTbl[]; SHARED_SYM extern char *SaveFileNameTbl[];
extern CARDFileInfo curFileInfo; SHARED_SYM extern CARDFileInfo curFileInfo;
extern SaveBufAll saveBuf; SHARED_SYM extern SaveBufAll saveBuf;
extern u64 SLSerialNo; extern u64 SLSerialNo;
extern s32 saveExecF; extern s32 saveExecF;
extern u8 curBoxNo; extern u8 curBoxNo;
extern s16 curSlotNo; SHARED_SYM extern s16 curSlotNo;
s32 SLFileOpen(char *fileName); s32 SLFileOpen(char *fileName);
s32 SLFileCreate(char *fileName, u32 size, void *addr); s32 SLFileCreate(char *fileName, u32 size, void *addr);

View file

@ -907,9 +907,12 @@ static void SMSound3DDraw(void);
static void SMSound3DInit(omObjData *object) static void SMSound3DInit(omObjData *object)
{ {
#ifdef __MWERKS__
// TODO PC
s8 *data = msmSeGetIndexPtr(emiCompDataNo); s8 *data = msmSeGetIndexPtr(emiCompDataNo);
emiCompVal = data[12]; emiCompVal = data[12];
object->func = SMSound3DUpdate; object->func = SMSound3DUpdate;
#endif
} }
static void SMSound3DUpdate(omObjData *object) static void SMSound3DUpdate(omObjData *object)

View file

@ -4,7 +4,7 @@
#include "version.h" #include "version.h"
static void *cardWork; static void *cardWork;
u8 UnMountCnt; SHARED_SYM u8 UnMountCnt;
static void MountCallBack(s32 chan, s32 result); static void MountCallBack(s32 chan, s32 result);

View file

@ -91,8 +91,8 @@ static UnkCharInstanceStruct charInstance[8];
static s16 effectMdl[8]; static s16 effectMdl[8];
static EffectParamData *particleData[8]; static EffectParamData *particleData[8];
static Process *itemHookProcess[32]; static Process *itemHookProcess[32];
static u16 lbl_801975B0[8]; static u16 effectFlag[15];
static u8 lbl_801975C0[0x90]; // Unused? static u8 lbl_801975C0[0x82]; // Unused?
static s32 skipAnimUpdate; static s32 skipAnimUpdate;
static void *effectAMemP; static void *effectAMemP;
@ -1135,7 +1135,7 @@ void CharModelKill(s16 character)
CharModelKill(i); CharModelKill(i);
} }
for (i = 0; i < 15; i++) { for (i = 0; i < 15; i++) {
lbl_801975B0[i] = 0; effectFlag[i] = 0;
} }
return; return;
} }
@ -1736,10 +1736,10 @@ void CharModelEffectEnableSet(s16 character, s32 arg1)
if (character >= 8) { if (character >= 8) {
if (arg1 == 0) { if (arg1 == 0) {
lbl_801975B0[character] |= 0x10; effectFlag[character] |= 0x10;
} }
else { else {
lbl_801975B0[character] &= ~0x10; effectFlag[character] &= ~0x10;
} }
return; return;
} }
@ -1835,7 +1835,7 @@ static void UpdateNpcEffect(void)
temp_r26 = Hu3DMotionTimeGet(temp_r25); temp_r26 = Hu3DMotionTimeGet(temp_r25);
switch (temp_r27[2]) { switch (temp_r27[2]) {
case 0: case 0:
if (!(temp_r26 & 0xF) && !(lbl_801975B0[temp_r28] & 0x10)) { if (!(temp_r26 & 0xF) && !(effectFlag[temp_r28] & 0x10)) {
effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y); effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y);
effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10); effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10);
effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y); effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y);
@ -1854,7 +1854,7 @@ static void UpdateNpcEffect(void)
} }
break; break;
case 1: case 1:
if (!(temp_r26 & 3) && !(lbl_801975B0[temp_r28] & 0x10)) { if (!(temp_r26 & 3) && !(effectFlag[temp_r28] & 0x10)) {
effectDustParam.unk0C.x = 4.0 * -sind(temp_r30->rot.y); effectDustParam.unk0C.x = 4.0 * -sind(temp_r30->rot.y);
effectDustParam.unk0C.y = 2.0 + 0.1 * frandmod(10); effectDustParam.unk0C.y = 2.0 + 0.1 * frandmod(10);
effectDustParam.unk0C.z = 4.0 * -cosd(temp_r30->rot.y); effectDustParam.unk0C.z = 4.0 * -cosd(temp_r30->rot.y);
@ -1874,7 +1874,7 @@ static void UpdateNpcEffect(void)
break; break;
case 2: case 2:
if (temp_r28 != -1) { if (temp_r28 != -1) {
if (!(temp_r26 & 0x1F) && !(lbl_801975B0[temp_r28] & 0x10)) { if (!(temp_r26 & 0x1F) && !(effectFlag[temp_r28] & 0x10)) {
effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y); effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y);
effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10); effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10);
effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y); effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y);
@ -1893,7 +1893,7 @@ static void UpdateNpcEffect(void)
break; break;
case 3: case 3:
if (temp_r28 != -1) { if (temp_r28 != -1) {
if (!(temp_r26 & 3) && !(lbl_801975B0[temp_r28] & 0x10)) { if (!(temp_r26 & 3) && !(effectFlag[temp_r28] & 0x10)) {
effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y); effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y);
effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10); effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10);
effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y); effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y);
@ -1912,7 +1912,7 @@ static void UpdateNpcEffect(void)
break; break;
case 4: case 4:
if (temp_r28 != -1) { if (temp_r28 != -1) {
if (!(temp_r26 & 7) && !(lbl_801975B0[temp_r28] & 0x10)) { if (!(temp_r26 & 7) && !(effectFlag[temp_r28] & 0x10)) {
effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y); effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y);
effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10); effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10);
effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y); effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y);
@ -1933,7 +1933,7 @@ static void UpdateNpcEffect(void)
if (temp_r26 != 0) { if (temp_r26 != 0) {
break; break;
} }
if (lbl_801975B0[temp_r28] & 0x10) { if (effectFlag[temp_r28] & 0x10) {
break; break;
} }
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {

View file

@ -22,7 +22,7 @@
#define SHADOW_HEAP_SIZE 0x9000 #define SHADOW_HEAP_SIZE 0x9000
ModelData Hu3DData[HU3D_MODEL_MAX]; SHARED_SYM ModelData Hu3DData[HU3D_MODEL_MAX];
CameraData Hu3DCamera[HU3D_CAM_MAX]; CameraData Hu3DCamera[HU3D_CAM_MAX];
static s16 layerNum[8]; static s16 layerNum[8];
static void (*layerHook[8])(s16); static void (*layerHook[8])(s16);

View file

@ -140,7 +140,7 @@ void omDLLUnlink(omDllData *dll_ptr, s16 flag)
{ {
OSReport("odjdll>Unlink DLL:%s\n", dll_ptr->name); OSReport("odjdll>Unlink DLL:%s\n", dll_ptr->name);
#ifdef _WIN32 #ifdef _WIN32
FreeLibrary(dll_ptr->hModule); FreeLibrary(dll_ptr->hModule);
#else #else
if(flag == 1) { if(flag == 1) {
OSReport("objdll>Unlink DLL epilog\n"); OSReport("objdll>Unlink DLL epilog\n");

View file

@ -8,6 +8,8 @@
#include <game/sprite.h> #include <game/sprite.h>
#include "game/pad.h" #include "game/pad.h"
#include "game/printfunc.h" #include "game/printfunc.h"
#include "game/minigame_seq.h"
#include "game/window.h"
#define OM_OVL_HIS_MAX 16 #define OM_OVL_HIS_MAX 16
@ -46,6 +48,11 @@ char omUPauseFlag;
SHARED_SYM s16 omSysExitReq; SHARED_SYM s16 omSysExitReq;
s16 omdispinfo; s16 omdispinfo;
#ifdef TARGET_PC
OverlayID pcOvlToKill = OVL_INVALID;
s16 pcOvlKillArg = 0;
#endif
static omOvlHisData omovlhis[OM_OVL_HIS_MAX]; static omOvlHisData omovlhis[OM_OVL_HIS_MAX];
u8 omSysPauseEnableFlag = TRUE; u8 omSysPauseEnableFlag = TRUE;
@ -63,16 +70,19 @@ void omMasterInit(s32 prio, FileListEntry *ovl_list, s32 ovl_count, OverlayID st
omovlhisidx = -1; omovlhisidx = -1;
omOvlCallEx(start_ovl, 1, 0, 0); omOvlCallEx(start_ovl, 1, 0, 0);
omDBGSysKeyObj = NULL; omDBGSysKeyObj = NULL;
#ifdef __MWERKS__
// TODO PC
omSysPauseEnable(TRUE); omSysPauseEnable(TRUE);
#endif
} }
static void omWatchOverlayProc(void) static void omWatchOverlayProc(void)
{ {
while (1) { while (1) {
if (omcurovl == OVL_INVALID) { if (omcurovl == OVL_INVALID) {
#ifdef TARGET_PC
if (pcOvlToKill >= 0) {
omDLLNumEnd(pcOvlToKill, pcOvlKillArg);
pcOvlToKill = OVL_INVALID;
}
#endif
if (omnextovl >= 0 && fadeStat == 0) { if (omnextovl >= 0 && fadeStat == 0) {
HuPrcSleep(0); HuPrcSleep(0);
OSReport("++++++++++++++++++++ Start New OVL %d (EVT:%d STAT:0x%08x) ++++++++++++++++++\n", omnextovl, omnextovlevtno, omnextovlstat); OSReport("++++++++++++++++++++ Start New OVL %d (EVT:%d STAT:0x%08x) ++++++++++++++++++\n", omnextovl, omnextovlevtno, omnextovlstat);
@ -84,22 +94,16 @@ static void omWatchOverlayProc(void)
OSReport("objman>Init esp\n"); OSReport("objman>Init esp\n");
espInit(); espInit();
OSReport("objman>Call objectsetup\n"); OSReport("objman>Call objectsetup\n");
#ifdef __MWERKS__
// TODO PC
HuAudVoiceInit(omnextovl); HuAudVoiceInit(omnextovl);
HuAudDllSndGrpSet(omnextovl); HuAudDllSndGrpSet(omnextovl);
#endif
omcurovl = omnextovl; omcurovl = omnextovl;
omovlevtno = omnextovlevtno; omovlevtno = omnextovlevtno;
omovlstat = omnextovlstat; omovlstat = omnextovlstat;
omnextovl = OVL_INVALID; omnextovl = OVL_INVALID;
#ifdef __MWERKS__
// TODO PC
if (_CheckFlag(FLAG_ID_MAKE(1, 12))) { if (_CheckFlag(FLAG_ID_MAKE(1, 12))) {
MGSeqPracticeInit(); MGSeqPracticeInit();
} }
omSysPauseEnable(TRUE); omSysPauseEnable(TRUE);
#endif
omcurdll = omDLLStart(omcurovl, 0); omcurdll = omDLLStart(omcurovl, 0);
OSReport("objman>ObjectSetup end\n"); OSReport("objman>ObjectSetup end\n");
if (omcurovl != OVL_INVALID) { if (omcurovl != OVL_INVALID) {
@ -130,6 +134,7 @@ void omOvlCallEx(OverlayID overlay, s16 arg2, s32 event, s32 stat)
omovlhis[++omovlhisidx].overlay = overlay; omovlhis[++omovlhisidx].overlay = overlay;
omovlhis[omovlhisidx].event = event; omovlhis[omovlhisidx].event = event;
omovlhis[omovlhisidx].stat = stat; omovlhis[omovlhisidx].stat = stat;
omOvlGotoEx(overlay, arg2, event, stat); omOvlGotoEx(overlay, arg2, event, stat);
} }
@ -157,16 +162,10 @@ void omOvlReturnEx(s16 level, s16 arg2)
void omOvlKill(s16 arg) void omOvlKill(s16 arg)
{ {
#ifdef __MWERKS__
// TODO PC
CharModelKill(-1); CharModelKill(-1);
MGSeqKillAll(); MGSeqKillAll();
#endif
Hu3DAllKill(); Hu3DAllKill();
#ifdef __MWERKS__
// TODO PC
HuWinAllKill(); HuWinAllKill();
#endif
HuSprClose(); HuSprClose();
HuPrcChildKill(omwatchproc); HuPrcChildKill(omwatchproc);
HuMemDirectFreeNum(HEAP_SYSTEM, MEMORY_DEFAULT_NUM); HuMemDirectFreeNum(HEAP_SYSTEM, MEMORY_DEFAULT_NUM);
@ -174,13 +173,16 @@ void omOvlKill(s16 arg)
HuMemDirectFreeNum(HEAP_DVD, MEMORY_DEFAULT_NUM); HuMemDirectFreeNum(HEAP_DVD, MEMORY_DEFAULT_NUM);
HuMemDirectFreeNum(HEAP_DATA, MEMORY_DEFAULT_NUM); HuMemDirectFreeNum(HEAP_DATA, MEMORY_DEFAULT_NUM);
HuPadRumbleAllStop(); HuPadRumbleAllStop();
#ifdef __MWERKS__
// TODO PC
HuAudFXListnerKill(); HuAudFXListnerKill();
#endif
OSReport("OvlKill %d\n", arg); OSReport("OvlKill %d\n", arg);
omSysExitReq = FALSE; omSysExitReq = FALSE;
#ifdef TARGET_PC
// this function is called from the DLL, we can't kill it directly here
pcOvlToKill = omcurovl;
pcOvlKillArg = arg;
#else
omDLLNumEnd(omcurovl, arg); omDLLNumEnd(omcurovl, arg);
#endif
omcurovl = OVL_INVALID; omcurovl = OVL_INVALID;
omDBGSysKeyObj = NULL; omDBGSysKeyObj = NULL;
} }

View file

@ -1168,10 +1168,10 @@ s16 mgBattleStar[4];
s16 mgBattleStarMax; s16 mgBattleStarMax;
u8 lbl_801D3E94; u8 lbl_801D3E94;
u32 mgRecordExtra; u32 mgRecordExtra;
s32 mgQuitExtraF; SHARED_SYM s32 mgQuitExtraF;
s32 mgPracticeEnableF; SHARED_SYM s32 mgPracticeEnableF;
s32 mgInstExitEnableF; s32 mgInstExitEnableF;
u8 mgBoardHostEnableF; SHARED_SYM u8 mgBoardHostEnableF;
s16 mgTicTacToeGrid[3][3]; s16 mgTicTacToeGrid[3][3];
u8 mgIndexList[256]; u8 mgIndexList[256];

View file

@ -27,13 +27,13 @@ static void SLKillSaveWin(void);
extern u8 UnMountCnt; extern u8 UnMountCnt;
CARDFileInfo curFileInfo; SHARED_SYM CARDFileInfo curFileInfo;
SaveBufAll saveBuf; SHARED_SYM SaveBufAll saveBuf;
u64 SLSerialNo; u64 SLSerialNo;
s32 saveExecF; s32 saveExecF;
u8 curBoxNo; u8 curBoxNo;
s16 curSlotNo; SHARED_SYM s16 curSlotNo;
#if VERSION_JP #if VERSION_JP
static u8 commentTbl[2][32] = { "マリオパーティ4", "??月??日 データ?です。" }; static u8 commentTbl[2][32] = { "マリオパーティ4", "??月??日 データ?です。" };
@ -42,7 +42,7 @@ static u8 sjisNumTbl[20] = "";
static u8 commentTbl[2][32] = { "Mario Party 4", "File 0 00/00/0000" }; static u8 commentTbl[2][32] = { "Mario Party 4", "File 0 00/00/0000" };
#endif #endif
char *SaveFileNameTbl[] = { "MARIPA4BOX0", "MARIPA4BOX1", "MARIPA4BOX2" }; SHARED_SYM char *SaveFileNameTbl[] = { "MARIPA4BOX0", "MARIPA4BOX1", "MARIPA4BOX2" };
s32 SaveEnableF = 1; s32 SaveEnableF = 1;

View file

@ -686,6 +686,15 @@ s32 msmMusSetParam(s32 arg0, MSM_MUSPARAM* arg1)
return 0; return 0;
} }
void msmMusSetMasterVolume(s32 vol)
{
}
s32 msmSysGetOutputMode(void)
{
return 0;
}
s32 HuSoftResetButtonCheck(void) s32 HuSoftResetButtonCheck(void)
{ {
//puts("HuSoftResetButtonCheck is a stub"); //puts("HuSoftResetButtonCheck is a stub");