From d3b45cf2b4bfeaae6b284acf13bdbf2d187f9c04 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Sun, 6 Apr 2025 06:30:30 +0200 Subject: [PATCH] Implemented rel building and loading --- CMakeLists.txt | 23 +- dol.def | 27 + include/dolphin/os.h | 2 +- include/game/gamework_data.h | 12 +- include/game/object.h | 33 +- include/ovl_table.h | 206 ++--- include/version.h | 11 + src/REL/bootDll/main.c | 1360 +++++++++++++++++----------------- src/game/gamework.c | 14 +- src/game/main.c | 2 +- src/game/objdll.c | 31 +- src/game/objmain.c | 228 +++--- src/game/ovllist.c | 8 +- src/port/stubs.c | 10 +- 14 files changed, 1045 insertions(+), 922 deletions(-) create mode 100644 dol.def diff --git a/CMakeLists.txt b/CMakeLists.txt index 49180e9b..41d2ddcc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,27 +40,32 @@ set(DOLPHIN_FILES set(GAME_FILES src/game/armem.c + src/game/audio.c src/game/card.c src/game/ClusterExec.c src/game/data.c src/game/decode.c src/game/dvd.c src/game/EnvelopeExec.c + src/game/esprite.c src/game/fault.c src/game/flag.c src/game/font.c src/game/frand.c + src/game/gamework.c src/game/hsfanim.c src/game/hsfdraw.c src/game/hsfex.c src/game/hsfload.c src/game/hsfman.c src/game/hsfmotion.c - src/game/gamework.c + src/game/init.c src/game/main.c src/game/malloc.c src/game/memory.c - src/game/init.c + src/game/objdll.c + src/game/objmain.c + src/game/ovllist.c src/game/ShapeExec.c src/game/sprman.c src/game/sprput.c @@ -94,8 +99,20 @@ set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-std=c89 -Dinline= endforeach() endif () +# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rdynamic") + add_executable(marioparty4 ${DOLPHIN_FILES} ${GAME_FILES} ${PORT_FILES}) -target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=0) +set_property(TARGET marioparty4 PROPERTY ENABLE_EXPORTS ON) +target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=0 TARGET_MAIN) target_compile_definitions(musyx PRIVATE MUSY_VERSION_MAJOR=1 MUSY_VERSION_MINOR=5 MUSY_VERSION_PATCH=4) target_include_directories(marioparty4 PRIVATE include build/GMPE01_00/include) +if (MSVC) +target_link_options(marioparty4 PRIVATE "/DEF:${CMAKE_SOURCE_DIR}/dol.def") +endif () target_link_libraries(marioparty4 PRIVATE aurora::aurora aurora::main musyx) + +add_library(bootDll SHARED src/REL/bootDll/main.c src/REL/bootDll/language.c) +target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=0 TARGET_REL) +target_include_directories(bootDll PRIVATE include build/GMPE01_00/include) +set_target_properties(bootDll PROPERTIES LINK_FLAGS "/EXPORT:ObjectSetup") +target_link_libraries(bootDll PRIVATE musyx marioparty4) diff --git a/dol.def b/dol.def new file mode 100644 index 00000000..cef22cf5 --- /dev/null +++ b/dol.def @@ -0,0 +1,27 @@ +EXPORTS + OSReport + OSGetTick + HuMemDirectMalloc + HuMemDirectFree + HuDataSelHeapReadNum + HuDecodeData + Hu3DBGColorSet + Hu3DModelCreate + Hu3DModelAttrSet + Hu3DModelAttrReset + Hu3DCameraCreate + Hu3DCameraPerspectiveSet + Hu3DCameraViewportSet + Hu3DCameraPosSet + Hu3DModelCameraInfoSet + Hu3DModelLightInfoSet + HuPrcEnd + HuPrcCreate + HuPrcCurrentGet + HuPrcSleep + HuPrcVSleep + omOvlCallEx + omOvlReturnEx + omOvlHisChg + omOvlHisGet + omInitObjMan diff --git a/include/dolphin/os.h b/include/dolphin/os.h index bfe75527..02750f79 100644 --- a/include/dolphin/os.h +++ b/include/dolphin/os.h @@ -225,7 +225,7 @@ BOOL OSRestoreInterrupts(BOOL level); #endif // _DEBUG -void OSReport(const char *msg, ...); +__declspec(dllexport) void OSReport(const char *msg, ...); void OSPanic(const char *file, int line, const char *msg, ...); void OSFatal(GXColor fg, GXColor bg, const char *msg); diff --git a/include/game/gamework_data.h b/include/game/gamework_data.h index 86b03fd7..87033ede 100644 --- a/include/game/gamework_data.h +++ b/include/game/gamework_data.h @@ -145,13 +145,13 @@ typedef struct game_stat { /* 0x110 */ PauseBackupConfig party_pause; } GameStat; -extern s16 GwLanguage; -extern s16 GwLanguageSave; +SHARED_SYM extern s16 GwLanguage; +SHARED_SYM extern s16 GwLanguageSave; -extern PlayerConfig GWPlayerCfg[4]; -extern PlayerState GWPlayer[4]; -extern SystemState GWSystem; -extern GameStat GWGameStat; +SHARED_SYM extern PlayerConfig GWPlayerCfg[4]; +SHARED_SYM extern PlayerState GWPlayer[4]; +SHARED_SYM extern SystemState GWSystem; +SHARED_SYM extern GameStat GWGameStat; static inline s32 GWPlayerCfgGroupGet(s32 player) { diff --git a/include/game/object.h b/include/game/object.h index 69f4cb6b..8c022103 100644 --- a/include/game/object.h +++ b/include/game/object.h @@ -5,6 +5,10 @@ #include "game/process.h" #include "game/dvd.h" +#ifdef _WIN32 +#include +#endif + #define OM_DLL_MAX 20 #define OVL_DEFINE(name, path) name, @@ -60,9 +64,14 @@ typedef struct om_obj_data { typedef struct om_dll_data { char *name; +#if _WIN32 + HMODULE hModule; +#else OSModuleHeader *module; void *bss; s32 ret; +#endif + } omDllData; void omMasterInit(s32 prio, FileListEntry *ovl_list, s32 ovl_count, OverlayID start_ovl); @@ -112,26 +121,26 @@ void omSysPauseCtrl(s16 flag); extern omObjData *omDBGSysKeyObj; extern Process *omwatchproc; extern OverlayID omnextovl; -extern OverlayID omcurovl; +SHARED_SYM extern OverlayID omcurovl; extern s32 omcurdll; -extern s32 omovlhisidx; -extern s32 omovlevtno; +SHARED_SYM extern s32 omovlhisidx; +SHARED_SYM extern s32 omovlevtno; extern s32 omnextovlevtno; -extern u32 omovlstat; +SHARED_SYM extern u32 omovlstat; extern char omUPauseFlag; -extern s16 omSysExitReq; +SHARED_SYM extern s16 omSysExitReq; extern s16 omdispinfo; extern u8 omSysPauseEnableFlag; extern OverlayID omprevovl; extern omDllData *omDLLinfoTbl[OM_DLL_MAX]; -extern Vec CRot; -extern Vec Center; -extern float CZoom; -extern Vec CRotM[16]; -extern Vec CenterM[16]; -extern float CZoomM[16]; -extern s16 omDBGMenuButton; +SHARED_SYM extern Vec CRot; +SHARED_SYM extern Vec Center; +SHARED_SYM extern float CZoom; +SHARED_SYM extern Vec CRotM[16]; +SHARED_SYM extern Vec CenterM[16]; +SHARED_SYM extern float CZoomM[16]; +SHARED_SYM extern s16 omDBGMenuButton; #endif diff --git a/include/ovl_table.h b/include/ovl_table.h index fe695ea9..d391d305 100644 --- a/include/ovl_table.h +++ b/include/ovl_table.h @@ -1,108 +1,108 @@ #include "version.h" -OVL_DEFINE(OVL__MINI, "dll/_minigameDLL.rel") -OVL_DEFINE(OVL_BOOT, "dll/bootdll.rel") -OVL_DEFINE(OVL_E3SETUP, "dll/e3setupDLL.rel") -OVL_DEFINE(OVL_INST, "dll/instdll.rel") -OVL_DEFINE(OVL_M300, "dll/m300dll.rel") -OVL_DEFINE(OVL_M302, "dll/m302dll.rel") -OVL_DEFINE(OVL_M303, "dll/m303dll.rel") -OVL_DEFINE(OVL_M330, "dll/m330dll.rel") -OVL_DEFINE(OVL_M333, "dll/m333dll.rel") -OVL_DEFINE(OVL_M401, "dll/m401dll.rel") -OVL_DEFINE(OVL_M402, "dll/m402dll.rel") -OVL_DEFINE(OVL_M403, "dll/m403dll.rel") -OVL_DEFINE(OVL_M404, "dll/m404dll.rel") -OVL_DEFINE(OVL_M405, "dll/m405dll.rel") -OVL_DEFINE(OVL_M406, "dll/m406dll.rel") -OVL_DEFINE(OVL_M407, "dll/m407dll.rel") -OVL_DEFINE(OVL_M408, "dll/m408dll.rel") -OVL_DEFINE(OVL_M409, "dll/m409dll.rel") -OVL_DEFINE(OVL_M410, "dll/m410dll.rel") -OVL_DEFINE(OVL_M411, "dll/m411dll.rel") -OVL_DEFINE(OVL_M412, "dll/m412dll.rel") -OVL_DEFINE(OVL_M413, "dll/m413dll.rel") -OVL_DEFINE(OVL_M414, "dll/m414dll.rel") -OVL_DEFINE(OVL_M415, "dll/m415dll.rel") -OVL_DEFINE(OVL_M416, "dll/m416dll.rel") -OVL_DEFINE(OVL_M417, "dll/m417dll.rel") -OVL_DEFINE(OVL_M418, "dll/m418dll.rel") -OVL_DEFINE(OVL_M419, "dll/m419dll.rel") -OVL_DEFINE(OVL_M420, "dll/m420dll.rel") -OVL_DEFINE(OVL_M421, "dll/m421dll.rel") -OVL_DEFINE(OVL_M422, "dll/m422dll.rel") -OVL_DEFINE(OVL_M423, "dll/m423dll.rel") -OVL_DEFINE(OVL_M424, "dll/m424dll.rel") -OVL_DEFINE(OVL_M425, "dll/m425dll.rel") -OVL_DEFINE(OVL_M426, "dll/m426dll.rel") -OVL_DEFINE(OVL_M427, "dll/m427dll.rel") -OVL_DEFINE(OVL_M428, "dll/m428dll.rel") -OVL_DEFINE(OVL_M429, "dll/m429dll.rel") -OVL_DEFINE(OVL_M430, "dll/m430dll.rel") -OVL_DEFINE(OVL_M431, "dll/m431dll.rel") -OVL_DEFINE(OVL_M432, "dll/m432dll.rel") -OVL_DEFINE(OVL_M433, "dll/m433dll.rel") -OVL_DEFINE(OVL_M434, "dll/m434dll.rel") -OVL_DEFINE(OVL_M435, "dll/m435dll.rel") -OVL_DEFINE(OVL_M436, "dll/m436dll.rel") -OVL_DEFINE(OVL_M437, "dll/m437dll.rel") -OVL_DEFINE(OVL_M438, "dll/m438dll.rel") -OVL_DEFINE(OVL_M439, "dll/m439dll.rel") -OVL_DEFINE(OVL_M440, "dll/m440dll.rel") -OVL_DEFINE(OVL_M441, "dll/m441dll.rel") -OVL_DEFINE(OVL_M442, "dll/m442dll.rel") -OVL_DEFINE(OVL_M443, "dll/m443dll.rel") -OVL_DEFINE(OVL_M444, "dll/m444dll.rel") -OVL_DEFINE(OVL_M445, "dll/m445dll.rel") -OVL_DEFINE(OVL_M446, "dll/m446dll.rel") -OVL_DEFINE(OVL_M447, "dll/m447dll.rel") -OVL_DEFINE(OVL_M448, "dll/m448dll.rel") -OVL_DEFINE(OVL_M449, "dll/m449dll.rel") -OVL_DEFINE(OVL_M450, "dll/m450dll.rel") -OVL_DEFINE(OVL_M451, "dll/m451dll.rel") -OVL_DEFINE(OVL_M453, "dll/m453dll.rel") -OVL_DEFINE(OVL_M455, "dll/m455dll.rel") -OVL_DEFINE(OVL_M456, "dll/m456dll.rel") -OVL_DEFINE(OVL_M457, "dll/m457dll.rel") -OVL_DEFINE(OVL_M458, "dll/m458dll.rel") -OVL_DEFINE(OVL_M459, "dll/m459dll.rel") -OVL_DEFINE(OVL_M460, "dll/m460dll.rel") -OVL_DEFINE(OVL_M461, "dll/m461dll.rel") -OVL_DEFINE(OVL_M462, "dll/m462dll.rel") -OVL_DEFINE(OVL_M463, "dll/m463dll.rel") -OVL_DEFINE(OVL_MENT, "dll/mentdll.rel") +OVL_DEFINE(OVL__MINI, "_minigameDLL") +OVL_DEFINE(OVL_BOOT, "bootdll") +OVL_DEFINE(OVL_E3SETUP, "e3setupDLL") +OVL_DEFINE(OVL_INST, "instdll") +OVL_DEFINE(OVL_M300, "m300dll") +OVL_DEFINE(OVL_M302, "m302dll") +OVL_DEFINE(OVL_M303, "m303dll") +OVL_DEFINE(OVL_M330, "m330dll") +OVL_DEFINE(OVL_M333, "m333dll") +OVL_DEFINE(OVL_M401, "m401dll") +OVL_DEFINE(OVL_M402, "m402dll") +OVL_DEFINE(OVL_M403, "m403dll") +OVL_DEFINE(OVL_M404, "m404dll") +OVL_DEFINE(OVL_M405, "m405dll") +OVL_DEFINE(OVL_M406, "m406dll") +OVL_DEFINE(OVL_M407, "m407dll") +OVL_DEFINE(OVL_M408, "m408dll") +OVL_DEFINE(OVL_M409, "m409dll") +OVL_DEFINE(OVL_M410, "m410dll") +OVL_DEFINE(OVL_M411, "m411dll") +OVL_DEFINE(OVL_M412, "m412dll") +OVL_DEFINE(OVL_M413, "m413dll") +OVL_DEFINE(OVL_M414, "m414dll") +OVL_DEFINE(OVL_M415, "m415dll") +OVL_DEFINE(OVL_M416, "m416dll") +OVL_DEFINE(OVL_M417, "m417dll") +OVL_DEFINE(OVL_M418, "m418dll") +OVL_DEFINE(OVL_M419, "m419dll") +OVL_DEFINE(OVL_M420, "m420dll") +OVL_DEFINE(OVL_M421, "m421dll") +OVL_DEFINE(OVL_M422, "m422dll") +OVL_DEFINE(OVL_M423, "m423dll") +OVL_DEFINE(OVL_M424, "m424dll") +OVL_DEFINE(OVL_M425, "m425dll") +OVL_DEFINE(OVL_M426, "m426dll") +OVL_DEFINE(OVL_M427, "m427dll") +OVL_DEFINE(OVL_M428, "m428dll") +OVL_DEFINE(OVL_M429, "m429dll") +OVL_DEFINE(OVL_M430, "m430dll") +OVL_DEFINE(OVL_M431, "m431dll") +OVL_DEFINE(OVL_M432, "m432dll") +OVL_DEFINE(OVL_M433, "m433dll") +OVL_DEFINE(OVL_M434, "m434dll") +OVL_DEFINE(OVL_M435, "m435dll") +OVL_DEFINE(OVL_M436, "m436dll") +OVL_DEFINE(OVL_M437, "m437dll") +OVL_DEFINE(OVL_M438, "m438dll") +OVL_DEFINE(OVL_M439, "m439dll") +OVL_DEFINE(OVL_M440, "m440dll") +OVL_DEFINE(OVL_M441, "m441dll") +OVL_DEFINE(OVL_M442, "m442dll") +OVL_DEFINE(OVL_M443, "m443dll") +OVL_DEFINE(OVL_M444, "m444dll") +OVL_DEFINE(OVL_M445, "m445dll") +OVL_DEFINE(OVL_M446, "m446dll") +OVL_DEFINE(OVL_M447, "m447dll") +OVL_DEFINE(OVL_M448, "m448dll") +OVL_DEFINE(OVL_M449, "m449dll") +OVL_DEFINE(OVL_M450, "m450dll") +OVL_DEFINE(OVL_M451, "m451dll") +OVL_DEFINE(OVL_M453, "m453dll") +OVL_DEFINE(OVL_M455, "m455dll") +OVL_DEFINE(OVL_M456, "m456dll") +OVL_DEFINE(OVL_M457, "m457dll") +OVL_DEFINE(OVL_M458, "m458dll") +OVL_DEFINE(OVL_M459, "m459dll") +OVL_DEFINE(OVL_M460, "m460dll") +OVL_DEFINE(OVL_M461, "m461dll") +OVL_DEFINE(OVL_M462, "m462dll") +OVL_DEFINE(OVL_M463, "m463dll") +OVL_DEFINE(OVL_MENT, "mentdll") #if VERSION_JP -OVL_DEFINE(OVL_MGMODE, "dll/mgmodedll.rel") -OVL_DEFINE(OVL_MODELTEST, "dll/modeltestdll.rel") -OVL_DEFINE(OVL_MODESEL, "dll/modeseldll.rel") -OVL_DEFINE(OVL_MOVIE, "dll/moviedll.rel") +OVL_DEFINE(OVL_MGMODE, "mgmodedll") +OVL_DEFINE(OVL_MODELTEST, "modeltestdll") +OVL_DEFINE(OVL_MODESEL, "modeseldll") +OVL_DEFINE(OVL_MOVIE, "moviedll") #else -OVL_DEFINE(OVL_MESS, "dll/messdll.rel") -OVL_DEFINE(OVL_MGMODE, "dll/mgmodedll.rel") -OVL_DEFINE(OVL_MODELTEST, "dll/modeltestdll.rel") -OVL_DEFINE(OVL_MODESEL, "dll/modeseldll.rel") +OVL_DEFINE(OVL_MESS, "messdll") +OVL_DEFINE(OVL_MGMODE, "mgmodedll") +OVL_DEFINE(OVL_MODELTEST, "modeltestdll") +OVL_DEFINE(OVL_MODESEL, "modeseldll") #endif -OVL_DEFINE(OVL_MPEX, "dll/mpexdll.rel") -OVL_DEFINE(OVL_MSETUP, "dll/msetupdll.rel") -OVL_DEFINE(OVL_MSTORY2, "dll/mstory2dll.rel") -OVL_DEFINE(OVL_MSTORY3, "dll/mstory3dll.rel") -OVL_DEFINE(OVL_MSTORY4, "dll/mstory4dll.rel") -OVL_DEFINE(OVL_MSTORY, "dll/mstorydll.rel") -OVL_DEFINE(OVL_NIS, "dll/nisdll.rel") -OVL_DEFINE(OVL_OPTION, "dll/option.rel") -OVL_DEFINE(OVL_PRESENT, "dll/present.rel") -OVL_DEFINE(OVL_RESULT, "dll/resultdll.rel") -OVL_DEFINE(OVL_SAF, "dll/safdll.rel") -OVL_DEFINE(OVL_SELMENU, "dll/selmenuDLL.rel") -OVL_DEFINE(OVL_STAFF, "dll/staffdll.rel") -OVL_DEFINE(OVL_SUBCHRSEL, "dll/subchrseldll.rel") -OVL_DEFINE(OVL_W01, "dll/w01dll.rel") -OVL_DEFINE(OVL_W02, "dll/w02dll.rel") -OVL_DEFINE(OVL_W03, "dll/w03dll.rel") -OVL_DEFINE(OVL_W04, "dll/w04dll.rel") -OVL_DEFINE(OVL_W05, "dll/w05dll.rel") -OVL_DEFINE(OVL_W06, "dll/w06dll.rel") -OVL_DEFINE(OVL_W10, "dll/w10dll.rel") -OVL_DEFINE(OVL_W20, "dll/w20dll.rel") -OVL_DEFINE(OVL_W21, "dll/w21dll.rel") -OVL_DEFINE(OVL_ZTAR, "dll/ztardll.rel") +OVL_DEFINE(OVL_MPEX, "mpexdll") +OVL_DEFINE(OVL_MSETUP, "msetupdll") +OVL_DEFINE(OVL_MSTORY2, "mstory2dll") +OVL_DEFINE(OVL_MSTORY3, "mstory3dll") +OVL_DEFINE(OVL_MSTORY4, "mstory4dll") +OVL_DEFINE(OVL_MSTORY, "mstorydll") +OVL_DEFINE(OVL_NIS, "nisdll") +OVL_DEFINE(OVL_OPTION, "option") +OVL_DEFINE(OVL_PRESENT, "present") +OVL_DEFINE(OVL_RESULT, "resultdll") +OVL_DEFINE(OVL_SAF, "safdll") +OVL_DEFINE(OVL_SELMENU, "selmenuDLL") +OVL_DEFINE(OVL_STAFF, "staffdll") +OVL_DEFINE(OVL_SUBCHRSEL, "subchrseldll") +OVL_DEFINE(OVL_W01, "w01dll") +OVL_DEFINE(OVL_W02, "w02dll") +OVL_DEFINE(OVL_W03, "w03dll") +OVL_DEFINE(OVL_W04, "w04dll") +OVL_DEFINE(OVL_W05, "w05dll") +OVL_DEFINE(OVL_W06, "w06dll") +OVL_DEFINE(OVL_W10, "w10dll") +OVL_DEFINE(OVL_W20, "w20dll") +OVL_DEFINE(OVL_W21, "w21dll") +OVL_DEFINE(OVL_ZTAR, "ztardll") diff --git a/include/version.h b/include/version.h index 209a7d53..de3a0e84 100644 --- a/include/version.h +++ b/include/version.h @@ -21,4 +21,15 @@ #define REFRESH_RATE 60 #endif +#if _WIN32 +#ifdef TARGET_MAIN +#define SHARED_SYM __declspec(dllexport) +#else +#define SHARED_SYM __declspec(dllimport) +#endif + +#else + #define SHARED_SYM +#endif + #endif diff --git a/src/REL/bootDll/main.c b/src/REL/bootDll/main.c index ee8b1b04..a3dc0d93 100644 --- a/src/REL/bootDll/main.c +++ b/src/REL/bootDll/main.c @@ -82,706 +82,706 @@ void ObjectSetup(void) #endif } -#if VERSION_PAL -s32 LanguageBootGet(void); -BOOL LanguageMenuExec(void); -#endif + #if VERSION_PAL + s32 LanguageBootGet(void); + BOOL LanguageMenuExec(void); + #endif -void BootExec(void) -{ - AnimData *data; - s16 group; - s16 sprite_nintendo; - s16 sprite_hudson; - s16 i; - OSTick tick_prev; - Process *curr = HuPrcCurrentGet(); - #if VERSION_NTSC - if (omovlevtno == 0) { - BootProgExec(); - } - #else - if(SystemInitF == FALSE) { - GwLanguage = LanguageBootGet(); - if(GwLanguage == -1) { - if(LanguageMenuExec()) { - SystemInitF = TRUE; - } - } else { - GWLanguageSet(GwLanguage); - } - } - #endif - group = HuSprGrpCreate(2); - data = HuSprAnimRead(NintendoDataDecode()); - sprite_nintendo = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 0, sprite_nintendo); - HuSprPosSet(group, 0, 288, 240); - HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); - if (omovlevtno != 0) { - HuAudSndGrpSetSet(0); - 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); - HuWinInit(1); - BootTitleCreate(); - SystemInitF = 1; - } - else { - s16 group_thp; - BOOL skip_wait; - float win_size[2]; - s16 sprite_thp; - for (i = 0; i < 4; i++) { - GWPlayerCfg[i].pad_idx = i; - } - #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); - while (WipeStatGet()) { - HuPrcVSleep(); - } - WipeColorSet(255, 255, 255); - if (!SystemInitF) { - tick_prev = OSGetTick(); - CharManInit(); - HuWindowInit(); - MGSeqInit(); - HuWinInit(1); - BootTitleCreate(); - 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); - while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { - HuPrcVSleep(); - } - } - 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(); - } - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrReset(group, 1, HUSPR_ATTR_DISPOFF); - HuPrcSleep(60); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - if (!SystemInitF) { - void *group_samp; - tick_prev = OSGetTick(); - group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0)); - msmSysLoadGroup(0, group_samp, 0); - HuMemDirectFree(group_samp); - while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { - HuPrcVSleep(); - } - } - else { - for (i = 0; i < 180; i++) { - #if 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(); - } - tick_prev = OSGetTick(); - if (!SystemInitF) { - HuAudSndGrpSetSet(0); - SystemInitF = 1; - } - while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 1000) { - HuPrcVSleep(); - } - HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); - group_thp = HuSprGrpCreate(1); - sprite_thp = HuTHPSprCreateVol("movie/opmov_a00.thp", 0, 100, 122); - HuSprGrpMemberSet(group_thp, 0, sprite_thp); - HuSprPosSet(group_thp, 0, 288, 240); - HuWinMesMaxSizeBetGet(win_size, MAKE_MESSID(54, 0), MAKE_MESSID(54, 4)); - demoWinId = HuWinCreate(-10000, 448 - win_size[1], win_size[0], win_size[1], 0); - HuWinMesSpeedSet(demoWinId, 0); - HuWinBGTPLvlSet(demoWinId, 0); - HuWinPriSet(demoWinId, 10); - HuWinAttrSet(demoWinId, 0x800); - HuPrcSleep(5); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); - while (WipeStatGet()) { - HuPrcVSleep(); - } - skip_wait = FALSE; - while (!HuTHPEndCheck()) { - UpdateDemoMess(); - if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { - skip_wait = TRUE; - break; - } - HuPrcVSleep(); - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - HuWinKill(demoWinId); - HuTHPClose(); - HuPrcVSleep(); - HuSprGrpKill(group_thp); - if (!skip_wait) { - HuPrcSleep(60); - } - skip_wait = FALSE; - } - if (!BootTitleExec()) { - HuPrcSleep(60); - goto repeat; - } - WipeColorSet(255, 255, 255); - HuAudSStreamAllFadeOut(500); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - HuPrcVSleep(); - if (omSysExitReq) { - omOvlReturnEx(1, 1); - } - else { - omOvlCallEx(OVL_MODESEL, 1, 0, 0); - } - for (i = 0; i < 4; i++) { - GWPlayerCfg[i].character = -1; - } - HuPrcEnd(); - do { - HuPrcVSleep(); - } while (1); -} + void BootExec(void) + { + AnimData *data; + s16 group; + s16 sprite_nintendo; + s16 sprite_hudson; + s16 i; + OSTick tick_prev; + Process *curr = HuPrcCurrentGet(); + #if VERSION_NTSC + if (omovlevtno == 0) { + BootProgExec(); + } + #else + if(SystemInitF == FALSE) { + GwLanguage = LanguageBootGet(); + if(GwLanguage == -1) { + if(LanguageMenuExec()) { + SystemInitF = TRUE; + } + } else { + GWLanguageSet(GwLanguage); + } + } + #endif + group = HuSprGrpCreate(2); + data = HuSprAnimRead(NintendoDataDecode()); + sprite_nintendo = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 0, sprite_nintendo); + HuSprPosSet(group, 0, 288, 240); + HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); + if (omovlevtno != 0) { + HuAudSndGrpSetSet(0); + 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); + HuWinInit(1); + BootTitleCreate(); + SystemInitF = 1; + } + else { + s16 group_thp; + BOOL skip_wait; + float win_size[2]; + s16 sprite_thp; + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].pad_idx = i; + } + #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); + while (WipeStatGet()) { + HuPrcVSleep(); + } + WipeColorSet(255, 255, 255); + if (!SystemInitF) { + tick_prev = OSGetTick(); + CharManInit(); + HuWindowInit(); + MGSeqInit(); + HuWinInit(1); + BootTitleCreate(); + 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); + while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { + HuPrcVSleep(); + } + } + 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(); + } + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(group, 1, HUSPR_ATTR_DISPOFF); + HuPrcSleep(60); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + if (!SystemInitF) { + void *group_samp; + tick_prev = OSGetTick(); + group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0)); + msmSysLoadGroup(0, group_samp, 0); + HuMemDirectFree(group_samp); + while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { + HuPrcVSleep(); + } + } + else { + for (i = 0; i < 180; i++) { + #if 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(); + } + tick_prev = OSGetTick(); + if (!SystemInitF) { + HuAudSndGrpSetSet(0); + SystemInitF = 1; + } + while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 1000) { + HuPrcVSleep(); + } + HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); + group_thp = HuSprGrpCreate(1); + sprite_thp = HuTHPSprCreateVol("movie/opmov_a00.thp", 0, 100, 122); + HuSprGrpMemberSet(group_thp, 0, sprite_thp); + HuSprPosSet(group_thp, 0, 288, 240); + HuWinMesMaxSizeBetGet(win_size, MAKE_MESSID(54, 0), MAKE_MESSID(54, 4)); + demoWinId = HuWinCreate(-10000, 448 - win_size[1], win_size[0], win_size[1], 0); + HuWinMesSpeedSet(demoWinId, 0); + HuWinBGTPLvlSet(demoWinId, 0); + HuWinPriSet(demoWinId, 10); + HuWinAttrSet(demoWinId, 0x800); + HuPrcSleep(5); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet()) { + HuPrcVSleep(); + } + skip_wait = FALSE; + while (!HuTHPEndCheck()) { + UpdateDemoMess(); + if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { + skip_wait = TRUE; + break; + } + HuPrcVSleep(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuWinKill(demoWinId); + HuTHPClose(); + HuPrcVSleep(); + HuSprGrpKill(group_thp); + if (!skip_wait) { + HuPrcSleep(60); + } + skip_wait = FALSE; + } + if (!BootTitleExec()) { + HuPrcSleep(60); + goto repeat; + } + WipeColorSet(255, 255, 255); + HuAudSStreamAllFadeOut(500); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuPrcVSleep(); + if (omSysExitReq) { + omOvlReturnEx(1, 1); + } + else { + omOvlCallEx(OVL_MODESEL, 1, 0, 0); + } + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].character = -1; + } + HuPrcEnd(); + do { + HuPrcVSleep(); + } while (1); + } -static s16 demoMessTimeTbl[] = { - 1686, - 1785, - 1850, - 1936, - 1993, - 2097, - 2135, - 2245, - 2258, - 2320, - -1, - -1, -}; + static s16 demoMessTimeTbl[] = { + 1686, + 1785, + 1850, + 1936, + 1993, + 2097, + 2135, + 2245, + 2258, + 2320, + -1, + -1, + }; -static void UpdateDemoMess(void) -{ - int frame = HuTHPFrameGet(); - int i; - for (i = 0; demoMessTimeTbl[i * 2] != -1; i++) { - if (frame == demoMessTimeTbl[i * 2]) { - HuWinMesSet(demoWinId, MAKE_MESSID(54, i)); - } - if (frame == demoMessTimeTbl[(i * 2) + 1]) { - HuWinHomeClear(demoWinId); - } - } -} + static void UpdateDemoMess(void) + { + int frame = HuTHPFrameGet(); + int i; + for (i = 0; demoMessTimeTbl[i * 2] != -1; i++) { + if (frame == demoMessTimeTbl[i * 2]) { + HuWinMesSet(demoWinId, MAKE_MESSID(54, i)); + } + if (frame == demoMessTimeTbl[(i * 2) + 1]) { + HuWinHomeClear(demoWinId); + } + } + } -#if VERSION_NTSC +// #if VERSION_NTSC -static u16 progPosTbl[] = { 236, 313, 353, 313 }; +// static u16 progPosTbl[] = { 236, 313, 353, 313 }; -void BootProgExec(void) -{ - s16 i; - s16 option; - s16 group; - s16 sprite; - AnimData *data; - option = 0; - if (OSGetResetCode() != OS_RESET_RESTART) { - return; - } - if (VIGetDTVStatus() != VI_NON_INTERLACE) { - OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); - return; - } - if (OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_OFF && !(HU_PAD_BTN_ALL & PAD_BUTTON_B)) { - return; - } - if (OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_ON) { - VIConfigure(&GXNtsc480IntDf); - VIFlush(); - } - group = HuSprGrpCreate(3); - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CHOOSE_ANM); - sprite = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 0, sprite); - HuSprPosSet(group, 0, 288, 240); - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_ON_ANM); - sprite = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 1, sprite); - HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_OFF_ANM); - sprite = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 2, sprite); - HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); - HuSprAttrSet(group, 2, HUSPR_ATTR_DISPOFF); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - for (i = 0; i < 600; i++) { - if (HU_PAD_DSTK_ALL & (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT)) { - option ^= 1; - HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); - i = 0; - } - if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { - HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); - HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); - HuSprAttrReset(group, 2, HUSPR_ATTR_DISPOFF); - break; - } - HuPrcVSleep(); - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); - while (WipeStatGet()) { - HuPrcVSleep(); - } - if (!option) { - OSSetProgressiveMode(OS_PROGRESSIVE_MODE_ON); - VIConfigure(&GXNtsc480Prog); - VIFlush(); - HuPrcSleep(100); - } - else { - OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); - } - HuSprGrpKill(group); - group = HuSprGrpCreate(1); - if (!option) { - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_ON_ANM); - } - else { - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_OFF_ANM); - } - sprite = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 0, sprite); - HuSprPosSet(group, 0, 288, 240); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); - while (WipeStatGet()) { - HuPrcVSleep(); - } - HuPrcSleep(60); - for (i = 0; i < 180; i++) { - if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { - break; - } - HuPrcVSleep(); - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - HuSprGrpKill(group); - HuPrcSleep(30); -} +// void BootProgExec(void) +// { +// s16 i; +// s16 option; +// s16 group; +// s16 sprite; +// AnimData *data; +// option = 0; +// if (OSGetResetCode() != OS_RESET_RESTART) { +// return; +// } +// if (VIGetDTVStatus() != VI_NON_INTERLACE) { +// OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); +// return; +// } +// if (OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_OFF && !(HU_PAD_BTN_ALL & PAD_BUTTON_B)) { +// return; +// } +// if (OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_ON) { +// VIConfigure(&GXNtsc480IntDf); +// VIFlush(); +// } +// group = HuSprGrpCreate(3); +// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CHOOSE_ANM); +// sprite = HuSprCreate(data, 0, 0); +// HuSprGrpMemberSet(group, 0, sprite); +// HuSprPosSet(group, 0, 288, 240); +// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_ON_ANM); +// sprite = HuSprCreate(data, 0, 0); +// HuSprGrpMemberSet(group, 1, sprite); +// HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); +// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_OFF_ANM); +// sprite = HuSprCreate(data, 0, 0); +// HuSprGrpMemberSet(group, 2, sprite); +// HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); +// HuSprAttrSet(group, 2, HUSPR_ATTR_DISPOFF); +// WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); +// while (WipeStatGet()) { +// HuPrcVSleep(); +// } +// for (i = 0; i < 600; i++) { +// if (HU_PAD_DSTK_ALL & (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT)) { +// option ^= 1; +// HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); +// i = 0; +// } +// if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { +// HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); +// HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); +// HuSprAttrReset(group, 2, HUSPR_ATTR_DISPOFF); +// break; +// } +// HuPrcVSleep(); +// } +// WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); +// while (WipeStatGet()) { +// HuPrcVSleep(); +// } +// if (!option) { +// OSSetProgressiveMode(OS_PROGRESSIVE_MODE_ON); +// VIConfigure(&GXNtsc480Prog); +// VIFlush(); +// HuPrcSleep(100); +// } +// else { +// OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); +// } +// HuSprGrpKill(group); +// group = HuSprGrpCreate(1); +// if (!option) { +// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_ON_ANM); +// } +// else { +// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_OFF_ANM); +// } +// sprite = HuSprCreate(data, 0, 0); +// HuSprGrpMemberSet(group, 0, sprite); +// HuSprPosSet(group, 0, 288, 240); +// WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); +// while (WipeStatGet()) { +// HuPrcVSleep(); +// } +// HuPrcSleep(60); +// for (i = 0; i < 180; i++) { +// if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { +// break; +// } +// HuPrcVSleep(); +// } +// WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); +// while (WipeStatGet()) { +// HuPrcVSleep(); +// } +// HuSprGrpKill(group); +// HuPrcSleep(30); +// } -#endif +// #endif -static u16 debugCamTbl[] = { 1, 2 }; +// static u16 debugCamTbl[] = { 1, 2 }; -void DebugCamOutView(omObjData *obj) -{ - s16 i; - for (i = 0; i < 1; i++) { - Vec pos, target, up; - float x, y, z; +// void DebugCamOutView(omObjData *obj) +// { +// s16 i; +// for (i = 0; i < 1; i++) { +// Vec pos, target, up; +// float x, y, z; - x = debugCamRot[i].x; - y = debugCamRot[i].y; - z = debugCamRot[i].z; +// x = debugCamRot[i].x; +// y = debugCamRot[i].y; +// z = debugCamRot[i].z; - pos.x = (((sind(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].x); - pos.y = (-sind(x) * debugCamZoom[i]) + debugCamPos[i].y; - pos.z = ((cosd(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].z; - target.x = debugCamPos[i].x; - target.y = debugCamPos[i].y; - target.z = debugCamPos[i].z; - up.x = sind(y) * sind(x); - up.y = cosd(x); - up.z = cosd(y) * sind(x); - Hu3DCameraPosSet(debugCamTbl[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); - } -} +// pos.x = (((sind(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].x); +// pos.y = (-sind(x) * debugCamZoom[i]) + debugCamPos[i].y; +// pos.z = ((cosd(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].z; +// target.x = debugCamPos[i].x; +// target.y = debugCamPos[i].y; +// target.z = debugCamPos[i].z; +// up.x = sind(y) * sind(x); +// up.y = cosd(x); +// up.z = cosd(y) * sind(x); +// Hu3DCameraPosSet(debugCamTbl[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); +// } +// } -void DebugCamUpdate(omObjData *obj) -{ - Vec pos; - Vec offset; - Vec dir; - Vec y_offset; +// void DebugCamUpdate(omObjData *obj) +// { +// Vec pos; +// Vec offset; +// Vec dir; +// Vec y_offset; - f32 z_rot; - s8 stick_pos; +// f32 z_rot; +// s8 stick_pos; - #if VERSION_NTSC - if ((HuPadBtnDown[0] & 0x800)) { - debugCamOnF = (debugCamOnF) ? 0 : 1; - } - #endif - if (debugCamOnF != 0) { - debugCamRot[0].y += 0.1f * HuPadStkX[0]; - debugCamRot[0].x += 0.1f * HuPadStkY[0]; - debugCamZoom[0] += HuPadTrigL[0] / 2; - debugCamZoom[0] -= HuPadTrigR[0] / 2; - if (debugCamZoom[0] < 100.0f) { - debugCamZoom[0] = 100.0f; - } - pos.x = debugCamPos[0].x + (debugCamZoom[0] * (sind(debugCamRot[0].y) * cosd(debugCamRot[0].x))); - pos.y = (debugCamPos[0].y + (debugCamZoom[0] * -sind(debugCamRot[0].x))); - pos.z = (debugCamPos[0].z + (debugCamZoom[0] * (cosd(debugCamRot[0].y) * cosd(debugCamRot[0].x)))); - offset.x = debugCamPos[0].x - pos.x; - offset.y = debugCamPos[0].y - pos.y; - offset.z = debugCamPos[0].z - pos.z; - dir.x = (sind(debugCamRot[0].y) * sind(debugCamRot[0].x)); - dir.y = cosd(debugCamRot[0].x); - dir.z = (cosd(debugCamRot[0].y) * sind(debugCamRot[0].x)); - z_rot = debugCamRot[0].z; - y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot)) - + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot)) - + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot)); +// #if VERSION_NTSC +// if ((HuPadBtnDown[0] & 0x800)) { +// debugCamOnF = (debugCamOnF) ? 0 : 1; +// } +// #endif +// if (debugCamOnF != 0) { +// debugCamRot[0].y += 0.1f * HuPadStkX[0]; +// debugCamRot[0].x += 0.1f * HuPadStkY[0]; +// debugCamZoom[0] += HuPadTrigL[0] / 2; +// debugCamZoom[0] -= HuPadTrigR[0] / 2; +// if (debugCamZoom[0] < 100.0f) { +// debugCamZoom[0] = 100.0f; +// } +// pos.x = debugCamPos[0].x + (debugCamZoom[0] * (sind(debugCamRot[0].y) * cosd(debugCamRot[0].x))); +// pos.y = (debugCamPos[0].y + (debugCamZoom[0] * -sind(debugCamRot[0].x))); +// pos.z = (debugCamPos[0].z + (debugCamZoom[0] * (cosd(debugCamRot[0].y) * cosd(debugCamRot[0].x)))); +// offset.x = debugCamPos[0].x - pos.x; +// offset.y = debugCamPos[0].y - pos.y; +// offset.z = debugCamPos[0].z - pos.z; +// dir.x = (sind(debugCamRot[0].y) * sind(debugCamRot[0].x)); +// dir.y = cosd(debugCamRot[0].x); +// dir.z = (cosd(debugCamRot[0].y) * sind(debugCamRot[0].x)); +// z_rot = debugCamRot[0].z; +// y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot)) +// + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot)) +// + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot)); - y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot)) - + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot)) - + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot)); +// y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot)) +// + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot)) +// + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot)); - y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot)) - + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot)) - + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot))); +// y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot)) +// + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot)) +// + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot))); - VECCrossProduct(&dir, &offset, &offset); - VECNormalize(&offset, &offset); - stick_pos = (HuPadSubStkX[0] & 0xF8); - if (stick_pos != 0) { - debugCamPos[0].x += 0.05f * (offset.x * stick_pos); - debugCamPos[0].y += 0.05f * (offset.y * stick_pos); - debugCamPos[0].z += 0.05f * (offset.z * stick_pos); - } - VECNormalize(&y_offset, &offset); - stick_pos = -(HuPadSubStkY[0] & 0xF8); - if (stick_pos != 0) { - debugCamPos[0].x += 0.05f * (offset.x * stick_pos); - debugCamPos[0].y += 0.05f * (offset.y * stick_pos); - debugCamPos[0].z += 0.05f * (offset.z * stick_pos); - } - } -} +// VECCrossProduct(&dir, &offset, &offset); +// VECNormalize(&offset, &offset); +// stick_pos = (HuPadSubStkX[0] & 0xF8); +// if (stick_pos != 0) { +// debugCamPos[0].x += 0.05f * (offset.x * stick_pos); +// debugCamPos[0].y += 0.05f * (offset.y * stick_pos); +// debugCamPos[0].z += 0.05f * (offset.z * stick_pos); +// } +// VECNormalize(&y_offset, &offset); +// stick_pos = -(HuPadSubStkY[0] & 0xF8); +// if (stick_pos != 0) { +// debugCamPos[0].x += 0.05f * (offset.x * stick_pos); +// debugCamPos[0].y += 0.05f * (offset.y * stick_pos); +// debugCamPos[0].z += 0.05f * (offset.z * stick_pos); +// } +// } +// } -void BootTitleCreate(void) -{ - s16 model; - s16 sprite; - AnimData *sprite_data; - s16 i; - titleMdlId[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF); - Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); - titleMdlId[1] = model = Hu3DModelCreateFile(TITLE_CUBE_HSF); - Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); - titleMdlId[2] = model = Hu3DModelCreateFile(TITLE_SKY_HSF); - Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); - Hu3DModelCameraInfoSet(model, 1); - Hu3DModelLightInfoSet(model, 1); - #if VERSION_NTSC - bootGrpId = HuSprGrpCreate(4); - #else - bootGrpId = HuSprGrpCreate(13); - #endif - sprite_data = HuSprAnimReadFile(TITLE_BG_ANM); - sprite = HuSprCreate(sprite_data, 0, 0); - HuSprGrpMemberSet(bootGrpId, 0, sprite); - HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); - HuSprDrawNoSet(bootGrpId, 0, 127); - HuSprPosSet(bootGrpId, 0, 288, 240); - sprite_data = HuSprAnimReadFile(TITLE_COPYRIGHT_ANM); - sprite = HuSprCreate(sprite_data, 1, 0); - HuSprGrpMemberSet(bootGrpId, 1, sprite); - HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); - HuSprPosSet(bootGrpId, 1, 288, 420); - #if VERSION_NTSC - sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_ANM); - sprite = HuSprCreate(sprite_data, 2, 0); - HuSprGrpMemberSet(bootGrpId, 2, sprite); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); - HuSprPosSet(bootGrpId, 2, 288, 380); - sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); - sprite = HuSprCreate(sprite_data, 0, 0); - HuSprGrpMemberSet(bootGrpId, 3, sprite); - HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); - HuSprPosSet(bootGrpId, 3, 288, 200); - #else - sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); - sprite = HuSprCreate(sprite_data, 0, 0); - HuSprGrpMemberSet(bootGrpId, 2, sprite); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); - HuSprPosSet(bootGrpId, 2, 288, 200); - for(i=0; i<5; i++) { - sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_EN_ANM+i); - sprite = HuSprCreate(sprite_data, 3+i, 0); - HuSprGrpMemberSet(bootGrpId, 3+i, sprite); - HuSprAttrSet(bootGrpId, 3+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); - HuSprPosSet(bootGrpId, 3+i, 288, 340); - } - for(i=0; i<5; i++) { - sprite_data = HuSprAnimReadFile(TITLE_LANGUAGE_EN_ANM+i); - sprite = HuSprCreate(sprite_data, 8+i, 0); - HuSprGrpMemberSet(bootGrpId, 8+i, sprite); - HuSprAttrSet(bootGrpId, 8+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); - HuSprPosSet(bootGrpId, 8+i, 288, 380); - } - #endif -} +// void BootTitleCreate(void) +// { +// s16 model; +// s16 sprite; +// AnimData *sprite_data; +// s16 i; +// titleMdlId[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF); +// Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); +// Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); +// titleMdlId[1] = model = Hu3DModelCreateFile(TITLE_CUBE_HSF); +// Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); +// Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); +// titleMdlId[2] = model = Hu3DModelCreateFile(TITLE_SKY_HSF); +// Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); +// Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); +// Hu3DModelCameraInfoSet(model, 1); +// Hu3DModelLightInfoSet(model, 1); +// #if VERSION_NTSC +// bootGrpId = HuSprGrpCreate(4); +// #else +// bootGrpId = HuSprGrpCreate(13); +// #endif +// sprite_data = HuSprAnimReadFile(TITLE_BG_ANM); +// sprite = HuSprCreate(sprite_data, 0, 0); +// HuSprGrpMemberSet(bootGrpId, 0, sprite); +// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); +// HuSprDrawNoSet(bootGrpId, 0, 127); +// HuSprPosSet(bootGrpId, 0, 288, 240); +// sprite_data = HuSprAnimReadFile(TITLE_COPYRIGHT_ANM); +// sprite = HuSprCreate(sprite_data, 1, 0); +// HuSprGrpMemberSet(bootGrpId, 1, sprite); +// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); +// HuSprPosSet(bootGrpId, 1, 288, 420); +// #if VERSION_NTSC +// sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_ANM); +// sprite = HuSprCreate(sprite_data, 2, 0); +// HuSprGrpMemberSet(bootGrpId, 2, sprite); +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); +// HuSprPosSet(bootGrpId, 2, 288, 380); +// sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); +// sprite = HuSprCreate(sprite_data, 0, 0); +// HuSprGrpMemberSet(bootGrpId, 3, sprite); +// HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); +// HuSprPosSet(bootGrpId, 3, 288, 200); +// #else +// sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); +// sprite = HuSprCreate(sprite_data, 0, 0); +// HuSprGrpMemberSet(bootGrpId, 2, sprite); +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); +// HuSprPosSet(bootGrpId, 2, 288, 200); +// for(i=0; i<5; i++) { +// sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_EN_ANM+i); +// sprite = HuSprCreate(sprite_data, 3+i, 0); +// HuSprGrpMemberSet(bootGrpId, 3+i, sprite); +// HuSprAttrSet(bootGrpId, 3+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); +// HuSprPosSet(bootGrpId, 3+i, 288, 340); +// } +// for(i=0; i<5; i++) { +// sprite_data = HuSprAnimReadFile(TITLE_LANGUAGE_EN_ANM+i); +// sprite = HuSprCreate(sprite_data, 8+i, 0); +// HuSprGrpMemberSet(bootGrpId, 8+i, sprite); +// HuSprAttrSet(bootGrpId, 8+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); +// HuSprPosSet(bootGrpId, 8+i, 288, 380); +// } +// #endif +// } -BOOL BootTitleExec(void) -{ - float scale; - float scale_time; - int seNo[32]; - s16 pressStartMemberNo; - s16 languageMemberNo; - s16 i; - s16 choice; - float temp; - repeat: - Hu3DModelAttrReset(titleMdlId[0], HU3D_ATTR_DISPOFF); - Hu3DModelAttrReset(titleMdlId[1], HU3D_ATTR_DISPOFF); - HuSprAttrReset(bootGrpId, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrReset(bootGrpId, 1, HUSPR_ATTR_DISPOFF); - OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, seNo)); - OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0)); - HuAudSStreamPlay(20); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - #if VERSION_NTSC - HuSprAttrReset(bootGrpId, 3, HUSPR_ATTR_DISPOFF); - for (i = 1; i <= 50; i++) { - scale = (cosd(i * 1.8) * 10.0) + 1.0; - HuSprScaleSet(bootGrpId, 3, scale, scale); - HuSprTPLvlSet(bootGrpId, 3, i / 50.0); - HuPrcVSleep(); - } - HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - #else - HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - for (i = 1; i <= 50; i++) { - scale = (cosd(i * 1.8) * 10.0) + 1.0; - HuSprScaleSet(bootGrpId, 2, scale, scale); - HuSprTPLvlSet(bootGrpId, 2, i / 50.0); - HuPrcVSleep(); - } - if(GwLanguage == -1) { - pressStartMemberNo = 3; - languageMemberNo = 8; - } else { - pressStartMemberNo = GwLanguage+3-1; - languageMemberNo = GwLanguage+8-1; - } - HuSprAttrReset(bootGrpId, pressStartMemberNo, HUSPR_ATTR_DISPOFF); - HuSprAttrReset(bootGrpId, languageMemberNo, HUSPR_ATTR_DISPOFF); - for(i=1; i<=20; i++) { - scale = sind(i*4.5); - HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); - HuSprScaleSet(bootGrpId, languageMemberNo, scale*0.7, scale*0.7); - HuPrcVSleep(); - } - choice = 0; - scale_time = 0; - #endif +// BOOL BootTitleExec(void) +// { +// float scale; +// float scale_time; +// int seNo[32]; +// s16 pressStartMemberNo; +// s16 languageMemberNo; +// s16 i; +// s16 choice; +// float temp; +// repeat: +// Hu3DModelAttrReset(titleMdlId[0], HU3D_ATTR_DISPOFF); +// Hu3DModelAttrReset(titleMdlId[1], HU3D_ATTR_DISPOFF); +// HuSprAttrReset(bootGrpId, 0, HUSPR_ATTR_DISPOFF); +// HuSprAttrReset(bootGrpId, 1, HUSPR_ATTR_DISPOFF); +// OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, seNo)); +// OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0)); +// HuAudSStreamPlay(20); +// WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); +// while (WipeStatGet()) { +// HuPrcVSleep(); +// } +// #if VERSION_NTSC +// HuSprAttrReset(bootGrpId, 3, HUSPR_ATTR_DISPOFF); +// for (i = 1; i <= 50; i++) { +// scale = (cosd(i * 1.8) * 10.0) + 1.0; +// HuSprScaleSet(bootGrpId, 3, scale, scale); +// HuSprTPLvlSet(bootGrpId, 3, i / 50.0); +// HuPrcVSleep(); +// } +// HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// #else +// HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// for (i = 1; i <= 50; i++) { +// scale = (cosd(i * 1.8) * 10.0) + 1.0; +// HuSprScaleSet(bootGrpId, 2, scale, scale); +// HuSprTPLvlSet(bootGrpId, 2, i / 50.0); +// HuPrcVSleep(); +// } +// if(GwLanguage == -1) { +// pressStartMemberNo = 3; +// languageMemberNo = 8; +// } else { +// pressStartMemberNo = GwLanguage+3-1; +// languageMemberNo = GwLanguage+8-1; +// } +// HuSprAttrReset(bootGrpId, pressStartMemberNo, HUSPR_ATTR_DISPOFF); +// HuSprAttrReset(bootGrpId, languageMemberNo, HUSPR_ATTR_DISPOFF); +// for(i=1; i<=20; i++) { +// scale = sind(i*4.5); +// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); +// HuSprScaleSet(bootGrpId, languageMemberNo, scale*0.7, scale*0.7); +// HuPrcVSleep(); +// } +// choice = 0; +// scale_time = 0; +// #endif - #if VERSION_NTSC - for (i = scale_time = 0; i < 1800; i++) { - #else - for (i = temp = 0; i < 1800; i++) { - #endif - #if VERSION_PAL - if((choice == 0 && (HuPadDStkRep[0] & PAD_BUTTON_DOWN)) || (choice != 0 && (HuPadDStkRep[0] & PAD_BUTTON_UP))) { - HuAudFXPlay(0); - for(i=1; i<=10; i++) { - scale = ((1-(i/10.0))*(((cosd(scale_time)*0.1)+0.9)-0.7))+0.7; - if(choice == 0) { - HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); - } else { - HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); - } - scale = ((1-(i/10.0))*(((cosd(scale_time/3.0)*0.05)+0.65)-1.0))+1.0; - if(choice == 0) { - HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); - } else { - HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); - } - HuPrcVSleep(); - } - choice ^= 1; - scale_time = 0; - } - if (HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) { - if(choice == 0) { - s32 ret = HuAudFXPlay(2092); - if (ret < 0) { - OSReport(">>>>>Error %d\n", ret); - } - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - return 1; - } else { - HuAudFXPlay(1); - HuAudSStreamAllFadeOut(500); - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - for(i=0; i<5; i++) { - HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); - } - for(i=0; i<5; i++) { - HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); - } - LanguageMenuExec(); - Hu3DModelCameraInfoSet(titleMdlId[2], 1); - Hu3DModelLightInfoSet(titleMdlId[2], 1); - HuWinInit(1); - goto repeat; - } - } - scale = (cosd(scale_time) * 0.1) + 0.9; - if(choice == 0) { - HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); - } else { - HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); - } - scale = (cosd(scale_time/3.0) * 0.05) + 0.65; - if(choice == 0) { - HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); - } else { - HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); - } - scale_time += 5; - HuPrcVSleep(); - #else - if (i <= 10) { - HuSprTPLvlSet(bootGrpId, 2, i / 10.0); - } - if (HuPadBtnDown[0] & PAD_BUTTON_START) { - s32 ret = HuAudFXPlay(2092); - if (ret < 0) { - OSReport(">>>>>Error %d\n", ret); - } - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - return 1; - } - scale = (sind(i * scale_time) * 0.1) + 0.9; - scale_time += 0.05; - if (scale_time > 5) { - scale_time = 5; - } - HuSprScaleSet(bootGrpId, 2, scale, scale); - HuPrcVSleep(); - #endif +// #if VERSION_NTSC +// for (i = scale_time = 0; i < 1800; i++) { +// #else +// for (i = temp = 0; i < 1800; i++) { +// #endif +// #if VERSION_PAL +// if((choice == 0 && (HuPadDStkRep[0] & PAD_BUTTON_DOWN)) || (choice != 0 && (HuPadDStkRep[0] & PAD_BUTTON_UP))) { +// HuAudFXPlay(0); +// for(i=1; i<=10; i++) { +// scale = ((1-(i/10.0))*(((cosd(scale_time)*0.1)+0.9)-0.7))+0.7; +// if(choice == 0) { +// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); +// } else { +// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); +// } +// scale = ((1-(i/10.0))*(((cosd(scale_time/3.0)*0.05)+0.65)-1.0))+1.0; +// if(choice == 0) { +// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); +// } else { +// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); +// } +// HuPrcVSleep(); +// } +// choice ^= 1; +// scale_time = 0; +// } +// if (HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) { +// if(choice == 0) { +// s32 ret = HuAudFXPlay(2092); +// if (ret < 0) { +// OSReport(">>>>>Error %d\n", ret); +// } +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// return 1; +// } else { +// HuAudFXPlay(1); +// HuAudSStreamAllFadeOut(500); +// WipeColorSet(255, 255, 255); +// WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); +// while (WipeStatGet()) { +// HuPrcVSleep(); +// } +// Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); +// Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); +// Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// for(i=0; i<5; i++) { +// HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); +// } +// for(i=0; i<5; i++) { +// HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); +// } +// LanguageMenuExec(); +// Hu3DModelCameraInfoSet(titleMdlId[2], 1); +// Hu3DModelLightInfoSet(titleMdlId[2], 1); +// HuWinInit(1); +// goto repeat; +// } +// } +// scale = (cosd(scale_time) * 0.1) + 0.9; +// if(choice == 0) { +// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); +// } else { +// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); +// } +// scale = (cosd(scale_time/3.0) * 0.05) + 0.65; +// if(choice == 0) { +// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); +// } else { +// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); +// } +// scale_time += 5; +// HuPrcVSleep(); +// #else +// if (i <= 10) { +// HuSprTPLvlSet(bootGrpId, 2, i / 10.0); +// } +// if (HuPadBtnDown[0] & PAD_BUTTON_START) { +// s32 ret = HuAudFXPlay(2092); +// if (ret < 0) { +// OSReport(">>>>>Error %d\n", ret); +// } +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// return 1; +// } +// scale = (sind(i * scale_time) * 0.1) + 0.9; +// scale_time += 0.05; +// if (scale_time > 5) { +// scale_time = 5; +// } +// HuSprScaleSet(bootGrpId, 2, scale, scale); +// HuPrcVSleep(); +// #endif - } - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); - #if VERSION_NTSC - HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF); - #else - HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - for(i=0; i<5; i++) { - HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); - } - for(i=0; i<5; i++) { - HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); - } - #endif - return 0; -} +// } +// WipeColorSet(255, 255, 255); +// WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); +// while (WipeStatGet()) { +// HuPrcVSleep(); +// } +// Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); +// Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); +// Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); +// #if VERSION_NTSC +// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF); +// #else +// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// for(i=0; i<5; i++) { +// HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); +// } +// for(i=0; i<5; i++) { +// HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); +// } +// #endif +// return 0; +// } -#include "nintendoData.inc" +// #include "nintendoData.inc" -void *NintendoDataDecode(void) -{ - u32 *src = (u32 *)nintendoData; - u32 size = *src++; - void *dst = HuMemDirectMalloc(HEAP_DATA, size); - int decode_type = *src++; - if(dst) { - HuDecodeData(src, dst, size, decode_type); - } - return dst; -} +// void *NintendoDataDecode(void) +// { +// u32 *src = (u32 *)nintendoData; +// u32 size = *src++; +// void *dst = HuMemDirectMalloc(HEAP_DATA, size); +// int decode_type = *src++; +// if(dst) { +// HuDecodeData(src, dst, size, decode_type); +// } +// return dst; +// } diff --git a/src/game/gamework.c b/src/game/gamework.c index 5c19db71..3c066ff6 100644 --- a/src/game/gamework.c +++ b/src/game/gamework.c @@ -4,14 +4,14 @@ #include "string.h" #include "version.h" -s16 GwLanguage = 1; -s16 GwLanguageSave = -1; +SHARED_SYM s16 GwLanguage = 1; +SHARED_SYM s16 GwLanguageSave = -1; -GameStat GWGameStatDefault; -GameStat GWGameStat; -SystemState GWSystem; -PlayerState GWPlayer[4]; -PlayerConfig GWPlayerCfg[4]; +SHARED_SYM GameStat GWGameStatDefault; +SHARED_SYM GameStat GWGameStat; +SHARED_SYM SystemState GWSystem; +SHARED_SYM PlayerState GWPlayer[4]; +SHARED_SYM PlayerConfig GWPlayerCfg[4]; static inline void GWErase(void) { diff --git a/src/game/main.c b/src/game/main.c index 09931a38..29f1b24f 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -125,7 +125,7 @@ void main(void) GWPlayerCfg[i].character = -1; } - //omMasterInit(0, _ovltbl, OVL_COUNT, OVL_BOOT); + omMasterInit(0, _ovltbl, OVL_COUNT, OVL_BOOT); VIWaitForRetrace(); if (VIGetNextField() == 0) { diff --git a/src/game/objdll.c b/src/game/objdll.c index c1414129..ec0b6b5a 100644 --- a/src/game/objdll.c +++ b/src/game/objdll.c @@ -5,6 +5,10 @@ typedef s32 (*DLLProlog)(void); typedef void (*DLLEpilog)(void); +#ifdef TARGET_PC +typedef void (*DLLObjectSetup)(void); +#endif + omDllData *omDLLinfoTbl[OM_DLL_MAX]; static FileListEntry *omDLLFileList; @@ -31,6 +35,10 @@ s32 omDLLStart(s16 overlay, s16 flag) dllno = omDLLSearch(overlay); if(dllno >= 0 && !flag) { omDllData *dll = omDLLinfoTbl[dllno]; +#ifdef TARGET_PC + // TODO PC + OSReport("objdll>Already Loaded %s\n", dll->name); +#else OSReport("objdll>Already Loaded %s(%08x %08x)\n", dll->name, dll->module, dll->bss); omDLLInfoDump(&dll->module->info); @@ -38,6 +46,7 @@ s32 omDLLStart(s16 overlay, s16 flag) memset(dll->bss, 0, dll->module->bssSize); HuMemDCFlushAll(); dll->ret = ((DLLProlog)dll->module->prolog)(); +#endif OSReport("objdll> %s prolog end\n", dll->name); return dllno; } else { @@ -80,8 +89,10 @@ void omDLLEnd(s16 dllno, s16 flag) } else { omDllData *dll; dll = omDLLinfoTbl[dllno]; +#ifdef __MWERKS__ OSReport("objdll>Call Epilog\n"); ((DLLEpilog)dll->module->epilog)(); +#endif OSReport("objdll>End DLL stayed:%s\n", omDLLinfoTbl[dllno]->name); } OSReport("objdll>End DLL finish\n"); @@ -95,6 +106,12 @@ omDllData *omDLLLink(omDllData **dll_ptr, s16 overlay, s16 flag) dll = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(omDllData)); *dll_ptr = dll; dll->name = dllFile->name; +#ifdef _WIN32 + dll->hModule = LoadLibrary(dllFile->name); + if (dll->hModule == NULL) { + OSReport("objdll>++++++++++++++++ DLL Link Failed\n"); + } +#else dll->module = HuDvdDataReadDirect(dllFile->name, HEAP_SYSTEM); dll->bss = HuMemDirectMalloc(HEAP_SYSTEM, dll->module->bssSize); if(OSLink(&dll->module->info, dll->bss) != TRUE) { @@ -103,9 +120,17 @@ omDllData *omDLLLink(omDllData **dll_ptr, s16 overlay, s16 flag) omDLLInfoDump(&dll->module->info); omDLLHeaderDump(dll->module); OSReport("objdll>LinkOK %08x %08x\n", dll->module, dll->bss); +#endif if(flag == 1) { OSReport("objdll> %s prolog start\n", dllFile->name); +#ifdef _WIN32 + { + DLLObjectSetup objectSetup = (DLLObjectSetup)GetProcAddress(dll->hModule, "ObjectSetup"); + objectSetup(); + } +#else dll->ret = ((DLLProlog)dll->module->prolog)(); +#endif OSReport("objdll> %s prolog end\n", dllFile->name); } return dll; @@ -114,6 +139,9 @@ omDllData *omDLLLink(omDllData **dll_ptr, s16 overlay, s16 flag) void omDLLUnlink(omDllData *dll_ptr, s16 flag) { OSReport("odjdll>Unlink DLL:%s\n", dll_ptr->name); +#ifdef _WIN32 + FreeLibrary(dll_ptr->hModule); +#else if(flag == 1) { OSReport("objdll>Unlink DLL epilog\n"); ((DLLEpilog)dll_ptr->module->epilog)(); @@ -124,6 +152,7 @@ void omDLLUnlink(omDllData *dll_ptr, s16 flag) } HuMemDirectFree(dll_ptr->bss); HuMemDirectFree(dll_ptr->module); +#endif HuMemDirectFree(dll_ptr); } @@ -169,4 +198,4 @@ void omDLLHeaderDump(OSModuleHeader *module) OSReport(" epilog func:0x%08x\n", module->epilog); OSReport(" unresolved func:0x%08x\n", module->unresolved); OSReport("================================\n"); -} \ No newline at end of file +} diff --git a/src/game/objmain.c b/src/game/objmain.c index 39bc9e12..a0e433c4 100644 --- a/src/game/objmain.c +++ b/src/game/objmain.c @@ -1,12 +1,13 @@ #include "game/audio.h" #include "game/chrman.h" #include "game/esprite.h" +#include "game/flag.h" #include "game/hsfdraw.h" #include "game/hsfman.h" -#include "game/printfunc.h" #include "game/object.h" #include "game/pad.h" -#include "game/flag.h" +#include "game/printfunc.h" + #define OM_OVL_HIS_MAX 16 #define OM_MAX_GROUPS 10 @@ -33,21 +34,21 @@ typedef struct om_obj_man { omObjData *omDBGSysKeyObj; Process *omwatchproc; OverlayID omnextovl; -OverlayID omcurovl; +SHARED_SYM OverlayID omcurovl; s32 omcurdll; -s32 omovlhisidx; -s32 omovlevtno; +SHARED_SYM s32 omovlhisidx; +SHARED_SYM s32 omovlevtno; s32 omnextovlevtno; -u32 omovlstat; +SHARED_SYM u32 omovlstat; static s32 omnextovlstat; char omUPauseFlag; -s16 omSysExitReq; +SHARED_SYM s16 omSysExitReq; s16 omdispinfo; static omOvlHisData omovlhis[OM_OVL_HIS_MAX]; -u8 omSysPauseEnableFlag = TRUE; -OverlayID omprevovl = OVL_INVALID; +SHARED_SYM u8 omSysPauseEnableFlag = TRUE; +SHARED_SYM OverlayID omprevovl = OVL_INVALID; static void omWatchOverlayProc(void); static void omInsertObj(Process *objman_process, omObjData *object); @@ -61,14 +62,17 @@ void omMasterInit(s32 prio, FileListEntry *ovl_list, s32 ovl_count, OverlayID st omovlhisidx = -1; omOvlCallEx(start_ovl, 1, 0, 0); omDBGSysKeyObj = NULL; +#ifdef __MWERKS__ + // TODO PC omSysPauseEnable(TRUE); +#endif } static void omWatchOverlayProc(void) { - while(1) { - if(omcurovl == OVL_INVALID) { - if(omnextovl >= 0 && fadeStat == 0) { + while (1) { + if (omcurovl == OVL_INVALID) { + if (omnextovl >= 0 && fadeStat == 0) { HuPrcSleep(0); OSReport("++++++++++++++++++++ Start New OVL %d (EVT:%d STAT:0x%08x) ++++++++++++++++++\n", omnextovl, omnextovlevtno, omnextovlstat); HuMemHeapDump(HuMemHeapPtrGet(HEAP_SYSTEM), -1); @@ -79,28 +83,37 @@ static void omWatchOverlayProc(void) OSReport("objman>Init esp\n"); espInit(); OSReport("objman>Call objectsetup\n"); +#ifdef __MWERKS__ + // TODO PC HuAudVoiceInit(omnextovl); HuAudDllSndGrpSet(omnextovl); +#endif omcurovl = omnextovl; omovlevtno = omnextovlevtno; omovlstat = omnextovlstat; omnextovl = OVL_INVALID; - if(_CheckFlag(FLAG_ID_MAKE(1, 12))) { +#ifdef __MWERKS__ + // TODO PC + if (_CheckFlag(FLAG_ID_MAKE(1, 12))) { MGSeqPracticeInit(); } omSysPauseEnable(TRUE); +#endif omcurdll = omDLLStart(omcurovl, 0); OSReport("objman>ObjectSetup end\n"); - if(omcurovl != OVL_INVALID) { + if (omcurovl != OVL_INVALID) { goto watch_child; - } else { + } + else { continue; } - } else { + } + else { HuPrcVSleep(); } - } else { - watch_child: + } + else { + watch_child: HuPrcChildWatch(); } } @@ -109,7 +122,7 @@ static void omWatchOverlayProc(void) void omOvlCallEx(OverlayID overlay, s16 arg2, s32 event, s32 stat) { OSReport("objman>Call New Ovl %d(%d)\n", overlay, arg2); - if(omovlhisidx >= OM_OVL_HIS_MAX) { + if (omovlhisidx >= OM_OVL_HIS_MAX) { OSReport("objman>OVL Call over error\n"); return; } @@ -122,7 +135,7 @@ void omOvlCallEx(OverlayID overlay, s16 arg2, s32 event, s32 stat) void omOvlGotoEx(OverlayID overlay, s16 arg2, s32 event, s32 stat) { omprevovl = omcurovl; - if(omcurovl >= 0) { + if (omcurovl >= 0) { omOvlKill(arg2); } omnextovl = overlay; @@ -134,7 +147,7 @@ void omOvlReturnEx(s16 level, s16 arg2) { omovlhisidx -= level; OSReport("objman>Ovl Return %d=%d(%d)\n", level, omovlhisidx, arg2); - if(omovlhisidx < 0) { + if (omovlhisidx < 0) { OSReport("objman>OVL under error\n"); omovlhisidx = 0; } @@ -143,10 +156,16 @@ void omOvlReturnEx(s16 level, s16 arg2) void omOvlKill(s16 arg) { +#ifdef __MWERKS__ + // TODO PC CharModelKill(-1); MGSeqKillAll(); +#endif Hu3DAllKill(); +#ifdef __MWERKS__ + // TODO PC HuWinAllKill(); +#endif HuSprClose(); HuPrcChildKill(omwatchproc); HuMemDirectFreeNum(HEAP_SYSTEM, MEMORY_DEFAULT_NUM); @@ -154,7 +173,10 @@ void omOvlKill(s16 arg) HuMemDirectFreeNum(HEAP_DVD, MEMORY_DEFAULT_NUM); HuMemDirectFreeNum(HEAP_DATA, MEMORY_DEFAULT_NUM); HuPadRumbleAllStop(); +#ifdef __MWERKS__ + // TODO PC HuAudFXListnerKill(); +#endif OSReport("OvlKill %d\n", arg); omSysExitReq = FALSE; omDLLNumEnd(omcurovl, arg); @@ -165,11 +187,11 @@ void omOvlKill(s16 arg) void omOvlHisChg(s32 level, OverlayID overlay, s32 event, s32 stat) { omOvlHisData *history; - if(omovlhisidx-level < 0 || omovlhisidx-level >= OM_OVL_HIS_MAX) { + if (omovlhisidx - level < 0 || omovlhisidx - level >= OM_OVL_HIS_MAX) { OSReport("objman> omOvlHisChg: overlay 実行履歴の範囲外を変更しようとしました\n"); return; } - history = &omovlhis[omovlhisidx-level]; + history = &omovlhis[omovlhisidx - level]; history->overlay = overlay; history->event = event; history->stat = stat; @@ -177,11 +199,11 @@ void omOvlHisChg(s32 level, OverlayID overlay, s32 event, s32 stat) omOvlHisData *omOvlHisGet(s32 level) { - if(omovlhisidx-level < 0 || omovlhisidx-level >= OM_OVL_HIS_MAX) { + if (omovlhisidx - level < 0 || omovlhisidx - level >= OM_OVL_HIS_MAX) { OSReport("objman> omOvlHisGet: overlay 実行履歴の範囲外を参照しようとしました\n"); return NULL; } - return &omovlhis[omovlhisidx-level]; + return &omovlhis[omovlhisidx - level]; } Process *omInitObjMan(s16 max_objs, s32 prio) @@ -196,7 +218,7 @@ Process *omInitObjMan(s16 max_objs, s32 prio) max_objs += 2; omSysExitReq = FALSE; process = HuPrcChildCreate(omMain, prio, 16384, 0, omwatchproc); - HuPrcSetStat(process, PROCESS_STAT_PAUSE_EN|PROCESS_STAT_UPAUSE_EN); + HuPrcSetStat(process, PROCESS_STAT_PAUSE_EN | PROCESS_STAT_UPAUSE_EN); objman = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(omObjMan), MEMORY_DEFAULT_NUM); objman->max_objs = max_objs; process->user_data = objman; @@ -205,24 +227,24 @@ Process *omInitObjMan(s16 max_objs, s32 prio) objman->next_idx = 0; objman->obj_last = -1; objman->obj_first = -1; - obj_all = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(omObjData), MEMORY_DEFAULT_NUM); - objman->obj = obj_all; - group_all = HuMemDirectMallocNum(HEAP_SYSTEM, OM_MAX_GROUPS*sizeof(omObjGroup), MEMORY_DEFAULT_NUM); + obj_all = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs * sizeof(omObjData), MEMORY_DEFAULT_NUM); + objman->obj = obj_all; + group_all = HuMemDirectMallocNum(HEAP_SYSTEM, OM_MAX_GROUPS * sizeof(omObjGroup), MEMORY_DEFAULT_NUM); objman->group = group_all; - for(i=0; istat = 1; - obj->prio = obj->prev =obj->next = -1; + obj->prio = obj->prev = obj->next = -1; obj->unk10 = 0; obj->trans.x = obj->trans.y = obj->trans.z = obj->rot.x = obj->rot.y = obj->rot.z = 0.0f; obj->scale.x = obj->scale.y = obj->scale.z = 1.0f; obj->model = obj->motion = NULL; obj->func = obj->data = NULL; - obj->next_idx = i+1; + obj->next_idx = i + 1; obj->mtncnt = 0; obj->motion = NULL; } - for(i=0; iuser_data; omObjData *obj_base = objman->obj; - if(objman->num_objs == objman->max_objs) { + if (objman->num_objs == objman->max_objs) { return NULL; } next_idx = objman->next_idx; @@ -258,26 +280,29 @@ omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt, object->next_idx_alloc = next_idx; object->prio = prio; omInsertObj(objman_process, object); - if(mdlcnt) { - object->model = HuMemDirectMallocNum(HEAP_SYSTEM, mdlcnt*sizeof(s16), MEMORY_DEFAULT_NUM); + if (mdlcnt) { + object->model = HuMemDirectMallocNum(HEAP_SYSTEM, mdlcnt * sizeof(s16), MEMORY_DEFAULT_NUM); object->mdlcnt = mdlcnt; - for(i=0; imodel[i] = -1; } - } else { + } + else { object->model = NULL; object->mdlcnt = 0; } - if(mtncnt) { - object->motion = HuMemDirectMallocNum(HEAP_SYSTEM, mtncnt*sizeof(s16), MEMORY_DEFAULT_NUM); + if (mtncnt) { + object->motion = HuMemDirectMallocNum(HEAP_SYSTEM, mtncnt * sizeof(s16), MEMORY_DEFAULT_NUM); object->mtncnt = mtncnt; - } else { + } + else { object->motion = NULL; object->mtncnt = 0; } - if(group >= 0) { + if (group >= 0) { omAddMember(objman_process, group, object); - } else { + } + else { object->group = group; object->group_idx = 0; } @@ -302,31 +327,33 @@ static void omInsertObj(Process *objman_process, omObjData *object) s16 prio = object->prio; s16 obj_idx; s16 prev_idx; - if(objman->obj_first == -1) { + if (objman->obj_first == -1) { object->prev = -1; object->next = -1; objman->obj_first = next_idx_alloc; objman->obj_last = next_idx_alloc; - (void)objman; //HACK for matching + (void)objman; // HACK for matching return; } - for(obj_idx = objman->obj_first; obj_idx != -1; obj_idx = obj_new->next) { + for (obj_idx = objman->obj_first; obj_idx != -1; obj_idx = obj_new->next) { obj_new = &obj_all[obj_idx]; - if(obj_new->prio <= prio) { + if (obj_new->prio <= prio) { break; } prev_idx = obj_idx; } - if(obj_idx != -1) { + if (obj_idx != -1) { object->prev = obj_new->prev; object->next = obj_idx; - if(obj_new->prev != -1) { + if (obj_new->prev != -1) { obj_all[obj_new->prev].next = next_idx_alloc; - } else { + } + else { objman->obj_first = next_idx_alloc; } obj_new->prev = next_idx_alloc; - } else { + } + else { object->next = -1; object->prev = prev_idx; obj_new->next = next_idx_alloc; @@ -338,7 +365,7 @@ void omAddMember(Process *objman_process, u16 group, omObjData *object) { omObjMan *objman = objman_process->user_data; omObjGroup *group_ptr = &objman->group[group]; - if(group_ptr->num_objs != group_ptr->max_objs) { + if (group_ptr->num_objs != group_ptr->max_objs) { object->group = group; object->group_idx = group_ptr->next_idx; group_ptr->obj[group_ptr->next_idx] = object; @@ -352,40 +379,41 @@ void omDelObjEx(Process *objman_process, omObjData *object) omObjMan *objman = objman_process->user_data; omObjData *obj_all = objman->obj; s16 next_idx_alloc = object->next_idx_alloc; - if(objman->num_objs == 0 || object->stat == 1) { + if (objman->num_objs == 0 || object->stat == 1) { return; } objman->num_objs--; - if(object->group >= 0) { + if (object->group >= 0) { omDelMember(objman_process, object); } - if(object->motion != NULL) { + if (object->motion != NULL) { HuMemDirectFree(object->motion); object->motion = NULL; } - if(object->model != NULL) { + if (object->model != NULL) { HuMemDirectFree(object->model); object->model = NULL; } - if(object->data != NULL) { + if (object->data != NULL) { HuMemDirectFree(object->data); object->data = NULL; } object->stat = OM_STAT_DELETED; - if(object->next >= 0) { + if (object->next >= 0) { obj_all[object->next].prev = object->prev; } - if(object->prev >= 0) { + if (object->prev >= 0) { obj_all[object->prev].next = object->next; } - if(objman->num_objs != 0) { - if(object->prev < 0) { + if (objman->num_objs != 0) { + if (object->prev < 0) { objman->obj_first = obj_all[object->next].next_idx_alloc; } - if(object->next < 0) { + if (object->next < 0) { objman->obj_last = obj_all[object->prev].next_idx_alloc; } - } else { + } + else { objman->obj_first = objman->obj_last = -1; } object->next_idx = objman->next_idx; @@ -394,7 +422,7 @@ void omDelObjEx(Process *objman_process, omObjData *object) void omDelMember(Process *objman_process, omObjData *object) { - if(object->group != -1) { + if (object->group != -1) { omObjMan *objman = objman_process->user_data; omObjData *obj_all = objman->obj; omObjGroup *group = &objman->group[object->group]; @@ -411,20 +439,20 @@ void omMakeGroupEx(Process *objman_process, u16 group, u16 max_objs) s32 i; omObjMan *objman = objman_process->user_data; omObjGroup *group_ptr = &objman->group[group]; - if(group_ptr->obj != NULL) { + if (group_ptr->obj != NULL) { HuMemDirectFree(group_ptr->obj); } - if(group_ptr->next != NULL) { + if (group_ptr->next != NULL) { HuMemDirectFree(group_ptr->next); } group_ptr->next_idx = 0; group_ptr->max_objs = max_objs; group_ptr->num_objs = 0; - group_ptr->obj = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(omObjData *), MEMORY_DEFAULT_NUM); - group_ptr->next = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(u16), MEMORY_DEFAULT_NUM); - for(i=0; iobj = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs * sizeof(omObjData *), MEMORY_DEFAULT_NUM); + group_ptr->next = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs * sizeof(u16), MEMORY_DEFAULT_NUM); + for (i = 0; i < max_objs; i++) { group_ptr->obj[i] = NULL; - group_ptr->next[i] = i+1; + group_ptr->next[i] = i + 1; } } @@ -473,38 +501,38 @@ void omMain(void) omObjData *object; s16 obj_index; omDLLDBGOut(); - while(1) { - if(omdispinfo) { + while (1) { + if (omdispinfo) { float scale = 1.5f; GXColor color; color.a = 96; color.r = 0; color.g = 0; color.b = 255; - printWin(7, 23, 128*scale, 40*scale, &color); + printWin(7, 23, 128 * scale, 40 * scale, &color); fontcolor = FONT_COLOR_YELLOW; print8(8, 24, scale, "\xFD\x01H:%08lX(%ld)", HuMemUsedMallocSizeGet(HEAP_SYSTEM), HuMemUsedMallocBlockGet(HEAP_SYSTEM)); - print8(8, 24+(8*scale), scale, "\xFD\x01M:%08lX(%ld)", HuMemUsedMallocSizeGet(HEAP_DATA), HuMemUsedMallocBlockGet(HEAP_DATA)); - print8(8, 24+(16*scale), scale, "\xFD\x01OBJ:%d/%d", objman->num_objs, objman->max_objs); - print8(8, 24+(24*scale), scale, "\xFD\x01OVL:%ld(%ld<%ld)", omovlhisidx, omcurovl, omprevovl); - print8(8, 24+(32*scale), scale, "\xFD\x01POL:%ld", totalPolyCnted); + print8(8, 24 + (8 * scale), scale, "\xFD\x01M:%08lX(%ld)", HuMemUsedMallocSizeGet(HEAP_DATA), HuMemUsedMallocBlockGet(HEAP_DATA)); + print8(8, 24 + (16 * scale), scale, "\xFD\x01OBJ:%d/%d", objman->num_objs, objman->max_objs); + print8(8, 24 + (24 * scale), scale, "\xFD\x01OVL:%ld(%ld<%ld)", omovlhisidx, omcurovl, omprevovl); + print8(8, 24 + (32 * scale), scale, "\xFD\x01POL:%ld", totalPolyCnted); } obj_index = objman->obj_last; - while(obj_index != -1) { + while (obj_index != -1) { object = &obj_all[obj_index]; obj_index = object->prev; - if((object->stat & (OM_STAT_DELETED|OM_STAT_DISABLED)) == 0) { - if(object->func != NULL && (object->stat & (0x40|0x8|OM_STAT_PAUSED)) == 0) { + if ((object->stat & (OM_STAT_DELETED | OM_STAT_DISABLED)) == 0) { + if (object->func != NULL && (object->stat & (0x40 | 0x8 | OM_STAT_PAUSED)) == 0) { object->func(object); } - if(omcurovl == -1 || objman->obj_last == -1) { + if (omcurovl == -1 || objman->obj_last == -1) { break; } - if((object->stat & (OM_STAT_DELETED|OM_STAT_DISABLED)) == 0) { - if((obj_all[obj_index].stat & (OM_STAT_DELETED|OM_STAT_DISABLED)) != 0) { + if ((object->stat & (OM_STAT_DELETED | OM_STAT_DISABLED)) == 0) { + if ((obj_all[obj_index].stat & (OM_STAT_DELETED | OM_STAT_DISABLED)) != 0) { obj_index = object->prev; } - if(object->model != NULL && object->model[0] != -1 && !(object->stat & OM_STAT_MODEL_PAUSED)) { + if (object->model != NULL && object->model[0] != -1 && !(object->stat & OM_STAT_MODEL_PAUSED)) { Hu3DModelPosSet(object->model[0], object->trans.x, object->trans.y, object->trans.z); Hu3DModelRotSet(object->model[0], object->rot.x, object->rot.y, object->rot.z); Hu3DModelScaleSet(object->model[0], object->scale.x, object->scale.y, object->scale.z); @@ -516,7 +544,7 @@ void omMain(void) } } -//Dummy function to force string literals in binary +// Dummy function to force string literals in binary static void omDumpObj(Process *objman_process) { omObjMan *objman = objman_process->user_data; @@ -524,14 +552,12 @@ static void omDumpObj(Process *objman_process) s32 i; OSReport("=================== 現在登録されている OBJECT ==================\n"); OSReport("STAT PRI GRPN MEMN PROG (TRA) (ROT) (SCA) mdlcnt mtncnt work[0] work[1] work[2] work[3] *data\n"); - for(i=0; imax_objs; i++) { + for (i = 0; i < objman->max_objs; i++) { omObjData *object = &obj_all[i]; - OSReport("%04d:%04X %04X %d %d %08X (%.2f %.2f %.2f) (%.2f %.2f %.2f) (%.2f %.2f %.2f) %d %d %08X %08X %08X %08X %08X\n", - object->stat, object->stat, object->prio, object->group, object->unk10, object->func, - object->trans.x, object->trans.y, object->trans.z, - object->rot.x, object->rot.y, object->rot.z, - object->scale.x, object->scale.y, object->scale.z, - object->mdlcnt, object->mtncnt, object->work[0], object->work[1], object->work[2], object->work[3], object->data); + OSReport("%04d:%04X %04X %d %d %08X (%.2f %.2f %.2f) (%.2f %.2f %.2f) (%.2f %.2f %.2f) %d %d %08X %08X %08X %08X %08X\n", object->stat, + object->stat, object->prio, object->group, object->unk10, object->func, object->trans.x, object->trans.y, object->trans.z, object->rot.x, + object->rot.y, object->rot.z, object->scale.x, object->scale.y, object->scale.z, object->mdlcnt, object->mtncnt, object->work[0], + object->work[1], object->work[2], object->work[3], object->data); } OSReport("================================================================\n"); } @@ -541,15 +567,16 @@ void omAllPause(BOOL pause) Process *objman_process = HuPrcCurrentGet(); omObjMan *objman = objman_process->user_data; s32 i; - if(pause) { - for(i=0; imax_objs; i++) { - if((objman->obj[i].stat & (OM_STAT_DELETED|OM_STAT_NOPAUSE)) == 0) { + if (pause) { + for (i = 0; i < objman->max_objs; i++) { + if ((objman->obj[i].stat & (OM_STAT_DELETED | OM_STAT_NOPAUSE)) == 0) { omSetStatBit(&objman->obj[i], OM_STAT_PAUSED); } } - } else { - for(i=0; imax_objs; i++) { - if((objman->obj[i].stat & (OM_STAT_DELETED|OM_STAT_NOPAUSE)) == 0) { + } + else { + for (i = 0; i < objman->max_objs; i++) { + if ((objman->obj[i].stat & (OM_STAT_DELETED | OM_STAT_NOPAUSE)) == 0) { omResetStatBit(&objman->obj[i], OM_STAT_PAUSED); } } @@ -558,9 +585,10 @@ void omAllPause(BOOL pause) char omPauseChk(void) { - if(omDBGSysKeyObj == NULL) { + if (omDBGSysKeyObj == NULL) { return 0; - } else { + } + else { return omDBGSysKeyObj->work[0] & 0x1; } } diff --git a/src/game/ovllist.c b/src/game/ovllist.c index e64fdd34..df997d83 100644 --- a/src/game/ovllist.c +++ b/src/game/ovllist.c @@ -1,11 +1,15 @@ #include "game/dvd.h" #include "game/object.h" -#define OVL_DEFINE(name, path) { path, 0 }, +#ifdef _WIN32 +#define OVL_DEFINE(name, path) { path ".dll", 0 }, +#else +#define OVL_DEFINE(name, path) { "dll/" path ".rel", 0 }, +#endif FileListEntry _ovltbl[OVL_COUNT+1] = { #include "ovl_table.h" { NULL, -1 } }; -#undef OVL_DEFINE \ No newline at end of file +#undef OVL_DEFINE diff --git a/src/port/stubs.c b/src/port/stubs.c index 52c6fe0a..2c89632f 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -9,7 +9,7 @@ // Credits: Super Monkey Ball -void OSReport(const char *msg, ...) +__declspec(dllexport) void OSReport(const char *msg, ...) { va_list args; va_start(args, msg); @@ -353,7 +353,7 @@ BOOL OSInitFont(OSFontHeader *fontData) BOOL OSLink(OSModuleInfo *newModule, void *bss) { puts("OSLink is a stub"); - return FALSE; + return TRUE; } void OSLoadContext(OSContext *context) @@ -699,7 +699,5 @@ void MGSeqMain(void) puts("MGSeqMain is a stub"); } -void omMasterInit(s32 prio, FileListEntry *ovl_list, s32 ovl_count, OverlayID start_ovl) -{ - puts("omMasterInit is a stub"); -} +// TODO remove +u8 fadeStat = 0;