diff --git a/.gitmodules b/.gitmodules index cc9bd6cc..24a2c280 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "extern/aurora"] path = extern/aurora url = https://github.com/dbalatoni13/aurora.git +[submodule "extern/longjmp_win64"] + path = extern/longjmp_win64 + url = https://github.com/GlinkieGamesInc/longjmp_win64.git diff --git a/CMakeLists.txt b/CMakeLists.txt index a4e18016..166e7fee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.13) if (APPLE) -project(marioparty4 LANGUAGES C CXX OBJC) + project(marioparty4 LANGUAGES C CXX OBJC) else () -project(marioparty4 LANGUAGES C CXX) + project(marioparty4 LANGUAGES C CXX) endif () set(CMAKE_C_STANDARD 11) @@ -11,88 +11,126 @@ set(CMAKE_CXX_STANDARD 20) set(VERSION 0) # Set build type to Debug if not specified -if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Debug) -endif() - -if (CMAKE_SYSTEM_NAME STREQUAL Linux) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas -Wno-unused-variable -Wno-unused-parameter") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -fsanitize=address -fsanitize-address-use-after-scope") - set(CMAKE_PREFIX_PATH /usr) - set(CMAKE_LIBRARY_ARCHITECTURE i386-linux-gnu) - set(CMAKE_LIBRARY_PATH "/usr/lib32" CACHE PATH "") - set(CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX 32) +if (NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Debug) endif () -if(APPLE) - add_compile_options(-Wno-declaration-after-statement) +if (CMAKE_SYSTEM_NAME STREQUAL Linux) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32 -fsanitize=address -fsanitize-address-use-after-scope -Wno-unknown-pragmas -Wno-unused-variable -Wno-unused-parameter -fPIC") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -fsanitize=address -fsanitize-address-use-after-scope -Wno-register -fPIC") + set(CMAKE_PREFIX_PATH /usr) + set(CMAKE_LIBRARY_ARCHITECTURE i386-linux-gnu) + set(CMAKE_LIBRARY_PATH "/usr/lib32" "/usr/lib/i386-linux-gnu" CACHE PATH "") + set(CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX 32) +elseif (APPLE) + add_compile_options(-Wno-declaration-after-statement) +elseif (MSVC) + add_compile_options(/bigobj) endif () add_compile_options(-fsanitize=address) -if (MSVC) - add_compile_options(/bigobj) -endif () - add_subdirectory(extern/aurora EXCLUDE_FROM_ALL) add_subdirectory(extern/musyx EXCLUDE_FROM_ALL) set(DOLPHIN_FILES - src/dolphin/mtx/mtx.c - src/dolphin/mtx/mtx44.c - src/dolphin/mtx/vec.c - src/dolphin/os/OSAlloc.c - src/dolphin/os/OSArena.c - src/dolphin/os/OSStopwatch.c + src/dolphin/mtx/mtx.c + src/dolphin/mtx/mtx44.c + src/dolphin/mtx/vec.c + src/dolphin/mtx/quat.c + src/dolphin/os/OSAlloc.c + src/dolphin/os/OSArena.c + src/dolphin/os/OSStopwatch.c ) set(GAME_FILES - src/game/armem.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/init.c - src/game/main.c - src/game/malloc.c - src/game/memory.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 - src/game/pad.c - src/game/perf.c - src/game/printfunc.c - src/game/process.c - src/game/window.c - src/game/wipe.c + src/game/board/audio.c + src/game/board/basic_space.c + src/game/board/battle.c + src/game/board/block.c + src/game/board/boo.c + src/game/board/boo_house.c + src/game/board/bowser.c + src/game/board/char_wheel.c + src/game/board/com.c + src/game/board/com_path.c + src/game/board/fortune.c + src/game/board/item.c + src/game/board/last5.c + src/game/board/lottery.c + src/game/board/main.c + src/game/board/mg_setup.c + src/game/board/model.c + src/game/board/mushroom.c + src/game/board/pause.c + src/game/board/player.c + src/game/board/roll.c + src/game/board/shop.c + src/game/board/space.c + src/game/board/star.c + src/game/board/start.c + src/game/board/tutorial.c + src/game/board/ui.c + src/game/board/view.c + src/game/board/warp.c + src/game/board/window.c + + src/game/armem.c + src/game/card.c + src/game/chrman.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/init.c + src/game/main.c + src/game/malloc.c + src/game/mapspace.c + src/game/memory.c + src/game/messdata.c + src/game/minigame_seq.c + src/game/objdll.c + src/game/objmain.c + src/game/objsub.c + src/game/objsysobj.c + src/game/ovllist.c + src/game/pad.c + src/game/perf.c + src/game/printfunc.c + src/game/process.c + src/game/saveload.c + src/game/ShapeExec.c + src/game/sprman.c + src/game/sprput.c + src/game/window.c + src/game/wipe.c + + src/libhu/setvf.c + src/libhu/subvf.c ) set(PORT_FILES - src/port/ar.c - src/port/arq.c - src/port/audio.c - src/port/byteswap.cpp - src/port/dvd.c - src/port/imgui.cpp - src/port/OS.c - src/port/stubs.c + src/port/ar.c + src/port/arq.c + src/port/audio.c + src/port/byteswap.cpp + src/port/dvd.c + src/port/imgui.cpp + src/port/OS.c + src/port/stubs.c ) source_group("Dolphin" FILES ${DOLPHIN_FILES}) @@ -100,37 +138,62 @@ source_group("Game" FILES ${GAME_FILES}) source_group("Port" FILES ${PORT_FILES}) if (NOT MSVC) -foreach(file ${DOLPHIN_FILES}) -set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-std=c89 -Dinline=") -endforeach() -foreach(file ${GAME_FILES}) -set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-std=c89 -Dinline=") -endforeach() + foreach (file ${DOLPHIN_FILES}) + set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-Dinline=") + endforeach () + foreach (file ${GAME_FILES}) + set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-Dinline=") + endforeach () endif () add_library(dol SHARED ${DOLPHIN_FILES} ${GAME_FILES} ${PORT_FILES}) -target_compile_definitions(dol PRIVATE TARGET_PC TARGET_DOL VERSION=${VERSION} MUSY_VERSION_MAJOR=1 MUSY_VERSION_MINOR=5 MUSY_VERSION_PATCH=4) +target_compile_definitions(dol PRIVATE TARGET_PC NON_MATCHING TARGET_DOL VERSION=${VERSION} MUSY_VERSION_MAJOR=1 MUSY_VERSION_MINOR=5 MUSY_VERSION_PATCH=4) target_include_directories(dol PRIVATE include build/GMPE01_00/include) target_link_libraries(dol PRIVATE aurora::core aurora::gx aurora::vi musyx) if (MSVC) -target_link_options(dol PRIVATE "/DEF:${CMAKE_SOURCE_DIR}/dol.def") + if (CMAKE_SIZEOF_VOID_P EQUAL 8) + enable_language(ASM_MASM) + target_sources(dol PRIVATE extern/longjmp_win64/longjmp_win64.asm) + set_source_files_properties(extern/longjmp_win64/longjmp_win64.asm PROPERTIES LANGUAGE ASM_MASM) + endif () + target_link_options(dol PRIVATE "/DEF:${CMAKE_SOURCE_DIR}/dol.def") else () -target_compile_options(dol PRIVATE "-fvisibility=default") -endif() + # target_compile_options(dol PRIVATE "-fvisibility=hidden") + # target_link_options(dol PRIVATE "LINKER:--version-script=${CMAKE_CURRENT_SOURCE_DIR}/dol.map") +endif () add_executable(marioparty4 src/port/portmain.c) -target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=${VERSION}) +target_compile_definitions(marioparty4 PRIVATE TARGET_PC NON_MATCHING VERSION=${VERSION}) target_include_directories(marioparty4 PRIVATE include) target_link_libraries(marioparty4 PRIVATE dol aurora::main) -add_library(bootDll SHARED src/REL/bootDll/main.c src/REL/bootDll/language.c) -target_compile_definitions(bootDll PRIVATE TARGET_PC VERSION=${VERSION}) -target_include_directories(bootDll PRIVATE include build/GMPE01_00/include) -if (MSVC) -set_target_properties(bootDll PROPERTIES LINK_FLAGS "/EXPORT:ObjectSetup") -else () -endif() -set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS OFF) -target_link_libraries(bootDll PRIVATE dol musyx) -add_dependencies(marioparty4 bootDll) +file(GLOB REL_DIRS RELATIVE ${CMAKE_SOURCE_DIR}/src/REL ${CMAKE_SOURCE_DIR}/src/REL/*) +set(EXCLUDED_RELS "nisDll" "safDll") + +foreach (dir ${REL_DIRS}) + if (IS_DIRECTORY ${CMAKE_SOURCE_DIR}/src/REL/${dir}) + if (dir IN_LIST EXCLUDED_RELS) + continue() + endif() + file(GLOB_RECURSE REL_FILES src/REL/${dir}/*.c) + + if (REL_FILES) + add_library(${dir} SHARED ${REL_FILES}) + if (dir MATCHES "^w..Dll") + target_sources(${dir} PRIVATE src/REL/board_executor.c) + endif() + target_compile_definitions(${dir} PRIVATE TARGET_PC NON_MATCHING VERSION=${VERSION}) + target_include_directories(${dir} PRIVATE include build/GMPE01_00/include) + if (MSVC) + set_target_properties(${dir} PROPERTIES LINK_FLAGS "/EXPORT:ObjectSetup") + elseif (NOT CMAKE_SYSTEM_NAME STREQUAL Windows) + target_compile_options(${dir} PRIVATE "-fvisibility=hidden") + target_link_options(${dir} PRIVATE "LINKER:--version-script=${CMAKE_CURRENT_SOURCE_DIR}/rel.map") + set_target_properties(${dir} PROPERTIES PREFIX "") + endif () + target_link_libraries(${dir} PRIVATE dol musyx) + add_dependencies(marioparty4 ${dir}) + endif () + endif () +endforeach () diff --git a/README.md b/README.md index 884478a1..06a57925 100644 --- a/README.md +++ b/README.md @@ -98,4 +98,4 @@ After you got the GameCube build up and running for `GMPE01_00`: ``` Linux and MacOS, and x64 support is coming later. -- Open the solution in Visual Studio and build. [Fix for UtilsVulkan.h](https://github.com/encounter/dawn-cmake/blob/f10e70a26db00bb89f88be4204cf49ffc869e194/src/dawn/native/vulkan/UtilsVulkan.h#L128-L132) +- Open the solution in Visual Studio and build. diff --git a/config/GMPE01_00/rels/mentDll/symbols.txt b/config/GMPE01_00/rels/mentDll/symbols.txt index fe98fd1f..392db46c 100644 --- a/config/GMPE01_00/rels/mentDll/symbols.txt +++ b/config/GMPE01_00/rels/mentDll/symbols.txt @@ -2,7 +2,7 @@ fn_1_0 = .text:0x00000000; // type:function size:0x4C fn_1_4C = .text:0x0000004C; // type:function size:0x58 _prolog = .text:0x000000A4; // type:function size:0x54 scope:global _epilog = .text:0x000000F8; // type:function size:0x4C scope:global -fn_1_144 = .text:0x00000144; // type:function size:0xC8 +ObjectSetup = .text:0x00000144; // type:function size:0xC8 fn_1_20C = .text:0x0000020C; // type:function size:0x28 fn_1_234 = .text:0x00000234; // type:function size:0x20 fn_1_254 = .text:0x00000254; // type:function size:0xD8 diff --git a/config/GMPE01_00/rels/mstory4Dll/symbols.txt b/config/GMPE01_00/rels/mstory4Dll/symbols.txt index 01a56bcd..bcd4f6c3 100644 --- a/config/GMPE01_00/rels/mstory4Dll/symbols.txt +++ b/config/GMPE01_00/rels/mstory4Dll/symbols.txt @@ -2,7 +2,7 @@ fn_1_0 = .text:0x00000000; // type:function size:0xEC fn_1_EC = .text:0x000000EC; // type:function size:0x115C _prolog = .text:0x00001248; // type:function size:0x54 scope:global _epilog = .text:0x0000129C; // type:function size:0x4C scope:global -fn_1_12E8 = .text:0x000012E8; // type:function size:0xB8 +ObjectSetup = .text:0x000012E8; // type:function size:0xB8 fn_1_13A0 = .text:0x000013A0; // type:function size:0x68C _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte diff --git a/config/GMPE01_00/rels/option/symbols.txt b/config/GMPE01_00/rels/option/symbols.txt index 5eb11c4d..e197b616 100644 --- a/config/GMPE01_00/rels/option/symbols.txt +++ b/config/GMPE01_00/rels/option/symbols.txt @@ -103,7 +103,7 @@ CreateNote = .text:0x00007710; // type:function size:0x190 scope:local CreateNoteSpawner = .text:0x000078A0; // type:function size:0x60 scope:local KillNoteSpawner = .text:0x00007900; // type:function size:0x3C scope:local ExecNoteSpawner = .text:0x0000793C; // type:function size:0x5C4 scope:local -PlaySound = .text:0x00007F00; // type:function size:0x148 scope:local +OptionPlaySound = .text:0x00007F00; // type:function size:0x148 scope:local FadeSound = .text:0x00008048; // type:function size:0x9C scope:local OptionRecordCreate = .text:0x000080E4; // type:function size:0x178 OptionRecordKill = .text:0x0000825C; // type:function size:0x54 diff --git a/config/GMPE01_00/rels/present/symbols.txt b/config/GMPE01_00/rels/present/symbols.txt index 332b6bce..1b80682d 100644 --- a/config/GMPE01_00/rels/present/symbols.txt +++ b/config/GMPE01_00/rels/present/symbols.txt @@ -31,7 +31,7 @@ PresentSelectedIDSet = .text:0x0000186C; // type:function size:0xBC ExecSelectRoom = .text:0x00001928; // type:function size:0x680 scope:local ChangeRoom = .text:0x00001FA8; // type:function size:0x140 scope:local ExecSelectPresent = .text:0x000020E8; // type:function size:0x5A4 scope:local -GetCursorPos = .text:0x0000268C; // type:function size:0x7C scope:local +PresentGetCursorPos = .text:0x0000268C; // type:function size:0x7C scope:local SetCameraRot = .text:0x00002708; // type:function size:0x6C scope:local RotateCamera = .text:0x00002774; // type:function size:0x17C scope:local CameraRotationDoneCheck = .text:0x000028F0; // type:function size:0x34 scope:local diff --git a/config/GMPJ01_00/rels/mentDll/symbols.txt b/config/GMPJ01_00/rels/mentDll/symbols.txt index 1be34e66..9dbd0380 100644 --- a/config/GMPJ01_00/rels/mentDll/symbols.txt +++ b/config/GMPJ01_00/rels/mentDll/symbols.txt @@ -2,7 +2,7 @@ fn_1_0 = .text:0x00000000; // type:function size:0x4C fn_1_4C = .text:0x0000004C; // type:function size:0x58 _prolog = .text:0x000000A4; // type:function size:0x54 scope:global _epilog = .text:0x000000F8; // type:function size:0x4C scope:global -fn_1_144 = .text:0x00000144; // type:function size:0xC8 +ObjectSetup = .text:0x00000144; // type:function size:0xC8 fn_1_20C = .text:0x0000020C; // type:function size:0x28 fn_1_234 = .text:0x00000234; // type:function size:0x20 fn_1_254 = .text:0x00000254; // type:function size:0xD8 diff --git a/config/GMPJ01_00/rels/mstory4Dll/symbols.txt b/config/GMPJ01_00/rels/mstory4Dll/symbols.txt index 59a31229..22f69967 100644 --- a/config/GMPJ01_00/rels/mstory4Dll/symbols.txt +++ b/config/GMPJ01_00/rels/mstory4Dll/symbols.txt @@ -2,7 +2,7 @@ fn_1_0 = .text:0x00000000; // type:function size:0xEC fn_1_EC = .text:0x000000EC; // type:function size:0x115C _prolog = .text:0x00001248; // type:function size:0x54 scope:global _epilog = .text:0x0000129C; // type:function size:0x4C scope:global -fn_1_12E8 = .text:0x000012E8; // type:function size:0xB8 +ObjectSetup = .text:0x000012E8; // type:function size:0xB8 fn_1_13A0 = .text:0x000013A0; // type:function size:0x68C _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte diff --git a/config/GMPP01_00/rels/mentDll/symbols.txt b/config/GMPP01_00/rels/mentDll/symbols.txt index a6cdecf3..9d28344b 100644 --- a/config/GMPP01_00/rels/mentDll/symbols.txt +++ b/config/GMPP01_00/rels/mentDll/symbols.txt @@ -2,7 +2,7 @@ fn_1_0 = .text:0x00000000; // type:function size:0x4C fn_1_4C = .text:0x0000004C; // type:function size:0x58 _prolog = .text:0x000000A4; // type:function size:0x54 scope:global _epilog = .text:0x000000F8; // type:function size:0x4C scope:global -fn_1_144 = .text:0x00000144; // type:function size:0xC8 +ObjectSetup = .text:0x00000144; // type:function size:0xC8 fn_1_20C = .text:0x0000020C; // type:function size:0x28 fn_1_234 = .text:0x00000234; // type:function size:0x20 fn_1_254 = .text:0x00000254; // type:function size:0xD8 diff --git a/config/GMPP01_00/rels/option/symbols.txt b/config/GMPP01_00/rels/option/symbols.txt index 16625f3c..f21ee30d 100644 --- a/config/GMPP01_00/rels/option/symbols.txt +++ b/config/GMPP01_00/rels/option/symbols.txt @@ -103,7 +103,7 @@ CreateNote = .text:0x00007710; // type:function size:0x190 scope:local CreateNoteSpawner = .text:0x000078A0; // type:function size:0x60 scope:local KillNoteSpawner = .text:0x00007900; // type:function size:0x3C scope:local ExecNoteSpawner = .text:0x0000793C; // type:function size:0x5C4 scope:local -PlaySound = .text:0x00007F00; // type:function size:0x148 scope:local +OptionPlaySound = .text:0x00007F00; // type:function size:0x148 scope:local FadeSound = .text:0x00008048; // type:function size:0x9C scope:local OptionRecordCreate = .text:0x000080E4; // type:function size:0x178 OptionRecordKill = .text:0x0000825C; // type:function size:0x54 diff --git a/config/GMPP01_00/rels/present/symbols.txt b/config/GMPP01_00/rels/present/symbols.txt index 332b6bce..1b80682d 100644 --- a/config/GMPP01_00/rels/present/symbols.txt +++ b/config/GMPP01_00/rels/present/symbols.txt @@ -31,7 +31,7 @@ PresentSelectedIDSet = .text:0x0000186C; // type:function size:0xBC ExecSelectRoom = .text:0x00001928; // type:function size:0x680 scope:local ChangeRoom = .text:0x00001FA8; // type:function size:0x140 scope:local ExecSelectPresent = .text:0x000020E8; // type:function size:0x5A4 scope:local -GetCursorPos = .text:0x0000268C; // type:function size:0x7C scope:local +PresentGetCursorPos = .text:0x0000268C; // type:function size:0x7C scope:local SetCameraRot = .text:0x00002708; // type:function size:0x6C scope:local RotateCamera = .text:0x00002774; // type:function size:0x17C scope:local CameraRotationDoneCheck = .text:0x000028F0; // type:function size:0x34 scope:local diff --git a/dol.def b/dol.def index 941749d0..19dcc9a8 100644 --- a/dol.def +++ b/dol.def @@ -1,61 +1,1089 @@ EXPORTS - game_main - byteswap_u32 - byteswap_s32 - OSReport - OSGetTick - HuAudFXPlay - HuAudSStreamAllFadeOut - HuAudSStreamPlay - HuAudSndGrpSetSet - HuMemDirectMalloc - HuMemDirectFree - HuDataSelHeapReadNum - HuDecodeData - Hu3DBGColorSet - Hu3DModelCreate - Hu3DModelAttrSet - Hu3DModelAttrReset - Hu3DCameraCreate - Hu3DCameraPerspectiveSet - Hu3DCameraViewportSet - Hu3DCameraPosSet - Hu3DModelCameraInfoSet - Hu3DModelLightInfoSet - HuPrcEnd - HuPrcCreate - HuPrcCurrentGet - HuPrcSleep - HuPrcVSleep - HuSprAnimRead - HuSprCreate - HuSprGrpCreate - HuSprGrpMemberSet - HuSprGrpKill - HuSprAttrSet - HuSprAttrReset - HuSprDrawNoSet - HuSprPosSet - HuSprScaleSet - HuSprTPLvlSet - HuWindowInit - HuWinInit - HuWinCreate - HuWinKill - HuWinHomeClear - HuWinPriSet - HuWinAttrSet - HuWinBGTPLvlSet - HuWinMesSpeedSet - HuWinMesSet - HuWinMesMaxSizeBetGet - omOvlCallEx - omOvlReturnEx - omOvlHisChg - omOvlHisGet - omInitObjMan - WipeColorSet - WipeCreate - WipeExecAlways - WipeInit - WipeStatGet + BoardArcCos + BoardArcSin + BoardAudFXPlay + BoardAudFXStop + BoardAudSeqFadeOut + BoardAudSeqFadeOutAll + BoardAudSeqFadeOutFast + BoardAudSeqPause + BoardBattleExec + BoardBooHouseCreate + BoardBooHouseExec + BoardBooHouseHostGet + BoardBooHouseHostSet + BoardBooHouseKill + BoardBooHouseTutorialExec + BoardBowserSuitInit + BoardBowserSuitKill + BoardBowserSuitModelGet + BoardBowserSuitMotionSetJump + BoardBowserSuitMotionSetWait + BoardBowserSuitMotionSetWalk + BoardBowserSuitMotionSetWin + BoardBowserSuitPlayerModelGet + BoardBowserSuitPlayerModelKill + BoardCameraCullCheck + BoardCameraDirGet + BoardCameraFovSet + BoardCameraMotionIsDone + BoardCameraMotionStart + BoardCameraMotionStartEx + BoardCameraMotionWait + BoardCameraMoveSet + BoardCameraNearFarGet + BoardCameraNearFarSet + BoardCameraOffsetSet + BoardCameraPointDirGet + BoardCameraPosCalcFuncSet + BoardCameraPosGet + BoardCameraPosSet + BoardCameraQuakeReset + BoardCameraQuakeSet + BoardCameraRotGet + BoardCameraRotSet + BoardCameraScissorSet + BoardCameraTargetGet + BoardCameraTargetModelSet + BoardCameraTargetPlayerSet + BoardCameraTargetSet + BoardCameraTargetSpaceSet + BoardCameraViewSet + BoardCameraXRotZoomSet + BoardCameraZoomGet + BoardCameraZoomSet + BoardCharWheelCheck + BoardCharWheelInit + BoardCharWheelResultGet + BoardCharWheelSpeedSet + BoardCharWheelTargetSet + BoardCharWheelWait + BoardCoinChgCreate + BoardCoinChgExist + BoardComFarPlayerFind + BoardComKeySetDown + BoardComKeySetLeft + BoardComKeySetRight + BoardComKeySetUp + BoardComPreferItemCheck + BoardComPreferItemGet + BoardConfettiCreate + BoardConfettiKill + BoardConfettiStop + BoardDAngleCalc + BoardDAngleCalcRange + BoardDAngleCalcVec + BoardDiceDoneCheck + BoardDicePauseAll + BoardDiceStop + BoardDiceValueSet + BoardEventFlagGet + BoardEventFlagReset + BoardEventFlagSet + BoardFilterFadeCheck + BoardFilterFadeInit + BoardFilterFadeOut + BoardFilterFadePauseCheck + BoardIsKill + BoardItemGetDestPos + BoardItemModelGet + BoardItemPrevGet + BoardItemPrevSet + BoardItemStart + BoardItemStatusKill + BoardItemUseExec + BoardJunctionMaskReset + BoardJunctionMaskSet + BoardJunctionMaskZero + BoardKill + BoardLandBlueExec + BoardLandRedExec + BoardLightHookSet + BoardLightResetExec + BoardLightSetExec + BoardLotteryExec + BoardLotteryHostGet + BoardLotteryHostSet + BoardLotteryInit + BoardLotteryKill + BoardLotteryTutorialExec + BoardMGCreate + BoardMGDoneFlagGet + BoardMGDoneFlagSet + BoardMGExit + BoardMGSetupExec + BoardMGSetupTutorialExec + BoardMTXCalcLookAt + BoardModelAlphaSet + BoardModelAmbSet + BoardModelAmbSetAll + BoardModelAttrReset + BoardModelAttrSet + BoardModelCameraSet + BoardModelCameraSetAll + BoardModelCreate + BoardModelCreateCharacter + BoardModelCreateParam + BoardModelDummyUpdate + BoardModelExistCheck + BoardModelExistDupe + BoardModelHideSetAll + BoardModelHookObjReset + BoardModelHookReset + BoardModelHookSet + BoardModelIDGet + BoardModelInit + BoardModelKill + BoardModelKillAll + BoardModelLayerSet + BoardModelLayerSetAll + BoardModelMotionCreate + BoardModelMotionEndCheck + BoardModelMotionKill + BoardModelMotionMaxTimeGet + BoardModelMotionShapeEndCheck + BoardModelMotionShapeMaxTimeGet + BoardModelMotionShapeSet + BoardModelMotionShapeSpeedGet + BoardModelMotionShapeSpeedSet + BoardModelMotionShapeStartEndSet + BoardModelMotionShapeTimeGet + BoardModelMotionShiftSet + BoardModelMotionSpeedGet + BoardModelMotionSpeedSet + BoardModelMotionStart + BoardModelMotionStartEndSet + BoardModelMotionTimeGet + BoardModelMotionTimeSet + BoardModelMotionUpdateSet + BoardModelMtxGet + BoardModelMtxSet + BoardModelPassSet + BoardModelPosGet + BoardModelPosSet + BoardModelPosSetV + BoardModelRotGet + BoardModelRotSet + BoardModelRotSetV + BoardModelRotYGet + BoardModelRotYSet + BoardModelScaleGet + BoardModelScaleSet + BoardModelScaleSetV + BoardModelVisibilityGet + BoardModelVisibilitySet + BoardModelVisibilityUpdate + BoardModelVoiceEnableSet + BoardMusLoudSet + BoardMusStart + BoardMusStartBoard + BoardMusStatusGet + BoardMusVolPanSet + BoardMushroomExec + BoardNextOvlSet + BoardObjectSetup + BoardPartyConfigSet + BoardPauseActiveCheck + BoardPickerBackFlagSet + BoardPickerChoiceGet + BoardPickerCreate + BoardPickerDoneCheck + BoardPickerPosGet + BoardPlayerAmbSet + BoardPlayerAutoSizeGet + BoardPlayerAutoSizeSet + BoardPlayerBtnDownWait + BoardPlayerCameraSet + BoardPlayerCoinsAdd + BoardPlayerCoinsGet + BoardPlayerCoinsSet + BoardPlayerCopyEyeMat + BoardPlayerCornerPosGet + BoardPlayerCornerPosSet + BoardPlayerCurrMotionGet + BoardPlayerDiceJumpCheck + BoardPlayerDiceJumpStart + BoardPlayerExistCheck + BoardPlayerGetCharMess + BoardPlayerGetCharName + BoardPlayerIdleSet + BoardPlayerInit + BoardPlayerItemAdd + BoardPlayerItemCount + BoardPlayerItemFind + BoardPlayerItemRemove + BoardPlayerLayerSet + BoardPlayerModelAttrReset + BoardPlayerModelAttrSet + BoardPlayerModelInit + BoardPlayerModelKill + BoardPlayerMotBlendCheck + BoardPlayerMotBlendSet + BoardPlayerMotionCreate + BoardPlayerMotionEndCheck + BoardPlayerMotionEndWait + BoardPlayerMotionKill + BoardPlayerMotionMaxTimeGet + BoardPlayerMotionShiftSet + BoardPlayerMotionSpeedSet + BoardPlayerMotionStart + BoardPlayerMotionStartEndSet + BoardPlayerMotionTimeGet + BoardPlayerMotionTimeSet + BoardPlayerMoveAwayIsDone + BoardPlayerMoveAwayStart + BoardPlayerMoveAwayStartCurr + BoardPlayerMoveBetween + BoardPlayerMoveToAsync + BoardPlayerMtxSet + BoardPlayerPosGet + BoardPlayerPosLerpStart + BoardPlayerPosSet + BoardPlayerPosSetV + BoardPlayerPostTurnHookSet + BoardPlayerPreTurnHookSet + BoardPlayerRankCalc + BoardPlayerResizeAnimExec + BoardPlayerRotGet + BoardPlayerRotSet + BoardPlayerRotSetV + BoardPlayerRotYGet + BoardPlayerRotYSet + BoardPlayerSameTeamFind + BoardPlayerScaleGet + BoardPlayerScaleSet + BoardPlayerScaleSetV + BoardPlayerSizeGet + BoardPlayerSizeSet + BoardPlayerStarsAdd + BoardPlayerVoiceEnableSet + BoardRand + BoardRandFloat + BoardRandMod + BoardRollCreate + BoardRollDispSet + BoardRollExec + BoardRollKill + BoardRollTutorialSet + BoardRollUpdateSet + BoardSaveInit + BoardShopExec + BoardShopHostGet + BoardShopHostSet + BoardShopInit + BoardShopKill + BoardShopTutorialExec + BoardSpaceAttrReset + BoardSpaceAttrSet + BoardSpaceBlockExec + BoardSpaceCameraSet + BoardSpaceCornerPosGet + BoardSpaceCountGet + BoardSpaceDestroy + BoardSpaceFlagGet + BoardSpaceFlagPosGet + BoardSpaceFlagSearch + BoardSpaceGet + BoardSpaceHide + BoardSpaceInit + BoardSpaceLandEventFuncSet + BoardSpaceLandExec + BoardSpaceLinkFlagSearch + BoardSpaceLinkTargetListGet + BoardSpaceLinkTransformGet + BoardSpaceLinkTypeListGet + BoardSpaceLinkTypeSearch + BoardSpacePosGet + BoardSpaceRead + BoardSpaceRotGet + BoardSpaceStarCheck + BoardSpaceStarGet + BoardSpaceStarGetCurr + BoardSpaceStarGetRandom + BoardSpaceStarMove + BoardSpaceStarSetIndex + BoardSpaceTypeGet + BoardSpaceTypeSet + BoardSpaceWalkEventExec + BoardSpaceWalkEventFuncSet + BoardSpaceWalkExec + BoardSpaceWalkMiniEventExec + BoardSpaceWalkMiniEventFuncSet + BoardSpriteCreate + BoardStarExec + BoardStarGive + BoardStarHostMdlGet + BoardStarHostSet + BoardStatusCreate + BoardStatusGraySet + BoardStatusHammerCreate + BoardStatusHammerKill + BoardStatusHammerShowSet + BoardStatusItemHideSet + BoardStatusItemSet + BoardStatusKill + BoardStatusPosGet + BoardStatusPosSet + BoardStatusShowSet + BoardStatusShowSetAll + BoardStatusShowSetForce + BoardStatusStopCheck + BoardStatusTargetPosSet + BoardStatusVisibleGet + BoardStoryConfigSet + BoardTutorialBlockSetPos + BoardTutorialDirInputSet + BoardTutorialHookSet + BoardTutorialHostSet + BoardTutorialItemSet + BoardVecDistXZCalc + BoardVecMaxDistXZCheck + BoardVecMinDistCheck + BoardViewFocusGetPos + BoardViewFocusSet + BoardViewMoveCheck + BoardViewMapExec + BoardViewMoveEnd + BoardViewMoveStart + BoardWarpExec + BoardWinAttrReset + BoardWinAttrSet + BoardWinChoiceDisable + BoardWinChoiceGet + BoardWinChoiceNowGet + BoardWinChoiceNowGet2 + BoardWinCreate + BoardWinCreateChoice + BoardWinInit + BoardWinInsertMesSet + BoardWinKeyWait + BoardWinKill + BoardWinKillAll + BoardWinPause + BoardWinPlayerSet + BoardWinPriSet + BoardWinSpeedGet + BoardWinSpeedSet + BoardWinUnusedArraySet + BoardWinWait + BoardYourTurnExec + C_MTXConcat + C_MTXCopy + C_MTXIdentity + C_MTXInvXpose + C_MTXInverse + C_MTXLightPerspective + C_MTXLookAt + C_MTXMultVec + C_MTXMultVecArray + C_MTXMultVecSR + C_MTXOrtho + C_MTXPerspective + C_MTXQuat + C_MTXROMultVecArray + C_MTXReorder + C_MTXRotAxisRad + C_MTXRotRad + C_MTXScale + C_MTXTrans + C_MTXTranspose + C_VECAdd + C_VECCrossProduct + C_VECDistance + C_VECDotProduct + C_VECHalfAngle + C_VECMag + C_VECNormalize + C_VECScale + C_VECSubtract + C_VECSquareDistance + C_VECSquareMag + C_QUATMultiply + C_QUATNormalize + C_QUATInverse + C_QUATRotAxisRad + C_QUATSlerp + CamMotionEx + CamMotionEx2 + CharAMemPtrGet + CharARAMOpen + CharKill + CharKillAll + CharManInit + CharModelCoinEffectCreate + CharModelCreate + CharModelDataClose + CharModelEffectCreate + CharModelEffectEnableSet + CharModelEffectNpcInit + CharModelEffectNpcInitSilent + CharModelHookNameGet + CharModelItemHookCreate + CharModelKill + CharModelLayerSetAll + CharModelLayerSetAll2 + CharModelMotionCreate + CharModelMotionDataClose + CharModelMotionEndCheck + CharModelMotionIndexSet + CharModelMotionKill + CharModelMotionMaxTimeGet + CharModelMotionSet + CharModelMotionShiftIDGet + CharModelMotionShiftSet + CharModelMotionShiftTimeGet + CharModelMotionSpeedSet + CharModelMotionTimeGet + CharModelMotionTimeSet + CharModelStepTypeSet + CharModelTexNameGet + CharModelVoiceEnableSet + DCFlushRange + DCFlushRangeNoSync + DCInvalidateRange + DCStoreRange + DCStoreRangeNoSync + EnvelopeProc + GWBoardMaxCoinsGet + GWBoardMaxCoinsSet + GWBoardMaxStarsGet + GWBoardMaxStarsSet + GWBoardPlayCountAdd + GWBoardPlayCountGet + GWBoardWinCountGet + GWBoardWinCountInc + GWCharColorGet + GWCoinsAdd + GWCoinsSet + GWGameStatReset + GWMGAvailGet + GWMGAvailSet + GWMGCustomGet + GWMGCustomSet + GWMGCustomReset + GWMGRecordGet + GWMGRecordSet + GWMessDelayGet + GWStarsGet + GWStarsSet + GWTotalStarsAdd + GXBegin + GXBeginDisplayList + GXCallDisplayList + GXClearVtxDesc + GXColor1x16 + GXColor1x8 + GXColor3u8 + GXColor4u8 + GXCopyTex + GXDestroyTexObj + GXDestroyTlutObj + GXDrawDone + GXEnd + GXEndDisplayList + GXGetProjectionv + GXGetTexBufferSize + GXGetViewportv + GXInitLightAttn + GXInitLightAttnK + GXInitLightColor + GXInitLightDir + GXInitLightDistAttn + GXInitLightPos + GXInitLightSpot + GXInitSpecularDir + GXInitTexObj + GXInitTexObjCI + GXInitTexObjLOD + GXInitTlutObj + GXLoadLightObjImm + GXLoadNrmMtxImm + GXLoadPosMtxImm + GXLoadTexMtxImm + GXLoadTexObj + GXLoadTlut + GXNormal1x16 + GXNormal3f32 + GXPixModeSync + GXPosition1x16 + GXPosition1x8 + GXPosition2f32 + GXPosition2s16 + GXPosition2u16 + GXPosition3f32 + GXPosition3u8 + GXProject + GXSetAlphaCompare + GXSetArray + GXSetBlendMode + GXSetChanAmbColor + GXSetChanCtrl + GXSetChanMatColor + GXSetAlphaUpdate + GXSetColorUpdate + GXSetCopyClear + GXSetCullMode + GXSetCurrentMtx + GXSetFog + GXSetIndTexCoordScale + GXSetIndTexMtx + GXSetIndTexOrder + GXSetLineWidth + GXSetNumChans + GXSetNumIndStages + GXSetNumTevStages + GXSetNumTexGens + GXSetProjection + GXSetScissor + GXSetTevAlphaIn + GXSetTevAlphaOp + GXSetTevColor + GXSetTevColorIn + GXSetTevColorOp + GXSetTevDirect + GXSetTevIndWarp + GXSetTevOp + GXSetTevOrder + GXSetTexCoordGen2 + GXSetTexCopyDst + GXSetTexCopySrc + GXSetViewport + GXSetVtxAttrFmt + GXSetVtxDesc + GXSetZCompLoc + GXSetZMode + GXSetZTexture + GXTexCoord1x16 + GXTexCoord2f32 + GXUnknownu16 + HmfInverseMtxF3X3 + Hu3D2Dto3D + Hu3D3Dto2D + Hu3DAllKill + Hu3DAnimAllKill + Hu3DAnimAttrReset + Hu3DAnimAttrSet + Hu3DAnimBankSet + Hu3DAnimCreate + Hu3DAnimExec + Hu3DAnimInit + Hu3DAnimKill + Hu3DAnimLink + Hu3DAnimSet + Hu3DAnimSpeedSet + Hu3DAnmNoSet + Hu3DBGColorSet + Hu3DCameraAllKill + Hu3DCameraCreate + Hu3DCameraKill + Hu3DCameraMotionOff + Hu3DCameraMotionOn + Hu3DCameraMotionStart + Hu3DCameraPerspectiveSet + Hu3DCameraPosSet + Hu3DCameraPosSetV + Hu3DCameraScissorSet + Hu3DCameraSet + Hu3DCameraViewportSet + Hu3DFogClear + Hu3DFogSet + Hu3DGLightColorSet + Hu3DGLightCreate + Hu3DGLightCreateV + Hu3DGLightInfinitytSet + Hu3DGLightKill + Hu3DGLightPointSet + Hu3DGLightPosAimSet + Hu3DGLightPosAimSetV + Hu3DGLightPosSet + Hu3DGLightPosSetV + Hu3DGLightSpotSet + Hu3DGLightStaticSet + Hu3DHookFuncCreate + Hu3DJointMotion + Hu3DLLightColorSet + Hu3DLLightCreate + Hu3DLLightCreateV + Hu3DLLightInfinitytSet + Hu3DLLightKill + Hu3DLLightPointSet + Hu3DLLightPosAimSet + Hu3DLLightPosAimSetV + Hu3DLLightPosSet + Hu3DLLightPosSetV + Hu3DLLightSpotSet + Hu3DLLightStaticSet + Hu3DLayerHookSet + Hu3DLighInit + Hu3DLightAllKill + Hu3DLightSet + Hu3DMipMapSet + Hu3DModelAllKill + Hu3DModelAmbSet + Hu3DModelAttrGet + Hu3DModelAttrReset + Hu3DModelAttrSet + Hu3DModelCameraCreate + Hu3DModelCameraInfoSet + Hu3DModelCameraSet + Hu3DModelClusterAttrReset + Hu3DModelClusterAttrSet + Hu3DModelCreate + Hu3DModelHiliteMapSet + Hu3DModelHiliteTypeSet + Hu3DModelHookObjReset + Hu3DModelHookReset + Hu3DModelHookSet + Hu3DModelKill + Hu3DModelLayerSet + Hu3DModelLightInfoSet + Hu3DModelLink + Hu3DModelMotionAttrGet + Hu3DModelObjDraw + Hu3DModelObjDrawInit + Hu3DModelObjMtxGet + Hu3DModelObjPosGet + Hu3DModelObjPtrGet + Hu3DModelPosSet + Hu3DModelPosSetV + Hu3DModelProjectionReset + Hu3DModelProjectionSet + Hu3DModelReflectTypeSet + Hu3DModelRotSet + Hu3DModelRotSetV + Hu3DModelScaleSet + Hu3DModelScaleSetV + Hu3DModelShadowDispOff + Hu3DModelShadowDispOn + Hu3DModelShadowMapObjSet + Hu3DModelShadowMapSet + Hu3DModelShadowReset + Hu3DModelShadowSet + Hu3DModelTPLvlSet + Hu3DMotionAllKill + Hu3DMotionCalc + Hu3DMotionClusterNoSet + Hu3DMotionClusterReset + Hu3DMotionClusterSet + Hu3DMotionCreate + Hu3DMotionEndCheck + Hu3DMotionExec + Hu3DMotionForceSet + Hu3DMotionIDGet + Hu3DMotionInit + Hu3DMotionKill + Hu3DMotionMaxTimeGet + Hu3DMotionModelCreate + Hu3DMotionMotionMaxTimeGet + Hu3DMotionNext + Hu3DMotionNoMotReset + Hu3DMotionNoMotSet + Hu3DMotionOverlayReset + Hu3DMotionOverlaySet + Hu3DMotionOverlaySpeedSet + Hu3DMotionOverlayTimeGet + Hu3DMotionOverlayTimeSet + Hu3DMotionSet + Hu3DMotionShapeIDGet + Hu3DMotionShapeMaxTimeGet + Hu3DMotionShapeReset + Hu3DMotionShapeSet + Hu3DMotionShapeSpeedSet + Hu3DMotionShapeStartEndSet + Hu3DMotionShapeTimeSet + Hu3DMotionShiftIDGet + Hu3DMotionShiftMaxTimeGet + Hu3DMotionShiftSet + Hu3DMotionShiftSpeedSet + Hu3DMotionShiftStartEndSet + Hu3DMotionShiftTimeGet + Hu3DMotionSpeedSet + Hu3DMotionStartEndSet + Hu3DMotionTimeGet + Hu3DMotionTimeSet + Hu3DMtxRotGet + Hu3DMtxScaleGet + Hu3DMtxTransGet + Hu3DNoSyncSet + Hu3DParManAllKill + Hu3DParManAttrReset + Hu3DParManAttrSet + Hu3DParManColorSet + Hu3DParManCreate + Hu3DParManInit + Hu3DParManKill + Hu3DParManLink + Hu3DParManModelIDGet + Hu3DParManPosSet + Hu3DParManPtrGet + Hu3DParManRotSet + Hu3DParManTimeLimitSet + Hu3DParManVacumeSet + Hu3DParManVecSet + Hu3DParticleAnimModeSet + Hu3DParticleAttrReset + Hu3DParticleAttrSet + Hu3DParticleBlendModeSet + Hu3DParticleCntSet + Hu3DParticleColSet + Hu3DParticleCreate + Hu3DParticleHookSet + Hu3DParticleScaleSet + Hu3DParticleTPLvlSet + Hu3DParticleZRotSet + Hu3DPauseSet + Hu3DProjectionCreate + Hu3DProjectionKill + Hu3DProjectionPosSet + Hu3DProjectionTPLvlSet + Hu3DReflectMapSet + Hu3DReflectNoSet + Hu3DShadowCreate + Hu3DShadowPosSet + Hu3DShadowSizeSet + Hu3DShadowTPLvlSet + Hu3DSubMotionExec + Hu3DTexScrollAllKill + Hu3DTexScrollCreate + Hu3DTexScrollKill + Hu3DTexScrollPauseDisableSet + Hu3DTexScrollPosMoveSet + Hu3DTexScrollPosSet + Hu3DTexScrollRotMoveSet + Hu3DTexScrollRotSet + HuAMemDump + HuAR_ARAMtoMRAMFileRead + HuAR_DVDtoARAM + HuAR_MRAMtoARAM + HuARDMACheck + HuAudAUXVolSet + HuAudAllStop + HuAudCharVoicePlay + HuAudCharVoicePlayPos + HuAudFXAllStop + HuAudFXEmiterPlay + HuAudFXEmiterUpDate + HuAudFXFadeOut + HuAudFXListnerKill + HuAudFXListnerSetEX + HuAudFXListnerUpdate + HuAudFXPanning + HuAudFXPauseAll + HuAudFXPitchSet + HuAudFXPlay + HuAudFXPlayVol + HuAudFXPlayVolPan + HuAudFXStatusGet + HuAudFXStop + HuAudFXVolSet + HuAudFadeOut + HuAudPlayerVoicePlay + HuAudSStreamAllFadeOut + HuAudSStreamAllStop + HuAudSStreamFadeOut + HuAudSStreamPlay + HuAudSStreamStatGet + HuAudSeqAllFadeOut + HuAudSeqMidiCtrlGet + HuAudSeqFadeOut + HuAudSeqPause + HuAudSeqPauseAll + HuAudSeqPlay + HuAudSndCommonGrpSet + HuAudSndGrpSet + HuAudSndGrpSetSet + HuAudStreamFadeOut + HuAudStreamPlay + HuAudVoiceInit + HuCardCheck + HuCardClose + HuCardCreate + HuCardDelete + HuCardFormat + HuCardFreeSpaceGet + HuCardMount + HuCardOpen + HuCardRead + HuCardSectorSizeGet + HuCardSlotCheck + HuCardUnMount + HuCardWrite + HuDataClose + HuDataCloseMulti + HuDataDirClose + HuDataDirCloseNum + HuDataDirRead + HuDataDirReadAsync + HuDataDirReadNumAsync + HuDataGetAsyncStat + HuDataGetSize + HuDataInit + HuDataRead + HuDataReadChk + HuDataReadMulti + HuDataReadNum + HuDataReadNumHeapShortForce + HuDataSelHeapRead + HuDataSelHeapReadNum + HuDecodeData + HuMemDirectFree + HuMemDirectFreeNum + HuMemDirectMalloc + HuMemDirectMallocNum + HuMemHeapDump + HuMemHeapPtrGet + HuMemHeapSizeGet + HuMemUsedMallocSizeGet + HuPadInit + HuPadRead + HuPadRumbleAllStop + HuPadRumbleGet + HuPadRumbleSet + HuPadRumbleStop + HuPadStatGet + HuPrcAllPause + HuPrcCall + HuPrcChildCreate + HuPrcChildKill + HuPrcChildLink + HuPrcChildUnlink + HuPrcCreate + HuPrcCurrentGet + HuPrcDestructorSet + HuPrcDestructorSet2 + HuPrcEnd + HuPrcInit + HuPrcKill + HuPrcMemAlloc + HuPrcMemFree + HuPrcResetStat + HuPrcSetStat + HuPrcSleep + HuPrcVSleep + HuPrcWakeup + HuSetVecF + HuSprAnimKill + HuSprAnimLock + HuSprAnimMake + HuSprAnimRead + HuSprAttrReset + HuSprAttrSet + HuSprBankSet + HuSprClose + HuSprColorSet + HuSprCreate + HuSprData + HuSprDrawNoSet + HuSprGrpCreate + HuSprGrpData + HuSprGrpDrawNoSet + HuSprGrpKill + HuSprGrpMemberKill + HuSprGrpMemberSet + HuSprGrpPosSet + HuSprGrpScaleSet + HuSprGrpScissorSet + HuSprGrpTPLvlSet + HuSprInit + HuSprPosSet + HuSprPriSet + HuSprScaleSet + HuSprSpeedSet + HuSprTPLvlSet + HuSprTexLoad + HuSubVecF + HuSysVWaitSet + HuTHP3DCreate + HuTHP3DCreateVol + HuTHPClose + HuTHPEndCheck + HuTHPFrameGet + HuTHPRestart + HuTHPSetVolume + HuTHPSprCreate + HuTHPSprCreateVol + HuTHPStop + HuTHPTotalFrameGet + HuWinAllKill + HuWinAnimSet + HuWinAttrReset + HuWinAttrSet + HuWinBGColSet + HuWinBGTPLvlSet + HuWinCenterPosSet + HuWinChoiceDisable + HuWinChoiceGet + HuWinChoiceNowGet + HuWinChoiceNumGet + HuWinComKeyReset + HuWinComKeySet + HuWinComKeyWait + HuWinCreate + HuWinDisablePlayerReset + HuWinDisablePlayerSet + HuWinDispOff + HuWinDispOn + HuWinDrawNoSet + HuWinExAnimIn + HuWinExAnimOut + HuWinExAnimPopIn + HuWinExCleanup + HuWinExCreate + HuWinExCreateStyled + HuWinHomeClear + HuWinInit + HuWinInsertMesSet + HuWinInsertMesSizeGet + HuWinKeyWaitEntry + HuWinKeyWaitNumGet + HuWinKill + HuWinMesColSet + HuWinMesMaxSizeBetGet + HuWinMesMaxSizeGet + HuWinMesPalSet + HuWinMesRead + HuWinMesSet + HuWinMesSizeCancelCRSet + HuWinMesSpeedSet + HuWinMesWait + HuWinPosSet + HuWinPriSet + HuWinPushKeySet + HuWinScaleSet + HuWinScissorSet + HuWinSprIDGet + HuWinSprKill + HuWinSprPosSet + HuWinSprPriSet + HuWinSprSet + HuWinStatGet + HuWinZRotSet + HuWindowInit + MakeDisplayList + MGSeqCreate + MGSeqDoneCheck + MGSeqInit + MGSeqKill + MGSeqKillAll + MGSeqParamSet + MGSeqPosSet + MGSeqSprKill + MGSeqStatGet + MakeObjectName + MapPos + MapWall + MessData_MesPtrGet + OSGetTick + OSGetTime + OSPanic + OSReport + OSTicksToCalendarTime + OSSetSoundMode + PPCSync + SetDefLight + SLCheckSumCheck + SLCheckSumSet + SLCommonSet + SLCurBoxNoSet + SLCurSlotNoSet + SLFileClose + SLFileCreate + SLFileOpen + SLFileRead + SLFileWrite + SLLoad + SLLoadBoard + SLLoadBoardStory + SLLoadGameStat + SLSave + SLSaveBoard + SLSaveBoardStory + SLSaveDataMake + SLSaveFlagGet + SLSaveFlagSet + SLSerialNoCheck + SLSerialNoGet + SLStatSet + WipeColorSet + WipeCreate + WipeExecAlways + WipeInit + WipeStatGet + _CheckFlag + _ClearFlag + _SetFlag + byteswap_s32 + byteswap_u32 + espAttrReset + espAttrSet + espBankSet + espColorSet + espDispOff + espDispOn + espDrawNoSet + espEntry + espGrpIDGet + espInit + espKill + espPosSet + espPriSet + espScaleSet + espSpeedSet + espTPLvlSet + espZRotSet + fn_80062A40 + fn_8006DC1C + fn_8006DDE8 + frand + frandf + frandmod + game_main + msmMusGetStatus + msmMusPlay + msmMusSetMasterVolume + msmSeSetListener + msmSeSetParam + msmSeStopAll + msmSysGetOutputMode + msmSysSetOutputMode + mtxRot + mtxRotCat + mtxScaleCat + mtxTransCat + ObjConstantMake + omAddObjEx + omDelObjEx + omDLLDBGOut + omGameSysInit + omGetGroupMemberListEx + omInitObjMan + omMakeGroupEx + omMgIndexGet + omOutView + omOutViewMulti + omOvlCallEx + omOvlGotoEx + omOvlHisChg + omOvlHisGet + omOvlReturnEx + omPauseChk + omSetRot + omSetSca + omSetStatBit + omSetTra + omSysPauseEnable + omVibrate + print8 + printWin + rand8 + GXInvalidateTexAll + Hu3DDrawPreInit + Hu3DDraw + Hu3DDrawPost + HuSprExec + HuSprExecLayerSet + HuSprDispInit + ClusterProc + ClusterMotionExec + InitVtxParm + ShapeProc \ No newline at end of file diff --git a/extern/aurora b/extern/aurora index 3b56e337..a18cdf3b 160000 --- a/extern/aurora +++ b/extern/aurora @@ -1 +1 @@ -Subproject commit 3b56e337c08a1dd4946c226298011364c319c7a2 +Subproject commit a18cdf3b599b482c850096994cef09ba3920851b diff --git a/extern/longjmp_win64 b/extern/longjmp_win64 new file mode 160000 index 00000000..d04c5b7b --- /dev/null +++ b/extern/longjmp_win64 @@ -0,0 +1 @@ +Subproject commit d04c5b7b486dbd2b80610fe2a5880e833933807f diff --git a/extern/musyx b/extern/musyx index a579f4d4..37e8ecd4 160000 --- a/extern/musyx +++ b/extern/musyx @@ -1 +1 @@ -Subproject commit a579f4d4abbac1c67fddf0d361291320f81a7b6c +Subproject commit 37e8ecd4e6503e90b97ea81cd7d669357861d501 diff --git a/include/REL/m415Dll.h b/include/REL/m415Dll.h index 0be73a76..c54ce288 100644 --- a/include/REL/m415Dll.h +++ b/include/REL/m415Dll.h @@ -3,7 +3,7 @@ #include "game/hsfman.h" #include "game/object.h" -extern u8 texMtxTbl[]; +SHARED_SYM extern u8 texMtxTbl[]; #define FABS(x) ((x < 0.0f) ? -(x) : (x)) diff --git a/include/REL/m440Dll.h b/include/REL/m440Dll.h index d7d2c5b8..85c35f28 100644 --- a/include/REL/m440Dll.h +++ b/include/REL/m440Dll.h @@ -109,7 +109,7 @@ typedef struct _unkStruct6 { m440Func6 unk38; s16 unk3C; s16 unk3E; -} unkStruct6; // sizeof 0x40 +} unkStruct6; // sizeof 0x40 // TODO same as unkStruct14? typedef struct _unkStruct7 { GXColor unk0; @@ -178,7 +178,8 @@ typedef struct _unkStruct13 { typedef struct _unkStruct14 { s16 unk0; s16 unk2; - char unk4[0x8]; + char unk4[4]; + s32 unk8; void *unkC; char unk10[0x4]; void *unk14; diff --git a/include/REL/modeltestDll.h b/include/REL/modeltestDll.h index d4afecc4..b8134fca 100644 --- a/include/REL/modeltestDll.h +++ b/include/REL/modeltestDll.h @@ -29,9 +29,6 @@ typedef struct { HsfObject *obj; // 0030 } HuObjUnk; -extern Vec CRot; -extern Vec Center; -extern float CZoom; void fn_1_29C(); void fn_1_28F8(Vec *arg0, Vec *arg1); void fn_1_37DC(omObjData *); diff --git a/include/REL/modeseldll.h b/include/REL/modeseldll.h index 4100ea20..8e2f16e5 100644 --- a/include/REL/modeseldll.h +++ b/include/REL/modeseldll.h @@ -27,7 +27,9 @@ typedef struct datalist_sprite { GXColor color; } DataListSprite; -// void fn_1_1EC0(s16 view); +#ifndef __MWERKS__ +void fn_1_1EC0(s16 view); +#endif s32 fn_1_2490(void); s32 fn_1_37DC(void); diff --git a/include/REL/w10Dll.h b/include/REL/w10Dll.h index a1446748..85b3b162 100644 --- a/include/REL/w10Dll.h +++ b/include/REL/w10Dll.h @@ -26,7 +26,7 @@ typedef struct tutorial_scene { TutorialSceneFunc func; } TutorialScene; -extern s32 boardTutorialData[4]; +SHARED_SYM extern s32 boardTutorialData[4]; void HostPosSet(s16); void fn_1_1FB0(void); diff --git a/include/dolphin/arq.h b/include/dolphin/arq.h index 5b7a194c..dde57c18 100644 --- a/include/dolphin/arq.h +++ b/include/dolphin/arq.h @@ -20,7 +20,7 @@ extern "C" { #define ARQ_PRIORITY_LOW 0 #define ARQ_PRIORITY_HIGH 1 -typedef void (*ARQCallback)(u32 pointerToARQRequest); +typedef void (*ARQCallback)(uintptr_t pointerToARQRequest); typedef struct ARQRequest { @@ -37,7 +37,7 @@ typedef struct ARQRequest { void ARQInit(void); void ARQReset(void); -void ARQPostRequest(ARQRequest* task, u32 owner, u32 type, u32 priority, u32 source, u32 dest, +void ARQPostRequest(ARQRequest* task, u32 owner, u32 type, u32 priority, uintptr_t source, uintptr_t dest, u32 length, ARQCallback callback); void ARQRemoveRequest(ARQRequest* task); void ARQRemoveOwnerRequest(u32 owner); diff --git a/include/dolphin/gx/GXBump.h b/include/dolphin/gx/GXBump.h index cc2cb976..2cd4f981 100644 --- a/include/dolphin/gx/GXBump.h +++ b/include/dolphin/gx/GXBump.h @@ -20,9 +20,10 @@ void GXSetTevIndirect(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXIndTe GXIndTexWrap wrap_t, GXBool add_prev, GXBool ind_lod, GXIndTexAlphaSel alpha_sel); //Must be implicit to match m455dll -//void GXSetTevIndWarp(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXBool signed_offsets, -// GXBool replace_mode, GXIndTexMtxID matrix_sel); - +#ifndef __MWERKS__ +void GXSetTevIndWarp(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXBool signed_offsets, + GXBool replace_mode, GXIndTexMtxID matrix_sel); +#endif void GXSetTevIndTile (GXTevStageID tev_stage, GXIndTexStageID ind_stage, u16 tilesize_s, u16 tilesize_t, u16 tilespacing_s, u16 tilespacing_t, diff --git a/include/dolphin/mtx.h b/include/dolphin/mtx.h index 2dd4c4d3..84505659 100644 --- a/include/dolphin/mtx.h +++ b/include/dolphin/mtx.h @@ -39,6 +39,7 @@ typedef struct { #define MTXRadToDeg(a) ((a)*57.29577951f) #define MTXRowCol(m, r, c) ((m)[(r)][(c)]) + void C_MTXIdentity(Mtx m); void C_MTXCopy(const Mtx src, Mtx dst); void C_MTXConcat(const Mtx a, const Mtx b, Mtx ab); @@ -46,6 +47,8 @@ void C_MTXConcatArray(const Mtx a, const Mtx* srcBase, Mtx* dstBase, u32 count); void C_MTXTranspose(const Mtx src, Mtx xPose); u32 C_MTXInverse(const Mtx src, Mtx inv); u32 C_MTXInvXpose(const Mtx src, Mtx invX); +void C_MTXReorder(const Mtx src, ROMtx dest); +void C_MTXROMultVecArray(const ROMtx m, const Vec *srcBase, Vec *dstBase, u32 count); #ifdef GEKKO void PSMTXIdentity(Mtx m); diff --git a/include/dolphin/pad.h b/include/dolphin/pad.h index 0d525004..e52a6e9f 100644 --- a/include/dolphin/pad.h +++ b/include/dolphin/pad.h @@ -84,8 +84,8 @@ PADSamplingCallback PADSetSamplingCallback(PADSamplingCallback); #ifdef TARGET_PC /* New API to facilitate controller interactions */ typedef struct PADDeadZones { - bool emulateTriggers; - bool useDeadzones; + BOOL emulateTriggers; + BOOL useDeadzones; u16 stickDeadZone; u16 substickDeadZone; u16 leftTriggerActivationZone; @@ -118,7 +118,7 @@ const char* PADGetNativeButtonName(u32 button); /* Returns any pressed native button */ s32 PADGetNativeButtonPressed(u32 port); void PADRestoreDefaultMapping(u32 port); -void PADBlockInput(bool block); +void PADBlockInput(BOOL block); #endif #ifdef __cplusplus diff --git a/include/ext_math.h b/include/ext_math.h index 6ac8e0e6..d13a036e 100644 --- a/include/ext_math.h +++ b/include/ext_math.h @@ -4,7 +4,9 @@ #include "math.h" #include "dolphin/mtx.h" +#ifndef M_PI #define M_PI 3.141592653589793 +#endif typedef struct vec2f { float x; @@ -36,6 +38,7 @@ typedef struct vec2f { #ifndef __MWERKS__ void HuSetVecF(Vec *arg0, f32 arg8, f32 arg9, f32 argA); +void HuSubVecF(Vec* out, Vec* in, Vec* sub); #endif #endif diff --git a/include/game/audio.h b/include/game/audio.h index 3846ea73..0389b530 100644 --- a/include/game/audio.h +++ b/include/game/audio.h @@ -2,6 +2,7 @@ #define _GAME_AUDIO_H #include "dolphin.h" +#include "version.h" typedef struct sndGrpTbl_s { s16 ovl; @@ -74,6 +75,6 @@ extern float Snd3DDistOffset; extern s32 musicOffF; extern u8 fadeStat; -extern SNDGRPTBL sndGrpTable[]; +SHARED_SYM extern SNDGRPTBL sndGrpTable[]; #endif diff --git a/include/game/board/basic_space.h b/include/game/board/basic_space.h index d786b2b7..e39aa47c 100644 --- a/include/game/board/basic_space.h +++ b/include/game/board/basic_space.h @@ -3,6 +3,8 @@ #include "dolphin.h" +void BoardLandBlueExec(s32 player, s32 space); +void BoardLandRedExec(s32 player, s32 space); void BoardEventLandBlue(s32, s32); void BoardEventLandRed(s32, s32); s8 BoardCoinChgCreate(Vec*, s8); diff --git a/include/game/board/boo.h b/include/game/board/boo.h index 39c7d971..6543950f 100755 --- a/include/game/board/boo.h +++ b/include/game/board/boo.h @@ -8,10 +8,6 @@ s16 BoardBooCreate(s32 arg0, Vec *arg1); void BoardBooKill(void); s32 BoardBooStealTypeSet(s32 arg0); s32 BoardBooStealMain(void); -BOOL CheckBallCoinDone(void); -void TakeBallStar(void); -void ExecTakeBallStar(omObjData *arg0); -BOOL CheckTakeBallStarDone(void); s32 BoardBooStealValueGet(s16 *arg0, s16 *arg1); BOOL BoardBooStealLightCheck(void); diff --git a/include/game/board/boo_house.h b/include/game/board/boo_house.h index 03fb3126..27cebd16 100644 --- a/include/game/board/boo_house.h +++ b/include/game/board/boo_house.h @@ -8,6 +8,7 @@ void BoardBooHouseHostSet(s16); s16 BoardBooHouseHostGet(void); void BoardBooHouseCreate(void); void BoardBooHouseExec(s32); +void BoardBooHouseKill(void); s32 BoardBooComUseCheck(s32); void BoardBooHouseTutorialExec(void); diff --git a/include/game/board/bowser.h b/include/game/board/bowser.h new file mode 100644 index 00000000..551d00db --- /dev/null +++ b/include/game/board/bowser.h @@ -0,0 +1,8 @@ +#ifndef _BOARD_BOWSER_H +#define _BOARD_BOWSER_H + +#include "game/process.h" + +void BoardBowserExec(s32 player, s32 space); + +#endif \ No newline at end of file diff --git a/include/game/board/fortune.h b/include/game/board/fortune.h new file mode 100644 index 00000000..0d17b464 --- /dev/null +++ b/include/game/board/fortune.h @@ -0,0 +1,8 @@ +#ifndef _BOARD_FORTUNE_H +#define _BOARD_FORTUNE_H + +#include "game/process.h" + +void BoardFortuneExec(s32 player, s32 space); + +#endif \ No newline at end of file diff --git a/include/game/board/item.h b/include/game/board/item.h index 2a637c05..c67beab4 100755 --- a/include/game/board/item.h +++ b/include/game/board/item.h @@ -6,5 +6,8 @@ void BoardItemStart(s32 arg0, s32 arg1); BOOL BoardItemDoneCheck(void); void BoardItemBagItemSet(s16 *arg0); +#ifndef __MWERKS__ +void BoardItemPlayerRestore(s32 arg0, s32 arg1); +#endif #endif diff --git a/include/game/board/main.h b/include/game/board/main.h index 2b4d84cc..abcd9c48 100644 --- a/include/game/board/main.h +++ b/include/game/board/main.h @@ -1,72 +1,73 @@ #ifndef _BOARD_MAIN_H #define _BOARD_MAIN_H +#include "dolphin.h" +#include "game/data.h" #include "game/gamework_data.h" #include "game/object.h" -#include "game/data.h" -#include "dolphin.h" -#define BOARD_ID_MAIN1 0 //TOADS_MIDWAY_MADNESS -#define BOARD_ID_MAIN2 1 //GOOMBAS_GREEDY_GALA -#define BOARD_ID_MAIN3 2 //SHY_GUYS_JUNGLE_JAM -#define BOARD_ID_MAIN4 3 //BOOS_HAUNTED_BASH -#define BOARD_ID_MAIN5 4 //KOOPAS_SEASIDE_SOIREE -#define BOARD_ID_MAIN6 5 //BOWSERS_GNARLY_PARTY -#define BOARD_ID_TUTORIAL 6 //TUTORIAL_BOARD -#define BOARD_ID_EXTRA1 7 //MEGA_BOARD_MAYHEM -#define BOARD_ID_EXTRA2 8 //MINI_BOARD_MAD_DASH + +#define BOARD_ID_MAIN1 0 // TOADS_MIDWAY_MADNESS +#define BOARD_ID_MAIN2 1 // GOOMBAS_GREEDY_GALA +#define BOARD_ID_MAIN3 2 // SHY_GUYS_JUNGLE_JAM +#define BOARD_ID_MAIN4 3 // BOOS_HAUNTED_BASH +#define BOARD_ID_MAIN5 4 // KOOPAS_SEASIDE_SOIREE +#define BOARD_ID_MAIN6 5 // BOWSERS_GNARLY_PARTY +#define BOARD_ID_TUTORIAL 6 // TUTORIAL_BOARD +#define BOARD_ID_EXTRA1 7 // MEGA_BOARD_MAYHEM +#define BOARD_ID_EXTRA2 8 // MINI_BOARD_MAD_DASH #define BOARD_FABS(value) ((value < 0) ? -(value) : (value)) typedef struct board_focus_data { - u16 view_type; - s16 time; - s16 max_time; - float fov_start; - float fov_end; - float zoom_start; - float zoom_end; - Vec rot_start; - Vec rot_end; - Vec target_start; - Vec target_end; + u16 view_type; + s16 time; + s16 max_time; + float fov_start; + float fov_end; + float zoom_start; + float zoom_end; + Vec rot_start; + Vec rot_end; + Vec target_start; + Vec target_end; } BoardFocusData; typedef struct board_camera_data { - struct { - u8 hide_all : 1; - u8 moving : 1; - u8 quaking : 1; - }; - u16 mask; - s16 target_mdl; - s16 target_space; - s32 quake_timer; - float quake_strength; - float fov; - float near; - float far; - float aspect; - float viewport_x; - float viewport_y; - float viewport_w; - float viewport_h; - float viewport_near; - float viewport_far; - Vec pos; - Vec up; - Vec target; - Vec offset; - Vec rot; - float zoom; - void (*pos_calc)(struct board_camera_data *); - BoardFocusData focus; + struct { + u8 hide_all : 1; + u8 moving : 1; + u8 quaking : 1; + }; + u16 mask; + s16 target_mdl; + s16 target_space; + s32 quake_timer; + float quake_strength; + float fov; + float nnear; + float ffar; + float aspect; + float viewport_x; + float viewport_y; + float viewport_w; + float viewport_h; + float viewport_near; + float viewport_far; + Vec pos; + Vec up; + Vec target; + Vec offset; + Vec rot; + float zoom; + void (*pos_calc)(struct board_camera_data *); + BoardFocusData focus; } BoardCameraData; extern BoardCameraData boardCamera; -extern Process *boardObjMan; -extern Process *boardMainProc; -extern u32 boardRandSeed; +SHARED_SYM extern Process *boardObjMan; +SHARED_SYM extern Process *boardMainProc; +SHARED_SYM extern u32 boardRandSeed; extern omObjData *boardMainObj; typedef void (*BoardFunc)(void); @@ -78,11 +79,11 @@ typedef void (*BoardCameraPosCalcFunc)(BoardCameraData *camera); typedef void (*BoardTurnStartHook)(s32 player, s32 space); -extern BoardTurnStartHook boardTurnStartFunc; -extern void (*boardStarShowNextHook)(void); -extern void (*boardStarGiveHook)(void); -extern BoardBowserHook boardBowserHook; -extern BoardFunc boardTurnFunc; +SHARED_SYM extern BoardTurnStartHook boardTurnStartFunc; +SHARED_SYM extern void (*boardStarShowNextHook)(void); +SHARED_SYM extern void (*boardStarGiveHook)(void); +SHARED_SYM extern BoardBowserHook boardBowserHook; +SHARED_SYM extern BoardFunc boardTurnFunc; extern BoardLightHook boardLightResetHook; extern BoardLightHook boardLightSetHook; @@ -119,12 +120,15 @@ void BoardCameraTargetSpaceSet(s32 space); void BoardCameraQuakeSet(s32 duration, float strength); void BoardCameraQuakeReset(); void BoardCameraTargetSet(float x, float y, float z); +#ifndef __MWERKS__ +void BoardCameraPosCalcFuncSet(BoardCameraPosCalcFunc func); +#endif void BoardCameraPosSet(float x, float y, float z); void BoardCameraXRotZoomSet(float zoom, float x_rot); void BoardCameraZoomSet(float zoom); void BoardCameraRotSet(float x, float y); -void BoardCameraNearFarSet(float near, float far); -void BoardCameraNearFarGet(float *near, float *far); +void BoardCameraNearFarSet(float nnear, float ffar); +void BoardCameraNearFarGet(float *nnear, float *ffar); void BoardCameraMotionStart(s16 model_target, Vec *rot_target, float zoom_target, float fov_target); void BoardCameraMotionStartEx(s16 model_target, Vec *rot_target, Vec *offset_end, float zoom_target, float fov_target, s16 max_time); void BoardCameraFovSet(float fov); @@ -166,4 +170,4 @@ void BoardTauntKill(void); s32 BoardDataDirReadAsync(s32 data_num); void BoardDataAsyncWait(s32 status); -#endif \ No newline at end of file +#endif diff --git a/include/game/board/model.h b/include/game/board/model.h index a570836d..e0a50561 100644 --- a/include/game/board/model.h +++ b/include/game/board/model.h @@ -41,6 +41,7 @@ s32 BoardModelMotionUpdateSet(s16 model, s32 flag); s32 BoardModelVoiceEnableSet(s16 model, s32 motion, s32 flag); s32 BoardModelMotionStart(s16 model, s32 slot, u32 attr); s32 BoardModelMotionShiftSet(s16 model, s32 motion, float time, float shift_time, u32 attr); +s32 BoardModelMotionShiftIDGet(s16 model); s32 BoardModelAttrSet(s16 model, u32 attr); s32 BoardModelAttrReset(s16 model, u32 attr); s32 BoardModelMotionTimeSet(s16 model, float time); diff --git a/include/game/board/player.h b/include/game/board/player.h index df4e2c49..02136b04 100644 --- a/include/game/board/player.h +++ b/include/game/board/player.h @@ -13,7 +13,7 @@ #include "game/board/space.h" #include "game/board/ui.h" -extern s16 boardPlayerMdl[4]; +SHARED_SYM extern s16 boardPlayerMdl[4]; static inline s32 BoardPlayerHandicapGet(s32 player) { @@ -97,6 +97,9 @@ void BoardJunctionMaskReset(s32); void BoardJunctionMaskZero(void); void BoardPlayerVoiceEnableSet(s32, s32, s32); +#ifndef __MWERKS__ +void BoardPlayerMoveBetween(s32 arg0, s32 arg1, s32 arg2); +#endif void BoardPlayerMoveTo(s32, s32); void BoardPlayerMoveToAsync(s32, s32); diff --git a/include/game/board/space.h b/include/game/board/space.h index 37a0fe66..df674ff0 100644 --- a/include/game/board/space.h +++ b/include/game/board/space.h @@ -17,6 +17,7 @@ typedef struct board_space { u16 link[BOARD_SPACE_LINKMAX+1]; } BoardSpace; +s32 BoardSpaceWalkExec(s32 player, s32 space); void BoardSpaceWalkEventFuncSet(BoardSpaceEventFunc func); void BoardSpaceWalkMiniEventFuncSet(BoardSpaceEventFunc func); void BoardSpaceLandEventFuncSet(BoardSpaceEventFunc func); @@ -27,6 +28,7 @@ BoardSpace *BoardSpaceGet(s32 layer, s32 index); void BoardSpaceAttrSet(s32 layer, u32 attr); void BoardSpaceAttrReset(s32 layer, u32 attr); u32 BoardSpaceFlagGet(s32 layer, s32 index); +void BoardSpaceTypeForce(u16 from, u16 to); s32 BoardSpaceTypeGet(s32 layer, s32 index); void BoardSpaceTypeSet(s32 layer, s32 index, s32 type); s32 BoardSpacePosGet(s32 layer, s32 index, Vec *pos); @@ -40,6 +42,7 @@ s32 BoardSpaceLinkTargetListGet(s32 layer, s32 target, s16 *list); s32 BoardSpaceLinkTypeSearch(s32 layer, s32 target, u16 type); s32 BoardSpaceLinkTransformGet(s32 flag, Vec *pos, Vec *rot, Vec *scale); void BoardSpaceHostSet(s32 space); +void BoardSpaceHide(s32 value); void BoardSpaceStarSetIndex(s32 index); s32 BoardSpaceStarGetNext(void); s32 BoardSpaceStarGetRandom(s32 excl_pos); @@ -49,6 +52,7 @@ s32 BoardSpaceStarGetCurr(void); s32 BoardSpaceStarCheck(s32 index); void BoardSpaceLandExec(s32 player, s32 space); void BoardSpaceCameraSet(u16 mask); +s32 BoardSpaceBlockExec(s32 player, s32 space); void BoardSpaceBlockPosSet(void); void BoardSpaceInit(s32 data_num); void BoardSpaceDestroy(void); diff --git a/include/game/board/tutorial.h b/include/game/board/tutorial.h index 3b63c2ae..32d32d0a 100755 --- a/include/game/board/tutorial.h +++ b/include/game/board/tutorial.h @@ -2,6 +2,7 @@ #define _BOARD_TUTORIAL_H #include "dolphin/types.h" +#include "version.h" void BoardTutorialInit(void); void BoardTutorialKill(void); @@ -16,7 +17,7 @@ void BoardTutorialItemSet(s8 arg0); void BoardTutorialHostSet(s16 arg0); void BoardTutorialHostHide(s8 arg0); -extern s32 boardTutorialData[4]; +SHARED_SYM extern s32 boardTutorialData[4]; extern s8 boardTutorialDirInputX; extern s8 boardTutorialDirInputY; extern s16 boardTutorialDirInputTime; @@ -24,6 +25,6 @@ extern s32 boardTutorialBlockPos; extern s8 boardTutorialBlockItem; extern s8 boardTutorialBlockF; extern s8 boardTutorialUseItem; -extern s8 boardTutorialF; +SHARED_SYM extern s8 boardTutorialF; #endif diff --git a/include/game/card.h b/include/game/card.h index 96d621b4..58c0b5d3 100644 --- a/include/game/card.h +++ b/include/game/card.h @@ -2,8 +2,9 @@ #define _GAME_CARD_H #include "dolphin.h" +#include "version.h" -extern u8 UnMountCnt; +SHARED_SYM extern u8 UnMountCnt; void HuCardInit(void); s32 HuCardCheck(void); diff --git a/include/game/data.h b/include/game/data.h index 9c01b09b..3a1d41ff 100644 --- a/include/game/data.h +++ b/include/game/data.h @@ -34,7 +34,6 @@ s32 HuDataReadChk(s32 data_num); DataReadStat *HuDataGetStatus(void *dir_ptr); void *HuDataGetDirPtr(s32 data_num); DataReadStat *HuDataDirRead(s32 data_num); -DataReadStat *HuDataDirReadNum(s32 data_num, s32 num); DataReadStat *HuDataDirSet(void *dir_ptr, s32 data_num); void HuDataDirReadAsyncCallBack(s32 result, DVDFileInfo* fileInfo); s32 HuDataDirReadAsync(s32 data_num); diff --git a/include/game/gamework_data.h b/include/game/gamework_data.h index 87033ede..5cfb1bbd 100644 --- a/include/game/gamework_data.h +++ b/include/game/gamework_data.h @@ -197,7 +197,6 @@ static inline void GWRumbleSet(s32 value) { GWGameStat.rumble = value; if (value == 0) { - // TODO PC: get rumble working HuPadRumbleAllStop(); } } diff --git a/include/game/hsfanim.h b/include/game/hsfanim.h index 9cf16673..c2dc2c4e 100644 --- a/include/game/hsfanim.h +++ b/include/game/hsfanim.h @@ -4,6 +4,7 @@ #include "game/hsfformat.h" #include "game/hsfman.h" #include "game/animdata.h" +#include "version.h" typedef struct model_data ModelData; typedef struct particle_data ParticleData; @@ -138,7 +139,7 @@ void Hu3DParManTimeLimitSet(s16 arg0, s32 arg1); void Hu3DParManVacumeSet(s16 arg0, float arg1, float arg2, float arg3, float arg4); void Hu3DParManColorSet(s16 arg0, s16 arg1); -extern Hu3DTexAnimDataStruct Hu3DTexAnimData[256]; -extern Hu3DTexScrDataStruct Hu3DTexScrData[16]; +SHARED_SYM extern Hu3DTexAnimDataStruct Hu3DTexAnimData[256]; +SHARED_SYM extern Hu3DTexScrDataStruct Hu3DTexScrData[16]; #endif diff --git a/include/game/hsfdraw.h b/include/game/hsfdraw.h index 0b9e0e8f..068e5b3c 100755 --- a/include/game/hsfdraw.h +++ b/include/game/hsfdraw.h @@ -19,7 +19,7 @@ typedef struct hsfdraw_struct_01 { /* 0x1C */ float unk1C; /* 0x20 */ float unk20; /* 0x24 */ float unk24; - /* 0x28 */ float unk28; + /* 0x28 */ float unk28; /* 0x2C */ float unk2C; /* 0x30 */ float unk30; /* 0x34 */ float unk34; diff --git a/include/game/hsfformat.h b/include/game/hsfformat.h index 22ad98ab..b1ed6b36 100644 --- a/include/game/hsfformat.h +++ b/include/game/hsfformat.h @@ -285,8 +285,8 @@ typedef struct hsf_camera { HsfVector3f pos; float aspect_dupe; float fov; - float near; - float far; + float nnear; + float ffar; } HsfCamera; typedef struct hsf_light { diff --git a/include/game/hsfman.h b/include/game/hsfman.h index 2be96d31..a8723cc5 100644 --- a/include/game/hsfman.h +++ b/include/game/hsfman.h @@ -5,6 +5,7 @@ #include "game/hsfanim.h" #include "game/hsfformat.h" #include "game/memory.h" +#include "version.h" #define HU3D_MODEL_MAX 512 #define HU3D_MOTION_MAX 256 @@ -104,7 +105,7 @@ struct model_data { u16 unk_26; u16 unk_28[8]; s16 unk_38[8]; - u32 unk_48; + uintptr_t unk_48; u32 unk_4C; u32 attr; u32 motion_attr; @@ -140,8 +141,8 @@ struct model_data { }; // sizeof 0x124 typedef struct camera_data { float fov; - float near; - float far; + float nnear; + float ffar; float aspect; float aspect_dupe; Vec pos; @@ -297,23 +298,23 @@ void Hu3DProjectionPosSet(s16, Vec *, Vec *, Vec *); void Hu3DProjectionTPLvlSet(s16, float); void Hu3DMipMapSet(char *, s16, s32, float); -extern ModelData Hu3DData[0x200]; -extern CameraData Hu3DCamera[0x10]; +SHARED_SYM extern ModelData Hu3DData[0x200]; +SHARED_SYM extern CameraData Hu3DCamera[0x10]; extern AnimData *reflectAnim[5]; -extern AnimData *hiliteAnim[4]; +SHARED_SYM extern AnimData *hiliteAnim[4]; extern ThreeDProjectionStruct Hu3DProjection[4]; -extern ShadowData Hu3DShadowData; -extern Mtx Hu3DCameraMtx; -extern Mtx Hu3DCameraMtxXPose; -extern LightData Hu3DGlobalLight[0x8]; +SHARED_SYM extern ShadowData Hu3DShadowData; +SHARED_SYM extern Mtx Hu3DCameraMtx; +SHARED_SYM extern Mtx Hu3DCameraMtxXPose; +SHARED_SYM extern LightData Hu3DGlobalLight[0x8]; extern s16 reflectMapNo; extern AnimData *toonAnim; -extern s16 Hu3DShadowCamBit; -extern s32 Hu3DShadowF; -extern s32 shadowModelDrawF; -extern s16 Hu3DCameraNo; +SHARED_SYM extern s16 Hu3DShadowCamBit; +SHARED_SYM extern s32 Hu3DShadowF; +SHARED_SYM extern s32 shadowModelDrawF; +SHARED_SYM extern s16 Hu3DCameraNo; extern s16 Hu3DCameraBit; extern s16 Hu3DPauseF; -extern GXColor BGColor; +SHARED_SYM extern GXColor BGColor; #endif diff --git a/include/game/hsfmotion.h b/include/game/hsfmotion.h index 7b07bf9d..e1864032 100644 --- a/include/game/hsfmotion.h +++ b/include/game/hsfmotion.h @@ -3,6 +3,7 @@ #include "dolphin.h" #include "game/hsfformat.h" +#include "version.h" #define Hu3DMotionCreateFile(data_id) (Hu3DMotionCreate(HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA))) @@ -76,6 +77,6 @@ s16 Hu3DJointMotion(s16 arg0, void *arg1); void JointModel_Motion(s16 arg0, s16 arg1); void Hu3DMotionCalc(s16 arg0); -extern MotionData Hu3DMotion[256]; +SHARED_SYM extern MotionData Hu3DMotion[256]; #endif diff --git a/include/game/init.h b/include/game/init.h index 6eb51287..07834840 100644 --- a/include/game/init.h +++ b/include/game/init.h @@ -2,8 +2,9 @@ #define _GAME_INIT_H #include "dolphin.h" +#include "version.h" -extern GXRenderModeObj *RenderMode; +SHARED_SYM extern GXRenderModeObj *RenderMode; extern OSHeapHandle currentHeapHandle; extern void *DemoFrameBuffer1; @@ -11,7 +12,7 @@ extern void *DemoFrameBuffer2; extern void *DemoCurrentBuffer; extern u32 minimumVcount; extern float minimumVcountf; -extern u32 worstVcount; +SHARED_SYM extern u32 worstVcount; void HuSysInit(GXRenderModeObj *mode); void HuSysBeforeRender(); diff --git a/include/game/jmp.h b/include/game/jmp.h index 8dfe2179..9e00bd7d 100755 --- a/include/game/jmp.h +++ b/include/game/jmp.h @@ -2,15 +2,23 @@ #define _GAME_JMP_H #ifdef TARGET_PC -#include #include - +#ifdef _M_X64 +#include "../extern/longjmp_win64/longjmp_win64.h" +#define SETJMP setjmp_win64 +#define LONGJMP longjmp_win64 +#define JMPBUF JMP_BUF_WIN64 +#else +#include #define SETJMP setjmp #define LONGJMP longjmp +#define JMPBUF jmp_buf +#endif + #ifndef _JMP_BUF_DEFINED -#if defined(_M_IX86) || defined(__i386__) +#if defined(_M_IX86) typedef struct __JUMP_BUFFER { uint32_t Ebp; uint32_t Ebx; @@ -24,41 +32,27 @@ typedef struct __JUMP_BUFFER { uint32_t UnwindFunc; uint32_t UnwindData[6]; } _JUMP_BUFFER; -#elif defined(_M_X64) || defined(__x86_64__) -#ifndef SETJMP_FLOAT128 -// TODO do we need to align this? -typedef struct _SETJMP_FLOAT128 { - uint64_t Part[2]; -} SETJMP_FLOAT128; -#endif -typedef struct _JUMP_BUFFER { - uint64_t Frame; +#elif defined(__i386__) +typedef struct __JUMP_BUFFER { + uint32_t Bx; + uint32_t Si; + uint32_t Di; + uint32_t Bp; + uint32_t Sp; + uint32_t Pc; +} _JUMP_BUFFER; +#elif defined(__x86_64__) +typedef struct __JUMP_BUFFER { uint64_t Rbx; - uint64_t Rsp; uint64_t Rbp; - uint64_t Rsi; - uint64_t Rdi; uint64_t R12; uint64_t R13; uint64_t R14; uint64_t R15; - uint64_t Rip; - uint32_t MxCsr; - uint16_t FpCsr; - uint16_t Spare; - - SETJMP_FLOAT128 Xmm6; - SETJMP_FLOAT128 Xmm7; - SETJMP_FLOAT128 Xmm8; - SETJMP_FLOAT128 Xmm9; - SETJMP_FLOAT128 Xmm10; - SETJMP_FLOAT128 Xmm11; - SETJMP_FLOAT128 Xmm12; - SETJMP_FLOAT128 Xmm13; - SETJMP_FLOAT128 Xmm14; - SETJMP_FLOAT128 Xmm15; + uint64_t Rsp; + uint64_t Pc; } _JUMP_BUFFER; -#elif defined(_M_ARM) || defined(__arm__) +#elif defined(_M_ARM) typedef struct _JUMP_BUFFER { uint32_t Frame; @@ -76,7 +70,7 @@ typedef struct _JUMP_BUFFER { uint32_t Fpscr; uint32_t long D[8]; // D8-D15 VFP/NEON regs } _JUMP_BUFFER; -#elif defined(_M_ARM64) || defined(__aarch64__) +#elif defined(_M_ARM64) typedef struct _JUMP_BUFFER { uint64_t Frame; uint64_t Reserved; @@ -133,21 +127,27 @@ typedef struct _JUMP_BUFFER { #endif #endif -#if defined(_M_IX86) || defined(__i386__) -#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Eip = (size_t)func -#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Esp = (size_t)sp -#elif defined(_M_X64) || defined(__x86_64__) -#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Rip = (size_t)func -#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Rsp = (size_t)sp +#if defined(_M_IX86) +#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Eip = (uintptr_t)func +#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Esp = (uintptr_t)sp +#elif defined(__i386__) +#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Pc = (uintptr_t)func +#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (uintptr_t)sp +#elif defined(__x86_64__) +#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Pc = (uintptr_t)func +#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Rsp = (uintptr_t)sp +#elif defined(_M_X64) +#define SETJMP_SET_IP(jump, func) (jump)->rip_getjmp = (uintptr_t)func +#define SETJMP_SET_SP(jump, sp) (jump)->rsp_getjmp = (uintptr_t)sp #elif defined(_M_ARM) || defined(__arm__) -#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Pc = (size_t)func -#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (size_t)sp +#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Pc = (uintptr_t)func +#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (uintptr_t)sp #elif defined(_M_ARM64) || defined(__aarch64__) -#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Lr = (size_t)func -#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (size_t)sp +#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Lr = (uintptr_t)func +#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (uintptr_t)sp #elif defined(__riscv) -#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->ra = (size_t)func -#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->sp = (size_t)sp +#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->ra = (uintptr_t)func +#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->sp = (uintptr_t)sp #endif #else @@ -166,6 +166,7 @@ typedef struct jmp_buf { s32 gcsetjmp(jmp_buf *jump); s32 gclongjmp(jmp_buf *jump, s32 status); +#define JMPBUF jmp_buf #define SETJMP(jump) gcsetjmp(&(jump)) #define LONGJMP(jump, status) gclongjmp(&(jump), (status)) diff --git a/include/game/mapspace.h b/include/game/mapspace.h index d4840451..c9f1e51c 100755 --- a/include/game/mapspace.h +++ b/include/game/mapspace.h @@ -16,11 +16,11 @@ void CharRotInv(Mtx arg0, Mtx arg1, Vec *arg2, omObjData *arg3); extern Mtx MapMT; extern Mtx MapMTR; -extern float AddX; -extern float AddZ; -extern s32 nMap; -extern s32 nChar; +SHARED_SYM extern float AddX; +SHARED_SYM extern float AddZ; +SHARED_SYM extern s32 nMap; +SHARED_SYM extern s32 nChar; extern s32 HitFaceCount; -extern omObjData *MapObject[16]; +SHARED_SYM extern omObjData *MapObject[16]; #endif diff --git a/include/game/minigame_seq.h b/include/game/minigame_seq.h index 6f20a101..ee2c47c1 100644 --- a/include/game/minigame_seq.h +++ b/include/game/minigame_seq.h @@ -117,6 +117,6 @@ s32 MGSeqUpdateRecord(SeqWork *work); s32 MGSeqInitFlip(SeqWork *work, va_list params); s32 MGSeqUpdateFlip(SeqWork *work); -extern OverlayID mgSeqOvlPrev; +SHARED_SYM extern OverlayID mgSeqOvlPrev; #endif diff --git a/include/game/objsub.h b/include/game/objsub.h index d42531e5..9f05b82a 100644 --- a/include/game/objsub.h +++ b/include/game/objsub.h @@ -4,6 +4,7 @@ #include "dolphin.h" #include "game/process.h" #include "game/gamework_data.h" +#include "version.h" typedef struct mg_info { u16 ovl; @@ -22,20 +23,20 @@ void omGameSysInit(Process *objman); void omVibrate(s16 player_cfg_index, s16 duration, s16 off, s16 on); -extern s16 mgTypeCurr; -extern s16 mgBattleStar[4]; -extern s16 mgBattleStarMax; -extern u8 lbl_801D3E94; -extern u32 mgRecordExtra; -extern s32 mgQuitExtraF; -extern s32 mgPracticeEnableF; -extern s32 mgInstExitEnableF; -extern u8 mgBoardHostEnableF; +SHARED_SYM extern s16 mgTypeCurr; +SHARED_SYM extern s16 mgBattleStar[4]; +SHARED_SYM extern s16 mgBattleStarMax; +SHARED_SYM extern u8 lbl_801D3E94; +SHARED_SYM extern u32 mgRecordExtra; +SHARED_SYM extern s32 mgQuitExtraF; +SHARED_SYM extern s32 mgPracticeEnableF; +SHARED_SYM extern s32 mgInstExitEnableF; +SHARED_SYM extern u8 mgBoardHostEnableF; -extern s16 mgTicTacToeGrid[3][3]; -extern u8 mgIndexList[256]; -extern GameStat mgGameStatBackup; +SHARED_SYM extern s16 mgTicTacToeGrid[3][3]; +SHARED_SYM extern u8 mgIndexList[256]; +SHARED_SYM extern GameStat mgGameStatBackup; -extern MgInfo mgInfoTbl[]; +SHARED_SYM extern MgInfo mgInfoTbl[]; #endif diff --git a/include/game/printfunc.h b/include/game/printfunc.h index 9587aa6a..b0906cdf 100644 --- a/include/game/printfunc.h +++ b/include/game/printfunc.h @@ -2,6 +2,7 @@ #define _GAME_PRINTFUNC_H #include "dolphin.h" +#include "version.h" #define FONT_COLOR_BLACK 0 #define FONT_COLOR_DARK_BLUE 1 @@ -29,7 +30,7 @@ void pfDrawFonts(void); extern BOOL saftyFrameF; extern u16 strlinecnt; extern u16 empstrline; -extern int fontcolor; +SHARED_SYM extern int fontcolor; extern u32 procfunc; #endif \ No newline at end of file diff --git a/include/game/process.h b/include/game/process.h index c8b43d89..7d4face1 100644 --- a/include/game/process.h +++ b/include/game/process.h @@ -26,8 +26,8 @@ typedef struct process { u16 stat; u16 prio; s32 sleep_time; - u32 base_sp; - jmp_buf jump; + uintptr_t base_sp; + JMPBUF jump; void (*dtor)(void); void *user_data; } Process; diff --git a/include/game/saveload.h b/include/game/saveload.h index d17712a3..91478898 100644 --- a/include/game/saveload.h +++ b/include/game/saveload.h @@ -24,13 +24,13 @@ typedef union save_buf_all { u8 ATTRIBUTE_ALIGN(32) buf[SAVE_BUF_SIZE]; } SaveBufAll; -extern char *SaveFileNameTbl[]; -extern CARDFileInfo curFileInfo; -extern SaveBufAll saveBuf; +SHARED_SYM extern char *SaveFileNameTbl[]; +SHARED_SYM extern CARDFileInfo curFileInfo; +SHARED_SYM extern SaveBufAll saveBuf; extern u64 SLSerialNo; -extern s32 saveExecF; +SHARED_SYM extern s32 saveExecF; extern u8 curBoxNo; -extern s16 curSlotNo; +SHARED_SYM extern s16 curSlotNo; s32 SLFileOpen(char *fileName); s32 SLFileCreate(char *fileName, u32 size, void *addr); diff --git a/include/game/sprite.h b/include/game/sprite.h index 5f503fcf..554b3252 100644 --- a/include/game/sprite.h +++ b/include/game/sprite.h @@ -113,7 +113,7 @@ void HuSprGrpCenterSet(s16 group, float x, float y); void HuSprGrpZRotSet(s16 group, float z_rot); void HuSprGrpScaleSet(s16 group, float x, float y); void HuSprGrpTPLvlSet(s16 group, float tp_lvl); -#ifndef HUSPR_USE_OLD_DEFS +#if !defined(HUSPR_USE_OLD_DEFS) || !defined(__MWERKS__) void HuSprGrpDrawNoSet(s16 group, s32 draw_no); #endif void HuSprDrawNoSet(s16 group, s16 member, s32 draw_no); @@ -127,7 +127,7 @@ void AnimDebug(AnimData *anim); void HuSprDispInit(void); void HuSprDisp(HuSprite *sprite); -#ifndef HUSPR_USE_OLD_DEFS +#if !defined(HUSPR_USE_OLD_DEFS) || !defined(__MWERKS__) void HuSprTexLoad(AnimData *anim, s16 bmp, s16 slot, GXTexWrapMode wrap_s, GXTexWrapMode wrap_t, GXTexFilter filter); #endif void HuSprExecLayerSet(s16 draw_no, s16 layer); diff --git a/include/port/byteswap.h b/include/port/byteswap.h index 1d7549d9..40f9efee 100644 --- a/include/port/byteswap.h +++ b/include/port/byteswap.h @@ -2,13 +2,49 @@ #define _SRC_BYTESWAP_H_ #ifdef __cplusplus -extern "C" -{ +extern "C" { #endif #include "game/animdata.h" #include "game/hsfformat.h" +typedef struct AnimData32b { + s16 bankNum; + s16 patNum; + s16 bmpNum; + s16 useNum; + + u32 bank; + u32 pat; + u32 bmp; +} AnimData32b; + +typedef struct AnimBankData32b { + s16 timeNum; + s16 unk; + u32 frame; +} AnimBankData32b; + +typedef struct AnimPatData32b { + s16 layerNum; + s16 centerX; + s16 centerY; + s16 sizeX; + s16 sizeY; + u32 layer; +} AnimPatData32b; + +typedef struct AnimBmpData32b { + u8 pixSize; + u8 dataFmt; + s16 palNum; + s16 sizeX; + s16 sizeY; + u32 dataSize; + u32 palData; + u32 data; +} AnimBmpData32b; + typedef struct HsfCluster32b { u32 name[2]; u32 targetName; @@ -145,7 +181,7 @@ typedef struct HsfObjectData32b { float baseMorph; float morphWeight[33]; } mesh; - struct hsf_object *replica; + u32 replica; }; u32 face; @@ -236,10 +272,10 @@ void byteswap_s32(s32 *src); void byteswap_hsfvec3f(HsfVector3f *src); void byteswap_hsfvec2f(HsfVector2f *src); -void byteswap_animdata(void *src, AnimData* dest); -void byteswap_animbankdata(void *src, AnimBankData *dest); -void byteswap_animpatdata(void *src, AnimPatData *dest); -void byteswap_animbmpdata(void *src, AnimBmpData *dest); +void byteswap_animdata(void *src, AnimData *dest); +void byteswap_animbankdata(AnimBankData32b *src, AnimBankData *dest); +void byteswap_animpatdata(AnimPatData32b *src, AnimPatData *dest); +void byteswap_animbmpdata(AnimBmpData32b *src, AnimBmpData *dest); void byteswap_animframedata(AnimFrameData *src); void byteswap_animlayerdata(AnimLayerData *src); @@ -263,6 +299,25 @@ void byteswap_hsfbitmapkey(HsfBitmapKey32b *src, HsfBitmapKey *dest); void byteswap_hsftrack(HsfTrack32b *src, HsfTrack *dest); void byteswap_hsfmotion(HsfMotion32b *src, HsfMotion *dest); void byteswap_hsfface(HsfFace32b *src, HsfFace *dest); +void byteswap_hsfcluster(HsfCluster32b *src, HsfCluster *dest); +void byteswap_hsfattribute(HsfAttribute32b *src, HsfAttribute *dest); +void byteswap_hsfmaterial(HsfMaterial32b *src, HsfMaterial *dest); +void byteswap_hsfscene(HsfScene *src); +void byteswap_hsfbuffer(HsfBuffer32b *src, HsfBuffer *dest); +void byteswap_hsfmatrix(HsfMatrix *src); +void byteswap_hsfpalette(HsfPalette32b *src, HsfPalette *dest); +void byteswap_hsfpart(HsfPart32b *src, HsfPart *dest); +void byteswap_hsfbitmap(HsfBitmap32b *src, HsfBitmap *dest); +void byteswap_hsfmapattr(HsfMapAttr32b *src, HsfMapAttr *dest); +void byteswap_hsfskeleton(HsfSkeleton32b *src, HsfSkeleton *dest); +void byteswap_hsfshape(HsfShape32b *src, HsfShape *dest); +void byteswap_hsfcenv_single(HsfCenvSingle *src); +void byteswap_hsfcenv(HsfCenv32b *src, HsfCenv *dest); +void byteswap_hsfobject(HsfObject32b *src, HsfObject *dest); +void byteswap_hsfbitmapkey(HsfBitmapKey32b *src, HsfBitmapKey *dest); +void byteswap_hsftrack(HsfTrack32b *src, HsfTrack *dest); +void byteswap_hsfmotion(HsfMotion32b *src, HsfMotion *dest); +void byteswap_hsfface(HsfFace32b *src, HsfFace *dest); #ifdef __cplusplus } diff --git a/rel.map b/rel.map new file mode 100644 index 00000000..1cdba41f --- /dev/null +++ b/rel.map @@ -0,0 +1,6 @@ +{ + global: + ObjectSetup; + local: + *; +}; diff --git a/src/REL/board_executor.c b/src/REL/board_executor.c index 3d838c77..ba3950a2 100644 --- a/src/REL/board_executor.c +++ b/src/REL/board_executor.c @@ -1,10 +1,17 @@ #include "REL/board_executor.h" #include "math.h" +#ifdef TARGET_PC +void ObjectSetup(void) { + BoardObjectSetup(BoardCreate, BoardDestroy); +} +#else static void ObjectSetup(void) { BoardObjectSetup(BoardCreate, BoardDestroy); } +#endif +#ifdef __MWERKS__ s32 _prolog(void) { const VoidFunc* ctors = _ctors; while (*ctors != 0) { @@ -21,4 +28,5 @@ void _epilog(void) { (**dtors)(); dtors++; } -} \ No newline at end of file +} +#endif diff --git a/src/REL/bootDll/main.c b/src/REL/bootDll/main.c index f6b09479..3850bc7d 100644 --- a/src/REL/bootDll/main.c +++ b/src/REL/bootDll/main.c @@ -16,6 +16,7 @@ #include "game/wipe.h" #include "math.h" +#include "port/byteswap.h" #include "data_num/title.h" @@ -125,10 +126,7 @@ void ObjectSetup(void) HuSprGrpMemberSet(group, 1, sprite_hudson); HuSprPosSet(group, 1, 288, 240); HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); -#ifdef __MWERKS__ - // TODO PC HuWinInit(1); -#endif BootTitleCreate(); SystemInitF = 1; } @@ -161,13 +159,10 @@ void ObjectSetup(void) WipeColorSet(255, 255, 255); if (!SystemInitF) { tick_prev = OSGetTick(); -#ifdef __MWERKS__ - // TODO PC CharManInit(); HuWindowInit(); MGSeqInit(); HuWinInit(1); -#endif BootTitleCreate(); data = HuSprAnimReadFile(TITLE_HUDSON_ANM); sprite_hudson = HuSprCreate(data, 0, 0); @@ -269,8 +264,6 @@ void ObjectSetup(void) HuPrcVSleep(); } skip_wait = FALSE; -#ifdef __MWERKS__ - // TODO PC while (!HuTHPEndCheck()) { UpdateDemoMess(); if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { @@ -279,21 +272,14 @@ void ObjectSetup(void) } HuPrcVSleep(); } -#endif WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); while (WipeStatGet()) { HuPrcVSleep(); } -#ifdef __MWERKS__ - // TODO PC HuWinKill(demoWinId); HuTHPClose(); -#endif HuPrcVSleep(); -#ifdef __MWERKS__ - // TODO PC HuSprGrpKill(group_thp); -#endif if (!skip_wait) { HuPrcSleep(60); } @@ -346,16 +332,10 @@ void ObjectSetup(void) int i; for (i = 0; demoMessTimeTbl[i * 2] != -1; i++) { if (frame == demoMessTimeTbl[i * 2]) { -#ifdef __MWERKS__ - // TODO PC HuWinMesSet(demoWinId, MAKE_MESSID(54, i)); -#endif } if (frame == demoMessTimeTbl[(i * 2) + 1]) { -#ifdef __MWERKS__ - // TODO PC HuWinHomeClear(demoWinId); -#endif } } } diff --git a/src/REL/m401Dll/main.c b/src/REL/m401Dll/main.c index 3308961a..28edb78b 100644 --- a/src/REL/m401Dll/main.c +++ b/src/REL/m401Dll/main.c @@ -17,6 +17,10 @@ #include "ext_math.h" #include "math.h" +#ifndef __MWERKS__ +#include "game/audio.h" +#endif + float lbl_2_data_0 = -7.1875f; s16 lbl_2_data_4[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; diff --git a/src/REL/m401Dll/main_ex.c b/src/REL/m401Dll/main_ex.c index 34dc3dab..cc201c64 100644 --- a/src/REL/m401Dll/main_ex.c +++ b/src/REL/m401Dll/main_ex.c @@ -11,6 +11,10 @@ #include "REL/m401Dll.h" +#ifndef __MWERKS__ +extern s32 rand8(void); +#endif + struct Bss13EData { s16 unk0; s16 unk2[3]; @@ -43,7 +47,7 @@ void fn_2_10240(Vec *arg0, Vec *arg1) camera = &Hu3DCamera[0]; MTXLookAt(lookat, &camera->pos, &camera->up, &camera->target); MTXMultVec(lookat, arg0, arg0); - MTXPerspective(proj, camera->fov, camera->aspect, camera->near, camera->far); + MTXPerspective(proj, camera->fov, camera->aspect, camera->nnear, camera->ffar); coord[0] = (arg0->x * proj[0][0]) + (arg0->y * proj[0][1]) + (arg0->z * proj[0][2]) + proj[0][3]; coord[1] = (arg0->x * proj[1][0]) + (arg0->y * proj[1][1]) + (arg0->z * proj[1][2]) + proj[1][3]; coord[2] = (arg0->x * proj[2][0]) + (arg0->y * proj[2][1]) + (arg0->z * proj[2][2]) + proj[2][3]; @@ -319,7 +323,6 @@ void fn_2_113AC(omObjData *object) M401WorkPlayer *temp_r28; omObjData *temp_r27; ParticleData *temp_r25; - s16 temp_r24; temp_r30 = object->data; temp_r30->unk0.z += (lbl_2_bss_50 * 0.5f); object->trans.x = temp_r30->unk0.x; @@ -564,7 +567,6 @@ void fn_2_123F8(ModelData *model, ParticleData *particle, Mtx matrix) HsfanimStruct01 *temp_r31; s32 temp_r29; s32 temp_r28; - UnkWork10A88 *temp_r27; if (!particle->unk_02) { particle->unk_02 = 1; temp_r31 = particle->unk_48; diff --git a/src/REL/m402Dll/main.c b/src/REL/m402Dll/main.c index e4044763..7248188e 100755 --- a/src/REL/m402Dll/main.c +++ b/src/REL/m402Dll/main.c @@ -682,7 +682,9 @@ static void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) VECAdd((Vec *)&arg0, &sp18, (Vec *)&arg0); } +#ifdef __MWERKS__ #include "src/REL/executor.c" +#endif static void fn_1_2454(void) { diff --git a/src/REL/m404Dll/main.c b/src/REL/m404Dll/main.c index e11038f1..cf4ed5a0 100644 --- a/src/REL/m404Dll/main.c +++ b/src/REL/m404Dll/main.c @@ -260,7 +260,7 @@ void ObjectSetup(void) var_r29 = Hu3DGLightCreateV(&lbl_1_data_770, &lbl_1_bss_10, &lbl_1_data_788); Hu3DGLightInfinitytSet(var_r29); Hu3DGLightStaticSet(var_r29, 1); - Hu3DShadowCreate(45.0f, var_r30->near, var_r30->far); + Hu3DShadowCreate(45.0f, var_r30->nnear, var_r30->ffar); Hu3DShadowTPLvlSet(0.625f); Hu3DShadowPosSet(&lbl_1_data_78C, &lbl_1_data_798, &lbl_1_data_77C); HuAudSndGrpSet(29); @@ -471,7 +471,12 @@ void fn_1_7E0(omObjData *object) espTPLvlSet(var_r31->unk_02[var_r30], 0.5f); break; case 2: +#ifdef NON_MATCHING + // TODO 1 or 0? + var_r31->unk_02[var_r30] = espEntry(lbl_1_data_86C[var_r27->unk_02[5]], 0, 0); +#else var_r31->unk_02[var_r30] = espEntry(lbl_1_data_86C[var_r27->unk_02[5]]); +#endif espPriSet(var_r31->unk_02[var_r30], 255); break; case 3: diff --git a/src/REL/m405Dll/main.c b/src/REL/m405Dll/main.c index 94ab2c63..6c1c8075 100755 --- a/src/REL/m405Dll/main.c +++ b/src/REL/m405Dll/main.c @@ -8,6 +8,7 @@ #include "game/gamework_data.h" #include "game/hsfanim.h" #include "game/hsfdraw.h" +#include #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/memory.h" @@ -23,6 +24,11 @@ #include "dolphin.h" #include "ext_math.h" + +#ifndef __MWERKS__ +#include "game/audio.h" +#endif + #undef ABS #define ABS(x) ((0 > (x)) ? -(x) : (x)) @@ -1277,7 +1283,9 @@ float fn_1_5664(Vec *arg0) return lbl_1_bss_5AC.unk04[fn_1_23B4(arg0)].y; } +#ifdef __MWERKS__ #include "src/REL/executor.c" +#endif Vec lbl_1_data_100 = { 0.0f, 1.0f, 0.0f }; Vec lbl_1_data_10C = { 450.0f, 300.0f, 500.0f }; diff --git a/src/REL/m406Dll/map.c b/src/REL/m406Dll/map.c index d91ac7d3..af5e97eb 100644 --- a/src/REL/m406Dll/map.c +++ b/src/REL/m406Dll/map.c @@ -8,6 +8,10 @@ #include "REL/m406Dll.h" +#ifndef __MWERKS__ +#include +#endif + typedef struct UnkM406Struct { /* 0x00 */ u8 unk_00; /* 0x01 */ u8 unk_01; @@ -222,7 +226,7 @@ void fn_1_D488(float arg8, Vec *arg0, Vec *arg1, Vec *arg2); void fn_1_D518(Mtx arg0, Vec *arg1); float fn_1_D5CC(Vec *arg0, Vec *arg1, float arg8, float arg9); -extern u32 GlobalCounter; +SHARED_SYM extern u32 GlobalCounter; Vec lbl_1_data_F0[0x46] = { { -495.876f, 50.005f, -0.0f }, @@ -455,7 +459,7 @@ UnkM406Struct5 lbl_1_bss_48; Vec lbl_1_bss_3C; s32 lbl_1_bss_30[3]; -extern LightData Hu3DLocalLight[0x20]; +SHARED_SYM extern LightData Hu3DLocalLight[0x20]; omObjData *fn_1_2308(Process *arg0) { @@ -1250,7 +1254,11 @@ void fn_1_4964(ModelData *arg0) fn_1_71C4(spC4, spA0, 100.0f + (50.0f * (0.007874016f * (frand() & 0x7F))), -0.1f, sp3C); } var_r29 = var_r30->unk_2C; +#ifdef NON_MATCHING + memset(&lbl_1_bss_48, 0, sizeof(UnkM406Struct5)); +#else memset(lbl_1_bss_48, 0, sizeof(UnkM406Struct5)); +#endif for (var_r27 = 0; var_r27 < 105; var_r27++, var_r29++) { fn_1_D488(var_r29->unk_04, &var_r30->unk_84[var_r29->unk_00], &var_r30->unk_84[var_r29->unk_00 + 1], &var_r29->unk_18); if (var_r29->unk_08 >= 0) { @@ -2946,13 +2954,13 @@ void fn_1_BC18(ModelData *arg0, float (*arg1)[4]) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, var_r31->unk_40, 0xC); + GXSETARRAY(GX_VA_POS, var_r31->unk_40, var_r31->unk_26 * sizeof(Vec) * 4, sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, 0x44); + GXSETARRAY(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, sizeof(GXColor), 0x44); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, var_r31->unk_44, 8); + GXSETARRAY(GX_VA_TEX0, var_r31->unk_44, var_r31->unk_26 * sizeof(Vec2f) * 4, sizeof(Vec2f)); if (HmfInverseMtxF3X3(arg1, sp128) == 0) { MTXIdentity(sp128); } @@ -3162,10 +3170,10 @@ void fn_1_C86C(ModelData *arg0, Mtx arg1) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, var_r31->unk_40, sizeof(Vec)); + GXSETARRAY(GX_VA_POS, var_r31->unk_40, var_r31->unk_26 * sizeof(Vec) * 4, sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, 0x44); + GXSETARRAY(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, sizeof(GXColor), 0x44); if (HmfInverseMtxF3X3(arg1, sp9C) == 0) { MTXIdentity(sp9C); } diff --git a/src/REL/m407dll/whomp.c b/src/REL/m407dll/whomp.c index 43275f60..a46bd72a 100644 --- a/src/REL/m407dll/whomp.c +++ b/src/REL/m407dll/whomp.c @@ -74,7 +74,6 @@ ObjFuncs lbl_1_data_258[] = { void fn_1_2354(Process *arg0) { - Process *sp8; u32 i; u32 j; @@ -123,7 +122,7 @@ void fn_1_2564(void) void fn_1_25C0(void) { - u32 i, j; + u32 i; lbl_1_bss_38 = 0; @@ -371,7 +370,7 @@ void fn_1_31F8(omObjData *arg0) } } -void fn_1_3360(omObjData *) { } +void fn_1_3360(omObjData *arg0) { } void fn_1_3364(omObjData *arg0) { diff --git a/src/REL/m408Dll/stage.c b/src/REL/m408Dll/stage.c index 12c93d3d..dd3ed9a4 100644 --- a/src/REL/m408Dll/stage.c +++ b/src/REL/m408Dll/stage.c @@ -1042,7 +1042,7 @@ void fn_1_10484(UnkFn10484 *arg0, HsfFace *arg1, HsfDrawData *arg2, GXColor *arg GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, temp_r30->data.vertex->data, sizeof(HsfVector3f)); + GXSETARRAY(GX_VA_POS, temp_r30->data.vertex->data, temp_r30->data.vertex->count * sizeof(HsfVector3f), sizeof(HsfVector3f)); if (temp_r25 & 0x2) { GXSetVtxDesc(GX_VA_NBT, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_S16, 8); @@ -1050,15 +1050,15 @@ void fn_1_10484(UnkFn10484 *arg0, HsfFace *arg1, HsfDrawData *arg2, GXColor *arg else { GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); - GXSetArray(GX_VA_NRM, temp_r30->data.normal->data, sizeof(HsfVector3f)); + GXSETARRAY(GX_VA_NRM, temp_r30->data.normal->data, temp_r30->data.vertex->count * sizeof(HsfVector3f), sizeof(HsfVector3f)); } GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, temp_r30->data.st->data, sizeof(HsfVector2f)); + GXSETARRAY(GX_VA_TEX0, temp_r30->data.st->data, temp_r30->data.vertex->count * sizeof(HsfVector2f), sizeof(HsfVector2f)); if (temp_r25 & 0x4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, arg3, sizeof(GXColor)); + GXSETARRAY(GX_VA_CLR0, arg3, arg0->unk4->data.color->count * sizeof(GXColor), sizeof(GXColor)); } GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); GXSetZCompLoc(GX_FALSE); @@ -1150,7 +1150,7 @@ void fn_1_10830(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3) GXSetTevColor(reg, color_var); \ } -extern u32 texMtxTbl[]; +SHARED_SYM extern u32 texMtxTbl[]; void fn_1_10B60(UnkFn10484 *arg0, HsfMaterial *arg1) { diff --git a/src/REL/m409Dll/cursor.c b/src/REL/m409Dll/cursor.c index 76fbe60a..84f6f5d6 100644 --- a/src/REL/m409Dll/cursor.c +++ b/src/REL/m409Dll/cursor.c @@ -6,8 +6,7 @@ void fn_1_BF88(s16 arg0, s16 arg1) { - s32 var_r31; - s32 var_r31_2; + s32 i; unkStruct8 *var_r29; unkStruct9Sub *var_r30; @@ -20,11 +19,11 @@ void fn_1_BF88(s16 arg0, s16 arg1) var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkStruct9Sub), MEMORY_DEFAULT_NUM); lbl_1_bss_F0.unkC = var_r30; - for (var_r31 = 0; var_r31 < arg0; var_r31++, var_r29++) { + for (i = 0; i < arg0; i++, var_r29++) { var_r29->unk8 = 0; } - for (var_r31 = 0; var_r31 < arg1; var_r31++, var_r30++) { + for (i = 0; i < arg1; i++, var_r30++) { var_r30->unk6 = 0; var_r30->unk8 = 0; } @@ -48,7 +47,7 @@ void fn_1_C0C0(void) Hu3DModelKill(lbl_1_bss_F0.unk4); } -extern u8 texMtxTbl[]; +SHARED_SYM extern u8 texMtxTbl[]; void fn_1_C164(unkStruct8 *arg0) { @@ -214,18 +213,18 @@ void fn_1_C164(unkStruct8 *arg0) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, var_r31->unk40, 12); + GXSETARRAY(GX_VA_POS, var_r31->unk40, sizeof(Vec[4]), sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, var_r31->unk44, 4); + GXSETARRAY(GX_VA_CLR0, var_r31->unk44, sizeof(GXColor[4]), sizeof(GXColor)); for (var_r26 = 0; var_r26 < var_r31->unk32; var_r26++) { GXSetVtxDesc(var_r26 + GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, var_r26 + GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(var_r26 + GX_VA_TEX0, var_r31->unk54[var_r26].unk4, 8); + GXSETARRAY(var_r26 + GX_VA_TEX0, var_r31->unk54[var_r26].unk4, sizeof(HsfVector2f[4]), sizeof(HsfVector2f)); } GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); - GXSetArray(GX_VA_NRM, var_r31->unk48, 12); + GXSETARRAY(GX_VA_NRM, var_r31->unk48, sizeof(Vec), sizeof(Vec)); GXCallDisplayList(var_r31->unk3C, var_r31->unk38); } } @@ -745,7 +744,7 @@ s32 fn_1_E2A8(s16 arg0, u8 arg1, u32 arg2, s16 arg3, s16 arg4) } temp_f30 = temp_r30->unk50; temp_f31 = temp_r30->unk4E; - var_r29 = var_r28->unk40 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x30, MEMORY_DEFAULT_NUM); + var_r29 = var_r28->unk40 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct11), MEMORY_DEFAULT_NUM); for (var_r25 = 0; var_r25 < 1; var_r29++, var_r25++) { var_r29->unk0.x = (-0.5f * temp_f31); diff --git a/src/REL/m409Dll/main.c b/src/REL/m409Dll/main.c index 9913f787..f53e7612 100644 --- a/src/REL/m409Dll/main.c +++ b/src/REL/m409Dll/main.c @@ -212,12 +212,7 @@ void fn_1_DDC(omObjData *object) void fn_1_F70(omObjData *object) { - s16 *sp8; - s16 temp_r3; - s16 temp_r3_2; - s32 var_r31; - - sp8 = (s16 *)object->data; + s16 *sp8 = (s16 *)object->data; switch (fn_1_2454(7)) { case 1: if (lbl_1_bss_6 == 0) { @@ -225,10 +220,11 @@ void fn_1_F70(omObjData *object) WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 0x3C); } if (WipeStatGet() == 0) { + s32 i; fn_1_2414(7, 2); - for (var_r31 = 0; var_r31 < 4; var_r31++) { - omVibrate(var_r31, 0xC8, 6, 6); + for (i = 0; i < 4; i++) { + omVibrate(i, 0xC8, 6, 6); } } break; @@ -382,13 +378,7 @@ s8 fn_1_10E8(omObjData *object) s8 fn_1_1B74(omObjData *object) { - f32 temp_f30; - f32 temp_f31; - s16 temp_r27; - s32 temp_r28; - unkStruct4 *temp_r30; - - temp_r30 = (unkStruct4 *)object->data; + unkStruct4 *temp_r30 = object->data; switch (lbl_1_bss_8) { case 0: temp_r30->unk2 = MGSeqCreate(3, 1); @@ -440,14 +430,12 @@ s8 fn_1_1B74(omObjData *object) void fn_1_2098(omObjData *object) { - ModelData *temp_r31; f32 var_f28; f32 var_f29; f32 var_f31; f32 var_f30; - s32 var_r30; - temp_r31 = &Hu3DData[lbl_1_bss_DC->model[4]]; + ModelData *temp_r31 = &Hu3DData[lbl_1_bss_DC->model[4]]; if (fn_1_2454(0x18) != 0x18) { lbl_1_bss_18 += 0.008f; if (lbl_1_bss_18 >= 1.0f) { @@ -584,10 +572,6 @@ void fn_1_2484(omObjData *object) void fn_1_2DCC(omObjData *object) { - u16 spE; - u16 spC; - u16 spA; - u16 sp8; ModelData *temp_r30; f32 temp_f29; f32 var_f31; @@ -597,8 +581,6 @@ void fn_1_2DCC(omObjData *object) s16 var_r28; s16 var_r27; s16 var_r29; - s32 temp_r16; - s16 var_r18; unkStruct4 *var_r31; if ((lbl_1_bss_24.unk0 == 0) || (fn_1_2454(0x18) == 0x18)) { @@ -991,7 +973,6 @@ void fn_1_4FFC(s16 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4) Vec sp2C; Vec sp20; GXColor sp1A; - s16 sp18; f32 temp_f31; s16 var_r30; unkStruct5 *temp_r31; @@ -1179,7 +1160,6 @@ unkStruct5 *fn_1_58E0(s16 arg0, Vec *arg1, Vec *arg2, f32 arg3, GXColor *arg4) s16 fn_1_5A18(AnimData *arg0, s16 arg1, f32 arg8, s16 arg2, s16 arg3) { ModelData *temp_r28; - f32 temp_f0; s16 var_r21; s16 var_r22; s16 var_r30; @@ -1377,13 +1357,13 @@ void fn_1_602C(ModelData *arg0, f32 (*arg1)[4]) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, temp_r30->unk1C, 12); + GXSETARRAY(GX_VA_POS, temp_r30->unk1C, temp_r30->unk0 * sizeof(Vec) * 4, sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, temp_r30->unk24, 4); + GXSETARRAY(GX_VA_CLR0, temp_r30->unk24, temp_r30->unk0 * sizeof(GXColor), sizeof(GXColor)); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, temp_r30->unk20, 8); + GXSETARRAY(GX_VA_TEX0, temp_r30->unk20, temp_r30->unk0 * sizeof(Vec2f) * 4, sizeof(Vec2f)); fn_1_40A4(arg1, sp128); MTXReorder(sp128, spF8); if (((u8)omPauseChk() == 0) && (temp_r30->unkC)) { diff --git a/src/REL/m409Dll/player.c b/src/REL/m409Dll/player.c index ed75457f..c6645d8b 100644 --- a/src/REL/m409Dll/player.c +++ b/src/REL/m409Dll/player.c @@ -174,17 +174,11 @@ void fn_1_7344(omObjData *arg0) f32 temp_f28; f32 temp_f29; f32 temp_f30; - f32 var_f25; - f32 var_f26; - f32 var_f27; f32 var_f31; - s16 temp_r0; s32 temp_r19; s16 temp_r22; s16 temp_r26; s16 temp_r25; - s16 var_r20; - s16 var_r21; s16 var_r27; s16 var_r28; s32 var_r24; @@ -379,23 +373,15 @@ void fn_1_7FE8(omObjData *arg0) { Vec sp20; Vec sp14; - s32 sp10; - f32 spC; - s16 sp8; unkStruct10 *var_r30; unkStruct8Sub *temp_r29; - f32 temp_f0; - f32 temp_f0_2; - f32 temp_f1; f32 temp_f29; f32 temp_f30; - f32 var_f28; s32 var_r28; - unkStruct7 *temp_r31; - temp_r31 = (unkStruct7 *)arg0->data; - sp10 = arg0->model[0]; - sp8 = temp_r31->unk1C; + unkStruct7 *temp_r31 = (unkStruct7 *)arg0->data; + s32 sp10 = arg0->model[0]; + s16 sp8 = temp_r31->unk1C; temp_r31->unkE = temp_r31->unk10 = 0; temp_r29 = fn_1_CCCC(temp_r31->unk57, 0); sp20.x = sp20.y = sp20.z = 0.0f; @@ -1023,10 +1009,8 @@ s32 fn_1_A584(unkStruct10 *arg0) s8 fn_1_A9C0(Vec *arg0, f32 *arg1) { - f32 sp8; f32 temp_f29; f32 var_f30; - f32 var_f28; s32 var_r27; s32 var_r29; unkStruct10 *var_r31; @@ -1080,8 +1064,6 @@ void fn_1_AC08(s32 *arg0, s32 arg1) f32 fn_1_AD40(f32 arg0, f32 arg1, f32 arg2) { f32 var_f31; - f32 var_f30; - f32 var_f29; var_f31 = fmodf(arg1 - arg0, 360.0); if (var_f31 < 0.0f) { diff --git a/src/REL/m410Dll/game.c b/src/REL/m410Dll/game.c index 5d9671c5..e481e654 100644 --- a/src/REL/m410Dll/game.c +++ b/src/REL/m410Dll/game.c @@ -535,7 +535,6 @@ float fn_1_4FEC(Vec arg0, Vec arg1, float arg8, Vec arg2, Vec arg3, float arg9, float sp2C; float var_f28; - float var_f26; float var_f25; float var_f24; float var_f23; @@ -777,19 +776,6 @@ void fn_1_61DC(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1) Vec sp68; Vec sp5C; Vec sp50; - Vec sp44; - Vec sp38; - Vec sp2C; - Vec sp20; - Vec sp14; - Vec sp8; - - Vec *var_r29; - Vec *var_r28; - Vec *var_r27; - Vec *var_r26; - Vec *var_r25; - Vec *var_r24; if (arg0->unk_00_field1 || arg1->unk_00_field1) { if (arg0->unk_00_field1) { diff --git a/src/REL/m410Dll/main.c b/src/REL/m410Dll/main.c index e6855848..9ded1e40 100644 --- a/src/REL/m410Dll/main.c +++ b/src/REL/m410Dll/main.c @@ -8,6 +8,8 @@ #include "REL/m410Dll.h" +#include + Process *lbl_1_bss_28; omObjData *lbl_1_bss_24; omObjData *lbl_1_bss_20; @@ -223,11 +225,7 @@ void fn_1_DEC(omObjData *object) void fn_1_FF0(omObjData *object) { - void *var_r31; - UnkM410Struct *var_r29; - void *var_r28; - - var_r29 = object->data; + UnkM410Struct *var_r29 = object->data; fn_1_5A8(object); switch (var_r29->unk_14) { @@ -265,11 +263,8 @@ void fn_1_FF0(omObjData *object) void fn_1_139C(omObjData *object) { - UnkM410Struct *var_r29; - s32 var_r27; - - var_r29 = object->data; - var_r27 = 0; + UnkM410Struct *var_r29 = object->data; + s32 var_r27 = 0; fn_1_5A8(object); if (!--var_r29->unk_20) { @@ -470,9 +465,6 @@ s32 fn_1_28DC(void) void fn_1_2914(Vec *arg0, Vec *arg1) { Vec sp10; - float var_f29; - float var_f28; - float var_f27; sp10.x = arg1->x - arg0->x; sp10.y = arg1->y - arg0->y; diff --git a/src/REL/m410Dll/player.c b/src/REL/m410Dll/player.c index f84d75ca..0d253d0f 100644 --- a/src/REL/m410Dll/player.c +++ b/src/REL/m410Dll/player.c @@ -259,14 +259,8 @@ void fn_1_8414(omObjData *object) void fn_1_8678(omObjData *object) { - float var_f31; - float var_f30; - float var_f29; - UnkM410Struct5 *var_r31; - s32 var_r29; - - var_r31 = object->data; - var_r29 = 0; + UnkM410Struct5 *var_r31 = object->data; + s32 var_r29 = 0; var_r31->unk_10 = 0; if (fn_1_281C() == 2) { var_r31->unk_10 = HuPadBtnDown[GWPlayerCfg[object->work[0]].pad_idx]; @@ -465,8 +459,6 @@ void fn_1_9040(omObjData *object) Mtx sp38; Vec sp2C; Vec sp20; - Vec sp14; - Vec sp8; float var_f31; float var_f30; @@ -475,18 +467,11 @@ void fn_1_9040(omObjData *object) float var_f27; float var_f26; float var_f25; - float var_f24; - float var_f23; - float var_f22; - double var_f21; - double var_f20; UnkM410Struct5 *var_r31; s32 var_r29; s32 var_r28; s16 var_r27; - Vec *var_r26; - Vec *var_r25; var_r31 = object->data; fn_1_79F8(object->model[0], lbl_1_data_16C[var_r31->unk_08], sp38); @@ -1117,9 +1102,9 @@ void fn_1_B140(ModelData *arg0, Mtx arg1) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_POS, var_r30->unk_120.unk_1C0, 12); - GXSetArray(GX_VA_CLR0, var_r30->unk_120.unk_E40, 4); - GXSetArray(GX_VA_TEX0, var_r30->unk_120.unk_940, 8); + GXSETARRAY(GX_VA_POS, var_r30->unk_120.unk_1C0, sizeof(var_r30->unk_120.unk_1C0), sizeof(Vec)); + GXSETARRAY(GX_VA_CLR0, var_r30->unk_120.unk_E40, sizeof(var_r30->unk_120.unk_E40), sizeof(GXColor)); + GXSETARRAY(GX_VA_TEX0, var_r30->unk_120.unk_940, sizeof(var_r30->unk_120.unk_940), sizeof(Vec2f)); var_r31 = var_r30->unk_120.unk_00; for (var_r29 = 0; var_r29 < 16; var_r29++, var_r31++) { diff --git a/src/REL/m411Dll/main.c b/src/REL/m411Dll/main.c index c99ccbca..d33b3e11 100755 --- a/src/REL/m411Dll/main.c +++ b/src/REL/m411Dll/main.c @@ -377,7 +377,7 @@ void fn_1_1074(void) CameraData *var_r31; var_r31 = &Hu3DCamera[0]; - C_MTXPerspective(sp64, var_r31->fov, var_r31->aspect, var_r31->near, var_r31->far); + C_MTXPerspective(sp64, var_r31->fov, var_r31->aspect, var_r31->nnear, var_r31->ffar); GXSetProjection(sp64, GX_PERSPECTIVE); GXSetViewport(0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); GXSetScissor(0, 0, 640, 480); diff --git a/src/REL/m412Dll/main.c b/src/REL/m412Dll/main.c index 8f153855..11c400d3 100644 --- a/src/REL/m412Dll/main.c +++ b/src/REL/m412Dll/main.c @@ -569,8 +569,6 @@ void fn_1_2064(void) Vec sp28; Vec sp1C; Vec sp10; - f32 spC; - f32 sp8; Process *temp_r26; s32 var_r30; unkStruct *temp_r28; @@ -701,10 +699,6 @@ s32 fn_1_2708(void) f32 fn_1_27C4(s32 arg0, f32 arg8, f32 arg9) { f32 temp_f31; - f32 var_f25; - f32 var_f26; - f32 var_f27; - f32 var_f28; f32 var_f29; temp_f31 = arg8 - fn_1_1D08(arg9); @@ -922,18 +916,11 @@ void fn_1_3950(void) f32 sp5C; volatile f32 sp58; f32 sp54; - f32 temp_f27; f32 var_f29; f32 temp_f31; f32 temp_f30; f32 var_f18; - f32 var_f19; - f32 var_f20; - f32 var_f21; - f32 var_f22; - f32 var_f23; f32 var_f24; - s32 var_r28; s32 var_r24; s32 var_r25; s32 var_r29; @@ -1269,9 +1256,6 @@ void fn_1_5838(unkStruct3 *arg0) Vec spA8; Vec sp9C; Vec sp90; - Vec sp84; - Vec sp78; - Vec sp6C; s32 sp68; f32 sp64; f32 sp60; @@ -1593,13 +1577,6 @@ void fn_1_6814(unkStruct3 *arg0) void fn_1_7C60(void) { Vec sp1A0; - Vec sp188; - Vec sp17C; - Vec sp170; - Vec sp164; - Vec sp158; - Vec sp14C; - Vec sp140; f32 sp13C; f32 sp138; f32 sp134; @@ -2020,8 +1997,6 @@ void fn_1_AA88(ModelData *model, ParticleData *particle, f32 (*matrix)[4]) void fn_1_ADC8(void) { - Vec sp14; - Vec sp8; f32 var_f31; void *temp_r28; Process *var_r29; diff --git a/src/REL/m413Dll/main.c b/src/REL/m413Dll/main.c index 718bf09c..4325a00c 100644 --- a/src/REL/m413Dll/main.c +++ b/src/REL/m413Dll/main.c @@ -19,7 +19,7 @@ #include "game/hsfex.h" #endif -s32 rand8(void); +extern s32 rand8(void); typedef struct struct_bss_2A6C StructBss2A6C; @@ -2011,7 +2011,11 @@ void fn_1_C6E0(omObjData *object) lbl_1_bss_FC = 0; memset(lbl_1_bss_D4, 0, sizeof(lbl_1_bss_D4)); lbl_1_bss_D0 = 0; +#ifdef NON_MATCHING + memset(&lbl_1_bss_B8, 0, sizeof(lbl_1_bss_B8)); +#else memset(lbl_1_bss_B8, 0, sizeof(lbl_1_bss_B8)); +#endif object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M413, 0x00)); omSetTra(object, 0, 0, 0); Hu3DMotionSpeedSet(object->model[0], 0); diff --git a/src/REL/m415Dll/main.c b/src/REL/m415Dll/main.c index 2053aed7..9d901a01 100644 --- a/src/REL/m415Dll/main.c +++ b/src/REL/m415Dll/main.c @@ -421,8 +421,11 @@ void fn_1_1960(omObjData *object) GXDrawDone(); temp_r3 = fn_1_9734(object->model[2]); temp_r29 = Hu3DShadowData.unk_02 * Hu3DShadowData.unk_02; +#ifdef __MWERKS__ + // TODO PC memcpy((*temp_r3)->bmp->data, OSCachedToUncached(Hu3DShadowData.unk_04), temp_r29); - DCStoreRangeNoSync((*temp_r3)->bmp->data, temp_r29); +#endif + DCStoreRangeNoSync((*temp_r3)->bmp->data, temp_r29); break; case 2: Hu3DModelShadowMapObjSet(object->model[0], "kyanbasu"); diff --git a/src/REL/m415Dll/map.c b/src/REL/m415Dll/map.c index 6533a2dc..71e10e28 100644 --- a/src/REL/m415Dll/map.c +++ b/src/REL/m415Dll/map.c @@ -241,19 +241,19 @@ void fn_1_88B8(unkSubStruct2 *arg0) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, var_r31->unk40, 12); + GXSETARRAY(GX_VA_POS, var_r31->unk40, 4 * sizeof(Vec), sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, var_r31->unk44, 4); + GXSETARRAY(GX_VA_CLR0, var_r31->unk44, 4 * sizeof(GXColor), sizeof(GXColor)); for (var_r27 = 0; var_r27 < var_r31->unk33; var_r27++) { GXSetVtxDesc(var_r27 + GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, var_r27 + GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(var_r27 + GX_VA_TEX0, var_r31->unk54[var_r27].unk4, 8); + GXSETARRAY(var_r27 + GX_VA_TEX0, var_r31->unk54[var_r27].unk4, 4 * sizeof(HsfVector2f), 8); } GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); - GXSetArray(GX_VA_NRM, var_r31->unk48, 12); + GXSETARRAY(GX_VA_NRM, var_r31->unk48, sizeof(Vec), sizeof(Vec)); GXCallDisplayList(var_r31->unk3C, var_r31->unk38); } } diff --git a/src/REL/m417Dll/water.c b/src/REL/m417Dll/water.c index e32b89f8..aa5ba830 100644 --- a/src/REL/m417Dll/water.c +++ b/src/REL/m417Dll/water.c @@ -305,7 +305,7 @@ void fn_1_3D58(omObjData *object) for (var_r31 = 0; var_r31 < 2; var_r31++) { lbl_1_bss_178.unk_6BC[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, 30 * 36 * sizeof(Vec), MEMORY_DEFAULT_NUM); lbl_1_bss_178.unk_6C4[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, 30 * 36 * sizeof(Vec), MEMORY_DEFAULT_NUM); - lbl_1_bss_178.unk_6CC[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, 1080 * sizeof(GXColor), MEMORY_DEFAULT_NUM); + lbl_1_bss_178.unk_6CC[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, 30 * 36 * sizeof(GXColor), MEMORY_DEFAULT_NUM); lbl_1_bss_178.unk_6D4[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, 30 * 36 * sizeof(Vec2f), MEMORY_DEFAULT_NUM); lbl_1_bss_178.unk_6E0[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_178.unk_6DC, MEMORY_DEFAULT_NUM); DCFlushRange(lbl_1_bss_178.unk_6E0[var_r31], lbl_1_bss_178.unk_6DC); @@ -856,10 +856,10 @@ void fn_1_604C(ModelData *arg0, Mtx arg1) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_POS, lbl_1_bss_178.unk_6BC[lbl_1_bss_178.unk_6B4], 12); - GXSetArray(GX_VA_NRM, lbl_1_bss_178.unk_6C4[lbl_1_bss_178.unk_6B4], 12); - GXSetArray(GX_VA_CLR0, lbl_1_bss_178.unk_6CC[lbl_1_bss_178.unk_6B4], 4); - GXSetArray(GX_VA_TEX0, lbl_1_bss_178.unk_6D4[lbl_1_bss_178.unk_6B4], 8); + GXSETARRAY(GX_VA_POS, lbl_1_bss_178.unk_6BC[lbl_1_bss_178.unk_6B4], 30 * 36 * sizeof(Vec), sizeof(Vec)); + GXSETARRAY(GX_VA_NRM, lbl_1_bss_178.unk_6C4[lbl_1_bss_178.unk_6B4], 30 * 36 * sizeof(Vec), sizeof(Vec)); + GXSETARRAY(GX_VA_CLR0, lbl_1_bss_178.unk_6CC[lbl_1_bss_178.unk_6B4], 30 * 36 * sizeof(GXColor), sizeof(GXColor)); + GXSETARRAY(GX_VA_TEX0, lbl_1_bss_178.unk_6D4[lbl_1_bss_178.unk_6B4], 30 * 36 * sizeof(Vec2f), sizeof(Vec2f)); GXCallDisplayList(lbl_1_bss_178.unk_6E0[0], lbl_1_bss_178.unk_6E8[0]); GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); diff --git a/src/REL/m418Dll/main.c b/src/REL/m418Dll/main.c index 38b547ca..361b1c98 100644 --- a/src/REL/m418Dll/main.c +++ b/src/REL/m418Dll/main.c @@ -2857,7 +2857,9 @@ void fn_1_9F94(omObjData *object) object->func = fn_1_9BA4; } +#ifdef __MWERKS__ #include "src/REL/executor.c" +#endif void fn_1_A1F0(void) { diff --git a/src/REL/m421Dll/player.c b/src/REL/m421Dll/player.c index db7f98ee..ae99233f 100644 --- a/src/REL/m421Dll/player.c +++ b/src/REL/m421Dll/player.c @@ -1800,8 +1800,8 @@ void fn_1_ABDC(ModelData *model, Mtx matrix) MTXConcat(sp58, sp88, sp118); MTXConcat(spB8, sp118, spE8); GXLoadTexMtxImm(spE8, 0x1E, GX_MTX3x4); - GXSetArray(GX_VA_POS, work->unk_50[var_r28], 0xC); - GXSetArray(GX_VA_CLR0, &work->unk_40[var_r28], 4); + GXSETARRAY(GX_VA_POS, work->unk_50[var_r28], 14 * sizeof(Vec), sizeof(Vec)); + GXSETARRAY(GX_VA_CLR0, &work->unk_40[var_r28], sizeof(GXColor), sizeof(GXColor)); GXBegin(GX_TRIANGLEFAN, GX_VTXFMT0, 0xE); GXPosition1x8(0); GXPosition1x8(0); @@ -1815,8 +1815,8 @@ void fn_1_ABDC(ModelData *model, Mtx matrix) MTXConcat(sp58, sp88, sp118); MTXConcat(spB8, sp118, spE8); GXLoadTexMtxImm(spE8, 0x1E, GX_MTX3x4); - GXSetArray(GX_VA_POS, work->unk_50[var_r28 + 1], 0xC); - GXSetArray(GX_VA_CLR0, &work->unk_40[var_r28], 4); + GXSETARRAY(GX_VA_POS, work->unk_50[var_r28 + 1], 14 * sizeof(Vec), sizeof(Vec)); + GXSETARRAY(GX_VA_CLR0, &work->unk_40[var_r28], sizeof(GXColor), sizeof(GXColor)); GXBegin(GX_TRIANGLEFAN, GX_VTXFMT0, 0xE); GXPosition1x8(0); GXPosition1x8(0); diff --git a/src/REL/m423Dll/main.c b/src/REL/m423Dll/main.c index 1432ff5c..73230752 100755 --- a/src/REL/m423Dll/main.c +++ b/src/REL/m423Dll/main.c @@ -19,7 +19,7 @@ #define frand7() (frand() & 0x7F) -extern u32 GlobalCounter; +SHARED_SYM extern u32 GlobalCounter; typedef struct { /* 0x00 */ s32 unk00; @@ -874,16 +874,16 @@ void fn_1_14A0(ModelData *arg0, Mtx arg1) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, lbl_1_data_29C, 12); + GXSETARRAY(GX_VA_POS, lbl_1_data_29C, sizeof(lbl_1_data_29C), sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, lbl_1_data_30C, 4); + GXSETARRAY(GX_VA_CLR0, lbl_1_data_30C, sizeof(lbl_1_data_30C), sizeof(GXColor)); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, lbl_1_data_2CC, 8); + GXSETARRAY(GX_VA_TEX0, lbl_1_data_2CC, sizeof(lbl_1_data_2CC), sizeof(Vec2f)); GXSetVtxDesc(GX_VA_TEX1, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX1, lbl_1_data_2EC, 8); + GXSETARRAY(GX_VA_TEX1, lbl_1_data_2EC, sizeof(lbl_1_data_2EC), sizeof(Vec2f)); GXBegin(GX_QUADS, GX_VTXFMT0, 4); for (i = 0; i < 4; i++) { GXPosition1x16(i); @@ -1255,8 +1255,8 @@ void fn_1_29BC(ModelData *arg0, Mtx arg1) DCFlushRangeNoSync(temp_r31->unk14, temp_r31->unk00 * sizeof(*temp_r31->unk14)); DCFlushRangeNoSync(temp_r31->unk1C, temp_r31->unk00 * sizeof(*temp_r31->unk1C)); PPCSync(); - GXSetArray(GX_VA_POS, temp_r31->unk14, sizeof(*temp_r31->unk14)); - GXSetArray(GX_VA_CLR0, temp_r31->unk1C, sizeof(*temp_r31->unk1C)); + GXSETARRAY(GX_VA_POS, temp_r31->unk14, temp_r31->unk00 * sizeof(*temp_r31->unk14), sizeof(*temp_r31->unk14)); + GXSETARRAY(GX_VA_CLR0, temp_r31->unk1C, temp_r31->unk00 * sizeof(*temp_r31->unk1C), sizeof(*temp_r31->unk1C)); GXCallDisplayList(temp_r31->unk38, temp_r31->unk34); } } @@ -4471,9 +4471,9 @@ void fn_1_EF44(ModelData *arg0, Mtx arg1) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_POS, temp_r30->unk20C, 12); - GXSetArray(GX_VA_CLR0, temp_r30->unk214, 4); - GXSetArray(GX_VA_TEX0, temp_r30->unk210, 8); + GXSETARRAY(GX_VA_POS, temp_r30->unk20C, 32 * sizeof(*temp_r30->unk20C), sizeof(Vec)); + GXSETARRAY(GX_VA_CLR0, temp_r30->unk214, 5 * sizeof(*temp_r30->unk214), sizeof(GXColor)); + GXSETARRAY(GX_VA_TEX0, temp_r30->unk210, 32 * sizeof(*temp_r30->unk210), sizeof(Vec2f)); var_r31 = temp_r30->unk00; for (i = 0; i < 16; i++, var_r31++) { if (var_r31->unk00 == 0) { @@ -4864,7 +4864,7 @@ void fn_1_10BC8(void) if (var_r31->fov <= 0.0f) { return; } - C_MTXPerspective(sp64, var_r31->fov, var_r31->aspect, var_r31->near, var_r31->far); + C_MTXPerspective(sp64, var_r31->fov, var_r31->aspect, var_r31->nnear, var_r31->ffar); GXSetProjection(sp64, GX_PERSPECTIVE); GXSetViewport(0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); GXSetScissor(0, 0, 640, 480); @@ -5227,13 +5227,13 @@ void fn_1_11900(ModelData *arg0, Mtx arg1) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, temp_r31->unk40, 12); + GXSETARRAY(GX_VA_POS, temp_r31->unk40, temp_r31->unk26 * sizeof(Vec) * 4, sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, &temp_r31->unk3C->unk44, 76); + GXSETARRAY(GX_VA_CLR0, &temp_r31->unk3C->unk44, sizeof(GXColor), 76); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, temp_r31->unk44, 8); + GXSETARRAY(GX_VA_TEX0, temp_r31->unk44, temp_r31->unk26 * sizeof(Vec2f) * 4, sizeof(Vec2f)); GXCallDisplayList(temp_r31->unk48, temp_r31->unk34); if (shadowModelDrawF == 0) { if (!(temp_r31->unk21 & 2)) { diff --git a/src/REL/m425Dll/main.c b/src/REL/m425Dll/main.c index 7d1a75d0..69e0b96f 100644 --- a/src/REL/m425Dll/main.c +++ b/src/REL/m425Dll/main.c @@ -27,7 +27,7 @@ #include "REL/m425Dll.h" -extern u8 texMtxTbl[]; // TODO maybe put in hsfdraw.h? +SHARED_SYM extern u8 texMtxTbl[]; // TODO maybe put in hsfdraw.h? typedef struct M425DllWork { u8 unk_00; @@ -1628,19 +1628,19 @@ void fn_1_5C20(ModelData *var_r27, Mtx sp8) GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, var_r26, GX_DF_CLAMP, GX_AF_SPOT); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, var_r31->unk_14, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSETARRAY(GX_VA_POS, var_r31->unk_14, var_r31->unk_2A * (4 * sizeof(Vec)), sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, var_r31->unk_18, 4); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSETARRAY(GX_VA_CLR0, var_r31->unk_18, var_r31->unk_2A * (4 * sizeof(GXColor)), sizeof(GXColor)); for (var_r29 = GX_TEXMAP0; var_r29 < (var_r31->unk_28 * var_r31->unk_2A); var_r29++) { GXSetVtxDesc(var_r29 + 0xD, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, var_r29 + 0xD, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(var_r29 + 0xD, var_r31->unk_2C[var_r29].unk_44, 8); + GXSetVtxAttrFmt(GX_VTXFMT0, var_r29 + 0xD, GX_TEX_ST, GX_F32, 0); + GXSETARRAY(var_r29 + 0xD, var_r31->unk_2C[var_r29].unk_44, var_r31->unk_2A * (4 * sizeof(Vec2f)), sizeof(Vec2f)); } GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0); - GXSetArray(GX_VA_NRM, var_r31->unk_1C, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSETARRAY(GX_VA_NRM, var_r31->unk_1C, var_r31->unk_2A * (4 * sizeof(Vec)), sizeof(Vec)); GXCallDisplayList(var_r31->unk_10, var_r31->unk_0C); } diff --git a/src/REL/m425Dll/thwomp.c b/src/REL/m425Dll/thwomp.c index 02278006..bb53d11a 100644 --- a/src/REL/m425Dll/thwomp.c +++ b/src/REL/m425Dll/thwomp.c @@ -26,8 +26,8 @@ #include "REL/m425Dll.h" -extern u32 GlobalCounter; -extern LightData Hu3DLocalLight[0x20]; +SHARED_SYM extern u32 GlobalCounter; +SHARED_SYM extern LightData Hu3DLocalLight[0x20]; typedef struct M425DllUnkStruct4 { s16 unk_00; @@ -431,24 +431,24 @@ s32 fn_1_6EC4(float var_f24, float sp8, s16 var_r22, s16 var_r24) var_r31->unk_10E = var_r24; var_r31->unk_110 = var_r31->unk_144[24] + var_r31->unk_112[24]; var_r31->unk_240 = 0x19; - var_r31->unk_178 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 2, var_r23->unk_48); - memset(var_r31->unk_178, 0, var_r31->unk_110 * 2); - var_r31->unk_17C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48); - memset(var_r31->unk_17C, 0, var_r31->unk_110 * 0xC); - var_r31->unk_180 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48); - memset(var_r31->unk_180, 0, var_r31->unk_110 * 0xC); - var_r31->unk_184 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 8, var_r23->unk_48); - memset(var_r31->unk_184, 0, var_r31->unk_110 * 8); - var_r31->unk_188 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48); - memset(var_r31->unk_188, 0, var_r31->unk_110 * 0xC); - var_r31->unk_18C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48); - memset(var_r31->unk_18C, 0, var_r31->unk_110 * 0xC); + var_r31->unk_178 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * sizeof(s16), var_r23->unk_48); + memset(var_r31->unk_178, 0, var_r31->unk_110 * sizeof(s16)); + var_r31->unk_17C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * sizeof(Vec), var_r23->unk_48); + memset(var_r31->unk_17C, 0, var_r31->unk_110 * sizeof(Vec)); + var_r31->unk_180 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * sizeof(Vec), var_r23->unk_48); + memset(var_r31->unk_180, 0, var_r31->unk_110 * sizeof(Vec)); + var_r31->unk_184 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * sizeof(Vec2f), var_r23->unk_48); + memset(var_r31->unk_184, 0, var_r31->unk_110 * sizeof(Vec2f)); + var_r31->unk_188 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * sizeof(Vec), var_r23->unk_48); + memset(var_r31->unk_188, 0, var_r31->unk_110 * sizeof(Vec)); + var_r31->unk_18C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * sizeof(Vec), var_r23->unk_48); + memset(var_r31->unk_18C, 0, var_r31->unk_110 * sizeof(Vec)); var_r31->unk_190 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 6, var_r23->unk_48); memset(var_r31->unk_190, 0, var_r31->unk_110 * 6); - var_r31->unk_194 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48); - memset(var_r31->unk_194, 0, var_r31->unk_110 * 0xC); - var_r31->unk_198 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_112[0] * 0xC, var_r23->unk_48); - memset(var_r31->unk_198, 0, var_r31->unk_112[0] * 0xC); + var_r31->unk_194 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * sizeof(Vec), var_r23->unk_48); + memset(var_r31->unk_194, 0, var_r31->unk_110 * sizeof(Vec)); + var_r31->unk_198 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_112[0] * sizeof(Vec), var_r23->unk_48); + memset(var_r31->unk_198, 0, var_r31->unk_112[0] * sizeof(Vec)); var_r31->unk_1A0 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110, var_r23->unk_48); memset(var_r31->unk_1A0, 0, var_r31->unk_110); for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { @@ -2135,16 +2135,16 @@ void fn_1_101C4(ModelData *var_r29, Mtx var_r28) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, var_r31->unk_180, 0xC); + GXSETARRAY(GX_VA_POS, var_r31->unk_180, var_r31->unk_110 * sizeof(Vec), sizeof(Vec)); GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); - GXSetArray(GX_VA_NRM, var_r31->unk_188, 0xC); + GXSETARRAY(GX_VA_NRM, var_r31->unk_188, var_r31->unk_110 * sizeof(Vec), sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, &var_r31->unk_23A, 4); + GXSETARRAY(GX_VA_CLR0, &var_r31->unk_23A, var_r31->unk_110 * sizeof(GXColor), sizeof(GXColor)); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA6, 0); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); - GXSetArray(GX_VA_TEX0, var_r31->unk_184, 8); + GXSETARRAY(GX_VA_TEX0, var_r31->unk_184, var_r31->unk_110 * sizeof(Vec2f), sizeof(Vec2f)); for (var_r30 = 0; var_r30 < var_r31->unk_240; var_r30++) { if (var_r31->unk_2A8[var_r30] && var_r31->unk_244[var_r30] != 0 && var_r30 != 1) { GXCallDisplayList(var_r31->unk_2A8[var_r30], var_r31->unk_244[var_r30]); @@ -2181,16 +2181,16 @@ void fn_1_101C4(ModelData *var_r29, Mtx var_r28) GXClearVtxDesc(); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetArray(GX_VA_POS, var_r31->unk_180, 0xC); + GXSETARRAY(GX_VA_POS, var_r31->unk_180, var_r31->unk_110 * sizeof(Vec), sizeof(Vec)); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0); GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); - GXSetArray(GX_VA_NRM, var_r31->unk_188, 0xC); + GXSETARRAY(GX_VA_NRM, var_r31->unk_188, var_r31->unk_110 * sizeof(Vec), sizeof(Vec)); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); - GXSetArray(GX_VA_CLR0, &var_r31->unk_23A, 4); + GXSETARRAY(GX_VA_CLR0, &var_r31->unk_23A, var_r31->unk_110 * sizeof(GXColor), sizeof(GXColor)); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); - GXSetArray(GX_VA_TEX0, var_r31->unk_184, 8); + GXSETARRAY(GX_VA_TEX0, var_r31->unk_184, var_r31->unk_110 * sizeof(Vec2f), sizeof(Vec2f)); if (var_r31->unk_2A8[1] && (var_r31->unk_244[1] != 0)) { GXCallDisplayList(var_r31->unk_2A8[1], var_r31->unk_244[1]); } @@ -2684,13 +2684,13 @@ void fn_1_11EE0(ModelData *var_r24, Mtx var_r21) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, var_r31->unk_40, 0xC); + GXSETARRAY(GX_VA_POS, var_r31->unk_40, var_r31->unk_24 * sizeof(Vec) * 4, sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, 0x44); + GXSETARRAY(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, sizeof(var_r31->unk_3C->unk_3C), 0x44); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_TEX0, var_r31->unk_44, 8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSETARRAY(GX_VA_TEX0, var_r31->unk_44, var_r31->unk_24 * sizeof(Vec2f) * 4, sizeof(Vec2f)); if (HmfInverseMtxF3X3(var_r21, sp128) == 0) { MTXIdentity(sp128); } @@ -2748,8 +2748,8 @@ void fn_1_11EE0(ModelData *var_r24, Mtx var_r21) } } } - DCFlushRangeNoSync(var_r31->unk_40, var_r31->unk_24 * 0xC * 4); - DCFlushRangeNoSync(var_r31->unk_44, var_r31->unk_24 * 8 * 4); + DCFlushRangeNoSync(var_r31->unk_40, var_r31->unk_24 * sizeof(Vec) * 4); + DCFlushRangeNoSync(var_r31->unk_44, var_r31->unk_24 * sizeof(Vec2f) * 4); PPCSync(); GXCallDisplayList(var_r31->unk_48, var_r31->unk_34); if (shadowModelDrawF == 0) { diff --git a/src/REL/m426Dll/main.c b/src/REL/m426Dll/main.c index 88ce4890..2433e3ac 100644 --- a/src/REL/m426Dll/main.c +++ b/src/REL/m426Dll/main.c @@ -265,7 +265,7 @@ void fn_1_DB8(omObjData *object); void fn_1_E18(omObjData *object); void fn_1_EB8(void); -extern u32 GlobalCounter; +SHARED_SYM extern u32 GlobalCounter; Vec lbl_1_data_0[4] = { { -600.0f, 0.0f, -285.0f }, @@ -3035,13 +3035,13 @@ void fn_1_80DC(ModelData *arg0, Mtx arg1) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, var_r31->unk_40, 12); + GXSETARRAY(GX_VA_POS, var_r31->unk_40, var_r31->unk_24 * sizeof(Vec) * 4, sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, 68); + GXSETARRAY(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, sizeof(var_r31->unk_3C->unk_3C), 68); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, var_r31->unk_44, 8); + GXSETARRAY(GX_VA_TEX0, var_r31->unk_44, var_r31->unk_24 * sizeof(Vec2f) * 4, sizeof(Vec2f)); if (!HmfInverseMtxF3X3(arg1, sp128)) { MTXIdentity(sp128); } @@ -3169,13 +3169,13 @@ void fn_1_88B4(ModelData *arg0, Mtx arg1) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, lbl_1_data_27C, 12); + GXSETARRAY(GX_VA_POS, lbl_1_data_27C, sizeof(lbl_1_data_27C), sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, lbl_1_data_2AC, 4); + GXSETARRAY(GX_VA_CLR0, lbl_1_data_2AC, sizeof(lbl_1_data_2AC), sizeof(GXColor)); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, lbl_1_data_2BC, 8); + GXSETARRAY(GX_VA_TEX0, lbl_1_data_2BC, sizeof(lbl_1_data_2BC), sizeof(Vec2f)); GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition1x16(0); diff --git a/src/REL/m427Dll/map.c b/src/REL/m427Dll/map.c index dc67c7c1..1f39ac50 100644 --- a/src/REL/m427Dll/map.c +++ b/src/REL/m427Dll/map.c @@ -18,7 +18,7 @@ #include "string.h" extern s32 rand8(void); -extern LightData Hu3DLocalLight[0x20]; +SHARED_SYM extern LightData Hu3DLocalLight[0x20]; #define FABS(value) ((value < 0) ? -(value) : (value)) @@ -837,7 +837,7 @@ void fn_1_510C(s32 arg0, s16 arg1, s16 arg2) var_r31->unk4 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec), temp_r28->unk_48); var_r31->unk8 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec2f), temp_r28->unk_48); var_r31->unkC = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec), temp_r28->unk_48); - var_r31->unk10 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec), temp_r28->unk_48); + var_r31->unk10 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * (3 * sizeof(GXColor)), temp_r28->unk_48); var_r31->unk1C = HuMemDirectMallocNum(HEAP_DATA, arg2 * (arg1 * sizeof(M427DllMapSubstruct5)), temp_r28->unk_48); var_r30 = var_r31->unk1C; var_r23 = var_r26 = HuMemDirectMallocNum(HEAP_DATA, 0x20000, temp_r28->unk_48); @@ -1013,13 +1013,13 @@ void fn_1_618C(ModelData *arg0, Mtx arg1) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, var_r31->unk4, 0xC); + GXSETARRAY(GX_VA_POS, var_r31->unk4, var_r31->unk14 * sizeof(Vec), sizeof(Vec)); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_TEX0, var_r31->unk8, 8); + GXSETARRAY(GX_VA_TEX0, var_r31->unk8, var_r31->unk14 * sizeof(Vec2f), sizeof(Vec2f)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, var_r31->unk10, 4); + GXSETARRAY(GX_VA_CLR0, var_r31->unk10, var_r31->unk14 * 3 * sizeof(GXColor), sizeof(GXColor)); GXInitTexObj(&sp14, var_r31->unk30, 0x280, 0x1E0, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, 0); GXInitTexObjLOD(&sp14, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1); GXLoadTexObj(&sp14, GX_TEXMAP0); @@ -1978,13 +1978,13 @@ void fn_1_9B88(ModelData *model, Mtx matrix) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, &var_r31->unkC, sizeof(Vec)); + GXSETARRAY(GX_VA_POS, &var_r31->unkC, sizeof(var_r31->unkC), sizeof(Vec)); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_TEX0, &var_r31->unk3C, sizeof(Vec2f)); + GXSETARRAY(GX_VA_TEX0, &var_r31->unk3C, sizeof(var_r31->unk3C), sizeof(Vec2f)); GXSetVtxDesc(GX_VA_TEX1, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_TEX1, var_r31->unk5C, sizeof(Vec2f)); + GXSETARRAY(GX_VA_TEX1, var_r31->unk5C, sizeof(var_r31->unk5C), sizeof(Vec2f)); HuSprTexLoad(var_r31->unk8, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); HuSprTexLoad(var_r26->unk_04, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); HuSprTexLoad(var_r26->unk_00, 0, 2, GX_REPEAT, GX_REPEAT, GX_LINEAR); @@ -2351,13 +2351,13 @@ void fn_1_B3CC(ModelData *model, Mtx matrix) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, var_r31->unk_2C, sizeof(Vec)); + GXSETARRAY(GX_VA_POS, var_r31->unk_2C, var_r31->unk_38 * sizeof(Vec), sizeof(Vec)); GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); - GXSetArray(GX_VA_NRM, var_r31->unk_34, sizeof(Vec)); + GXSETARRAY(GX_VA_NRM, var_r31->unk_34, var_r31->unk_38 * sizeof(Vec), sizeof(Vec)); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, var_r31->unk_30, 8); + GXSETARRAY(GX_VA_TEX0, var_r31->unk_30, var_r31->unk_38 * sizeof(Vec2f), sizeof(Vec2f)); if (var_r31->unk_00 == 0) { GXInitTexObj(&sp44, var_r27->unk4, 0x140, 0x1E0, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, 0); } @@ -3015,13 +3015,13 @@ void fn_1_DCD4(ModelData *model, Mtx matrix) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, var_r30->unk_1C, 0xC); + GXSETARRAY(GX_VA_POS, var_r30->unk_1C, var_r30->unk_00 * sizeof(Vec) * 4, sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, var_r30->unk_24, 4); + GXSETARRAY(GX_VA_CLR0, var_r30->unk_24, var_r30->unk_00 * sizeof(GXColor), sizeof(GXColor)); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, var_r30->unk_20, 8); + GXSETARRAY(GX_VA_TEX0, var_r30->unk_20, var_r30->unk_00 * sizeof(Vec2f) * 4, sizeof(Vec2f)); sp128[0][0] = matrix[0][0]; sp128[1][0] = matrix[0][1]; sp128[2][0] = matrix[0][2]; @@ -3057,20 +3057,20 @@ void fn_1_DCD4(ModelData *model, Mtx matrix) else { if (var_r29->unk_44 == 0.0f) { fn_1_E420(sp68, &sp38, &var_r29->unk_48, 4); - PSVECAdd(&sp38, &var_r29->unk_54, var_r31++); - PSVECAdd(&sp44, &var_r29->unk_54, var_r31++); - PSVECAdd(&sp50, &var_r29->unk_54, var_r31++); - PSVECAdd(&sp5C, &var_r29->unk_54, var_r31++); + VECAdd(&sp38, &var_r29->unk_54, var_r31++); + VECAdd(&sp44, &var_r29->unk_54, var_r31++); + VECAdd(&sp50, &var_r29->unk_54, var_r31++); + VECAdd(&sp5C, &var_r29->unk_54, var_r31++); } else { fn_1_E420(&var_r30->unk_2C, &sp38, &var_r29->unk_48, 4); MTXRotRad(spC8, 0x5A, MTXDegToRad(var_r29->unk_44)); MTXConcat(sp128, spC8, sp98); MTXMultVecArray(sp98, &sp38, &sp8, 4); - PSVECAdd(&sp8, &var_r29->unk_54, var_r31++); - PSVECAdd(&sp14, &var_r29->unk_54, var_r31++); - PSVECAdd(&sp20, &var_r29->unk_54, var_r31++); - PSVECAdd(&sp2C, &var_r29->unk_54, var_r31++); + VECAdd(&sp8, &var_r29->unk_54, var_r31++); + VECAdd(&sp14, &var_r29->unk_54, var_r31++); + VECAdd(&sp20, &var_r29->unk_54, var_r31++); + VECAdd(&sp2C, &var_r29->unk_54, var_r31++); } if (var_r29->unk_60 != -1) { fn_1_E37C(var_r26, var_r30->unk_5C, var_r29->unk_60, var_r30->unk_60, var_r30->unk_64); diff --git a/src/REL/m427Dll/player.c b/src/REL/m427Dll/player.c index b87789dd..77791864 100644 --- a/src/REL/m427Dll/player.c +++ b/src/REL/m427Dll/player.c @@ -1666,10 +1666,10 @@ void fn_1_13FBC(ModelData *model, Mtx matrix) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, lbl_1_data_260, sizeof(Vec)); + GXSETARRAY(GX_VA_POS, lbl_1_data_260, sizeof(lbl_1_data_260), sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, &lbl_1_data_648, sizeof(GXColor)); + GXSETARRAY(GX_VA_CLR0, &lbl_1_data_648, sizeof(lbl_1_data_648), sizeof(GXColor)); GXBegin(GX_LINESTRIP, GX_VTXFMT0, 0x1D); for (var_r29 = 0; var_r29 < 0x1DU; var_r29++) { GXPosition1x16(var_r29); @@ -1678,10 +1678,10 @@ void fn_1_13FBC(ModelData *model, Mtx matrix) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, &lbl_1_data_3BC, sizeof(Vec)); + GXSETARRAY(GX_VA_POS, &lbl_1_data_3BC, sizeof(lbl_1_data_3BC), sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, &lbl_1_data_648, sizeof(GXColor)); + GXSETARRAY(GX_VA_CLR0, &lbl_1_data_648, sizeof(lbl_1_data_648), sizeof(GXColor)); GXBegin(GX_LINESTRIP, GX_VTXFMT0, 0x1D); for (var_r29 = 0; var_r29 < 0x1DU; var_r29++) { GXPosition1x16(var_r29); @@ -1690,10 +1690,10 @@ void fn_1_13FBC(ModelData *model, Mtx matrix) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, lbl_1_bss_584, sizeof(Vec)); + GXSETARRAY(GX_VA_POS, lbl_1_bss_584, lbl_1_bss_580 * sizeof(Vec), sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, &lbl_1_data_650, sizeof(GXColor)); + GXSETARRAY(GX_VA_CLR0, &lbl_1_data_650, sizeof(lbl_1_data_650), sizeof(GXColor)); GXBegin(GX_LINESTRIP, GX_VTXFMT0, 0x1D); for (var_r29 = 0; var_r29 < lbl_1_bss_580; var_r29++) { GXPosition1x16(var_r29); diff --git a/src/REL/m428Dll/player.c b/src/REL/m428Dll/player.c index d9dcedb7..bcef87c9 100644 --- a/src/REL/m428Dll/player.c +++ b/src/REL/m428Dll/player.c @@ -239,7 +239,7 @@ s32 fn_1_F288(Vec *arg0, Vec *arg1, float arg8); s32 fn_1_F538(Vec *arg0, Vec *arg1, Vec *arg2, float arg8); s32 fn_1_FB8C(Vec *arg0, Vec *arg1, float arg8, s32 arg2, s32 arg3); -extern u32 GlobalCounter; +SHARED_SYM extern u32 GlobalCounter; Vec lbl_1_data_150[4] = { { -140.0f, -400.0f, 0.0f }, @@ -2120,7 +2120,7 @@ void fn_1_FE98(M428DllPlayerUnk120Struct *arg0) } } for (var_r29 = 0, var_r30 = arg0->unk_54; var_r29 < arg0->unk_02; var_r29++, var_r30++) { - PSVECSubtract(&var_r30->unk_08[0], &var_r30->unk_08[2], &sp24); + VECSubtract(&var_r30->unk_08[0], &var_r30->unk_08[2], &sp24); var_f30 = var_r30->unk_08[0].z; if ((sp8 = fn_1_F88C(&var_r30->unk_08[2], &sp24, &sp18)) != -1) { var_r30->unk_08[0] = sp18; @@ -2137,7 +2137,7 @@ void fn_1_FE98(M428DllPlayerUnk120Struct *arg0) } } -s32 lbl_1_data_694[2] = { 0xFFA040FF, 0xC8FFFF }; +GXColor lbl_1_data_694[2] = { { 0xFF, 0xA0, 0x40, 0xFF }, { 0x00, 0xC8, 0xFF, 0xFF } }; s16 lbl_1_data_69C[2] = { -0x10, 0x10 }; s16 lbl_1_data_6A0[2] = { 0x1A4, 0x60 }; Vec lbl_1_data_6A4[4] = { @@ -2181,10 +2181,10 @@ void fn_1_102A8(ModelData *model, Mtx matrix) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, var_r31->unk_54->unk_08, sizeof(M428DllPlayerUnkStruct)); + GXSETARRAY(GX_VA_POS, var_r31->unk_54->unk_08, sizeof(var_r31->unk_54->unk_08), sizeof(M428DllPlayerUnkStruct)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, &lbl_1_data_694[var_r31->unk_10], 4); + GXSETARRAY(GX_VA_CLR0, &lbl_1_data_694[var_r31->unk_10], sizeof(GXColor), sizeof(GXColor)); GXBegin(GX_LINESTRIP, GX_VTXFMT0, var_r31->unk_02); for (var_r30 = 0; var_r30 < var_r31->unk_02; var_r30++) { GXPosition1x16(var_r30); @@ -3182,13 +3182,13 @@ void fn_1_134C0(ModelData *var_r23, Mtx var_r22) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, var_r31->unk_40, sizeof(Vec)); + GXSETARRAY(GX_VA_POS, var_r31->unk_40, var_r31->unk_26 * sizeof(Vec) * 4, sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, &var_r31->unk_3C->unk_44, sizeof(M428DllPlayerUnkStruct2)); // bug? + GXSETARRAY(GX_VA_CLR0, &var_r31->unk_3C->unk_44, sizeof(GXColor), sizeof(M428DllPlayerUnkStruct2)); // bug? GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, var_r31->unk_44, sizeof(Vec2f)); + GXSETARRAY(GX_VA_TEX0, var_r31->unk_44, var_r31->unk_26 * sizeof(Vec2f) * 4, sizeof(Vec2f)); GXCallDisplayList(var_r31->unk_48, var_r31->unk_34); if (shadowModelDrawF == 0) { if ((var_r31->unk_21 & 2) == 0) { diff --git a/src/REL/m429Dll/main.c b/src/REL/m429Dll/main.c index 01040112..2ae49cb2 100644 --- a/src/REL/m429Dll/main.c +++ b/src/REL/m429Dll/main.c @@ -1323,7 +1323,9 @@ void fn_1_3DCC(Work8F68 *arg0) } } +#ifdef __MWERKS__ #include "src/REL/executor.c" +#endif void fn_1_40C0(Work8F68 *arg0, omObjData *arg1, s32 arg2) { diff --git a/src/REL/m430Dll/player.c b/src/REL/m430Dll/player.c index baa21d63..06e689f2 100644 --- a/src/REL/m430Dll/player.c +++ b/src/REL/m430Dll/player.c @@ -1493,11 +1493,11 @@ void fn_1_100A0(void) var_r31->unk_34 = var_r31->unk_38 = var_r31->unk_3C = 0.0f; var_r31->unk_40 = var_r31->unk_44 = var_r31->unk_48 = 1000.0f; var_r31->unk_58 = 0; - var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC0, MEMORY_DEFAULT_NUM); + var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, 16 * sizeof(Vec), MEMORY_DEFAULT_NUM); memset(var_r31->unk_4C, 0, 0xC0); - var_r31->unk_50 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC0, MEMORY_DEFAULT_NUM); + var_r31->unk_50 = HuMemDirectMallocNum(HEAP_SYSTEM, 16 * sizeof(Vec), MEMORY_DEFAULT_NUM); memset(var_r31->unk_50, 0, 0xC0); - var_r31->unk_54 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x80, MEMORY_DEFAULT_NUM); + var_r31->unk_54 = HuMemDirectMallocNum(HEAP_SYSTEM, 16 * sizeof(Vec2f), MEMORY_DEFAULT_NUM); memset(var_r31->unk_54, 0, 0x80); var_r30 = &Hu3DData[var_r31->unk_04]; var_r27 = HuMemDirectMallocNum(HEAP_DATA, 0x200, var_r30->unk_48); @@ -1639,14 +1639,14 @@ void fn_1_10948(ModelData *var_r29, Mtx var_r30) GXSetLineWidth(0x10, GX_TO_ZERO); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, var_r31->unk_50, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSETARRAY(GX_VA_POS, var_r31->unk_50, 16 * sizeof(Vec), sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, &lbl_1_data_308, 4); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSETARRAY(GX_VA_CLR0, &lbl_1_data_308, sizeof(lbl_1_data_308), sizeof(GXColor)); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_TEX0, var_r31->unk_54, 8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSETARRAY(GX_VA_TEX0, var_r31->unk_54, 16 * sizeof(Vec2f), sizeof(Vec2f)); GXCallDisplayList(var_r31->unk_60, var_r31->unk_5C); } diff --git a/src/REL/m430Dll/water.c b/src/REL/m430Dll/water.c index 999e3e3d..6b802aa2 100644 --- a/src/REL/m430Dll/water.c +++ b/src/REL/m430Dll/water.c @@ -1276,8 +1276,8 @@ void fn_1_8CE0(ModelData *model, Mtx matrix) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_POS, var_r31->unk_44[var_r31->unk_40], sizeof(Vec)); - GXSetArray(GX_VA_CLR0, var_r31->unk_54[var_r31->unk_40], sizeof(GXColor)); + GXSETARRAY(GX_VA_POS, var_r31->unk_44[var_r31->unk_40], 0x1B8 * sizeof(Vec), sizeof(Vec)); + GXSETARRAY(GX_VA_CLR0, var_r31->unk_54[var_r31->unk_40], 0x1B8 * sizeof(GXColor), sizeof(GXColor)); GXSetCullMode(GX_CULL_NONE); GXCallDisplayList(var_r31->unk_60, var_r31->unk_64); GXSetCullMode(GX_CULL_BACK); @@ -1372,8 +1372,8 @@ void fn_1_963C(ModelData *model, Mtx matrix, u32 var_r31) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_POS, lbl_1_data_60, sizeof(Vec)); - GXSetArray(GX_VA_CLR0, lbl_1_data_A8, sizeof(GXColor)); + GXSETARRAY(GX_VA_POS, lbl_1_data_60, sizeof(lbl_1_data_60), sizeof(Vec)); + GXSETARRAY(GX_VA_CLR0, lbl_1_data_A8, sizeof(lbl_1_data_A8), sizeof(GXColor)); GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); GXPosition1x8(0); GXColor1x8(3); @@ -1490,8 +1490,8 @@ void fn_1_9C90(ModelData *model, Mtx matrix) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_POS, lbl_1_data_C0, 0xC); - GXSetArray(GX_VA_CLR0, lbl_1_data_A8, 4); + GXSETARRAY(GX_VA_POS, lbl_1_data_C0, sizeof(lbl_1_data_C0), sizeof(Vec)); + GXSETARRAY(GX_VA_CLR0, lbl_1_data_A8, sizeof(lbl_1_data_A8), sizeof(GXColor)); GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 8); for (var_r30 = 0; var_r30 < 8; var_r30++) { GXPosition1x8(var_r30); @@ -1579,8 +1579,8 @@ void fn_1_A3A8(ModelData *model, Mtx matrix) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_POS, lbl_1_data_120, 0xC); - GXSetArray(GX_VA_CLR0, lbl_1_data_168, 4); + GXSETARRAY(GX_VA_POS, lbl_1_data_120, sizeof(lbl_1_data_120), sizeof(Vec)); + GXSETARRAY(GX_VA_CLR0, lbl_1_data_168, sizeof(lbl_1_data_168), sizeof(GXColor)); GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); GXPosition1x8(0); GXColor1x8(0); diff --git a/src/REL/m431Dll/main.c b/src/REL/m431Dll/main.c index 6244ca54..243604cf 100644 --- a/src/REL/m431Dll/main.c +++ b/src/REL/m431Dll/main.c @@ -2087,13 +2087,13 @@ void fn_1_72B4(ModelData *model, Mtx mtx) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, temp_r30->unk1C, sizeof(Vec)); + GXSETARRAY(GX_VA_POS, temp_r30->unk1C, temp_r30->unk0 * sizeof(Vec) * 4, sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, temp_r30->unk24, sizeof(GXColor)); + GXSETARRAY(GX_VA_CLR0, temp_r30->unk24, temp_r30->unk0 * sizeof(GXColor), sizeof(GXColor)); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, temp_r30->unk20, sizeof(HsfVector2f)); + GXSETARRAY(GX_VA_TEX0, temp_r30->unk20, temp_r30->unk0 * sizeof(HsfVector2f) * 4, sizeof(HsfVector2f)); fn_1_79FC(mtx, sp128); MTXReorder(sp128, spF8); if (!omPauseChk() && temp_r30->unkC) { diff --git a/src/REL/m432Dll/main.c b/src/REL/m432Dll/main.c index 038512c9..af6c4fe6 100644 --- a/src/REL/m432Dll/main.c +++ b/src/REL/m432Dll/main.c @@ -2238,7 +2238,9 @@ void fn_1_AF28(omObjData *object) fn_1_4ED8(&var_r31->unk_00, 0); } +#ifdef __MWERKS__ #include "src/REL/executor.c" +#endif void fn_1_B234(void) { diff --git a/src/REL/m434Dll/map.c b/src/REL/m434Dll/map.c index 79bb9202..d533a43f 100644 --- a/src/REL/m434Dll/map.c +++ b/src/REL/m434Dll/map.c @@ -342,7 +342,7 @@ void fn_1_2978(ModelData *model, Mtx mtx) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, lbl_1_bss_2868, sizeof(Vec)); + GXSETARRAY(GX_VA_POS, lbl_1_bss_2868, sizeof(lbl_1_bss_2868), sizeof(Vec)); GXSetCullMode(GX_CULL_BACK); GXCallDisplayList(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4); GXSetNumIndStages(0); diff --git a/src/REL/m435Dll/main.c b/src/REL/m435Dll/main.c index df551b13..5017ca2d 100755 --- a/src/REL/m435Dll/main.c +++ b/src/REL/m435Dll/main.c @@ -4252,7 +4252,9 @@ void fn_1_14760(omObjData* arg0) { arg0->func = fn_1_14384; } +#ifdef __MWERKS__ #include "src/REL/executor.c" +#endif void fn_1_14A54(void) { lbl_1_bss_0 = omInitObjMan(62, 0x2000); diff --git a/src/REL/m436Dll/main.c b/src/REL/m436Dll/main.c index 95440203..c53181f1 100755 --- a/src/REL/m436Dll/main.c +++ b/src/REL/m436Dll/main.c @@ -3280,7 +3280,9 @@ void fn_1_10670(omObjData *arg0) arg0->func = fn_1_1026C; } +#ifdef __MWERKS__ #include "src/REL/executor.c" +#endif void fn_1_108DC(void) { diff --git a/src/REL/m437Dll/main.c b/src/REL/m437Dll/main.c index 5ca6de46..56921de4 100755 --- a/src/REL/m437Dll/main.c +++ b/src/REL/m437Dll/main.c @@ -3443,7 +3443,9 @@ void fn_1_108A4(omObjData *arg0) arg0->func = fn_1_1043C; } +#ifdef __MWERKS__ #include "src/REL/executor.c" +#endif void fn_1_10B30(void) { diff --git a/src/REL/m438Dll/fire.c b/src/REL/m438Dll/fire.c index 739a356a..ce18b639 100644 --- a/src/REL/m438Dll/fire.c +++ b/src/REL/m438Dll/fire.c @@ -4,7 +4,9 @@ #define HUSPR_USE_OLD_DEFS #include "game/sprite.h" -extern u8 texMtxTbl[]; +#include + +SHARED_SYM extern u8 texMtxTbl[]; // PROTO void fn_1_E790(M438UnkStruct2 *); @@ -264,19 +266,19 @@ void fn_1_E790(M438UnkStruct2 *arg0) } GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, var_r31->unk_44, 12); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSETARRAY(GX_VA_POS, var_r31->unk_44, 4 * sizeof(Vec), sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, var_r31->unk_48, 4); + GXSETARRAY(GX_VA_CLR0, var_r31->unk_48, 4 * sizeof(GXColor), sizeof(GXColor)); for (var_r27 = 0; var_r27 < var_r31->unk_34; var_r27++) { GXSetVtxDesc(var_r27 + GX_VA_TEX0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, var_r27 + GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(var_r27 + GX_VA_TEX0, &var_r31->unk_58[var_r27].unk_04, 8); + GXSetVtxAttrFmt(GX_VTXFMT0, var_r27 + GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSETARRAY(var_r27 + GX_VA_TEX0, &var_r31->unk_58[var_r27].unk_04, 4 * sizeof(Vec2f), sizeof(Vec2f)); } GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGBA6, 0U); - GXSetArray(GX_VA_NRM, var_r31->unk_4C, 12); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0U); + GXSETARRAY(GX_VA_NRM, var_r31->unk_4C, sizeof(Vec), sizeof(Vec)); GXCallDisplayList(var_r31->unk_40, var_r31->unk_3C); } } @@ -593,15 +595,15 @@ s16 fn_1_10258(u8 arg0, u8 arg1) var_r31->unk_30 = NULL; var_r31->unk_02 = arg0; var_r31->unk_04 = arg1; - var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x98, 0x10000000); + var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x98, MEMORY_DEFAULT_NUM); var_r31->unk_3C = var_r30; - var_r31->unk_34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * 2, 0x10000000); + var_r31->unk_34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * 2, MEMORY_DEFAULT_NUM); var_r31->unk_48 = 0; - var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 << 8, 0x10000000); - var_r31->unk_50 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x30, 0x10000000); - var_r31->unk_54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x10, 0x10000000); - var_r31->unk_58 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0xC, 0x10000000); - var_r31->unk_5C = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (arg0 * 0x30), 0x10000000); + var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 << 8, MEMORY_DEFAULT_NUM); + var_r31->unk_50 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x30, MEMORY_DEFAULT_NUM); + var_r31->unk_54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x10, MEMORY_DEFAULT_NUM); + var_r31->unk_58 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0xC, MEMORY_DEFAULT_NUM); + var_r31->unk_5C = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (arg0 * 0x30), MEMORY_DEFAULT_NUM); DCFlushRangeNoSync(var_r31->unk_4C, arg0 << 8); var_r31->unk_0C.x = var_r31->unk_0C.y = var_r31->unk_0C.z = 0.0f; var_r31->unk_18.x = var_r31->unk_18.y = var_r31->unk_18.z = 0.0f; diff --git a/src/REL/m440Dll/main.c b/src/REL/m440Dll/main.c index aa700cf7..31d8a98a 100644 --- a/src/REL/m440Dll/main.c +++ b/src/REL/m440Dll/main.c @@ -1344,12 +1344,12 @@ void fn_1_5C2C(s16 arg0, HsfObject *arg1, unkStruct6 *arg2, u16 arg3) arg2->unk38 = NULL; arg2->unk3C = 0xFF; arg2->unk3E = 0; - arg2->unk18 = HuMemDirectMallocNum(HEAP_DATA, arg1->data.vertex->count * 0xC, var_r29->unk_48); + arg2->unk18 = HuMemDirectMallocNum(HEAP_DATA, arg1->data.vertex->count * sizeof(Vec), var_r29->unk_48); fn_1_6554(arg2, arg1); fn_1_6B58(arg2, arg1); - arg2->unkC = HuMemDirectMallocNum(HEAP_DATA, arg2->unk8 * 0xC, var_r29->unk_48); - arg2->unk10 = HuMemDirectMallocNum(HEAP_DATA, arg2->unk8 * 0xC, var_r29->unk_48); - arg2->unk14 = HuMemDirectMallocNum(HEAP_DATA, arg2->unk8 * 0xC, var_r29->unk_48); + arg2->unkC = HuMemDirectMallocNum(HEAP_DATA, arg2->unk8 * sizeof(Vec), var_r29->unk_48); + arg2->unk10 = HuMemDirectMallocNum(HEAP_DATA, arg2->unk8 * sizeof(Vec), var_r29->unk_48); + arg2->unk14 = HuMemDirectMallocNum(HEAP_DATA, arg2->unk8 * sizeof(Vec), var_r29->unk_48); if (arg2->unk28->numAttrs != 0) { arg2->unk1C = HuMemDirectMallocNum(HEAP_DATA, arg1->data.st->count * 8, var_r29->unk_48); var_r22 = arg1->data.st->data; @@ -1879,10 +1879,10 @@ void fn_1_806C(ModelData *arg0, Mtx arg1) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, temp_r31->unkC, 12); + GXSETARRAY(GX_VA_POS, temp_r31->unkC, temp_r31->unk8 * sizeof(Vec), sizeof(Vec)); GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); - GXSetArray(GX_VA_NRM, temp_r31->unk14, 12); + GXSETARRAY(GX_VA_NRM, temp_r31->unk14, temp_r31->unk8 * sizeof(Vec), sizeof(Vec)); lbl_1_bss_C = temp_r31->unk3C; if (temp_r31->unk28->unk34 == 0) { GXSetNumTevStages(1); @@ -1897,7 +1897,7 @@ void fn_1_806C(ModelData *arg0, Mtx arg1) else { GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, temp_r31->unk1C, 8); + GXSETARRAY(GX_VA_TEX0, temp_r31->unk1C, sizeof(Vec2f), sizeof(Vec2f)); // TODO PC temp_r29 = &temp_r31->unk2C[temp_r31->unk28->unk38[0]]; fn_1_7D60(temp_r29->unk80, temp_r29, 0); lbl_1_bss_2C = 1; @@ -2269,19 +2269,19 @@ s16 fn_1_956C(AnimData *arg0, s16 arg1, f32 arg2, s16 arg3, s16 arg4) var_r24->unk60 = -1; var_r24->unk62 = 0; } - var_r25 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 0xC * 4, temp_r28->unk_48); + var_r25 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Vec) * 4, temp_r28->unk_48); var_r31->unk1C = var_r25; for (var_r30 = 0; var_r30 < (arg1 * 4); var_r30++, var_r25++) { var_r25->x = var_r25->y = var_r25->z = 0.0f; } - var_r27 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 4, temp_r28->unk_48); + var_r27 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(GXColor), temp_r28->unk_48); var_r31->unk24 = var_r27; for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r27++) { var_r27->r = var_r27->g = var_r27->b = var_r27->a = 0xFF; } - var_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 8 * 4, temp_r28->unk_48); + var_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Vec2f) * 4, temp_r28->unk_48); var_r31->unk20 = var_r29; for (var_r30 = 0; var_r30 < arg1; var_r30++) { @@ -2458,13 +2458,13 @@ void fn_1_9C04(ModelData *arg0, Mtx arg1) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, temp_r30->unk1C, 0xC); + GXSETARRAY(GX_VA_POS, temp_r30->unk1C, temp_r30->unk0 * sizeof(Vec) * 4, sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, temp_r30->unk24, 4); + GXSETARRAY(GX_VA_CLR0, temp_r30->unk24, temp_r30->unk0 * sizeof(GXColor), sizeof(GXColor)); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, temp_r30->unk20, 8); + GXSETARRAY(GX_VA_TEX0, temp_r30->unk20, temp_r30->unk0 * sizeof(Vec2f) * 4, sizeof(Vec2f)); fn_1_9344(arg1, sp128); MTXReorder(sp128, spF8); if (((u8)omPauseChk() == 0) && (temp_r30->unkC)) { @@ -2510,8 +2510,8 @@ void fn_1_9C04(ModelData *arg0, Mtx arg1) } } } - DCFlushRangeNoSync(temp_r30->unk1C, temp_r30->unk0 * 0xC * 4); - DCFlushRangeNoSync(temp_r30->unk20, temp_r30->unk0 * 8 * 4); + DCFlushRangeNoSync(temp_r30->unk1C, temp_r30->unk0 * sizeof(Vec) * 4); + DCFlushRangeNoSync(temp_r30->unk20, temp_r30->unk0 * sizeof(Vec2f) * 4); GXCallDisplayList(temp_r30->unk28, temp_r30->unk4); } diff --git a/src/REL/m441Dll/main.c b/src/REL/m441Dll/main.c index bc0d7e77..e3d30e63 100644 --- a/src/REL/m441Dll/main.c +++ b/src/REL/m441Dll/main.c @@ -23,6 +23,12 @@ #include "ext_math.h" #include "version.h" + +#ifndef __MWERKS__ +#include +#include +#endif + #undef ABS #define ABS(x) ((0 > (x)) ? -(x) : (x)) @@ -700,7 +706,9 @@ HsfanimStruct00 lbl_1_data_48C = { { { 255, 255, 255, 0 }, { 255, 255, 255, 0 }, { 255, 255, 255, 0 }, { 255, 255, 255, 0 } }, }; +#ifdef __MWERKS__ #include "src/REL/executor.c" +#endif void fn_1_2454(omObjData *object) { diff --git a/src/REL/m442Dll/main.c b/src/REL/m442Dll/main.c index e8f1e5a4..194dcd0d 100644 --- a/src/REL/m442Dll/main.c +++ b/src/REL/m442Dll/main.c @@ -243,7 +243,7 @@ void ObjectSetup(void) var_r29 = Hu3DGLightCreateV(&lbl_1_data_54, &lbl_1_bss_14, &lbl_1_data_6C); Hu3DGLightInfinitytSet(var_r29); Hu3DGLightStaticSet(var_r29, 1); - Hu3DShadowCreate(10.0f, var_r30->near, var_r30->far); + Hu3DShadowCreate(10.0f, var_r30->nnear, var_r30->ffar); Hu3DShadowTPLvlSet(0.625f); Hu3DShadowPosSet(&lbl_1_data_70, &lbl_1_data_7C, &lbl_1_data_60); HuAudSndGrpSet(0x44); @@ -1527,7 +1527,7 @@ void fn_1_485C(ModelData *model, Mtx mtx) GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); - C_MTXPerspective(sp40, var_r29->fov, var_r29->aspect, var_r29->near, var_r29->far); + C_MTXPerspective(sp40, var_r29->fov, var_r29->aspect, var_r29->nnear, var_r29->ffar); GXSetProjection(sp40, GX_PERSPECTIVE); MTXInverse(mtx, spA0); spA0[0][3] = spA0[1][3] = spA0[2][3] = 0.0f; diff --git a/src/REL/m444dll/shadow.c b/src/REL/m444dll/shadow.c index 9351f3e6..3f3062cf 100644 --- a/src/REL/m444dll/shadow.c +++ b/src/REL/m444dll/shadow.c @@ -23,7 +23,7 @@ void fn_1_D9F4(s16 arg0) CameraData *var_r31; var_r31 = &Hu3DCamera[0]; - C_MTXPerspective(sp64, var_r31->fov, var_r31->aspect, var_r31->near, var_r31->far); + C_MTXPerspective(sp64, var_r31->fov, var_r31->aspect, var_r31->nnear, var_r31->ffar); GXSetProjection(sp64, GX_PERSPECTIVE); GXSetViewport(0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); GXSetScissor(0, 0, 0x280, 0x1E0); diff --git a/src/REL/m449Dll/main.c b/src/REL/m449Dll/main.c index 02d13d79..4fe9b0c7 100644 --- a/src/REL/m449Dll/main.c +++ b/src/REL/m449Dll/main.c @@ -26,7 +26,7 @@ #include "game/hsfex.h" #endif -s32 rand8(void); +extern s32 rand8(void); typedef struct UnkCameraStruct { /* 0x00 */ float unk_00; diff --git a/src/REL/m450Dll/main.c b/src/REL/m450Dll/main.c index 84bd07f6..ba4a5901 100644 --- a/src/REL/m450Dll/main.c +++ b/src/REL/m450Dll/main.c @@ -1589,13 +1589,13 @@ void fn_1_56C4(ModelData *arg0, Mtx arg1) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, var_r31->unk_14, 0xC); + GXSETARRAY(GX_VA_POS, var_r31->unk_14, var_r31->unk_64 * sizeof(Vec) * 4, sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, var_r31->unk_20, 4); + GXSETARRAY(GX_VA_CLR0, var_r31->unk_20, var_r31->unk_64 * sizeof(GXColor), sizeof(GXColor)); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, var_r31->unk_18, 8); + GXSETARRAY(GX_VA_TEX0, var_r31->unk_18, var_r31->unk_64 * sizeof(Vec2f) * 4, sizeof(Vec2f)); sp130[0][0] = arg1[0][0]; sp130[1][0] = arg1[0][1]; sp130[2][0] = arg1[0][2]; @@ -1651,8 +1651,8 @@ void fn_1_56C4(ModelData *arg0, Mtx arg1) } } } - DCFlushRangeNoSync(var_r31->unk_14, var_r31->unk_64 * 0xC * 4); - DCFlushRangeNoSync(var_r31->unk_18, var_r31->unk_64 * 8 * 4); + DCFlushRangeNoSync(var_r31->unk_14, var_r31->unk_64 * sizeof(Vec) * 4); + DCFlushRangeNoSync(var_r31->unk_18, var_r31->unk_64 * sizeof(Vec2f) * 4); GXCallDisplayList(var_r31->unk_24, var_r31->unk_58); } } @@ -6098,7 +6098,9 @@ void fn_1_1A3F0(void) lbl_1_bss_30C.y += 150.0f; } +#ifdef __MWERKS__ #include "src/REL/executor.c" +#endif void fn_1_1A714(void) { diff --git a/src/REL/m455Dll/main.c b/src/REL/m455Dll/main.c index 36c27f42..2f2d7bf6 100644 --- a/src/REL/m455Dll/main.c +++ b/src/REL/m455Dll/main.c @@ -75,7 +75,7 @@ void ObjectSetup(void) light = Hu3DGLightCreateV(&lbl_1_data_38, &lbl_1_bss_8, &lbl_1_data_50); Hu3DGLightInfinitytSet(light); Hu3DGLightStaticSet(light, 1); - Hu3DShadowCreate(10, camera->near, camera->far); + Hu3DShadowCreate(10, camera->nnear, camera->ffar); Hu3DShadowTPLvlSet(0.7f); Hu3DShadowPosSet(&lbl_1_data_54, &lbl_1_data_60, &lbl_1_data_44); HuAudSndGrpSet(77); diff --git a/src/REL/m455Dll/stage.c b/src/REL/m455Dll/stage.c index 71bd7ab4..c320e330 100644 --- a/src/REL/m455Dll/stage.c +++ b/src/REL/m455Dll/stage.c @@ -630,7 +630,7 @@ void fn_1_4B1C(ModelData *model, Mtx matrix) GXClearVtxDesc(); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetArray(GX_VA_POS, lbl_1_data_278, sizeof(Vec)); + GXSETARRAY(GX_VA_POS, lbl_1_data_278, sizeof(lbl_1_data_278), sizeof(Vec)); GXBegin(GX_QUADS, GX_VTXFMT0, 4); for(i=0; i<4; i++) { GXPosition1x16(i); @@ -721,16 +721,16 @@ void fn_1_4E64(ModelData *model, Mtx matrix) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetArray(GX_VA_POS, lbl_1_data_2A8, sizeof(Vec)); + GXSETARRAY(GX_VA_POS, lbl_1_data_2A8, sizeof(lbl_1_data_2A8), sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, lbl_1_data_3E0, sizeof(GXColor)); + GXSETARRAY(GX_VA_CLR0, lbl_1_data_3E0, sizeof(lbl_1_data_3E0), sizeof(GXColor)); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, lbl_1_data_448, sizeof(float)*2); + GXSETARRAY(GX_VA_TEX0, lbl_1_data_448, sizeof(lbl_1_data_448), sizeof(float)*2); GXSetVtxDesc(GX_VA_TEX1, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX1, &work2->unk874[0][0], sizeof(float)*2); + GXSETARRAY(GX_VA_TEX1, &work2->unk874[0][0], sizeof(work2->unk874), sizeof(float)*2); GXBegin(GX_QUADS, GX_VTXFMT0, 48); for(i=0; i<12; i++) { s16 index; @@ -886,8 +886,8 @@ void fn_1_59A0(ModelData *model, Mtx matrix) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_POS, lbl_1_data_604, sizeof(Vec)); - GXSetArray(GX_VA_CLR0, lbl_1_data_670, sizeof(GXColor)); + GXSETARRAY(GX_VA_POS, lbl_1_data_604, sizeof(lbl_1_data_604), sizeof(Vec)); + GXSETARRAY(GX_VA_CLR0, lbl_1_data_670, sizeof(lbl_1_data_670), sizeof(GXColor)); GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); GXPosition1x8(0); GXColor1x8(0); diff --git a/src/REL/m456Dll/main.c b/src/REL/m456Dll/main.c index 97e8ffb5..8f3a10ed 100644 --- a/src/REL/m456Dll/main.c +++ b/src/REL/m456Dll/main.c @@ -150,7 +150,7 @@ void ObjectSetup(void) var_r29 = Hu3DGLightCreateV(&lbl_1_data_38, &lbl_1_bss_8, &lbl_1_data_50); Hu3DGLightInfinitytSet(var_r29); Hu3DGLightStaticSet(var_r29, 1); - Hu3DShadowCreate(10.0f, var_r30->near, var_r30->far); + Hu3DShadowCreate(10.0f, var_r30->nnear, var_r30->ffar); Hu3DShadowTPLvlSet(0.7f); Hu3DShadowPosSet(&lbl_1_data_54, &lbl_1_data_60, &lbl_1_data_44); HuAudSndGrpSet(0x4E); diff --git a/src/REL/m456Dll/stage.c b/src/REL/m456Dll/stage.c index 14e18f6b..0929ca33 100644 --- a/src/REL/m456Dll/stage.c +++ b/src/REL/m456Dll/stage.c @@ -518,7 +518,7 @@ void fn_1_464C(ModelData *model, Mtx matrix) GXClearVtxDesc(); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetArray(GX_VA_POS, lbl_1_data_388, sizeof(Vec)); + GXSETARRAY(GX_VA_POS, lbl_1_data_388, sizeof(lbl_1_data_388), sizeof(Vec)); GXBegin(GX_QUADS, GX_VTXFMT0, 4); for (i = 0; i < 4; i++) { GXPosition1x16(i); @@ -609,16 +609,16 @@ void fn_1_4994(ModelData *model, Mtx matrix) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetArray(GX_VA_POS, lbl_1_data_3B8, sizeof(Vec)); + GXSETARRAY(GX_VA_POS, lbl_1_data_3B8, sizeof(lbl_1_data_3B8), sizeof(Vec)); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, lbl_1_data_4F0, sizeof(GXColor)); + GXSETARRAY(GX_VA_CLR0, lbl_1_data_4F0, sizeof(lbl_1_data_4F0), sizeof(GXColor)); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, lbl_1_data_558, sizeof(float) * 2); + GXSETARRAY(GX_VA_TEX0, lbl_1_data_558, sizeof(lbl_1_data_558), sizeof(float) * 2); GXSetVtxDesc(GX_VA_TEX1, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX1, &work2->unk874[0][0], sizeof(float) * 2); + GXSETARRAY(GX_VA_TEX1, &work2->unk874[0][0], sizeof(work2->unk874), sizeof(float) * 2); GXBegin(GX_QUADS, GX_VTXFMT0, 48); for (i = 0; i < 12; i++) { s16 index; @@ -776,8 +776,8 @@ void fn_1_54D0(ModelData *model, Mtx matrix) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_POS, lbl_1_data_714, sizeof(Vec)); - GXSetArray(GX_VA_CLR0, lbl_1_data_780, sizeof(GXColor)); + GXSETARRAY(GX_VA_POS, lbl_1_data_714, sizeof(lbl_1_data_714), sizeof(Vec)); + GXSETARRAY(GX_VA_CLR0, lbl_1_data_780, sizeof(lbl_1_data_780), sizeof(GXColor)); GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); GXPosition1x8(0); GXColor1x8(0); diff --git a/src/REL/m457Dll/main.c b/src/REL/m457Dll/main.c index 4e570c51..cc840f43 100755 --- a/src/REL/m457Dll/main.c +++ b/src/REL/m457Dll/main.c @@ -21,7 +21,7 @@ #include "ext_math.h" #include "version.h" -s32 rand8(void); +extern s32 rand8(void); #define MSM_SE_BOWSER_LAUGH 0x3A #define MSM_SE_BOWSER_HOWL 0x3E diff --git a/src/REL/m461Dll/main.c b/src/REL/m461Dll/main.c index 1c4b57cc..ac2ad1a2 100644 --- a/src/REL/m461Dll/main.c +++ b/src/REL/m461Dll/main.c @@ -1127,7 +1127,9 @@ void fn_1_507C(WorkPlayerOld *player, s32 attr) player->unk3C &= ~attr; } +#ifdef __MWERKS__ #include "src/REL/executor.c" +#endif Vec lbl_1_data_A0 = { 0, 600, 600 }; Vec lbl_1_data_AC = { 0, 1, 0 }; diff --git a/src/REL/mentDll/common.c b/src/REL/mentDll/common.c index 59f44912..608ce2a6 100644 --- a/src/REL/mentDll/common.c +++ b/src/REL/mentDll/common.c @@ -29,18 +29,8 @@ s32 lbl_1_data_0[][4] = { s32 lbl_1_data_70 = -1; -// char lbl_1_data_74[] = ">>>>>>>>>> CAMERA DATA <<<<<<<<<<"; -// char lbl_1_data_96[] = "CENTER : %.2f, %.2f, %.2f"; -// char lbl_1_data_B0[] = "ROT : %.2f, %.2f, %.2f"; -// char lbl_1_data_CA[] = "ZOOM : %.2f"; - -extern s32 _prolog(); -extern void _epilog(); void fn_1_144(void); void fn_1_2318(s32); -typedef void (*VoidFunc)(void); -extern const VoidFunc _ctors[]; -extern const VoidFunc _dtors[]; void fn_1_0(omObjData *arg0) { @@ -58,27 +48,11 @@ void fn_1_4C(omObjData *object) } } -s32 _prolog(void) -{ - const VoidFunc *ctors = _ctors; - while (*ctors != 0) { - (**ctors)(); - ctors++; - } - fn_1_144(); - return 0; -} +#ifdef __MWERKS__ +#include "src/REL/executor.c" +#endif -void _epilog(void) -{ - const VoidFunc *dtors = _dtors; - while (*dtors != 0) { - (**dtors)(); - dtors++; - } -} - -void fn_1_144(void) +void ObjectSetup(void) { _ClearFlag(0x1000BU); boardTutorialF = 0; diff --git a/src/REL/mgmodedll/minigame.c b/src/REL/mgmodedll/minigame.c index 2c4fb825..62d7aa14 100644 --- a/src/REL/mgmodedll/minigame.c +++ b/src/REL/mgmodedll/minigame.c @@ -60,7 +60,7 @@ void fn_1_26C54(s16 layer) Vec pos, target, up; GXColor color; CameraData *camera = &Hu3DCamera[0]; - MTXPerspective(proj, camera->fov, camera->aspect, camera->near, camera->far); + MTXPerspective(proj, camera->fov, camera->aspect, camera->nnear, camera->ffar); GXSetProjection(proj, GX_PERSPECTIVE); GXSetViewport(0, 0, 640, 480, 0, 1); GXSetScissor(0, 0, 640, 480); diff --git a/src/REL/modeltestDll/modeltest00.c b/src/REL/modeltestDll/modeltest00.c index 03f4fd71..9293bb37 100644 --- a/src/REL/modeltestDll/modeltest00.c +++ b/src/REL/modeltestDll/modeltest00.c @@ -72,7 +72,7 @@ static inline void HuControlCamCenter(Vec *sp18, Vec *sp30) // -------------------------------------------------------------------------- // -void fn_1_37DC(omObjData *) +void fn_1_37DC(omObjData *object) { Vec sp3C; Vec sp30; @@ -135,7 +135,7 @@ void fn_1_37DC(omObjData *) // -------------------------------------------------------------------------- // -void fn_1_439C(omObjData *) +void fn_1_439C(omObjData *object) { s16 var_r31; f32 temp_f30; diff --git a/src/REL/modeseldll/datalist.c b/src/REL/modeseldll/datalist.c index 87287bed..afd55ec3 100644 --- a/src/REL/modeseldll/datalist.c +++ b/src/REL/modeseldll/datalist.c @@ -1,5 +1,9 @@ #include "REL/modeseldll.h" +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif + s16 lbl_1_bss_19A[24]; s16 lbl_1_bss_16A[24]; s16 lbl_1_bss_152[12]; diff --git a/src/REL/modeseldll/filesel.c b/src/REL/modeseldll/filesel.c index 1ddd44cf..43781e7e 100644 --- a/src/REL/modeseldll/filesel.c +++ b/src/REL/modeseldll/filesel.c @@ -14,8 +14,11 @@ #include "REL/modeseldll.h" +s32 msmSysGetOutputMode(void); + #ifndef __MWERKS__ #include "game/esprite.h" +#include "game/hsfex.h" #endif s16 lbl_1_data_100 = -1; diff --git a/src/REL/modeseldll/main.c b/src/REL/modeseldll/main.c index 2ece1b9d..343293c3 100644 --- a/src/REL/modeseldll/main.c +++ b/src/REL/modeseldll/main.c @@ -1,5 +1,8 @@ #include "REL/modeseldll.h" +#include "ext_math.h" #include "game/audio.h" +#include "game/board/ui.h" +#include "game/esprite.h" #include "game/gamework_data.h" #include "game/hsfman.h" #include "game/object.h" @@ -8,7 +11,8 @@ #include "game/process.h" #include "game/window.h" #include "game/wipe.h" -#include "ext_math.h" + +#include typedef struct camera_view_params { Vec rot; @@ -103,6 +107,7 @@ void fn_1_414(void) HuWinAllKill(); HuWinInit(1); #endif +#ifdef __MWERKS__ grpId = HuSprGrpCreate(1); sprId = HuTHPSprCreateVol("movie/opmov_s00.thp", 0, 3000, 70.0); HuSprGrpMemberSet(grpId, 0, sprId); @@ -116,6 +121,7 @@ void fn_1_414(void) } HuTHPClose(); HuSprGrpKill(grpId); +#endif } } espAttrReset(lbl_1_bss_152[9], HUSPR_ATTR_DISPOFF); diff --git a/src/REL/mpexDll/mpex.c b/src/REL/mpexDll/mpex.c index 31a7359e..9494542d 100644 --- a/src/REL/mpexDll/mpex.c +++ b/src/REL/mpexDll/mpex.c @@ -44,7 +44,7 @@ typedef struct MpexDllUnkStruct4 { /* 0x2C */ char unk2C[0x1C]; } MpexDllUnkStruct4; /* size = 0x48 */ -s32 rand8(void); +extern s32 rand8(void); float fn_1_1B52C(float arg8, float arg9, float argA, float argB); float fn_1_1B574(float arg0, float arg1, float arg2, float arg3); float fn_1_1B64C(float arg0, float arg1, float arg2, float arg3); diff --git a/src/REL/mstory2Dll/main.c b/src/REL/mstory2Dll/main.c index 77125674..0014ae13 100644 --- a/src/REL/mstory2Dll/main.c +++ b/src/REL/mstory2Dll/main.c @@ -130,7 +130,9 @@ void fn_1_A4(void) { } } +#ifdef __MWERKS__ #include "src/REL/executor.c" +#endif void fn_1_3E4(void) { diff --git a/src/REL/mstory3Dll/main.c b/src/REL/mstory3Dll/main.c index c1e4f1bf..f86f741f 100755 --- a/src/REL/mstory3Dll/main.c +++ b/src/REL/mstory3Dll/main.c @@ -127,7 +127,9 @@ void fn_1_A4(void) { } } +#ifdef __MWERKS__ #include "src/REL/executor.c" +#endif void fn_1_40C(void) { lbl_1_bss_0 = omInitObjMan(62, 0x2000); diff --git a/src/REL/mstory3Dll/win_effect.c b/src/REL/mstory3Dll/win_effect.c index 2a86dd6c..7bc31b9e 100755 --- a/src/REL/mstory3Dll/win_effect.c +++ b/src/REL/mstory3Dll/win_effect.c @@ -222,8 +222,8 @@ void fn_1_1E820(ModelData* model, ParticleData* particle, Mtx matrix) { temp_r21 = temp_r28->unk24 - (temp_r28->unk24 / 5.0f); temp_r26 = temp_r21 / 2; temp_r20 = temp_r21 - temp_r26; - PSVECSubtract(&temp_r28->unk04, &temp_r28->unk10, &sp8); - temp_f31 = PSVECMag(&sp8) / temp_r20; + VECSubtract(&temp_r28->unk04, &temp_r28->unk10, &sp8); + temp_f31 = VECMag(&sp8) / temp_r20; for (var_r22 = 0; var_r22 < particle->unk_30 / (temp_r28->unk24 / 5.0f); var_r22++) { var_r31 = particle->unk_48; for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { @@ -254,12 +254,12 @@ void fn_1_1E820(ModelData* model, ParticleData* particle, Mtx matrix) { continue; } if (var_r31->unk00 == 0) { - PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); var_r31->unk08.x *= 0.999f; var_r31->unk08.y -= 0.5f; var_r31->unk08.z *= 0.999f; if (var_r31->unk02 > temp_r26 - (temp_r26 / 5.0)) { - PSVECScale(&var_r31->unk08, &var_r31->unk08, 1.0 - ((var_r31->unk02 - (temp_r26 - temp_r26 / 5.0)) / (temp_r26 / 5.0))); + VECScale(&var_r31->unk08, &var_r31->unk08, 1.0 - ((var_r31->unk02 - (temp_r26 - temp_r26 / 5.0)) / (temp_r26 / 5.0))); } if (var_r31->unk02 == temp_r26) { var_r31->unk00++; @@ -270,18 +270,18 @@ void fn_1_1E820(ModelData* model, ParticleData* particle, Mtx matrix) { } } else if (var_r31->unk00 == 1) { sp8 = temp_r28->unk00[var_r29]; - PSVECSubtract(&sp8, &var_r31->unk34, &sp8); - if (PSVECMag(&sp8) <= 1.0 + temp_f31) { + VECSubtract(&sp8, &var_r31->unk34, &sp8); + if (VECMag(&sp8) <= 1.0 + temp_f31) { var_r23++; var_r31->unk34 = temp_r28->unk00[var_r29]; var_r31->unk00++; continue; } - PSVECNormalize(&sp8, &sp8); + VECNormalize(&sp8, &sp8); var_r31->unk08.x = sp8.x * temp_f31 + sind(var_r31->unk14.x); var_r31->unk08.y = sp8.y * temp_f31; var_r31->unk08.z = sp8.z * temp_f31; - PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); var_r31->unk14.x += 20.0f; } else { var_r23++; diff --git a/src/REL/mstory4Dll/main.c b/src/REL/mstory4Dll/main.c index 6a626cb1..e29d0fd1 100644 --- a/src/REL/mstory4Dll/main.c +++ b/src/REL/mstory4Dll/main.c @@ -105,7 +105,6 @@ s32 lbl_1_data_56C[] = { }; void fn_1_EC(void); -void fn_1_12E8(void); void fn_1_13A0(void); s32 lbl_1_bss_14; @@ -454,25 +453,11 @@ void fn_1_EC(void) } } -s32 _prolog(void) { - const VoidFunc* ctors = _ctors; - while (*ctors != 0) { - (**ctors)(); - ctors++; - } - fn_1_12E8(); - return 0; -} +#ifdef __MWERKS__ +#include "src/REL/executor.c" +#endif -void _epilog(void) { - const VoidFunc* dtors = _dtors; - while (*dtors != 0) { - (**dtors)(); - dtors++; - } -} - -void fn_1_12E8(void) +void ObjectSetup(void) { lbl_1_bss_0 = omInitObjMan(62, 8192); omGameSysInit(lbl_1_bss_0); diff --git a/src/REL/mstoryDll/main.c b/src/REL/mstoryDll/main.c index 7f4f2cb7..fbef63a7 100755 --- a/src/REL/mstoryDll/main.c +++ b/src/REL/mstoryDll/main.c @@ -138,7 +138,9 @@ void fn_1_A4(void) { } } +#ifdef __MWERKS__ #include "src/REL/executor.c" +#endif void fn_1_488(void) { s32 i; diff --git a/src/REL/nisDll/main.c b/src/REL/nisDll/main.c index 4dc839ce..1ee9dbd0 100644 --- a/src/REL/nisDll/main.c +++ b/src/REL/nisDll/main.c @@ -19,4 +19,6 @@ void fn_1_68(omObjData *object) } } +#ifdef __MWERKS__ #include "src/REL/executor.c" +#endif \ No newline at end of file diff --git a/src/REL/option/sound.c b/src/REL/option/sound.c index 7012bb90..cc1cbfb2 100755 --- a/src/REL/option/sound.c +++ b/src/REL/option/sound.c @@ -13,6 +13,10 @@ #include "dolphin.h" #include "math.h" +#ifndef __MWERKS__ +#include +#endif + typedef struct { /* 0x000 */ omObjData *object[26]; /* 0x068 */ OptionWindow *window[13]; @@ -110,7 +114,7 @@ static void CreateNote(omObjData *object, s32 type, s32 side, s32 color); static void CreateNoteSpawner(omObjData *object); static void KillNoteSpawner(omObjData *object); static void ExecNoteSpawner(void); -static void PlaySound(omObjData *object); +static void OptionPlaySound(omObjData *object); static void FadeSound(omObjData *object); omObjData *optionSound; @@ -920,7 +924,7 @@ static void ExecMusic(omObjData *object) HuAudSeqFadeOut(work->bgMusicStat, 0x64); work->bgMusicStat = -1; } - PlaySound(object); + OptionPlaySound(object); } else if (OptionPadCheck(PAD_BUTTON_B)) { HuAudFXPlay(3); @@ -1101,7 +1105,7 @@ static void ExecVoice(omObjData *object) case 6: if (work->window[0]->state == 0 && work->window[1]->state == 0) { if (OptionPadCheck(PAD_BUTTON_A)) { - PlaySound(object); + OptionPlaySound(object); } else if (OptionPadCheck(PAD_BUTTON_B)) { HuAudFXPlay(3); @@ -1665,7 +1669,7 @@ static void ExecNoteSpawner(void) } } -static void PlaySound(omObjData *object) +static void OptionPlaySound(omObjData *object) { SoundWork *work = object->data; SndSelData *sndSelData; diff --git a/src/REL/present/present.c b/src/REL/present/present.c index b6d90dfc..fc7c27dd 100644 --- a/src/REL/present/present.c +++ b/src/REL/present/present.c @@ -86,7 +86,7 @@ typedef struct PresentDistanceStruct { static void ExecSelectRoom(omObjData *object); static void ChangeRoom(omObjData *object, s32 direction); static void ExecSelectPresent(omObjData *object); -static void GetCursorPos(omObjData *object, float *x, float *y, float *z); +static void PresentGetCursorPos(omObjData *object, float *x, float *y, float *z); static void SetCameraRot(omObjData *object, float rot, s32 duration); static void RotateCamera(omObjData *object); static BOOL CameraRotationDoneCheck(omObjData *object); @@ -731,7 +731,7 @@ static void ExecSelectPresent(omObjData *object) work->cursorSpeed = 1.0f / 6.0f; if (work->roomNotEmptyF) { Vec cursorPos; - GetCursorPos(work->object[roomTbl[room].presentData[idxInRoom].cursorPosIdx], &cursorPos.x, &cursorPos.y, &cursorPos.z); + PresentGetCursorPos(work->object[roomTbl[room].presentData[idxInRoom].cursorPosIdx], &cursorPos.x, &cursorPos.y, &cursorPos.z); Hu3D3Dto2D(&cursorPos, 1, &cursorPos); cursorPos.y -= 15.0f; cursorPos.x -= 20.0f; @@ -818,7 +818,7 @@ static void ExecSelectPresent(omObjData *object) } } -static void GetCursorPos(omObjData *object, float *x, float *y, float *z) +static void PresentGetCursorPos(omObjData *object, float *x, float *y, float *z) { Mtx sp8; @@ -966,7 +966,7 @@ static s32 MoveCursor(omObjData *object, s32 arg1) return work->idxInRoom; } - GetCursorPos(work->object[roomTbl[work->room].presentData[work->idxInRoom].cursorPosIdx], &cursorPos.x, &cursorPos.y, &cursorPos.z); + PresentGetCursorPos(work->object[roomTbl[work->room].presentData[work->idxInRoom].cursorPosIdx], &cursorPos.x, &cursorPos.y, &cursorPos.z); Hu3D3Dto2D(&cursorPos, 1, &cursorPos); for (i = 0, j = 0; i == 0 && j < 1; j++) { for (i = 0, present = 0; present < totalPresents; present++) { @@ -978,7 +978,7 @@ static s32 MoveCursor(omObjData *object, s32 arg1) if (!PresentUnlocked(object, work->room, present)) { continue; } - GetCursorPos(work->object[roomTbl[work->room].presentData[present].cursorPosIdx], &cursorPosNew.x, &cursorPosNew.y, &cursorPosNew.z); + PresentGetCursorPos(work->object[roomTbl[work->room].presentData[present].cursorPosIdx], &cursorPosNew.x, &cursorPosNew.y, &cursorPosNew.z); Hu3D3Dto2D(&cursorPosNew, 1, &cursorPosNew); dx = cursorPos.x - cursorPosNew.x; dy = cursorPos.y - cursorPosNew.y; diff --git a/src/REL/selmenuDll/main.c b/src/REL/selmenuDll/main.c index ad413ed8..02b9d40d 100644 --- a/src/REL/selmenuDll/main.c +++ b/src/REL/selmenuDll/main.c @@ -16,10 +16,13 @@ #include "game/wipe.h" #include "math.h" - +#ifdef __MWERKS__ // MSM Definitions static s8 *msmSeGetIndexPtr(s16 datano); static void msmMusSetMasterVolume(s32 value); +#else +#include "game/msm.h" +#endif #define SM_PAGE_MAX 7 #define SM_PAGE_SIZE 10 @@ -907,9 +910,12 @@ static void SMSound3DDraw(void); static void SMSound3DInit(omObjData *object) { +#ifdef __MWERKS__ + // TODO PC s8 *data = msmSeGetIndexPtr(emiCompDataNo); emiCompVal = data[12]; object->func = SMSound3DUpdate; +#endif } static void SMSound3DUpdate(omObjData *object) diff --git a/src/REL/w03Dll/mg_item.c b/src/REL/w03Dll/mg_item.c index 9b9ccfa3..fab52641 100644 --- a/src/REL/w03Dll/mg_item.c +++ b/src/REL/w03Dll/mg_item.c @@ -60,8 +60,6 @@ typedef struct w03UnkMG { // external symbols -extern u16 HuPadBtnDown[4]; - // function signatures s32 BoardVecDAngleCalcRange(float *value, float min, float range); diff --git a/src/REL/w03Dll/smoke.c b/src/REL/w03Dll/smoke.c index 0fcdeda3..b72c3fec 100644 --- a/src/REL/w03Dll/smoke.c +++ b/src/REL/w03Dll/smoke.c @@ -12,7 +12,6 @@ typedef struct w03UnkWorkStruct { extern w03State* lbl_1_bss_0; omObjData* lbl_1_bss_138[2]; -extern Process *boardObjMan; extern s16 lbl_1_data_1E0; void fn_1_79E0(omObjData* arg0); diff --git a/src/REL/w10Dll/main.c b/src/REL/w10Dll/main.c index 0b8de21c..33283e33 100644 --- a/src/REL/w10Dll/main.c +++ b/src/REL/w10Dll/main.c @@ -1,4 +1,4 @@ -#include "include/REL/w10Dll.h" +#include "REL/w10Dll.h" #include "game/data.h" #include "game/hsfman.h" #include "game/board/lottery.h" diff --git a/src/REL/w10Dll/scene.c b/src/REL/w10Dll/scene.c index 9328f7e4..0ba84414 100644 --- a/src/REL/w10Dll/scene.c +++ b/src/REL/w10Dll/scene.c @@ -1,4 +1,4 @@ -#include "include/REL/w10Dll.h" +#include "REL/w10Dll.h" #include "game/board/char_wheel.h" #include "game/board/lottery.h" #include "game/board/main.h" diff --git a/src/dolphin/demo/DEMOInit.c b/src/dolphin/demo/DEMOInit.c index 86df9bd1..798653b4 100644 --- a/src/dolphin/demo/DEMOInit.c +++ b/src/dolphin/demo/DEMOInit.c @@ -77,10 +77,10 @@ static void __DEMOInitMem() void *arenaHi = OSGetArenaHi(); unsigned long fbSize = ((u16)(rmode->fbWidth + 15) & 0xFFF0) * rmode->xfbHeight * 2; - DemoFrameBuffer1 = (void *)(((u32)arenaLo + 0x1F) & 0xFFFFFFE0); - DemoFrameBuffer2 = (void *)(((u32)DemoFrameBuffer1 + fbSize + 0x1F) & 0xFFFFFFE0); + DemoFrameBuffer1 = (void *)(((uintptr_t)arenaLo + 0x1F) & ~0x1F); + DemoFrameBuffer2 = (void *)(((uintptr_t)DemoFrameBuffer1 + fbSize + 0x1F) & ~0x1F); DemoCurrentBuffer = DemoFrameBuffer2; - arenaLo = (void *)(((u32)DemoFrameBuffer2 + fbSize + 0x1F) & 0xFFFFFFE0); + arenaLo = (void *)(((uintptr_t)DemoFrameBuffer2 + fbSize + 0x1F) & ~0x1F); OSSetArenaLo(arenaLo); if (((OSGetConsoleType() + 0xF0000000) == 4U) && ((OSGetPhysicalMemSize() + 0xFFC00000) != 0U) && (OSGetConsoleSimulatedMemSize() < 0x01800000U)) { @@ -91,9 +91,9 @@ static void __DEMOInitMem() arenaHi = OSGetArenaHi(); arenaLo = OSInitAlloc(arenaLo, arenaHi, 1); OSSetArenaLo(arenaLo); - arenaLo = (void *)(((u32)arenaLo + 0x1F) & 0xFFFFFFE0); - arenaHi = (void *)((u32)arenaHi & 0xFFFFFFE0); - OSSetCurrentHeap(OSCreateHeap((void *)(((u32)arenaLo)), arenaHi)); + arenaLo = (void *)(((uintptr_t)arenaLo + 0x1F) & ~0x1F); + arenaHi = (void *)((uintptr_t)arenaHi & ~0x1F); + OSSetCurrentHeap(OSCreateHeap((void *)(((uintptr_t)arenaLo)), arenaHi)); OSSetArenaLo((arenaLo = arenaHi)); } @@ -210,13 +210,13 @@ static void LoadMemInfo() arenaHi = OSGetArenaHi(); arenaLo = OSInitAlloc(arenaLo, arenaHi, 1); OSSetArenaLo(arenaLo); - arenaLo = (void *)(((u32)arenaLo + 0x1F) & 0xFFFFFFE0); - arenaHi = (void *)((u32)arenaHi & 0xFFFFFFE0); + arenaLo = (void *)(((uintptr_t)arenaLo + 0x1F) & ~0x1F); + arenaHi = (void *)((uintptr_t)arenaHi & ~0x1F); OSSetCurrentHeap(OSCreateHeap((void *)(((u32)arenaLo)), arenaHi)); OSSetArenaLo((arenaLo = arenaHi)); return; } - memEntry = (void *)((u32)buf + 0x1F & 0xFFFFFFE0); + memEntry = (void *)((uintptr_t)buf + 0x1F & ~0x1F); arenaHiOld = OSGetArenaHi(); simMemEnd = OSPhysicalToCached(OSGetConsoleSimulatedMemSize()); OSSetArenaHi(OSPhysicalToCached(OSGetPhysicalMemSize())); @@ -224,8 +224,8 @@ static void LoadMemInfo() arenaHi = OSGetArenaHi(); arenaLo = OSInitAlloc(arenaLo, arenaHi, 1); OSSetArenaLo(arenaLo); - arenaLo = (void *)(((u32)arenaLo + 0x1F) & 0xFFFFFFE0); - arenaHi = (void *)((u32)arenaHi & 0xFFFFFFE0); + arenaLo = (void *)(((uintptr_t)arenaLo + 0x1F) & ~0x1F); + arenaHi = (void *)((uintptr_t)arenaHi & ~0x1F); OSSetCurrentHeap(OSCreateHeap((void *)(arenaLo), arenaHi)); OSSetArenaLo((arenaLo = arenaHi)); OSAllocFixed(&arenaHiOld, &simMemEnd); @@ -234,7 +234,7 @@ static void LoadMemInfo() while (length) { OSReport("loop\n"); transferLength = (length < 0x20) ? length : 0x20; - if (DVDReadPrio(&fileInfo, memEntry, (transferLength + 0x1F) & 0xFFFFFFE0, offset, 2) < 0) { + if (DVDReadPrio(&fileInfo, memEntry, (transferLength + 0x1F) & ~0x1F, offset, 2) < 0) { OSPanic(__FILE__, 0x49F, "An error occurred when issuing read to /meminfo.bin\n"); } indexMax = (transferLength / 8); diff --git a/src/dolphin/mtx/mtx.c b/src/dolphin/mtx/mtx.c index 30a3aa18..ab196f4e 100644 --- a/src/dolphin/mtx/mtx.c +++ b/src/dolphin/mtx/mtx.c @@ -1367,7 +1367,6 @@ void C_MTXMultVecArray(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count) void C_MTXROMultVecArray(const ROMtx m, const Vec *srcBase, Vec *dstBase, u32 count) { - u32 i; for (u32 i = 0; i < count; ++i) { Vec* src = &srcBase[i]; Vec* dst = &dstBase[i]; diff --git a/src/dolphin/mtx/quat.c b/src/dolphin/mtx/quat.c index f3e15a87..610b640a 100644 --- a/src/dolphin/mtx/quat.c +++ b/src/dolphin/mtx/quat.c @@ -14,6 +14,7 @@ void C_QUATAdd(const Quaternion *p, const Quaternion *q, Qtrn *r) r->w = p->w + q->w; } +#ifdef GEKKO void PSQUATAdd(register const Quaternion *p, register const Quaternion *q, register Quaternion *r) { asm { @@ -27,7 +28,19 @@ void PSQUATAdd(register const Quaternion *p, register const Quaternion *q, regis psq_st f0, 0x8(r5), 0, 0 } } +#endif +#ifdef TARGET_PC +void C_QUATMultiply(const Quaternion *a, const Quaternion *b, Quaternion *ab) +{ + ab->x = a->w * b->x + a->x * b->w + a->y * b->z - a->z * b->y; + ab->y = a->w * b->y - a->x * b->z + a->y * b->w + a->z * b->x; + ab->z = a->w * b->z + a->x * b->y - a->y * b->x + a->z * b->w; + ab->w = a->w * b->w - a->x * b->x - a->y * b->y - a->z * b->z; +} +#endif + +#ifdef GEKKO void PSQUATMultiply(register const Quaternion *a, register const Quaternion *b, register Quaternion *ab) { asm { @@ -55,7 +68,26 @@ void PSQUATMultiply(register const Quaternion *a, register const Quaternion *b, psq_st f5, 8(ab), 0, 0 } } +#endif +#ifdef TARGET_PC +void C_QUATNormalize(const Quaternion *src, Quaternion *unit) +{ + float len = sqrtf(src->x * src->x + src->y * src->y + src->z * src->z + src->w * src->w); + if (len > 0.0f) { + float inv_len = 1.0f / len; + unit->x = src->x * inv_len; + unit->y = src->y * inv_len; + unit->z = src->z * inv_len; + unit->w = src->w * inv_len; + } else { + unit->x = unit->y = unit->z = 0.0f; + unit->w = 1.0f; + } +} +#endif + +#ifdef GEKKO void PSQUATNormalize(const register Quaternion *src, register Quaternion *unit) { // sdata2 @@ -95,7 +127,27 @@ void PSQUATNormalize(const register Quaternion *src, register Quaternion *unit) } } } +#endif +#ifdef TARGET_PC +void C_QUATInverse(const Quaternion *src, Quaternion *inv) +{ + float len_squared = src->x * src->x + src->y * src->y + src->z * src->z + src->w * src->w; + + if (len_squared > 0.0f) { + float inv_len_squared = 1.0f / len_squared; + inv->x = -src->x * inv_len_squared; + inv->y = -src->y * inv_len_squared; + inv->z = -src->z * inv_len_squared; + inv->w = src->w * inv_len_squared; + } else { + inv->x = inv->y = inv->z = 0.0f; + inv->w = 1.0f; + } +} +#endif + +#ifdef GEKKO void PSQUATInverse(const register Quaternion *src, register Quaternion *inv) { register f32 vv1, vv2, vv3, vv4; @@ -126,6 +178,7 @@ void PSQUATInverse(const register Quaternion *src, register Quaternion *inv) psq_st vv3, 8(inv), 1, 0; } } +#endif void C_QUATRotAxisRad(Quaternion *q, const Vec *axis, f32 rad) { @@ -133,7 +186,7 @@ void C_QUATRotAxisRad(Quaternion *q, const Vec *axis, f32 rad) Vec dst; tmp = rad; - PSVECNormalize(axis, &dst); + VECNormalize(axis, &dst); tmp2 = tmp * 0.5f; tmp3 = sinf(tmp * 0.5f); diff --git a/src/dolphin/os/OSAlloc.c b/src/dolphin/os/OSAlloc.c index db41789a..86a7e015 100644 --- a/src/dolphin/os/OSAlloc.c +++ b/src/dolphin/os/OSAlloc.c @@ -155,7 +155,7 @@ void *OSAllocFromHeap(int heap, unsigned long size) hd = &HeapArray[heap]; size += 0x20; - size = (size + 0x1F) & 0xFFFFFFE0; + size = (size + 0x1F) & ~0x1F; for (cell = hd->free; cell != NULL; cell = cell->next) { if ((signed)size <= (signed)cell->size) { diff --git a/src/dolphin/os/OSStopwatch.c b/src/dolphin/os/OSStopwatch.c index 80e7dbdd..e1424396 100644 --- a/src/dolphin/os/OSStopwatch.c +++ b/src/dolphin/os/OSStopwatch.c @@ -34,7 +34,7 @@ void OSStopStopwatch(struct OSStopwatch *sw) } } -long long OSCheckStopwatch(struct OSStopwatch *sw) +OSTime OSCheckStopwatch(OSStopwatch *sw) { long long currTotal; diff --git a/src/game/armem.c b/src/game/armem.c index 66142f66..26b359f6 100644 --- a/src/game/armem.c +++ b/src/game/armem.c @@ -39,8 +39,13 @@ void HuARInit(void) { for (i = 0; i < 64; i++) { ARInfo[i].amemptr = 0; } +#ifdef TARGET_PC + size = ARGetSize() - 0x20; + ARBase = 0x20; +#else size = ARGetSize() - 0x808000; ARBase = 0x808000; +#endif ARInfo[0].amemptr = ARBase; ARInfo[0].size = size; ARInfo[0].flag = 0; @@ -260,7 +265,11 @@ void *HuAR_ARAMtoMRAMNum(u32 src, s32 num) { block = HuARInfoGet(src); if (HuDataReadChk(block->dir << 16) >= 0) { +#ifdef NON_MATCHING + return 0; +#else return; +#endif } size = HuARSizeGet(src); dst = HuMemDirectMallocNum(HEAP_DVD, size, num); @@ -272,7 +281,7 @@ void *HuAR_ARAMtoMRAMNum(u32 src, s32 num) { ARQueBuf[arqIdx].dst = dst; arqCnt++; PPCSync(); - ARQPostRequest(&ARQueBuf[arqIdx].req, 0x1234, 1, 0, src, (u32) dst, size, ArqCallBackAM); + ARQPostRequest(&ARQueBuf[arqIdx].req, 0x1234, 1, 0, src, (uintptr_t) dst, size, ArqCallBackAM); arqIdx++; arqIdx &= 0xF; return dst; diff --git a/src/game/board/basic_space.c b/src/game/board/basic_space.c index abce562c..a09e96dc 100644 --- a/src/game/board/basic_space.c +++ b/src/game/board/basic_space.c @@ -1,3 +1,4 @@ +#include "game/audio.h" #include "game/board/basic_space.h" #include "game/board/main.h" #include "game/board/model.h" @@ -236,10 +237,10 @@ static void CreateCoinChg(coinChg *coin_chg, Vec *pos) { BoardModelMotionSpeedSet(coin_chg->sign_model, 0.0f); BoardModelMotionSpeedSet(coin_chg->tens_model, 0.0f); BoardModelMotionSpeedSet(coin_chg->ones_model, 0.0f); - BoardModelScaleSet(coin_chg->sign_model, 0.001, 0.001, 0.001); - BoardModelScaleSet(coin_chg->tens_model, 0.001, 0.001, 0.001); - BoardModelScaleSet(coin_chg->ones_model, 0.001, 0.001, 0.001); - BoardModelScaleSet(coin_chg->coin_model, 0.001, 0.001, 0.001); + BoardModelScaleSet(coin_chg->sign_model, 0.001f, 0.001f, 0.001f); + BoardModelScaleSet(coin_chg->tens_model, 0.001f, 0.001f, 0.001f); + BoardModelScaleSet(coin_chg->ones_model, 0.001f, 0.001f, 0.001f); + BoardModelScaleSet(coin_chg->coin_model, 0.001f, 0.001f, 0.001f); BoardModelLayerSet(coin_chg->sign_model, 1); BoardModelLayerSet(coin_chg->tens_model, 1); BoardModelLayerSet(coin_chg->ones_model, 1); diff --git a/src/game/board/battle.c b/src/game/board/battle.c index acf10777..3f40db8b 100755 --- a/src/game/board/battle.c +++ b/src/game/board/battle.c @@ -19,6 +19,8 @@ #include "ext_math.h" +#include + typedef struct { struct { u8 unk00_field0 : 1; diff --git a/src/game/board/block.c b/src/game/board/block.c index 0f7f86aa..256c5661 100644 --- a/src/game/board/block.c +++ b/src/game/board/block.c @@ -1,4 +1,5 @@ #include "ext_math.h" +#include "game/audio.h" #include "game/board/main.h" #include "game/board/model.h" #include "game/board/player.h" @@ -8,6 +9,8 @@ #include "game/objsub.h" #include "game/process.h" +#include +#include #define BLOCK_SPAWN 0 #define BLOCK_HIT 2 diff --git a/src/game/board/boo.c b/src/game/board/boo.c index 56dff9ce..14acebd2 100755 --- a/src/game/board/boo.c +++ b/src/game/board/boo.c @@ -95,6 +95,8 @@ typedef struct { float unk04; } BallTakeCoinWork; +static BOOL CheckBallCoinDone(void); +static void TakeBallStar(void); static void ComSetupStealPlayer(s32 arg0); static void ComSetStealPlayerInput(s32 arg0, s32 arg1); static void ExecCoinSteal(void); @@ -131,8 +133,10 @@ static void BallBooAttack(omObjData *arg0, BallBooWork *arg1); static void BallBooFlash(omObjData *arg0, BallBooWork *arg1); static void TakeBallCoin(void); static void ExecTakeBallCoin(omObjData *arg0); +static void ExecTakeBallStar(omObjData *arg0); static void TakeBallCoinPosSet(BallTakeCoinData *arg0, Vec *arg1); static void UpdatePlayerCoins(void); +static BOOL CheckTakeBallStarDone(void); s8 lbl_801D41E2; static s8 stealTarget; diff --git a/src/game/board/boo_house.c b/src/game/board/boo_house.c index b35cadfd..cc54a12f 100644 --- a/src/game/board/boo_house.c +++ b/src/game/board/boo_house.c @@ -1,5 +1,5 @@ +#include "game/audio.h" #include "game/board/boo_house.h" - #include "game/board/audio.h" #include "game/board/boo.h" #include "game/board/com.h" @@ -16,6 +16,9 @@ #include "ext_math.h" +#include +#include + // bss static s16 houseMdl[6]; diff --git a/src/game/board/bowser.c b/src/game/board/bowser.c index bcbe7133..c26bea1f 100644 --- a/src/game/board/bowser.c +++ b/src/game/board/bowser.c @@ -15,6 +15,10 @@ #include "ext_math.h" #include "string.h" +#include +#include +#include + typedef struct bowser_event_data { s16 sprite[3]; s16 delay[3]; @@ -1215,7 +1219,6 @@ static void ConfigBowserEvent(void) for(coins=i=0; i<4; i++) { coins += BoardPlayerCoinsGet(i); } - retry: while(1) { chance = BoardRandMod(100); if(chance >= 95) { diff --git a/src/game/board/com.c b/src/game/board/com.c index ed7f1e3c..22681cef 100755 --- a/src/game/board/com.c +++ b/src/game/board/com.c @@ -12,6 +12,8 @@ #include "ext_math.h" +#include + typedef BOOL (*UseCheckFunc)(s32 player, s32 item); static void ExecComKeyLeft(void); diff --git a/src/game/board/fortune.c b/src/game/board/fortune.c index 86294638..cc9bf23d 100644 --- a/src/game/board/fortune.c +++ b/src/game/board/fortune.c @@ -8,6 +8,10 @@ #include "game/wipe.h" +#include +#include +#include + static Vec camTargetFortune; static Vec camPosFortune; @@ -197,7 +201,6 @@ static void FortunePostMG(void) static void CreateFortunePlatform(void) { - PlayerState *player; Vec pos, rot; PlatformWork *work; fortunePlatformObj = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecFortunePlatform); diff --git a/src/game/board/item.c b/src/game/board/item.c index cf77d6ec..80bb81f7 100755 --- a/src/game/board/item.c +++ b/src/game/board/item.c @@ -28,6 +28,13 @@ #include "ext_math.h" +#include + +#ifndef __MWERKS__ +#include +extern s32 rand8(void); +#endif + typedef struct { /* 0x00 */ s16 unk00; /* 0x02 */ s16 unk02; diff --git a/src/game/board/last5.c b/src/game/board/last5.c index 8b9261c9..f92f4674 100644 --- a/src/game/board/last5.c +++ b/src/game/board/last5.c @@ -340,7 +340,7 @@ static void SetTeamResultTarget(s32 team, Vec *pos); static void KillTeamResult(void); static void UpdateTeamResult(omObjData *object); -void BoardLast5Exec() +void BoardLast5Exec(void) { GWSystem.player_curr = -1; last5Proc = HuPrcChildCreate(ExecLast5, 8200, 14336, 0, boardMainProc); @@ -703,10 +703,10 @@ static void Last5Main(void) temp_r20 = GetLast5RouletteResult(); GWSystem.last5_effect = temp_r20; if(GWSystem.last5_effect == 2) { - BoardSpaceTypeForce(2, 3); + BoardSpaceTypeForce(2, 3); } if(GWSystem.last5_effect == 3) { - BoardSpaceTypeForce(2, 7); + BoardSpaceTypeForce(2, 7); } temp_r24 = 18+messBase+temp_r20; BoardWinCreate(2, temp_r24, BoardWinPortraitGetStar()); diff --git a/src/game/board/lottery.c b/src/game/board/lottery.c index d780c496..7698cdea 100755 --- a/src/game/board/lottery.c +++ b/src/game/board/lottery.c @@ -24,6 +24,10 @@ #include "ext_math.h" #include "stdlib.h" +#ifndef __MWERKS__ +#include +#endif + typedef struct { struct { u8 unk00_field0 : 1; diff --git a/src/game/board/main.c b/src/game/board/main.c index 1ce8c180..e4c0f5dd 100644 --- a/src/game/board/main.c +++ b/src/game/board/main.c @@ -1,15 +1,7 @@ -#include "game/gamework_data.h" +#include "game/board/main.h" #include "ext_math.h" -#include "game/object.h" -#include "game/flag.h" -#include "game/data.h" -#include "game/wipe.h" -#include "string.h" -#include "game/hsfman.h" -#include "game/hsfdraw.h" #include "game/board/battle.h" #include "game/board/lottery.h" -#include "game/board/main.h" #include "game/board/model.h" #include "game/board/pause.h" #include "game/board/player.h" @@ -18,9 +10,30 @@ #include "game/board/start.h" #include "game/board/tutorial.h" #include "game/board/ui.h" -#include "game/pad.h" +#include "game/data.h" #include "game/disp.h" +#include "game/flag.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" #include "game/msm.h" +#include "game/object.h" +#include "game/pad.h" +#include "game/wipe.h" +#include "string.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +extern void BoardLast5Exec(void); typedef struct camera_view { s16 x_rot; @@ -33,11 +46,11 @@ u32 boardRandSeed; static omObjData *last5GfxObj; static omObjData *confettiObj; static omObjData *filterObj; -BoardTurnStartHook boardTurnStartFunc; -BoardBowserHook boardBowserHook; -void (*boardStarShowNextHook)(void); -void (*boardStarGiveHook)(void); -BoardFunc boardTurnFunc; +SHARED_SYM BoardTurnStartHook boardTurnStartFunc; +SHARED_SYM BoardBowserHook boardBowserHook; +SHARED_SYM void (*boardStarShowNextHook)(void); +SHARED_SYM void (*boardStarGiveHook)(void); +SHARED_SYM BoardFunc boardTurnFunc; BoardLightHook boardLightResetHook; BoardLightHook boardLightSetHook; static BoardFunc destroyFunc; @@ -297,7 +310,6 @@ void BoardSaveInit(s32 board) GWSystem.block_pos = 0; memset(GWSystem.board_data, 0, sizeof(GWSystem.board_data)); for(i=0; i<4; i++) { - s32 party_flag; BoardPlayerAutoSizeSet(i, 0); GWPlayer[i].draw_ticket = 0; GWPlayer[i].color = 0; @@ -1016,21 +1028,21 @@ void BoardCameraRotSet(float x, float y) camera->rot.y = y; } -void BoardCameraNearFarSet(float near, float far) +void BoardCameraNearFarSet(float nnear, float ffar) { BoardCameraData *camera = &boardCamera; - camera->near = near; - camera->far = far; + camera->nnear = nnear; + camera->ffar = ffar; } -void BoardCameraNearFarGet(float *near, float *far) +void BoardCameraNearFarGet(float *nnear, float *ffar) { BoardCameraData *camera = &boardCamera; - if(near) { - *near = camera->near; + if(nnear) { + *nnear = camera->nnear; } - if(far) { - *far = camera->far; + if(ffar) { + *ffar = camera->ffar; } } @@ -1137,8 +1149,8 @@ void BoardCameraInit(void) memset(&boardCamera, 0, sizeof(BoardCameraData)); camera = &boardCamera; camera->fov = 25; - camera->near = 100; - camera->far = 13000; + camera->nnear = 100; + camera->ffar = 13000; camera->aspect = HU_DISP_ASPECT; camera->viewport_x = 0; camera->viewport_y = 0; @@ -1187,7 +1199,7 @@ static void UpdateCamera(omObjData *object) } CalcCameraView(); camera = &boardCamera; - Hu3DCameraPerspectiveSet(camera->mask, camera->fov, camera->near, camera->far, camera->aspect); + Hu3DCameraPerspectiveSet(camera->mask, camera->fov, camera->nnear, camera->ffar, camera->aspect); Hu3DCameraViewportSet(camera->mask, camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h, camera->viewport_near, camera->viewport_far); target = &camera->target; if(camera->pos_calc) { diff --git a/src/game/board/mushroom.c b/src/game/board/mushroom.c index 1b0c57b6..81ad5e88 100644 --- a/src/game/board/mushroom.c +++ b/src/game/board/mushroom.c @@ -9,10 +9,15 @@ #include "game/objsub.h" -#include "math.h" #include "ext_math.h" +#include "math.h" -extern s32 boardTutorialData[4]; +#include +#include +#include +#include + +SHARED_SYM extern s32 boardTutorialData[4]; static void KillMushroom(); @@ -70,9 +75,6 @@ static void WaitItemGive(void); static void MushroomMain(void) { Vec sp14[2]; Vec sp8; - s32 temp_r0; - s32 temp_r0_2; - s32 var_r30; s32 curPlayer; s8 var_r29; boxObjWork* box; @@ -236,7 +238,6 @@ static void ShowBox(ItemGiveWork2*, omObjData*); static void BoxMain(omObjData* arg0) { - s32 temp_r0; ItemGiveWork2* temp_r30; temp_r30 = OM_GET_WORK_PTR(arg0, ItemGiveWork2); diff --git a/src/game/board/pause.c b/src/game/board/pause.c index c019f6a4..1b331d56 100755 --- a/src/game/board/pause.c +++ b/src/game/board/pause.c @@ -18,6 +18,9 @@ #include "game/window.h" #include "game/wipe.h" +#include +#include + typedef struct { struct { u8 unk00_field0 : 1; diff --git a/src/game/board/player.c b/src/game/board/player.c index 046aafea..2ac2680e 100644 --- a/src/game/board/player.c +++ b/src/game/board/player.c @@ -21,6 +21,8 @@ #include "ext_math.h" #include "stdlib.h" +#include + static void InitJunction(s32, s32, f32); static void UpdateJunctionGfx(omObjData *); static void StopJunctionPlayer(s32); @@ -67,7 +69,7 @@ static HsfMaterial *playerMatCopy[4]; static s32 (*postTurnHook[4])(); static s32 (*preTurnHook[4])(); -s16 boardPlayerMdl[4]; +SHARED_SYM s16 boardPlayerMdl[4]; static s16 playerMot[4]; static s8 itemPrev; static s8 moveAwayPlayer[4]; @@ -266,7 +268,6 @@ void BoardPlayerModelInit(void) s32 temp_r25; s32 temp_r24; s16 temp_r3; - s32 temp_r4; PlayerState *temp_r27; s32 ro0[8] = { DATA_MAKE_NUM(DATADIR_MARIOMDL1, 0x00), DATA_MAKE_NUM(DATADIR_LUIGIMDL1, 0x00), DATA_MAKE_NUM(DATADIR_PEACHMDL1, 0x00), @@ -337,7 +338,6 @@ void BoardPlayerModelKill(void) { s32 var_r31; PlayerState *temp_r30; - PlayerState *temp_r29; for (var_r31 = 0; var_r31 < 4; var_r31++) { temp_r30 = BoardPlayerGet(var_r31); @@ -689,7 +689,6 @@ s32 BoardPlayerCoinsGet(s32 arg0) void BoardPlayerCoinsAdd(s32 arg0, s32 arg1) { PlayerState *player; - s16 coins; player = BoardPlayerGet(arg0); if ((arg1 > 0) && (player->coins_total < 0x3E7)) { @@ -730,9 +729,11 @@ s32 BoardPlayerSizeGet(s32 idx) PlayerState *player; player = BoardPlayerGet(idx); +#ifndef NON_MATCHING if (!player) { return; } +#endif return player->size; } @@ -833,7 +834,6 @@ void BoardPlayerTurnExec(s32 arg0) void BoardPlayerTurnRollExec(s32 arg0) { - s32 temp_r28; s32 temp_r30; GWPlayer[arg0].roll = 0; @@ -876,8 +876,6 @@ void BoardPlayerTurnMoveExec(s32 arg0) s32 temp_r30; s32 var_r29; s32 var_r28; - s32 temp_r0; - s32 temp_r1; BoardPauseDisableSet(1); var_r28 = 0; @@ -977,7 +975,6 @@ void BoardPlayerTurnMoveExec(s32 arg0) GWSystem.bowser_event = 0xF; } BoardPlayerZoomRestore(arg0); - return; } void BoardPlayerPostTurnHookExec(s32 arg0) @@ -1067,9 +1064,6 @@ static inline GetLinkCount(s32 playerIdx, s32 boardIdx) s32 linkCount; BoardSpace *boardSpaceLink; BoardSpace *boardSpaceFlag; - PlayerState *player; - s32 color; - s32 temp; linkCount = 0; boardSpaceLink = BoardSpaceGet(0, boardIdx); @@ -1325,7 +1319,6 @@ static s32 DoDebugMove(s32 arg0, s16 *arg1) s32 var_r21; s32 var_r20; s32 var_r18; - bitcopy *var_r17; var_r18 = -1; @@ -1653,7 +1646,6 @@ void BoardPlayerMoveTo(s32 arg0, s32 arg1) { Vec sp18; Vec spC; - PlayerState *player; BoardModelPosGet(BoardPlayerModelGet(arg0), &sp18); BoardSpacePosGet(0, arg1, &spC); @@ -1667,8 +1659,6 @@ void BoardPlayerMoveBetween(s32 arg0, s32 arg1, s32 arg2) { Vec sp1C; Vec sp10; - s32 spC; - s32 sp8; BoardSpacePosGet(0, arg1, &sp1C); BoardSpacePosGet(0, arg2, &sp10); @@ -1682,7 +1672,6 @@ void BoardPlayerMoveToAsync(s32 arg0, s32 arg1) { Vec sp18; Vec spC; - s32 sp8; BoardModelPosGet(BoardPlayerModelGet(arg0), &sp18); BoardSpacePosGet(0, arg1, &spC); @@ -1868,11 +1857,8 @@ static void DiceJumpFunc(omObjData *arg0) { Vec sp38; f32 temp_f31; - PlayerState *var_r30; bitcopy2 *temp_r31; s16 var_r28; - s32 var_r23; - s32 var_r17; temp_r31 = OM_GET_WORK_PTR(arg0, bitcopy2); if ((temp_r31->field00_bit0 != 0) || (BoardIsKill() != 0)) { @@ -1938,7 +1924,6 @@ void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) f32 var_f27; f32 var_f22; f32 var_f21; - f32 var_f19; omObjData *temp_r3; s32 var_r22; s32 var_r20; @@ -2212,11 +2197,7 @@ static void UpdateRoll(omObjData *arg0) void BoardPlayerBtnDownWait(s32 arg0, u32 arg1) { - s32 spC; - s32 sp8; - s32 temp_r31; - - temp_r31 = GWPlayer[arg0].port; + s32 temp_r31 = GWPlayer[arg0].port; while (1) { if ((HuPadBtnDown[temp_r31] & arg1) != 0) return; @@ -2226,9 +2207,7 @@ void BoardPlayerBtnDownWait(s32 arg0, u32 arg1) void BoardPlayerAutoSizeSet(s32 player, s32 value) { - PlayerState *temp_r28; - - temp_r28 = BoardPlayerGet(player); + PlayerState *temp_r28 = BoardPlayerGet(player); if ((temp_r28->auto_size != 0) || (value == 0)) { BoardStatusHammerKill(player); } @@ -2243,9 +2222,11 @@ s32 BoardPlayerAutoSizeGet(s32 arg0) PlayerState *player; player = BoardPlayerGet(arg0); +#ifndef NON_MATCHING if (!player) { return; } +#endif return player->auto_size; } @@ -2360,8 +2341,6 @@ void BoardBowserSuitInit(s32 arg0) void BoardBowserSuitKill(s32 arg0) { - bitcopy3 *temp; - if (bowserSuitObj != 0) { OM_GET_WORK_PTR(bowserSuitObj, bitcopy3)->field00_bit0 = 1; } diff --git a/src/game/board/shop.c b/src/game/board/shop.c index 0f5d714d..f790efb1 100755 --- a/src/game/board/shop.c +++ b/src/game/board/shop.c @@ -24,6 +24,8 @@ #include "dolphin.h" #include "ext_math.h" +#include + typedef struct { struct { u8 unk00_field0 : 1; @@ -981,8 +983,8 @@ static void CreateShopItemChoice(s32 arg0, s32 arg1) omObjData *temp_r30; ItemChoiceWork *var_r31; s16 spC; - s16 i; #if VERSION_PAL + s16 i; for (i = 0; i < 6; i++) { cursorPosTbl[i][0] = 190; } diff --git a/src/game/board/space.c b/src/game/board/space.c index 691a920a..c7172c10 100644 --- a/src/game/board/space.c +++ b/src/game/board/space.c @@ -17,6 +17,17 @@ #include "ext_math.h" #include "string.h" +#include +#include +#include +#include +#include + +s32 BoardBlockExec(s32 player, s32 space); // wrong +extern void BoardMushroomExec(s32 player, s32 space); // wrong +extern void BoardBooHouseExec(s32 player, s32 space); // wrong +extern void BoardBlockHouseExec(s32 player, s32 space); // wrong + static BoardSpace spaceData[2][256]; s16 boardSpaceStarTbl[8]; static GXTexObj spaceHiliteTex; @@ -300,7 +311,6 @@ void BoardSpaceHostSet(s32 space) { s16 host_space; Vec pos; - BoardSpace *space_plat; BoardSpaceTypeSet(0, space, 8); host_space = BoardSpaceLinkFlagSearch(0, space, 0x04000000); BoardSpacePosGet(0, host_space, &pos); @@ -817,7 +827,7 @@ static void DrawSpaces(ModelData *model, Mtx matrix) camera = &boardCamera; BoardCameraPosGet(&pos); BoardCameraTargetGet(&target); - MTXPerspective(proj, camera->fov, camera->aspect, camera->near, camera->far); + MTXPerspective(proj, camera->fov, camera->aspect, camera->nnear, camera->ffar); GXSetProjection(proj, GX_PERSPECTIVE); MTXLookAt(lookat, &pos, &camera->up, &target); GXSetViewport(camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h, camera->viewport_near, camera->viewport_far); @@ -1079,14 +1089,11 @@ void BoardSpaceInit(s32 data_num) if (_CheckFlag(FLAG_ID_MAKE(1, 1))) { Vec pos; Vec rot; - s16 space; BoardModelVisibilitySet(starPlatMdl, 1); GWSystem.star_flag |= (u8)(1 << GWSystem.star_pos); BoardSpaceTypeSet(0, boardSpaceStarTbl[GWSystem.star_pos], 8); { - int space; - BoardSpace *space_plat; - space = BoardSpaceLinkFlagSearch(0, BoardSpaceStarGetCurr(), 0x04000000); + int space = BoardSpaceLinkFlagSearch(0, BoardSpaceStarGetCurr(), 0x04000000); BoardSpacePosGet(0, space, &pos); BoardModelPosSetV(StarPlatGetMdl(), &pos); BoardSpaceRotGet(0, space, &rot); diff --git a/src/game/board/star.c b/src/game/board/star.c index a91518f9..1de6d249 100755 --- a/src/game/board/star.c +++ b/src/game/board/star.c @@ -21,9 +21,14 @@ #include "game/objsub.h" #include "game/window.h" #include "game/wipe.h" +#include "game/hsfex.h" #include "ext_math.h" +#ifndef __MWERKS__ +#include +#endif + typedef struct { struct { u8 unk00_field0 : 1; diff --git a/src/game/board/tutorial.c b/src/game/board/tutorial.c index ff42f3c1..9d93d5ab 100755 --- a/src/game/board/tutorial.c +++ b/src/game/board/tutorial.c @@ -1,11 +1,13 @@ #include "game/board/tutorial.h" +#include "game/board/main.h" +#include "game/board/model.h" #include "game/flag.h" #include "game/gamework_data.h" #include "game/process.h" -#include "game/board/main.h" -#include "game/board/model.h" -s32 boardTutorialData[4]; // maybe a single s32 + padding? +#include + +SHARED_SYM s32 boardTutorialData[4]; // maybe a single s32 + padding? static void (*tutorialHook)(s16, s32); s8 boardTutorialDirInputX; s8 boardTutorialDirInputY; @@ -15,7 +17,7 @@ s8 boardTutorialBlockItem; s8 boardTutorialBlockF; s8 boardTutorialUseItem; static s16 hostMdl; -s8 boardTutorialF; +SHARED_SYM s8 boardTutorialF; static Process *tutorialProcess; static void *playerCfgCopy; static void *playerCopy; diff --git a/src/game/board/view.c b/src/game/board/view.c index 5af81958..dcbd1c65 100755 --- a/src/game/board/view.c +++ b/src/game/board/view.c @@ -127,8 +127,6 @@ static inline void BoardViewInlineFunc00(Vec *arg0, Vec *arg1, u16 arg2) void BoardViewFocusSet(Vec *arg0, u16 arg1) { - u16 var_r31; - if (BoardPauseDisableGet() == 0) { BoardPauseDisableSet(1); pauseDisableF = 1; @@ -143,8 +141,6 @@ void BoardViewFocusSet(Vec *arg0, u16 arg1) void BoardViewMoveStart(Vec *arg0, Vec *arg1, u16 arg2) { - u16 var_r31; - if (BoardPauseDisableGet() == 0) { BoardPauseDisableSet(1); pauseDisableF = 1; diff --git a/src/game/card.c b/src/game/card.c index 97fdd32d..a057ed46 100644 --- a/src/game/card.c +++ b/src/game/card.c @@ -4,7 +4,7 @@ #include "version.h" static void *cardWork; -u8 UnMountCnt; +SHARED_SYM u8 UnMountCnt; static void MountCallBack(s32 chan, s32 result); diff --git a/src/game/chrman.c b/src/game/chrman.c index 0bfd8d99..d2530265 100755 --- a/src/game/chrman.c +++ b/src/game/chrman.c @@ -13,6 +13,10 @@ #include "ext_math.h" +#ifndef __MWERKS__ +#include "game/frand.h" +#endif + typedef struct { /* 0x00 */ s16 unk00; /* 0x02 */ s16 unk02; @@ -87,8 +91,8 @@ static UnkCharInstanceStruct charInstance[8]; static s16 effectMdl[8]; static EffectParamData *particleData[8]; static Process *itemHookProcess[32]; -static u16 lbl_801975B0[8]; -static u8 lbl_801975C0[0x90]; // Unused? +static u16 effectFlag[15]; +static u8 lbl_801975C0[0x82]; // Unused? static s32 skipAnimUpdate; static void *effectAMemP; @@ -681,13 +685,14 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, static s32 PlayCharVoice(s16 character, s16 arg1, u8 arg2) { - UnkCharInstanceStruct *temp_r31; - ModelData *temp_r29; - - temp_r31 = &charInstance[character]; - temp_r29 = &Hu3DData[temp_r31->unk00]; + UnkCharInstanceStruct *temp_r31 = &charInstance[character]; + ModelData *temp_r29 = &Hu3DData[temp_r31->unk00]; if (arg2 & 1) { +#ifdef NON_MATCHING + return 0; +#else return; +#endif } if (temp_r31->unkAC & 8) { return HuAudCharVoicePlayPos(character, arg1, &temp_r29->pos); @@ -1131,7 +1136,7 @@ void CharModelKill(s16 character) CharModelKill(i); } for (i = 0; i < 15; i++) { - lbl_801975B0[i] = 0; + effectFlag[i] = 0; } return; } @@ -1732,10 +1737,10 @@ void CharModelEffectEnableSet(s16 character, s32 arg1) if (character >= 8) { if (arg1 == 0) { - lbl_801975B0[character] |= 0x10; + effectFlag[character] |= 0x10; } else { - lbl_801975B0[character] &= ~0x10; + effectFlag[character] &= ~0x10; } return; } @@ -1831,7 +1836,7 @@ static void UpdateNpcEffect(void) temp_r26 = Hu3DMotionTimeGet(temp_r25); switch (temp_r27[2]) { 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.y = 1.0 + 0.1 * frandmod(10); effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y); @@ -1850,7 +1855,7 @@ static void UpdateNpcEffect(void) } break; 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.y = 2.0 + 0.1 * frandmod(10); effectDustParam.unk0C.z = 4.0 * -cosd(temp_r30->rot.y); @@ -1870,7 +1875,7 @@ static void UpdateNpcEffect(void) break; case 2: 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.y = 1.0 + 0.1 * frandmod(10); effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y); @@ -1889,7 +1894,7 @@ static void UpdateNpcEffect(void) break; case 3: 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.y = 1.0 + 0.1 * frandmod(10); effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y); @@ -1908,7 +1913,7 @@ static void UpdateNpcEffect(void) break; case 4: 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.y = 1.0 + 0.1 * frandmod(10); effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y); @@ -1929,7 +1934,7 @@ static void UpdateNpcEffect(void) if (temp_r26 != 0) { break; } - if (lbl_801975B0[temp_r28] & 0x10) { + if (effectFlag[temp_r28] & 0x10) { break; } for (i = 0; i < 8; i++) { @@ -1969,7 +1974,11 @@ static s32 PlayStepFX(s16 character, s16 arg1, u8 arg2) temp_r31 = &charInstance[character]; var_r28 = &Hu3DData[temp_r31->unk00]; if (arg2 & 1) { +#ifdef NON_MATCHING + return 0; +#else return; +#endif } if (temp_r31->unkB0 == 4) { arg1 = 0x109; diff --git a/src/game/data.c b/src/game/data.c index 4686fa57..5fb4dca3 100644 --- a/src/game/data.c +++ b/src/game/data.c @@ -3,6 +3,8 @@ #include "game/process.h" #include "dolphin/dvd.h" +#include "port/byteswap.h" + #define PTR_OFFSET(ptr, offset) (void *)(((u8 *)(ptr)+(u32)(offset))) #define DATA_EFF_SIZE(size) (((size)+1) & ~0x1) @@ -22,7 +24,12 @@ static FileListEntry DataDirStat[] = { u32 DirDataSize; static u32 DataDirMax; static s32 shortAccessSleep; -static DataReadStat ATTRIBUTE_ALIGN(32) ReadDataStat[DATA_MAX_READSTAT]; +static DataReadStat ATTRIBUTE_ALIGN(32) +#if TARGET_PC +ReadDataStat[DATA_MAX_READSTAT + 1]; // to avoid bug +#else +ReadDataStat[DATA_MAX_READSTAT]; +#endif void HuDataInit(void) { diff --git a/src/game/hsfanim.c b/src/game/hsfanim.c index 6d13b267..c24c6a98 100755 --- a/src/game/hsfanim.c +++ b/src/game/hsfanim.c @@ -31,10 +31,10 @@ static void ParManHook(ModelData *arg0, ParticleData *arg1, Mtx matrix); u32 frand(void); -extern u32 GlobalCounter; +SHARED_SYM extern u32 GlobalCounter; -Hu3DTexAnimDataStruct Hu3DTexAnimData[HU3D_TEXANIM_MAX]; -Hu3DTexScrDataStruct Hu3DTexScrData[16]; +SHARED_SYM Hu3DTexAnimDataStruct Hu3DTexAnimData[HU3D_TEXANIM_MAX]; +SHARED_SYM Hu3DTexScrDataStruct Hu3DTexScrData[16]; static Process *parManProc[64]; void Hu3DAnimInit(void) { diff --git a/src/game/hsfdraw.c b/src/game/hsfdraw.c index 0d45b89c..6aca1642 100755 --- a/src/game/hsfdraw.c +++ b/src/game/hsfdraw.c @@ -1,9 +1,9 @@ #include "game/hsfdraw.h" +#include "game/disp.h" #include "game/hsfanim.h" #include "game/hsfformat.h" #include "game/hsfload.h" #include "game/sprite.h" -#include "game/disp.h" #include "ext_math.h" #include "string.h" @@ -90,6 +90,7 @@ static u16 *faceNumBuf; static s32 DLTotalNum; static u32 totalSize; static uintptr_t mallocNo; +static uintptr_t mallocNo; static s32 curModelID; static s16 polySize; static s32 PGFinishF; @@ -97,23 +98,19 @@ static u8 *PGName; static s32 TL32F; static s32 CancelTRXF; -u8 texMtxTbl[] = { - GX_TEXMTX0, GX_TEXMTX1, - GX_TEXMTX2, GX_TEXMTX3, - GX_TEXMTX4, GX_TEXMTX5, - GX_TEXMTX6, GX_TEXMTX7, - GX_TEXMTX8, GX_TEXMTX9 -}; +SHARED_SYM u8 texMtxTbl[] = { GX_TEXMTX0, GX_TEXMTX1, GX_TEXMTX2, GX_TEXMTX3, GX_TEXMTX4, GX_TEXMTX5, GX_TEXMTX6, GX_TEXMTX7, GX_TEXMTX8, GX_TEXMTX9 }; static s16 oneceF = 1; static GXColor firstTev = { 0xFF, 0xFF, 0x00, 0x00 }; static GXColor secondTev = { 0x00, 0x00, 0xFF, 0xFF }; -void Hu3DDrawPreInit(void) { +void Hu3DDrawPreInit(void) +{ DrawObjIdx = 0; } -void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2) { +void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2) +{ HsfDrawObject *temp_r31; HsfData *temp_r28; float temp_f31; @@ -137,7 +134,7 @@ void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2) { modelObjNum = 0; GXSetCullMode(GX_CULL_BACK); for (i = 0; i < 8; i++) { - BmpPtrBak[i] = (HsfAttribute*) -1; + BmpPtrBak[i] = (HsfAttribute *)-1; } MTXCopy(arg1, MTXBuf[0]); scaleBuf[0] = *arg2; @@ -146,10 +143,11 @@ void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2) { hookIdx = -1; shadingBak = -1; vtxModeBak = -1; - materialBak = (HsfMaterial*) -1; + materialBak = (HsfMaterial *)-1; if (arg0->unk_08 != -1) { attachMotionF = 1; - } else { + } + else { attachMotionF = 0; } objCall(arg0, temp_r28->root); @@ -157,7 +155,8 @@ void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2) { oneceF = 1; } -static void objCall(ModelData *arg0, HsfObject *arg1) { +static void objCall(ModelData *arg0, HsfObject *arg1) +{ modelObjNum++; switch (arg1->type) { case 2: @@ -188,7 +187,8 @@ static void objCall(ModelData *arg0, HsfObject *arg1) { } } -static void objMesh(ModelData *arg0, HsfObject *arg1) { +static void objMesh(ModelData *arg0, HsfObject *arg1) +{ HsfDrawObject *temp_r29; HsfConstData *temp_r25; HsfTransform *var_r30; @@ -212,7 +212,8 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { temp_r20 = arg0->hsfData; if (attachMotionF == 0) { var_r30 = &arg1->data.base; - } else { + } + else { var_r30 = &arg1->data.curr; } temp_r25 = arg1->constData; @@ -221,7 +222,8 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { if (arg1->data.cenvCnt != 0 && hookIdx == -1) { temp_r21 = arg1 - temp_r20->object; MTXConcat(MTXBuf[0], temp_r20->matrix->data[temp_r21 + temp_r20->matrix->base_idx], MTXBuf[MTXIdx]); - } else { + } + else { MTXScale(sp1C, var_r30->scale.x, var_r30->scale.y, var_r30->scale.z); mtxRotCat(sp1C, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); mtxTransCat(sp1C, var_r30->pos.x, var_r30->pos.y, var_r30->pos.z); @@ -238,18 +240,21 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { sp1C[0][3] = sp1C[1][3] = sp1C[2][3] = 0.0f; MTXConcat(MTXBuf[MTXIdx], sp1C, temp_r29->matrix); mtxScaleCat(temp_r29->matrix, temp_r28->x, temp_r28->y, temp_r28->z); - } else { + } + else { MTXCopy(MTXBuf[MTXIdx], temp_r29->matrix); } MTXIdx++; var_r18 = 1; - } else { + } + else { if (arg1->flags & 1) { MTXInverse(MTXBuf[MTXIdx - 1], sp1C); sp1C[0][3] = sp1C[1][3] = sp1C[2][3] = 0.0f; MTXConcat(MTXBuf[MTXIdx - 1], sp1C, temp_r29->matrix); mtxScaleCat(temp_r29->matrix, scaleBuf[MTXIdx - 1].x, scaleBuf[MTXIdx - 1].y, scaleBuf[MTXIdx - 1].z); - } else { + } + else { MTXCopy(MTXBuf[MTXIdx - 1], temp_r29->matrix); } temp_r29->scale = scaleBuf[MTXIdx - 1]; @@ -263,7 +268,8 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { temp_r21 = attachMotionF; if (temp_r31->unk_08 != -1) { attachMotionF = 1; - } else { + } + else { attachMotionF = 0; } sp8 = hookIdx; @@ -284,10 +290,12 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { hookIdx = sp8; attachMotionF = temp_r21; } - } else { + } + else { if (arg0->attr & HU3D_ATTR_NOCULL) { var_r19 = ObjCullCheck(arg0->hsfData, arg1, temp_r29->matrix); - } else { + } + else { var_r19 = 1; } if ((temp_r25->flags & 0x2000) || (arg1->flags & HU3D_ATTR_CLUSTER_ON)) { @@ -303,7 +311,8 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { temp_f31 = VECMag(&sp10); if (temp_r25->flags & 0x10000) { temp_r29->z = -(900000.0f - temp_f31); - } else { + } + else { temp_r29->z = -(1000000.0f - temp_f31); } DrawObjIdx++; @@ -311,15 +320,17 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { OSReport("Error: DrawObjIdx Over\n"); DrawObjIdx--; } - } else if (arg0->attr & HU3D_ATTR_ZCMP_OFF) { + } + else if (arg0->attr & HU3D_ATTR_ZCMP_OFF) { temp_r29->z = -1000000.0f; DrawObjIdx++; if (DrawObjIdx > 0x200) { OSReport("Error: DrawObjIdx Over\n"); DrawObjIdx--; } - } else { - materialBak = (HsfMaterial*) -1; + } + else { + materialBak = (HsfMaterial *)-1; ObjDraw(temp_r29); } } @@ -333,7 +344,8 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { } } -s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2) { +s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2) +{ CameraData *temp_r30; HsfVector3f *temp_r29; HsfVector3f *temp_r31; @@ -362,16 +374,21 @@ s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2) { if (temp_f23 > temp_f22) { if (temp_f23 > temp_f25) { var_f26 = temp_f23; - } else if (temp_f22 > temp_f25) { + } + else if (temp_f22 > temp_f25) { var_f26 = temp_f22; - } else { + } + else { var_f26 = temp_f25; } - } else if (temp_f22 > temp_f25) { + } + else if (temp_f22 > temp_f25) { var_f26 = temp_f22; - } else if (temp_f23 > temp_f25) { + } + else if (temp_f23 > temp_f25) { var_f26 = temp_f23; - } else { + } + else { var_f26 = temp_f25; } temp_f31 = (temp_r29->x - temp_r31->x) * 0.5; @@ -383,7 +400,7 @@ s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2) { temp_f20 = sp28[0][3]; temp_f19 = sp28[1][3]; temp_f18 = -sp28[2][3]; - if (temp_f18 + temp_f21 < temp_r30->near || temp_f18 - temp_f21 > temp_r30->far) { + if (temp_f18 + temp_f21 < temp_r30->nnear || temp_f18 - temp_f21 > temp_r30->ffar) { return 0; } sp24 = sind(temp_r30->fov * 0.5) / cosd(temp_r30->fov * 0.5); @@ -398,21 +415,22 @@ s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2) { } // TODO: not matching (https://decomp.me/scratch/54Pjw) -static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { +static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) +{ GXColor sp2C; void *sp28; Hu3DTexAnimDataStruct *sp24; - s16 var_r31; - HsfMaterial *temp_r30; - ModelData *temp_r29; - HsfObject *temp_r28; - HsfBitmap *temp_r27; + s16 var_r31; + HsfMaterial *temp_r30; + ModelData *temp_r29; + HsfObject *temp_r28; + HsfBitmap *temp_r27; HsfAttribute *temp_r26; s16 var_r24; - HsfdrawStruct01 *temp_r23; + HsfdrawStruct01 *temp_r23; s16 var_r22; - s16 var_r21; - HsfConstData *temp_r20; + s16 var_r21; + HsfConstData *temp_r20; s16 var_r18; u32 temp_r19; s16 var_r17; @@ -426,10 +444,12 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { if (temp_r19 & 0x30) { if (temp_r19 & 0x10) { GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); - } else { + } + else { GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); } - } else { + } + else { GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); } if (temp_r30 != materialBak) { @@ -447,24 +467,30 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { GXSetChanMatColor(GX_COLOR0A0, sp2C); if (temp_r29->attr & HU3D_ATTR_ZCMP_OFF) { var_r31 = GX_FALSE; - } else { + } + else { var_r31 = GX_TRUE; } - if ((temp_r30->invAlpha != 0.0f || (temp_r30->pass & 0xF) || (temp_r20->flags & 0x800)) && !((temp_r29->attr & HU3D_ATTR_ZWRITE_OFF) | (temp_r19 & 0x1200))) { + if ((temp_r30->invAlpha != 0.0f || (temp_r30->pass & 0xF) || (temp_r20->flags & 0x800)) + && !((temp_r29->attr & HU3D_ATTR_ZWRITE_OFF) | (temp_r19 & 0x1200))) { GXSetZMode(var_r31, GX_LEQUAL, GX_FALSE); - } else { + } + else { GXSetZMode(var_r31, GX_LEQUAL, GX_TRUE); } if (temp_r19 & 0x1200) { GXSetAlphaCompare(GX_GEQUAL, 0x80, GX_AOP_OR, GX_GEQUAL, 0x80); - } else { + } + else { GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); } if (temp_r29->attr & HU3D_ATTR_CULL_FRONT) { GXSetCullMode(GX_CULL_FRONT); - } else if (temp_r19 & 2) { + } + else if (temp_r19 & 2) { GXSetCullMode(GX_CULL_NONE); - } else { + } + else { GXSetCullMode(GX_CULL_BACK); } if (TL32F != 0) { @@ -488,7 +514,8 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { if (temp_r29->hsfData->cenvCnt == 0) { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_S8, 0); GXSETARRAY(GX_VA_NRM, temp_r28->data.normal->data, temp_r28->data.vertex->count * 3, 3); - } else { + } + else { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); GXSETARRAY(GX_VA_NRM, temp_r28->data.normal->data, temp_r28->data.vertex->count * sizeof(Vec), sizeof(Vec)); } @@ -501,10 +528,11 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { } if (temp_r30->refAlpha != 0.0f) { reflectionMapNo = 0; - BmpPtrBak[0] = (HsfAttribute*) -1; + BmpPtrBak[0] = (HsfAttribute *)-1; if (temp_r29->unk_04 != -1) { var_r17 = temp_r29->unk_04; - } else { + } + else { var_r17 = reflectMapNo; } HuSprTexLoad(reflectAnim[var_r17], 0, reflectionMapNo, GX_REPEAT, GX_REPEAT, GX_LINEAR); @@ -512,12 +540,12 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { if (Hu3DShadowF != 0 && Hu3DShadowCamBit != 0 && (Hu3DObjInfoP->flags & 8)) { shadowMapNo = 1; SetShadowTex(); - BmpPtrBak[1] = (HsfAttribute*) -1; + BmpPtrBak[1] = (HsfAttribute *)-1; } if (temp_r29->attr & HU3D_ATTR_TOON_MAP) { toonMapNo = 2; HuSprTexLoad(toonAnim, 0, toonMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); - BmpPtrBak[2] = (HsfAttribute*) -1; + BmpPtrBak[2] = (HsfAttribute *)-1; } if (temp_r29->unk_02 != 0) { projectionMapNo = 3; @@ -525,28 +553,32 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { for (var_r31 = 0, var_r24 = 1; var_r31 < 4; var_r31++, var_r24 <<= 1) { if (var_r24 & temp_r29->unk_02) { HuSprTexLoad(Hu3DProjection[var_r31].unk_04, 0, projectionMapNo + var_r31, GX_CLAMP, GX_CLAMP, GX_LINEAR); - BmpPtrBak[projectionMapNo + var_r31] = (HsfAttribute*) -1; + BmpPtrBak[projectionMapNo + var_r31] = (HsfAttribute *)-1; hiliteMapNo++; } } - } else { + } + else { hiliteMapNo = 3; } if ((temp_r29->attr & HU3D_ATTR_HILITE) || (temp_r19 & 0x100)) { if (temp_r20->hiliteMap == 0) { if (temp_r30->flags != 0) { var_r18 = (temp_r30->pass >> 4) & 0xF; - } else { + } + else { var_r18 = (temp_r28->data.unk123 >> 4) & 0xF; } HuSprTexLoad(hiliteAnim[var_r18], 0, hiliteMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); - } else { + } + else { HuSprTexLoad(temp_r20->hiliteMap, 0, hiliteMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); } - BmpPtrBak[hiliteMapNo] = (HsfAttribute*) -1; + BmpPtrBak[hiliteMapNo] = (HsfAttribute *)-1; } SetTevStageNoTex(arg0, temp_r30); - } else { + } + else { var_r22 = (temp_r30->vtxMode == 5) ? 5 : 1; if (DrawData[drawCnt].flags & 2) { var_r22 |= 2; @@ -560,12 +592,14 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { if (var_r22 & 2) { GXSetVtxDesc(GX_VA_NBT, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_S16, 8); - } else { + } + else { GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r29->hsfData->cenvCnt == 0) { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_S8, 0); GXSETARRAY(GX_VA_NRM, temp_r28->data.normal->data, temp_r28->data.normal->count * 3, 3); - } else { + } + else { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); GXSETARRAY(GX_VA_NRM, temp_r28->data.normal->data, temp_r28->data.normal->count * sizeof(Vec), sizeof(Vec)); } @@ -589,126 +623,143 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { temp_r23 = temp_r26->unk04; sp24 = &Hu3DTexAnimData[temp_r23->unk02]; if ((temp_r23->unk00 & 1) && !(sp24->unk00 & 4)) { - if (Hu3DAnimSet(arg0->model, temp_r26, (s16) var_r31) != 0) { - BmpPtrBak[var_r31] = (HsfAttribute*) -1; + if (Hu3DAnimSet(arg0->model, temp_r26, (s16)var_r31) != 0) { + BmpPtrBak[var_r31] = (HsfAttribute *)-1; totalTexCnt++; continue; } - } else if (temp_r23->unk00 & 8) { + } + else if (temp_r23->unk00 & 8) { temp_r27 = temp_r23->unk3C; if (temp_r27->dataFmt != 0xB) { - LoadTexture(arg0->model, temp_r27, temp_r26, (s16) var_r31); - } else { - LoadTexture(arg0->model, temp_r23->unk3C, temp_r26, (s16) var_r31); + LoadTexture(arg0->model, temp_r27, temp_r26, (s16)var_r31); + } + else { + LoadTexture(arg0->model, temp_r23->unk3C, temp_r26, (s16)var_r31); LoadTexture(arg0->model, temp_r23->unk3C, temp_r26, var_r21 | 0x8000); - texCol[var_r31].r = (s16) var_r21; + texCol[var_r31].r = (s16)var_r21; texCol[var_r31].a = 2; var_r21++; } if (temp_r27->sizeX * temp_r27->sizeY * temp_r27->pixSize > 0x40000) { for (var_r24 = 0; var_r24 < 8; var_r24++) { - BmpPtrBak[var_r24] = (HsfAttribute*) -1; + BmpPtrBak[var_r24] = (HsfAttribute *)-1; } - } else { - BmpPtrBak[var_r31] = (HsfAttribute*) -1; + } + else { + BmpPtrBak[var_r31] = (HsfAttribute *)-1; } totalTexCnt++; continue; } } if (BmpPtrBak[var_r31] != temp_r26) { - if (BmpPtrBak[var_r31] != (HsfAttribute*) -1 && BmpPtrBak[var_r31]->bitmap == temp_r27 && temp_r26->wrap_s == BmpPtrBak[var_r31]->wrap_s && temp_r26->wrap_t == BmpPtrBak[var_r31]->wrap_t) { + if (BmpPtrBak[var_r31] != (HsfAttribute *)-1 && BmpPtrBak[var_r31]->bitmap == temp_r27 + && temp_r26->wrap_s == BmpPtrBak[var_r31]->wrap_s && temp_r26->wrap_t == BmpPtrBak[var_r31]->wrap_t) { if (temp_r27->dataFmt == 0xB) { TL32F = 1; } totalTexCacheCnt++; - } else { + } + else { texCol[var_r31].a = 0; if (temp_r27->dataFmt != 0xB) { - LoadTexture(arg0->model, temp_r27, temp_r26, (s16) var_r31); - } else { - LoadTexture(arg0->model, temp_r27, temp_r26, (s16) var_r31); + LoadTexture(arg0->model, temp_r27, temp_r26, (s16)var_r31); + } + else { + LoadTexture(arg0->model, temp_r27, temp_r26, (s16)var_r31); LoadTexture(arg0->model, temp_r27, temp_r26, var_r21 | 0x8000); - texCol[var_r31].r = (s16) var_r21; + texCol[var_r31].r = (s16)var_r21; texCol[var_r31].a = 2; var_r21++; } if (temp_r27->sizeX * temp_r27->sizeY * temp_r27->pixSize > 0x40000) { for (var_r24 = 0; var_r24 < 8; var_r24++) { - BmpPtrBak[var_r24] = (HsfAttribute*) -1; + BmpPtrBak[var_r24] = (HsfAttribute *)-1; } - } else { + } + else { BmpPtrBak[var_r31] = temp_r26; } totalTexCnt++; } - } else { + } + else { totalTexCacheCnt++; } } if (temp_r30->refAlpha != 0.0f) { - reflectionMapNo = (s16) var_r21; + reflectionMapNo = (s16)var_r21; shadowMapNo = reflectionMapNo + 1; if (temp_r29->unk_04 != -1) { var_r17 = temp_r29->unk_04; - } else { + } + else { var_r17 = reflectMapNo; } HuSprTexLoad(reflectAnim[var_r17], 0, reflectionMapNo, GX_REPEAT, GX_REPEAT, GX_LINEAR); - BmpPtrBak[reflectionMapNo] = (HsfAttribute*) -1; - } else { - shadowMapNo = (s16) var_r21; + BmpPtrBak[reflectionMapNo] = (HsfAttribute *)-1; + } + else { + shadowMapNo = (s16)var_r21; } if (Hu3DShadowF != 0 && Hu3DShadowCamBit != 0 && (Hu3DObjInfoP->flags & 8)) { toonMapNo = shadowMapNo + 1; SetShadowTex(); - BmpPtrBak[shadowMapNo] = (HsfAttribute*) -1; - } else { + BmpPtrBak[shadowMapNo] = (HsfAttribute *)-1; + } + else { toonMapNo = shadowMapNo; } if (temp_r29->attr & HU3D_ATTR_TOON_MAP) { HuSprTexLoad(toonAnim, 0, toonMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); - BmpPtrBak[toonMapNo] = (HsfAttribute*) -1; + BmpPtrBak[toonMapNo] = (HsfAttribute *)-1; projectionMapNo = toonMapNo + 1; - } else { + } + else { projectionMapNo = toonMapNo; } if (temp_r29->unk_02 != 0) { for (var_r31 = 0, var_r24 = 1; var_r31 < 4; var_r31++, var_r24 <<= 1) { if (var_r24 & temp_r29->unk_02) { HuSprTexLoad(Hu3DProjection[var_r31].unk_04, 0, projectionMapNo + var_r31, GX_CLAMP, GX_CLAMP, GX_LINEAR); - BmpPtrBak[projectionMapNo + var_r31] = (HsfAttribute*) -1; + BmpPtrBak[projectionMapNo + var_r31] = (HsfAttribute *)-1; hiliteMapNo = projectionMapNo + var_r31 + 1; } } - } else { + } + else { hiliteMapNo = projectionMapNo; } if ((temp_r29->attr & HU3D_ATTR_HILITE) || (temp_r19 & 0x100)) { if (temp_r20->hiliteMap == 0) { if (temp_r30->flags != 0) { var_r18 = (temp_r30->pass >> 4) & 0xF; - } else { + } + else { var_r18 = (temp_r28->data.unk123 >> 4) & 0xF; } HuSprTexLoad(hiliteAnim[var_r18], 0, hiliteMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); - } else { + } + else { HuSprTexLoad(temp_r20->hiliteMap, 0, hiliteMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); } - BmpPtrBak[toonMapNo] = (HsfAttribute*) -1; + BmpPtrBak[toonMapNo] = (HsfAttribute *)-1; } SetTevStageTex(arg0, temp_r30); } - sp28 = (u8*) DLBufStartP + DrawData[drawCnt].dlOfs; + sp28 = (u8 *)DLBufStartP + DrawData[drawCnt].dlOfs; GXCallDisplayList(sp28, DrawData[drawCnt].dlSize); - } else { - sp28 = (u8*) DLBufStartP + DrawData[drawCnt].dlOfs; + } + else { + sp28 = (u8 *)DLBufStartP + DrawData[drawCnt].dlOfs; GXCallDisplayList(sp28, DrawData[drawCnt].dlSize); } drawCnt++; } -static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { +static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) +{ GXColor sp1C; ModelData *temp_r28; HsfObject *var_r21; @@ -735,11 +786,13 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { if (arg1->vtxMode == 2 || arg1->vtxMode == 3) { var_r26 = 1; var_r24 = 1; - } else { + } + else { var_r26 = 0; if (arg1->vtxMode == 0 || arg1->vtxMode == 5) { var_r24 = 0; - } else { + } + else { var_r24 = 1; } } @@ -747,7 +800,8 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { var_r19 = GX_COLOR0A0; var_r18 = GX_CA_RASA; var_r22 = 1; - } else { + } + else { var_r19 = GX_COLOR0; var_r18 = GX_CA_KONST; var_r22 = 0; @@ -765,7 +819,8 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); var_r29++; - } else { + } + else { GXSetTevColor(GX_TEVREG0, sp1C); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, var_r19); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_RASC); @@ -774,12 +829,12 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); } if (arg1->refAlpha != 0.0f) { - SetReflect(arg0, var_r30, (s16) var_r29, arg1->refAlpha * 255.0f); + SetReflect(arg0, var_r30, (s16)var_r29, arg1->refAlpha * 255.0f); var_r30++; var_r29++; } if (Hu3DShadowF != 0 && Hu3DShadowCamBit != 0 && (Hu3DObjInfoP->flags & 8)) { - SetShadow(arg0, var_r30, (s16) var_r29); + SetShadow(arg0, var_r30, (s16)var_r29); var_r30++; var_r29++; } @@ -802,7 +857,8 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { var_r29++; var_r24 = 1; var_r26 = 0; - } else { + } + else { GXSetTevOrder(var_r30, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR1A1); GXSetTevColorIn(var_r30, GX_CC_CPREV, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); @@ -810,7 +866,8 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); var_r30++; } - } else if (arg1->invAlpha != 0.0f) { + } + else if (arg1->invAlpha != 0.0f) { GXSetTevOrder(var_r30, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_ONE, GX_CC_CPREV, GX_CC_ZERO); GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); @@ -821,7 +878,7 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { if (temp_r28->unk_02 != 0) { for (var_r25 = 0, var_r23 = 1; var_r25 < 4; var_r25++, var_r23 <<= 1) { if (var_r23 & temp_r28->unk_02) { - SetProjection(arg0, var_r30, var_r25, (GXTexMapID) var_r29, projectionMapNo + var_r25, texMtxTbl[var_r25 + 3]); + SetProjection(arg0, var_r30, var_r25, (GXTexMapID)var_r29, projectionMapNo + var_r25, texMtxTbl[var_r25 + 3]); var_r29++; var_r30 += 2; } @@ -835,7 +892,8 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { shadingBak = var_r20; if (var_r26 != 0) { var_f30 = arg1->hilite_scale; - } else { + } + else { var_f30 = 0.0f; } lightBit = Hu3DLightSet(arg0->model, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, var_f30); @@ -848,26 +906,31 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { if (var_r22 != 0) { GXSetChanCtrl(GX_ALPHA0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_NONE); GXSetChanCtrl(GX_ALPHA1, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_SPEC); - } else { + } + else { GXSetChanCtrl(GX_ALPHA0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_NONE); GXSetChanCtrl(GX_ALPHA1, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_NONE); } - } else { + } + else { GXSetChanCtrl(GX_COLOR0, GX_TRUE, GX_SRC_REG, GX_SRC_REG, lightBit, GX_DF_CLAMP, GX_AF_NONE); GXSetChanCtrl(GX_COLOR1, GX_TRUE, GX_SRC_REG, GX_SRC_REG, lightBit, GX_DF_NONE, GX_AF_SPEC); GXSetChanCtrl(GX_ALPHA0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_NONE); GXSetChanCtrl(GX_ALPHA1, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_NONE); } - } else { + } + else { GXSetNumChans(1); if (arg1->vtxMode == 5) { GXSetChanCtrl(GX_COLOR0, var_r24, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_SPOT); if (var_r22 != 0) { GXSetChanCtrl(GX_ALPHA0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_SPOT); - } else { + } + else { GXSetChanCtrl(GX_ALPHA0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_NONE); } - } else { + } + else { GXSetChanCtrl(GX_COLOR0, var_r24, GX_SRC_REG, GX_SRC_REG, lightBit, GX_DF_CLAMP, GX_AF_SPOT); GXSetChanCtrl(GX_ALPHA0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_NONE); } @@ -875,13 +938,10 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { } } -static Mtx refMtx = { - { 0.25f, 0.0f, 0.0f, -0.5f }, - { 0.0f, -0.25f, 0.0f, -0.5f }, - { 0.0f, 0.0f, 0.25f, -0.5f } -}; +static Mtx refMtx = { { 0.25f, 0.0f, 0.0f, -0.5f }, { 0.0f, -0.25f, 0.0f, -0.5f }, { 0.0f, 0.0f, 0.25f, -0.5f } }; -static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { +static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) +{ GXColor sp50; GXTexMapID sp4C; GXTevStageID sp48; @@ -914,11 +974,13 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { sp40 = temp_r19->flags | arg1->flags; if (arg1->vtxMode == 2 || arg1->vtxMode == 3) { var_r21 = 1; - } else { + } + else { var_r21 = 0; if (arg1->vtxMode == 0 || arg1->vtxMode == 5) { var_r18 = 0; - } else { + } + else { var_r18 = 1; } } @@ -926,7 +988,8 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { sp3C = GX_COLOR0A0; var_r17 = GX_CA_RASA; sp38 = 1; - } else { + } + else { sp3C = GX_COLOR0; var_r17 = GX_CA_KONST; sp38 = 0; @@ -939,11 +1002,13 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { mtxTransCat(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); - } else if (temp_r29->unk30 != 0.0f || temp_r29->unk34 != 0.0f) { + } + else if (temp_r29->unk30 != 0.0f || temp_r29->unk34 != 0.0f) { MTXTrans(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); - } else { + } + else { GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); } if (temp_r29->unk20 == 1.0f) { @@ -952,13 +1017,15 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { if (temp_r28->unk00 & 2) { GXLoadTexMtxImm(Hu3DTexScrData[temp_r28->unk04].unk3C, GX_TEXMTX0, GX_MTX2x4); GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY); - } else if (temp_r28->unk00 & 4) { + } + else if (temp_r28->unk00 & 4) { MTXScale(sp54, 1.0f / temp_r28->unk20, 1.0f / temp_r28->unk24, 1.0f / temp_r28->unk28); mtxRotCat(sp54, temp_r28->unk14, temp_r28->unk18, temp_r28->unk1C); mtxTransCat(sp54, -temp_r28->unk08, -temp_r28->unk0C, -temp_r28->unk10); GXLoadTexMtxImm(sp54, GX_TEXMTX0, GX_MTX2x4); GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY); - } else if (temp_r28->unk00 & 1) { + } + else if (temp_r28->unk00 & 1) { MTXScale(sp54, temp_r28->unk2C, temp_r28->unk30, 1.0f); mtxTransCat(sp54, temp_r28->unk34, temp_r28->unk38, 0.0f); GXLoadTexMtxImm(sp54, GX_TEXMTX0, GX_MTX2x4); @@ -973,7 +1040,8 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); var_r31++; - } else { + } + else { GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0); if (!(temp_r25->attr & HU3D_ATTR_TOON_MAP)) { if (texCol[0].a == 1) { @@ -990,7 +1058,8 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_APREV, var_r17, GX_CA_ZERO); GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); var_r31++; - } else if (texCol[0].a == 2) { + } + else if (texCol[0].a == 2) { GXSetTevSwapModeTable(GX_TEV_SWAP1, GX_CH_RED, GX_CH_ALPHA, GX_CH_ALPHA, GX_CH_ALPHA); GXSetTevSwapModeTable(GX_TEV_SWAP2, GX_CH_BLUE, GX_CH_BLUE, GX_CH_BLUE, GX_CH_ALPHA); GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP1); @@ -1006,20 +1075,23 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevOrder(var_r31, GX_TEXCOORD0, texCol->r, GX_COLOR_NULL); var_r31++; - } else { + } + else { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, var_r17, GX_CA_ZERO); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); } - } else { + } + else { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_ONE, GX_CC_ZERO); GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_KONST, GX_CA_ZERO); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); } } - } else { + } + else { GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); } if (temp_r25->attr & HU3D_ATTR_TOON_MAP) { @@ -1035,12 +1107,12 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { sp50.a = 255.0f * (1.0f - arg1->invAlpha); GXSetTevColor(GX_TEVREG0, sp50); if (arg1->refAlpha != 0.0f) { - SetReflect(arg0, var_r31, (u16) var_r30, 255.0f * arg1->refAlpha); + SetReflect(arg0, var_r31, (u16)var_r30, 255.0f * arg1->refAlpha); var_r30++; var_r31++; } if (Hu3DShadowF != 0 && Hu3DShadowCamBit != 0 && (Hu3DObjInfoP->flags & 8)) { - SetShadow(arg0, var_r31, (u16) var_r30); + SetShadow(arg0, var_r31, (u16)var_r30); var_r30++; var_r31++; } @@ -1063,11 +1135,13 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { var_r30++; var_r21 = 0; var_r18 = 1; - } else { + } + else { if (temp_r29->unk20 == 1.0f) { GXSetTevOrder(var_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR1A1); GXSetTevColorIn(var_r31, GX_CC_CPREV, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); - } else { + } + else { GXSetTexCoordGen2(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); GXSetTevOrder(var_r31, var_r30, GX_TEXMAP0, GX_COLOR1A1); GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_CPREV); @@ -1078,7 +1152,8 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); var_r31++; } - } else if (arg1->invAlpha != 0.0f) { + } + else if (arg1->invAlpha != 0.0f) { GXSetTevOrder(var_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); GXSetTevColorOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); @@ -1089,13 +1164,14 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { if (temp_r25->unk_02 != 0) { for (i = 0, var_r22 = 1; i < 4; i++, var_r22 <<= 1) { if (var_r22 & temp_r25->unk_02) { - SetProjection(arg0, var_r31, i, (u16) var_r30, projectionMapNo + i, texMtxTbl[i + 3]); + SetProjection(arg0, var_r31, i, (u16)var_r30, projectionMapNo + i, texMtxTbl[i + 3]); var_r30++; var_r31 += 2; } } } - } else { + } + else { sp44 = 0; var_r30 = 0; sp4C = -1; @@ -1119,51 +1195,59 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); var_r30++; sp44 = 1; - } else if (temp_r29->unk20 != 1.0f) { + } + else if (temp_r29->unk20 != 1.0f) { var_r20 = i; continue; - } else { + } + else { if (temp_r29->unk04) { temp_r28 = temp_r29->unk04; if (temp_r28->unk00 & 2) { GXLoadTexMtxImm(Hu3DTexScrData[temp_r28->unk04].unk3C, texMtxTbl[var_r30], GX_MTX2x4); GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); - temp_r23 = (u16) var_r30; + temp_r23 = (u16)var_r30; var_r30++; - } else if (temp_r28->unk00 & 4) { + } + else if (temp_r28->unk00 & 4) { MTXScale(sp54, 1.0f / temp_r28->unk20, 1.0f / temp_r28->unk24, 1.0f / temp_r28->unk28); mtxRotCat(sp54, temp_r28->unk14, temp_r28->unk18, temp_r28->unk1C); mtxTransCat(sp54, -temp_r28->unk08, -temp_r28->unk0C, -temp_r28->unk10); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); - temp_r23 = (u16) var_r30; + temp_r23 = (u16)var_r30; var_r30++; - } else if (temp_r28->unk00 & 1) { + } + else if (temp_r28->unk00 & 1) { MTXScale(sp54, temp_r28->unk2C, temp_r28->unk30, 1.0f); mtxTransCat(sp54, temp_r28->unk34, temp_r28->unk38, 0.0f); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); - temp_r23 = (u16) var_r30; - var_r30++; - } else { - GXSetTexCoordGen2(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); - temp_r23 = (u16) var_r30; + temp_r23 = (u16)var_r30; var_r30++; } - } else { + else { + GXSetTexCoordGen2(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + temp_r23 = (u16)var_r30; + var_r30++; + } + } + else { if (temp_r29->unk28 != 1.0f || temp_r29->unk2C != 1.0f) { MTXScale(sp54, 1.0f / temp_r29->unk28, 1.0f / temp_r29->unk2C, 1.0f); mtxTransCat(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); - } else if (temp_r29->unk30 != 0.0f || temp_r29->unk34 != 0.0f) { + } + else if (temp_r29->unk30 != 0.0f || temp_r29->unk34 != 0.0f) { MTXTrans(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); - } else { + } + else { GXSetTexCoordGen2(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); } - temp_r23 = (u16) var_r30; + temp_r23 = (u16)var_r30; var_r30++; } GXSetTevOrder(var_r31, temp_r23, i, GX_COLOR0A0); @@ -1181,7 +1265,8 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevOrder(var_r31, temp_r23, i, sp3C); GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_CPREV, GX_CC_KONST, GX_CC_ZERO); GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_TEXA, GX_CA_KONST, GX_CA_ZERO); - } else if (texCol[i].a == 2) { + } + else if (texCol[i].a == 2) { GXSetTevSwapModeTable(GX_TEV_SWAP1, GX_CH_RED, GX_CH_ALPHA, GX_CH_ALPHA, GX_CH_ALPHA); GXSetTevSwapModeTable(GX_TEV_SWAP2, GX_CH_BLUE, GX_CH_BLUE, GX_CH_BLUE, GX_CH_ALPHA); GXSetTevSwapMode(var_r31, GX_TEV_SWAP0, GX_TEV_SWAP1); @@ -1195,15 +1280,18 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevColorIn(var_r31, GX_CC_CPREV, GX_CC_TEXC, GX_CC_KONST, GX_CC_C2); GXSetTevAlphaIn(var_r31, GX_CA_APREV, GX_CA_KONST, GX_CA_TEXA, GX_CA_ZERO); GXSetTevOrder(var_r31, GX_TEXCOORD0, texCol->r, GX_COLOR_NULL); - } else { + } + else { GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_TEXA, var_r17, GX_CA_ZERO); } - } else if (sp44 != 0) { + } + else if (sp44 != 0) { GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_CPREV, GX_CC_TEXC, GX_CC_ZERO); GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); sp44 = 0; - } else if (temp_r29->unk8[2] == 0) { + } + else if (temp_r29->unk8[2] == 0) { if (temp_r29->unk0C != 1.0f) { sp50.a = temp_r29->unk0C * 255.0f; SetKColorRGB(var_r31, &sp50); @@ -1215,7 +1303,8 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevOrder(var_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); GXSetTevColorIn(var_r31, GX_CC_CPREV, GX_CC_C2, GX_CC_A2, GX_CC_ZERO); GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); - } else { + } + else { GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); GXSetTevColorOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVREG2); GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); @@ -1225,7 +1314,8 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevColorIn(var_r31, GX_CC_CPREV, GX_CC_C2, GX_CC_TEXA, GX_CC_ZERO); GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); } - } else if (texCol[i].a == 1) { + } + else if (texCol[i].a == 1) { sp50 = texCol[i]; sp50.a = 0xFF; SetKColorRGB(var_r31, &sp50); @@ -1238,7 +1328,8 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { SetKColor(var_r31, temp_r29->unk0C * 255.0f); GXSetTevColorIn(var_r31, GX_CC_CPREV, GX_CC_C2, GX_CC_KONST, GX_CC_ZERO); GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); - } else if (texCol[i].a == 2) { + } + else if (texCol[i].a == 2) { GXSetTevSwapModeTable(GX_TEV_SWAP1, GX_CH_RED, GX_CH_ALPHA, GX_CH_ALPHA, GX_CH_ALPHA); GXSetTevSwapModeTable(GX_TEV_SWAP2, GX_CH_BLUE, GX_CH_BLUE, GX_CH_BLUE, GX_CH_ALPHA); GXSetTevSwapMode(var_r31, GX_TEV_SWAP0, GX_TEV_SWAP1); @@ -1252,7 +1343,8 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevColorIn(var_r31, GX_CC_CPREV, GX_CC_TEXC, GX_CC_KONST, GX_CC_C2); GXSetTevAlphaIn(var_r31, GX_CA_APREV, GX_CA_KONST, GX_CA_TEXA, GX_CA_ZERO); GXSetTevOrder(var_r31, GX_TEXCOORD0, texCol->r, GX_COLOR_NULL); - } else { + } + else { SetKColor(var_r31, temp_r29->unk0C * 255.0f); GXSetTevColorIn(var_r31, GX_CC_CPREV, GX_CC_TEXC, GX_CC_KONST, GX_CC_ZERO); GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); @@ -1289,7 +1381,8 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevColorOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); - } else { + } + else { SetKColor(var_r31, arg1->refAlpha * 255.0f); GXSetTexCoordGen2(var_r30, GX_TG_MTX2x4, GX_TG_NRM, GX_TEXMTX8, GX_FALSE, GX_PTIDENTITY); GXSetTevOrder(var_r31, var_r30, reflectionMapNo, GX_COLOR0A0); @@ -1308,7 +1401,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { var_r30++; } if (Hu3DShadowF != 0 && Hu3DShadowCamBit != 0 && (Hu3DObjInfoP->flags & 8)) { - SetShadow(arg0, var_r31, (u16) var_r30); + SetShadow(arg0, var_r31, (u16)var_r30); var_r30++; var_r31++; } @@ -1330,7 +1423,8 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevColorOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO); GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); - } else { + } + else { GXSetTexCoordGen2(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); GXSetTevOrder(var_r31, var_r30, var_r20, GX_COLOR0A0); GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_ONE, GX_CC_ZERO); @@ -1350,11 +1444,13 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { var_r30++; var_r21 = 0; var_r18 = 1; - } else { + } + else { if (var_r20 == -1) { GXSetTevOrder(var_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR1A1); GXSetTevColorIn(var_r31, GX_CC_CPREV, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); - } else { + } + else { GXSetTexCoordGen2(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); GXSetTevOrder(var_r31, var_r30, var_r20, GX_COLOR1A1); GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_CPREV); @@ -1365,7 +1461,8 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); var_r31++; } - } else if (arg1->invAlpha != 0.0f) { + } + else if (arg1->invAlpha != 0.0f) { GXSetTevOrder(var_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); GXSetTevColorOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); @@ -1376,7 +1473,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { if (temp_r25->unk_02 != 0) { for (i = 0, var_r22 = 1; i < 4; i++, var_r22 <<= 1) { if (var_r22 & temp_r25->unk_02) { - SetProjection(arg0, var_r31, i, (u16) var_r30, projectionMapNo + i, texMtxTbl[i + 3]); + SetProjection(arg0, var_r31, i, (u16)var_r30, projectionMapNo + i, texMtxTbl[i + 3]); var_r30++; var_r31 += 2; } @@ -1395,7 +1492,8 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { shadingBak = arg1->vtxMode; if (var_r21 != 0) { var_f30 = arg1->hilite_scale; - } else { + } + else { var_f30 = 0.0f; } lightBit = Hu3DLightSet(arg0->model, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, var_f30); @@ -1408,26 +1506,31 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { if (sp38 != 0) { GXSetChanCtrl(GX_ALPHA0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_NONE); GXSetChanCtrl(GX_ALPHA1, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_SPEC); - } else { + } + else { GXSetChanCtrl(GX_ALPHA0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_NONE); GXSetChanCtrl(GX_ALPHA1, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_NONE); } - } else { + } + else { GXSetChanCtrl(GX_COLOR0, GX_TRUE, GX_SRC_REG, GX_SRC_REG, lightBit, GX_DF_CLAMP, GX_AF_NONE); GXSetChanCtrl(GX_COLOR1, GX_TRUE, GX_SRC_REG, GX_SRC_REG, lightBit, GX_DF_NONE, GX_AF_SPEC); GXSetChanCtrl(GX_ALPHA0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_NONE); GXSetChanCtrl(GX_ALPHA1, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_NONE); } - } else { + } + else { GXSetNumChans(1); if (arg1->vtxMode == 5) { GXSetChanCtrl(GX_COLOR0, var_r18, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_SPOT); if (sp38 != 0) { GXSetChanCtrl(GX_ALPHA0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_SPOT); - } else { + } + else { GXSetChanCtrl(GX_ALPHA0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_NONE); } - } else { + } + else { GXSetChanCtrl(GX_COLOR0, var_r18, GX_SRC_REG, GX_SRC_REG, lightBit, GX_DF_CLAMP, GX_AF_SPOT); GXSetChanCtrl(GX_ALPHA0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, lightBit, GX_DF_CLAMP, GX_AF_NONE); } @@ -1435,43 +1538,17 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { } } -static s32 kColorSelTbl[] = { - GX_TEV_KCSEL_K0_R, - GX_TEV_KCSEL_K0_G, - GX_TEV_KCSEL_K0_B, - GX_TEV_KCSEL_K1_R, - GX_TEV_KCSEL_K1_G, - GX_TEV_KCSEL_K1_B, - GX_TEV_KCSEL_K2_R, - GX_TEV_KCSEL_K2_G, - GX_TEV_KCSEL_K2_B, - GX_TEV_KCSEL_K3_R, - GX_TEV_KCSEL_K3_G, - GX_TEV_KCSEL_K3_B -}; +static s32 kColorSelTbl[] = { GX_TEV_KCSEL_K0_R, GX_TEV_KCSEL_K0_G, GX_TEV_KCSEL_K0_B, GX_TEV_KCSEL_K1_R, GX_TEV_KCSEL_K1_G, GX_TEV_KCSEL_K1_B, + GX_TEV_KCSEL_K2_R, GX_TEV_KCSEL_K2_G, GX_TEV_KCSEL_K2_B, GX_TEV_KCSEL_K3_R, GX_TEV_KCSEL_K3_G, GX_TEV_KCSEL_K3_B }; -static s32 kColorTbl[] = { - GX_KCOLOR0, - GX_KCOLOR1, - GX_KCOLOR2, - GX_KCOLOR3 -}; +static s32 kColorTbl[] = { GX_KCOLOR0, GX_KCOLOR1, GX_KCOLOR2, GX_KCOLOR3 }; -static s32 kColorSelTbl2[] = { - GX_TEV_KCSEL_K0, - GX_TEV_KCSEL_K1, - GX_TEV_KCSEL_K2, - GX_TEV_KCSEL_K3 -}; +static s32 kColorSelTbl2[] = { GX_TEV_KCSEL_K0, GX_TEV_KCSEL_K1, GX_TEV_KCSEL_K2, GX_TEV_KCSEL_K3 }; -static s32 kColorSelATbl[] = { - GX_TEV_KASEL_K0_A, - GX_TEV_KASEL_K1_A, - GX_TEV_KASEL_K2_A, - GX_TEV_KASEL_K3_A -}; +static s32 kColorSelATbl[] = { GX_TEV_KASEL_K0_A, GX_TEV_KASEL_K1_A, GX_TEV_KASEL_K2_A, GX_TEV_KASEL_K3_A }; -static GXTevKColorSel SetKColor(GXTevStageID arg0, u8 arg1) { +static GXTevKColorSel SetKColor(GXTevStageID arg0, u8 arg1) +{ GXTevKColorSel temp_r30; switch (kColorIdx % 3) { @@ -1497,7 +1574,8 @@ static GXTevKColorSel SetKColor(GXTevStageID arg0, u8 arg1) { return temp_r30; } -static GXTevKColorSel SetKColorRGB(GXTevStageID arg0, GXColor *arg1) { +static GXTevKColorSel SetKColorRGB(GXTevStageID arg0, GXColor *arg1) +{ GXTevKColorSel temp_r30; GXSetTevKColor(kColorTbl[kColorIdx / 3], kColor); @@ -1513,14 +1591,16 @@ static GXTevKColorSel SetKColorRGB(GXTevStageID arg0, GXColor *arg1) { return temp_r30; } -static void FlushKColor(void) { +static void FlushKColor(void) +{ kColor.a = 0xFF; if (kColorIdx % 3 != 0) { GXSetTevKColor(kColorTbl[kColorIdx / 3], kColor); } } -static void SetReflect(HsfDrawObject *arg0, s16 arg1, s16 arg2, u8 arg3) { +static void SetReflect(HsfDrawObject *arg0, s16 arg1, s16 arg2, u8 arg3) +{ GXTevKColorSel var_r27; Mtx sp3C; Mtx spC; @@ -1559,7 +1639,8 @@ static void SetReflect(HsfDrawObject *arg0, s16 arg1, s16 arg2, u8 arg3) { GXLoadTexMtxImm(spC, GX_TEXMTX8, GX_MTX2x4); } -static void SetProjection(HsfDrawObject *arg0, s16 arg1, s16 arg2, s16 arg3, GXTexMapID arg4, u32 arg5) { +static void SetProjection(HsfDrawObject *arg0, s16 arg1, s16 arg2, s16 arg3, GXTexMapID arg4, u32 arg5) +{ GXTevKColorSel var_r26; u8 temp_r30; @@ -1598,18 +1679,20 @@ static void SetProjection(HsfDrawObject *arg0, s16 arg1, s16 arg2, s16 arg3, GXT GXSetTevAlphaOp(arg1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); } -static s32 SetShadowTex(void) { +static s32 SetShadowTex(void) +{ GXTexObj sp8; GXInitTexObj(&sp8, Hu3DShadowData.unk_04, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, GX_TF_I8, GX_CLAMP, GX_CLAMP, GX_FALSE); GXInitTexObjLOD(&sp8, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); GXLoadTexObj(&sp8, shadowMapNo); #ifdef TARGET_PC - GXDestroyTexObj(&sp8); + GXDestroyTexObj(&sp8); #endif } -static void SetShadow(HsfDrawObject *arg0, s16 arg1, s16 arg2) { +static void SetShadow(HsfDrawObject *arg0, s16 arg1, s16 arg2) +{ GXSetTexCoordGen2(arg2, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX9, GX_FALSE, GX_PTIDENTITY); GXSetTevOrder(arg1, arg2, shadowMapNo, GX_COLOR0A0); GXSetTevColorIn(arg1, GX_CC_CPREV, GX_CC_ZERO, GX_CC_TEXC, GX_CC_ZERO); @@ -1618,7 +1701,8 @@ static void SetShadow(HsfDrawObject *arg0, s16 arg1, s16 arg2) { GXSetTevAlphaOp(arg1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); } -static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) { +static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) +{ HsfObject *temp_r31; ModelData *temp_r28; HsfConstData *temp_r27; @@ -1652,7 +1736,8 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) { if (temp_r28->hsfData->cenvCnt == 0) { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_S8, 0); GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.vertex->count * 3, 3); - } else { + } + else { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.vertex->count * sizeof(Vec), sizeof(Vec)); } @@ -1670,7 +1755,8 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) { GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - } else { + } + else { var_r30 = (temp_r29->vtxMode == 5) ? 5 : 1; if (DrawData[drawCnt].flags & 2) { var_r30 |= 2; @@ -1684,12 +1770,14 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) { if (var_r30 & 2) { GXSetVtxDesc(GX_VA_NBT, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_S16, 8); - } else { + } + else { GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r28->hsfData->cenvCnt == 0) { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGB8, 0); GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.vertex->count * 3, 3); - } else { + } + else { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.vertex->count * sizeof(Vec), sizeof(Vec)); } @@ -1714,20 +1802,22 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) { } GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); GXSetChanCtrl(GX_COLOR1A1, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); - var_r26 = (u8*) DLBufStartP + DrawData[drawCnt].dlOfs; + var_r26 = (u8 *)DLBufStartP + DrawData[drawCnt].dlOfs; GXCallDisplayList(var_r26, DrawData[drawCnt].dlSize); - } else { + } + else { if (!(temp_r27->flags & 0x400)) { drawCnt++; return; } - var_r26 = (u8*) DLBufStartP + DrawData[drawCnt].dlOfs; + var_r26 = (u8 *)DLBufStartP + DrawData[drawCnt].dlOfs; GXCallDisplayList(var_r26, DrawData[drawCnt].dlSize); } drawCnt++; } -static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3) { +static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3) +{ GXTexObj sp1C; GXTlutObj sp10; s16 var_r27; @@ -1739,7 +1829,11 @@ static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 if (arg1 == 0) { OSReport("Error: No Texture\n"); +#ifdef NON_MATCHING + return 0; +#else return; +#endif } var_r27 = arg1->sizeX; var_r26 = arg1->sizeY; @@ -1761,7 +1855,8 @@ static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB565, arg1->palSize); GXLoadTlut(&sp10, arg3); GXInitTexObjCI(&sp1C, arg1->data, var_r27, var_r26, GX_TF_C4, var_r22, var_r21, var_r20, arg3); - } else { + } + else { GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB565, arg1->palSize); GXLoadTlut(&sp10, arg3); GXInitTexObjCI(&sp1C, arg1->data, var_r27, var_r26, GX_TF_C8, var_r22, var_r21, var_r20, arg3); @@ -1772,14 +1867,15 @@ static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB5A3, arg1->palSize); GXLoadTlut(&sp10, arg3); GXInitTexObjCI(&sp1C, arg1->data, var_r27, var_r26, GX_TF_C4, var_r22, var_r21, var_r20, arg3); - } else { + } + else { GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB5A3, arg1->palSize); GXLoadTlut(&sp10, arg3); GXInitTexObjCI(&sp1C, arg1->data, var_r27, var_r26, GX_TF_C8, var_r22, var_r21, var_r20, arg3); } break; case 0: - var_r30 = (s16) arg3; + var_r30 = (s16)arg3; texCol[var_r30].r = arg1->tint.r; texCol[var_r30].g = arg1->tint.g; texCol[var_r30].b = arg1->tint.b; @@ -1787,7 +1883,7 @@ static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 GXInitTexObj(&sp1C, arg1->data, var_r27, var_r26, GX_TF_I4, var_r22, var_r21, var_r20); break; case 1: - var_r30 = (s16) arg3; + var_r30 = (s16)arg3; texCol[var_r30].r = arg1->tint.r; texCol[var_r30].g = arg1->tint.g; texCol[var_r30].b = arg1->tint.b; @@ -1795,7 +1891,7 @@ static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 GXInitTexObj(&sp1C, arg1->data, var_r27, var_r26, GX_TF_I8, var_r22, var_r21, var_r20); break; case 2: - var_r30 = (s16) arg3; + var_r30 = (s16)arg3; texCol[var_r30].r = arg1->tint.r; texCol[var_r30].g = arg1->tint.g; texCol[var_r30].b = arg1->tint.b; @@ -1803,7 +1899,7 @@ static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 GXInitTexObj(&sp1C, arg1->data, var_r27, var_r26, GX_TF_IA4, var_r22, var_r21, var_r20); break; case 3: - var_r30 = (s16) arg3; + var_r30 = (s16)arg3; texCol[var_r30].r = arg1->tint.r; texCol[var_r30].g = arg1->tint.g; texCol[var_r30].b = arg1->tint.b; @@ -1815,15 +1911,17 @@ static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 break; case 11: if (arg3 & 0x8000) { - GXInitTlutObj(&sp10, &((s16*) arg1->palData)[(arg1->palSize + 0xF) & 0xFFF0], GX_TL_IA8, arg1->palSize); - } else { + GXInitTlutObj(&sp10, &((s16 *)arg1->palData)[(arg1->palSize + 0xF) & 0xFFF0], GX_TL_IA8, arg1->palSize); + } + else { GXInitTlutObj(&sp10, arg1->palData, GX_TL_IA8, arg1->palSize); } arg3 &= 0x7FFF; if (arg1->pixSize < 8) { GXLoadTlut(&sp10, arg3); GXInitTexObjCI(&sp1C, arg1->data, var_r27, var_r26, GX_TF_C4, var_r22, var_r21, var_r20, arg3); - } else { + } + else { GXLoadTlut(&sp10, arg3); GXInitTexObjCI(&sp1C, arg1->data, var_r27, var_r26, GX_TF_C8, var_r22, var_r21, var_r20, arg3); } @@ -1832,21 +1930,27 @@ static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 } if ((arg0->attr & HU3D_ATTR_TEX_NEAR) || (arg2->flag & 0x40)) { GXInitTexObjLOD(&sp1C, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); - } else if (var_r20) { + } + else if (var_r20) { GXInitTexObjLOD(&sp1C, GX_LIN_MIP_LIN, GX_LINEAR, 0.0f, arg2->unk78, 0.0f, GX_FALSE, GX_TRUE, GX_ANISO_2); - } else if (arg1->maxLod == 0) { + } + else if (arg1->maxLod == 0) { GXInitTexObjLOD(&sp1C, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); - } else { + } + else { GXInitTexObjLOD(&sp1C, GX_LIN_MIP_LIN, GX_LINEAR, 0.0f, arg1->maxLod - 1, 0.0f, GX_TRUE, GX_TRUE, GX_ANISO_1); } GXLoadTexObj(&sp1C, arg3); #ifdef TARGET_PC GXDestroyTexObj(&sp1C); - GXDestroyTlutObj(&sp10); + if (arg1->dataFmt == 9 || arg1->dataFmt == 10 || arg1->dataFmt == 11) { + GXDestroyTlutObj(&sp10); + } #endif } -static void objNull(ModelData *arg0, HsfObject *arg1) { +static void objNull(ModelData *arg0, HsfObject *arg1) +{ HsfTransform *var_r31; Vec *temp_r27; Vec *temp_r28; @@ -1857,7 +1961,8 @@ static void objNull(ModelData *arg0, HsfObject *arg1) { if (CancelTRXF == 0) { if (attachMotionF == 0) { var_r31 = &arg1->data.base; - } else { + } + else { var_r31 = &arg1->data.curr; } if (arg0->hsfData->cenvCnt == 0 || hookIdx != -1) { @@ -1873,7 +1978,8 @@ static void objNull(ModelData *arg0, HsfObject *arg1) { temp_r28->z = temp_r27->z * var_r31->scale.z; MTXIdx++; var_r24 = 1; - } else { + } + else { CancelTRXF = 0; var_r24 = 0; } @@ -1885,7 +1991,8 @@ static void objNull(ModelData *arg0, HsfObject *arg1) { } } -static void objRoot(ModelData *arg0, HsfObject *arg1) { +static void objRoot(ModelData *arg0, HsfObject *arg1) +{ HsfTransform *var_r31; Vec *temp_r29; Vec *temp_r30; @@ -1896,7 +2003,8 @@ static void objRoot(ModelData *arg0, HsfObject *arg1) { if (CancelTRXF == 0) { if (attachMotionF == 0) { var_r31 = &arg1->data.base; - } else { + } + else { var_r31 = &arg1->data.curr; } if (arg0->hsfData->cenvCnt == 0 || hookIdx != -1) { @@ -1912,7 +2020,8 @@ static void objRoot(ModelData *arg0, HsfObject *arg1) { temp_r30->z = temp_r29->z * var_r31->scale.z; MTXIdx++; var_r26 = 1; - } else { + } + else { CancelTRXF = 0; var_r26 = 0; } @@ -1924,7 +2033,8 @@ static void objRoot(ModelData *arg0, HsfObject *arg1) { } } -static void objJoint(ModelData *arg0, HsfObject *arg1) { +static void objJoint(ModelData *arg0, HsfObject *arg1) +{ HsfTransform *var_r31; Vec *temp_r27; Vec *temp_r28; @@ -1935,7 +2045,8 @@ static void objJoint(ModelData *arg0, HsfObject *arg1) { if (CancelTRXF == 0) { if (attachMotionF == 0) { var_r31 = &arg1->data.base; - } else { + } + else { var_r31 = &arg1->data.curr; } if (arg0->hsfData->cenvCnt == 0 || hookIdx != -1) { @@ -1951,7 +2062,8 @@ static void objJoint(ModelData *arg0, HsfObject *arg1) { temp_r28->z = temp_r27->z * var_r31->scale.z; MTXIdx++; var_r24 = 1; - } else { + } + else { CancelTRXF = 0; var_r24 = 0; } @@ -1963,7 +2075,8 @@ static void objJoint(ModelData *arg0, HsfObject *arg1) { } } -static void objMap(ModelData *arg0, HsfObject *arg1) { +static void objMap(ModelData *arg0, HsfObject *arg1) +{ HsfTransform *var_r31; Vec *temp_r29; Vec *temp_r30; @@ -1974,7 +2087,8 @@ static void objMap(ModelData *arg0, HsfObject *arg1) { if (CancelTRXF == 0) { if (attachMotionF == 0) { var_r31 = &arg1->data.base; - } else { + } + else { var_r31 = &arg1->data.curr; } MTXScale(spC, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); @@ -1988,7 +2102,8 @@ static void objMap(ModelData *arg0, HsfObject *arg1) { temp_r30->z = temp_r29->z * var_r31->scale.z; MTXIdx++; var_r26 = 1; - } else { + } + else { CancelTRXF = 0; var_r26 = 0; } @@ -2000,14 +2115,16 @@ static void objMap(ModelData *arg0, HsfObject *arg1) { } } -static void objReplica(ModelData *arg0, HsfObject *arg1) { +static void objReplica(ModelData *arg0, HsfObject *arg1) +{ HsfTransform *var_r31; Mtx sp3C; Mtx spC; if (attachMotionF == 0) { var_r31 = &arg1->data.base; - } else { + } + else { var_r31 = &arg1->data.curr; } mtxRot(spC, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); @@ -2025,13 +2142,14 @@ static void objReplica(ModelData *arg0, HsfObject *arg1) { MTXIdx--; } -void Hu3DDrawPost(void) { +void Hu3DDrawPost(void) +{ Vec sp54; Vec sp48; Vec sp3C; Vec sp30; GXColor sp2C; - void (*sp28)(ModelData*, Mtx); + void (*sp28)(ModelData *, Mtx); s16 spA; s16 sp8; HsfBuffer *temp_r24; @@ -2077,7 +2195,8 @@ void Hu3DDrawPost(void) { if (DrawObjData[DrawObjNum[var_r26]].z < temp_f29) { DrawObjNum[var_r26 + var_r25] = DrawObjNum[var_r26]; var_r26 -= var_r25; - } else { + } + else { break; } } @@ -2099,22 +2218,23 @@ void Hu3DDrawPost(void) { } GXInvalidateTexAll(); GXInvalidateVtxCache(); - materialBak = (HsfMaterial*) -1; + materialBak = (HsfMaterial *)-1; for (i = 0; i < 8; i++) { - BmpPtrBak[i] = (HsfAttribute*) -1; + BmpPtrBak[i] = (HsfAttribute *)-1; } GXSetCullMode(GX_CULL_BACK); for (var_r23 = 0; var_r23 < DrawObjIdx; var_r23++) { temp_r28 = &DrawObjData[DrawObjNum[var_r23]]; if (temp_r28->model->attr & HU3D_ATTR_HOOKFUNC) { - sp28 = (void*) temp_r28->model->hsfData; + sp28 = (void *)temp_r28->model->hsfData; sp28(temp_r28->model, temp_r28->matrix); for (i = 0; i < 8; i++) { - BmpPtrBak[i] = (HsfAttribute*) -1; + BmpPtrBak[i] = (HsfAttribute *)-1; } - materialBak = (HsfMaterial*) -1; + materialBak = (HsfMaterial *)-1; Hu3DCameraSet(Hu3DCameraNo, Hu3DCameraMtx); - } else { + } + else { Hu3DObjInfoP = temp_r28->object->constData; DLBufStartP = Hu3DObjInfoP->dlBuf; DrawData = Hu3DObjInfoP->drawData; @@ -2128,7 +2248,8 @@ void Hu3DDrawPost(void) { MTXConcat(sp150, sp120, sp120); GXLoadTexMtxImm(sp120, GX_TEXMTX9, GX_MTX3x4); var_r19 = 1; - } else { + } + else { var_r19 = 0; } if (temp_r28->model->unk_02 != 0) { @@ -2156,7 +2277,8 @@ void Hu3DDrawPost(void) { OSf32tos16(&temp_f30, &sp8); if (sp8 == -10000) { MTXScale(hiliteMtx, 0.0f, 0.0f, 0.0f); - } else { + } + else { C_VECHalfAngle(&sp30, &sp54, &sp3C); sp3C.x = -sp3C.x; sp3C.y = -sp3C.y; @@ -2167,7 +2289,8 @@ void Hu3DDrawPost(void) { MTXInvXpose(spC0, sp90); if (sp8 == 10000) { MTXIdentity(spC0); - } else { + } + else { VECCrossProduct(&sp3C, &sp54, &sp48); temp_f28 = acosf(VECDotProduct(&sp54, &sp3C)); MTXRotAxisRad(spC0, &sp48, temp_f28); @@ -2182,7 +2305,7 @@ void Hu3DDrawPost(void) { drawCnt = 0; shadingBak = -1; vtxModeBak = -1; - materialBak = (HsfMaterial*) -1; + materialBak = (HsfMaterial *)-1; if (shadowModelDrawF == 0) { for (i = 0; i < temp_r24->count;) { FaceDraw(temp_r28, var_r27); @@ -2190,13 +2313,15 @@ void Hu3DDrawPost(void) { totalPolyCnt += DrawData[drawCnt - 1].polyCnt; i++; var_r27++; - } else { + } + else { totalPolyCnt += DrawData[drawCnt - 1].polyCnt * ((var_r27->type & 7) == 3 ? 2 : 1); i += DrawData[drawCnt - 1].polyCnt; var_r27 += DrawData[drawCnt - 1].polyCnt; } } - } else { + } + else { sp2C.a = 0xFF; GXSetChanAmbColor(GX_COLOR0A0, sp2C); GXSetChanMatColor(GX_COLOR0A0, sp2C); @@ -2208,7 +2333,8 @@ void Hu3DDrawPost(void) { if (var_r27->type == 4) { i++; var_r27++; - } else { + } + else { i += DrawData[drawCnt - 1].polyCnt; var_r27 += DrawData[drawCnt - 1].polyCnt; } @@ -2226,7 +2352,8 @@ void Hu3DDrawPost(void) { (void)var_r19; // required to match } -static void ObjDraw(HsfDrawObject *arg0) { +static void ObjDraw(HsfDrawObject *arg0) +{ Vec sp44; Vec sp38; Vec sp2C; @@ -2267,7 +2394,8 @@ static void ObjDraw(HsfDrawObject *arg0) { MTXConcat(sp140, sp110, sp110); GXLoadTexMtxImm(sp110, GX_TEXMTX9, GX_MTX3x4); var_r22 = 1; - } else { + } + else { var_r22 = 0; } if (arg0->model->unk_02 != 0) { @@ -2295,7 +2423,8 @@ static void ObjDraw(HsfDrawObject *arg0) { OSf32tos16(&temp_f30, &var_r21); if (var_r21 == -10000) { MTXScale(hiliteMtx, 0.0f, 0.0f, 0.0f); - } else { + } + else { C_VECHalfAngle(&sp20, &sp44, &sp2C); sp2C.x = -sp2C.x; sp2C.y = -sp2C.y; @@ -2306,7 +2435,8 @@ static void ObjDraw(HsfDrawObject *arg0) { MTXInvXpose(spB0, sp80); if (var_r21 == 10000) { MTXIdentity(spB0); - } else { + } + else { VECCrossProduct(&sp2C, &sp44, &sp38); temp_f29 = acosf(VECDotProduct(&sp44, &sp2C)); MTXRotAxisRad(spB0, &sp38, temp_f29); @@ -2321,7 +2451,7 @@ static void ObjDraw(HsfDrawObject *arg0) { drawCnt = 0; shadingBak = -1; vtxModeBak = -1; - materialBak = (HsfMaterial*) -1; + materialBak = (HsfMaterial *)-1; if (shadowModelDrawF == 0) { for (i = 0; i < temp_r26->count;) { FaceDraw(arg0, var_r27); @@ -2329,11 +2459,13 @@ static void ObjDraw(HsfDrawObject *arg0) { totalPolyCnt += DrawData[drawCnt - 1].polyCnt; i++; var_r27++; - } else { + } + else { temp_r25 = &DrawData[drawCnt - 1]; if ((var_r27->type & 7) == 3) { var_r20 = 2; - } else { + } + else { var_r20 = 1; } totalPolyCnt += temp_r25->polyCnt * var_r20; @@ -2341,7 +2473,8 @@ static void ObjDraw(HsfDrawObject *arg0) { var_r27 += temp_r25->polyCnt; } } - } else { + } + else { sp1C.a = 0xFF; GXSetChanAmbColor(GX_COLOR0A0, sp1C); GXSetChanMatColor(GX_COLOR0A0, sp1C); @@ -2353,7 +2486,8 @@ static void ObjDraw(HsfDrawObject *arg0) { if (var_r27->type == 4) { i++; var_r27++; - } else { + } + else { i += DrawData[drawCnt - 1].polyCnt; var_r27 += DrawData[drawCnt - 1].polyCnt; } @@ -2367,7 +2501,8 @@ static void ObjDraw(HsfDrawObject *arg0) { } } -void MakeDisplayList(s16 arg0, uintptr_t arg1) { +void MakeDisplayList(s16 arg0, uintptr_t arg1) +{ HsfData *temp_r31; ModelData *var_r30; @@ -2383,7 +2518,8 @@ void MakeDisplayList(s16 arg0, uintptr_t arg1) { } } -static void MDObjCall(HsfData *arg0, HsfObject *arg1) { +static void MDObjCall(HsfData *arg0, HsfObject *arg1) +{ s16 i; switch (arg1->type) { @@ -2404,7 +2540,8 @@ static void MDObjCall(HsfData *arg0, HsfObject *arg1) { } } -static void MDObjMesh(HsfData *arg0, HsfObject *arg1) { +static void MDObjMesh(HsfData *arg0, HsfObject *arg1) +{ HsfBuffer *temp_r29; HsfFace *var_r28; s16 i; @@ -2413,7 +2550,7 @@ static void MDObjMesh(HsfData *arg0, HsfObject *arg1) { DLFirstF = 0; drawCnt = matChgCnt = triCnt = quadCnt = 0; faceNumBuf[0] = 0; - materialBak = (HsfMaterial*) -1; + materialBak = (HsfMaterial *)-1; polyTypeBak = 0xFF; DLTotalNum = 0; var_r28 = temp_r29->data; @@ -2427,7 +2564,7 @@ static void MDObjMesh(HsfData *arg0, HsfObject *arg1) { DLBufP = DLBufStartP = HuMemDirectMallocNum(HEAP_DATA, DLTotalNum, mallocNo); DCInvalidateRange(DLBufStartP, DLTotalNum); DLFirstF = 0; - materialBak = (HsfMaterial*) -1; + materialBak = (HsfMaterial *)-1; polyTypeBak = 0xFF; totalSize = drawCnt = 0; var_r28 = temp_r29->data; @@ -2457,7 +2594,8 @@ static void MDObjMesh(HsfData *arg0, HsfObject *arg1) { } } -HsfConstData *ObjConstantMake(HsfObject *arg0, u32 arg1) { +HsfConstData *ObjConstantMake(HsfObject *arg0, u32 arg1) +{ HsfConstData *temp_r3; temp_r3 = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfConstData), arg1); @@ -2468,7 +2606,8 @@ HsfConstData *ObjConstantMake(HsfObject *arg0, u32 arg1) { return temp_r3; } -static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { +static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) +{ HsfMaterial *temp_r30; s16 *var_r24; s16 var_r26; @@ -2483,12 +2622,13 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { if (temp_r30 != materialBak || polyTypeBak != (arg1->type & 7) || (arg1->type & 7) == 4) { polyTypeBak = arg1->type & 7; materialBak = temp_r30; - DrawData[drawCnt].dlOfs = (u32) DLBufP - (u32) DLBufStartP; + DrawData[drawCnt].dlOfs = (u32)DLBufP - (u32)DLBufStartP; GXBeginDisplayList(DLBufP, 0x20000); GXResetWriteGatherPipe(); if (temp_r30->numAttrs == 0) { var_r25 = 0; - } else { + } + else { var_r25 = 1; for (var_r27 = 0; var_r27 < temp_r30->numAttrs; var_r27++) { if (arg0->data.attribute[temp_r30->attrs[var_r27]].unk14 != 0.0) { @@ -2533,13 +2673,14 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { GXPosition1x16(arg1->indices[0][0]); if (var_r26 == -1) { GXNormal1x16(arg1->indices[0][1]); - } else { + } + else { MakeCalcNBT(arg0, arg1, 0, 1); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[0][2]; GXColor1x16(temp_r28); - if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { + if (((GXColor *)arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } @@ -2549,13 +2690,14 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { GXPosition1x16(arg1->indices[2][0]); if (var_r26 == -1) { GXNormal1x16(arg1->indices[2][1]); - } else { + } + else { MakeNBT(arg0, arg1, 2, 0); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[2][2]; GXColor1x16(temp_r28); - if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { + if (((GXColor *)arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } @@ -2565,13 +2707,14 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { GXPosition1x16(arg1->indices[1][0]); if (var_r26 == -1) { GXNormal1x16(arg1->indices[1][1]); - } else { + } + else { MakeNBT(arg0, arg1, 1, 2); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[1][2]; GXColor1x16(temp_r28); - if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { + if (((GXColor *)arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } @@ -2579,6 +2722,9 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { GXTexCoord1x16(arg1->indices[1][3]); } } +#ifdef TARGET_PC + GXEnd(); +#endif faceCnt = faceNumBuf[drawCnt] / 3; break; case 3: @@ -2587,13 +2733,14 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { GXPosition1x16(arg1->indices[0][0]); if (var_r26 == -1) { GXNormal1x16(arg1->indices[0][1]); - } else { + } + else { MakeCalcNBT(arg0, arg1, 0, 1); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[0][2]; GXColor1x16(temp_r28); - if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { + if (((GXColor *)arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } @@ -2603,13 +2750,14 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { GXPosition1x16(arg1->indices[2][0]); if (var_r26 == -1) { GXNormal1x16(arg1->indices[2][1]); - } else { + } + else { MakeNBT(arg0, arg1, 2, 0); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[2][2]; GXColor1x16(temp_r28); - if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { + if (((GXColor *)arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } @@ -2619,13 +2767,14 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { GXPosition1x16(arg1->indices[3][0]); if (var_r26 == -1) { GXNormal1x16(arg1->indices[3][1]); - } else { + } + else { MakeNBT(arg0, arg1, 3, 2); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[3][2]; GXColor1x16(temp_r28); - if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { + if (((GXColor *)arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } @@ -2635,13 +2784,14 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { GXPosition1x16(arg1->indices[1][0]); if (var_r26 == -1) { GXNormal1x16(arg1->indices[1][1]); - } else { + } + else { MakeNBT(arg0, arg1, 1, 3); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[1][2]; GXColor1x16(temp_r28); - if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { + if (((GXColor *)arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } @@ -2649,6 +2799,9 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { GXTexCoord1x16(arg1->indices[1][3]); } } +#ifdef TARGET_PC + GXEnd(); +#endif faceCnt = faceNumBuf[drawCnt] / 4; break; case 4: @@ -2656,13 +2809,14 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { GXPosition1x16(arg1->indices[0][0]); if (var_r26 == -1) { GXNormal1x16(arg1->indices[0][1]); - } else { + } + else { MakeCalcNBT(arg0, arg1, 0, 1); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[0][2]; GXColor1x16(temp_r28); - if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { + if (((GXColor *)arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } @@ -2672,13 +2826,14 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { GXPosition1x16(arg1->indices[2][0]); if (var_r26 == -1) { GXNormal1x16(arg1->indices[2][1]); - } else { + } + else { MakeNBT(arg0, arg1, 2, 0); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[2][2]; GXColor1x16(temp_r28); - if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { + if (((GXColor *)arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } @@ -2688,13 +2843,14 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { GXPosition1x16(arg1->indices[1][0]); if (var_r26 == -1) { GXNormal1x16(arg1->indices[1][1]); - } else { + } + else { MakeNBT(arg0, arg1, 1, 2); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[1][2]; GXColor1x16(temp_r28); - if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { + if (((GXColor *)arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } @@ -2706,13 +2862,14 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { GXPosition1x16(var_r24[0]); if (var_r26 == -1) { GXNormal1x16(var_r24[1]); - } else { + } + else { MakeCalcNBT(arg0, arg1, 0, 1); } if (temp_r30->vtxMode == 5) { temp_r28 = var_r24[2]; GXColor1x16(temp_r28); - if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { + if (((GXColor *)arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } @@ -2720,6 +2877,9 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { GXTexCoord1x16(var_r24[3]); } } +#ifdef TARGET_PC + GXEnd(); +#endif faceCnt = arg1->strip.count + 1; break; } @@ -2728,15 +2888,16 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { DrawData[drawCnt].polyCnt = faceCnt; totalSize += temp_r3; drawCnt++; - DLBufP = (u8*) DLBufP + temp_r3; + DLBufP = (u8 *)DLBufP + temp_r3; } } -static s32 MakeCalcNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) { +static s32 MakeCalcNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) +{ Vec sp10; Vec *temp_r29; Vec *temp_r31; - s8 (*temp_r28)[3]; + s8(*temp_r28)[3]; s16 temp_r25; s16 temp_r24; s16 temp_r27; @@ -2750,7 +2911,8 @@ static s32 MakeCalcNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) { sp10.x = temp_r29[temp_r27].x; sp10.y = temp_r29[temp_r27].y; sp10.z = temp_r29[temp_r27].z; - } else { + } + else { temp_r28 = arg0->data.normal->data; sp10.x = temp_r28[temp_r27][0]; sp10.y = temp_r28[temp_r27][1]; @@ -2767,11 +2929,12 @@ static s32 MakeCalcNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) { GXNormal3s16(NBTT.x * 256.0f, NBTT.y * 256.0f, NBTT.z * 256.0f); } -static s32 MakeNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) { +static s32 MakeNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) +{ Vec sp10; Vec *temp_r30; Vec *spC; - s8 (*temp_r29)[3]; + s8(*temp_r29)[3]; s16 temp_r28; spC = arg0->data.vertex->data; @@ -2781,7 +2944,8 @@ static s32 MakeNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) { sp10.x = temp_r30[temp_r28].x; sp10.y = temp_r30[temp_r28].y; sp10.z = temp_r30[temp_r28].z; - } else { + } + else { temp_r29 = arg0->data.normal->data; sp10.x = temp_r29[temp_r28][0]; sp10.y = temp_r29[temp_r28][1]; @@ -2793,7 +2957,8 @@ static s32 MakeNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) { GXNormal3s16(NBTT.x * 256.0f, NBTT.y * 256.0f, NBTT.z * 256.0f); } -static void MDFaceCnt(HsfObject *arg0, HsfFace *arg1) { +static void MDFaceCnt(HsfObject *arg0, HsfFace *arg1) +{ HsfMaterial *temp_r30; s16 i; @@ -2808,7 +2973,8 @@ static void MDFaceCnt(HsfObject *arg0, HsfFace *arg1) { drawCnt++; faceNumBuf[drawCnt] = 0; DLTotalNum = ((DLTotalNum + 0x20) & ~0x1F) + 0x20; - } else { + } + else { DLFirstF = 1; } if (temp_r30->numAttrs != 0) { @@ -2852,7 +3018,8 @@ static void MDFaceCnt(HsfObject *arg0, HsfFace *arg1) { } } -void mtxTransCat(Mtx arg0, float arg1, float arg2, float arg3) { +void mtxTransCat(Mtx arg0, float arg1, float arg2, float arg3) +{ if (arg1 != 0.0f || arg2 != 0.0f || arg3 != 0.0f) { arg0[0][3] += arg1; arg0[1][3] += arg2; @@ -2860,7 +3027,8 @@ void mtxTransCat(Mtx arg0, float arg1, float arg2, float arg3) { } } -void mtxRotCat(Mtx arg0, float arg1, float arg2, float arg3) { +void mtxRotCat(Mtx arg0, float arg1, float arg2, float arg3) +{ Mtx sp8; if (arg1 != 0.0f) { @@ -2877,13 +3045,15 @@ void mtxRotCat(Mtx arg0, float arg1, float arg2, float arg3) { } } -void mtxRot(Mtx arg0, float arg1, float arg2, float arg3) { +void mtxRot(Mtx arg0, float arg1, float arg2, float arg3) +{ Mtx sp38; Mtx sp8; if (arg1 != 0.0f) { MTXRotRad(arg0, 'X', MTXDegToRad(arg1)); - } else { + } + else { MTXIdentity(arg0); } if (arg2 != 0.0f) { @@ -2896,7 +3066,8 @@ void mtxRot(Mtx arg0, float arg1, float arg2, float arg3) { } } -void mtxScaleCat(Mtx arg0, float arg1, float arg2, float arg3) { +void mtxScaleCat(Mtx arg0, float arg1, float arg2, float arg3) +{ arg0[0][0] *= arg1; arg0[1][0] *= arg1; arg0[2][0] *= arg1; @@ -2908,7 +3079,8 @@ void mtxScaleCat(Mtx arg0, float arg1, float arg2, float arg3) { arg0[2][2] *= arg3; } -s16 HmfInverseMtxF3X3(Mtx arg0, Mtx arg1) { +s16 HmfInverseMtxF3X3(Mtx arg0, Mtx arg1) +{ float temp_f30; float temp_f29; float temp_f28; @@ -2935,7 +3107,8 @@ s16 HmfInverseMtxF3X3(Mtx arg0, Mtx arg1) { return 1; } -static inline void SetDefLightInlineFunc(GXLightObj *arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9) { +static inline void SetDefLightInlineFunc(GXLightObj *arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9) +{ GXColor spE; spE.r = arg1; @@ -2954,7 +3127,8 @@ static inline void SetDefLightInlineFunc(GXLightObj *arg0, u8 arg1, u8 arg2, u8 GXSetChanMatColor(GX_COLOR0A0, spE); } -void SetDefLight(Vec *arg0, Vec *arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA) { +void SetDefLight(Vec *arg0, Vec *arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA) +{ GXLightObj sp20; GXInitLightAttn(&sp20, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f); @@ -2964,7 +3138,8 @@ void SetDefLight(Vec *arg0, Vec *arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5, u8 ar SetDefLightInlineFunc(&sp20, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, argA); } -void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2) { +void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2) +{ Mtx spC; Hu3DModelObjMtxGet(arg0, arg1, spC); @@ -2977,7 +3152,8 @@ void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2) { } } -void Hu3DModelObjMtxGet(s16 arg0, char *arg1, Mtx arg2) { +void Hu3DModelObjMtxGet(s16 arg0, char *arg1, Mtx arg2) +{ ModelData *temp_r31; HsfData *temp_r30; Mtx spA0; @@ -2997,10 +3173,11 @@ void Hu3DModelObjMtxGet(s16 arg0, char *arg1, Mtx arg2) { PGFinishF = 0; hookIdx = -1; PGName = HuMemDirectMallocNum(HEAP_SYSTEM, 0x200, MEMORY_DEFAULT_NUM); - strcpy((char*) PGName, MakeObjectName(arg1)); + strcpy((char *)PGName, MakeObjectName(arg1)); if (temp_r31->unk_08 != -1) { attachMotionF = 1; - } else { + } + else { attachMotionF = 0; } PGObjCall(temp_r31, temp_r30->root); @@ -3012,7 +3189,8 @@ void Hu3DModelObjMtxGet(s16 arg0, char *arg1, Mtx arg2) { HuMemDirectFree(PGName); } -void PGObjCall(ModelData *arg0, HsfObject *arg1) { +void PGObjCall(ModelData *arg0, HsfObject *arg1) +{ switch (arg1->type) { case 0: case 2: @@ -3029,7 +3207,8 @@ void PGObjCall(ModelData *arg0, HsfObject *arg1) { } } -void PGObjCalc(ModelData *arg0, HsfObject *arg1) { +void PGObjCalc(ModelData *arg0, HsfObject *arg1) +{ Vec sp8; s16 temp_r22; s16 var_r24; @@ -3045,7 +3224,8 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) { if (CancelTRXF == 0) { if (attachMotionF == 0) { var_r30 = &arg1->data.base; - } else { + } + else { var_r30 = &arg1->data.curr; } mtxRot(spA4, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); @@ -3055,11 +3235,12 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) { MTXConcat(MTXBuf[MTXIdx - 1], spD4, MTXBuf[MTXIdx]); MTXIdx++; var_r24 = 1; - } else { + } + else { CancelTRXF = 0; var_r24 = 0; } - if (strcmp((char*) PGName, arg1->name) == 0) { + if (strcmp((char *)PGName, arg1->name) == 0) { PGFinishF = 1; return; } @@ -3070,7 +3251,8 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) { var_r27 = attachMotionF; if (temp_r31->unk_08 != -1) { attachMotionF = 1; - } else { + } + else { attachMotionF = 0; } temp_r22 = hookIdx; @@ -3089,7 +3271,7 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) { } if (*PGName == 0 && arg1->type == 2) { var_r23 = arg1; - MTXMultVec(MTXBuf[MTXIdx - 1], (Vec*) &var_r23->data.mesh.min, &sp8); + MTXMultVec(MTXBuf[MTXIdx - 1], (Vec *)&var_r23->data.mesh.min, &sp8); if (sp8.x < PGMinPos.x) { PGMinPos.x = sp8.x; } @@ -3108,7 +3290,7 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) { if (sp8.z > PGMaxPos.z) { PGMaxPos.z = sp8.z; } - MTXMultVec(MTXBuf[MTXIdx - 1], (Vec*) &var_r23->data.mesh.max, &sp8); + MTXMultVec(MTXBuf[MTXIdx - 1], (Vec *)&var_r23->data.mesh.max, &sp8); if (sp8.x < PGMinPos.x) { PGMinPos.x = sp8.x; } @@ -3139,14 +3321,16 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) { } } -void PGObjReplica(ModelData *arg0, HsfObject *arg1) { +void PGObjReplica(ModelData *arg0, HsfObject *arg1) +{ HsfTransform *var_r31; Mtx sp1B8; Mtx sp188; if (attachMotionF == 0) { var_r31 = &arg1->data.base; - } else { + } + else { var_r31 = &arg1->data.curr; } mtxRot(sp188, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); @@ -3163,7 +3347,8 @@ void PGObjReplica(ModelData *arg0, HsfObject *arg1) { } } -HsfObject *Hu3DObjDuplicate(HsfData *arg0, u32 arg1) { +HsfObject *Hu3DObjDuplicate(HsfData *arg0, u32 arg1) +{ HsfObject *temp_r27; HsfObject *var_r30; HsfObject *var_r31; @@ -3177,7 +3362,7 @@ HsfObject *Hu3DObjDuplicate(HsfData *arg0, u32 arg1) { for (i = 0; i < arg0->objectCnt; i++, var_r31++, var_r30++) { if (var_r31->type != 8 && var_r31->type != 7) { if (var_r31->data.parent) { - var_r31->data.parent = (HsfObject*) ((u8*) temp_r27 + ((u32) var_r30->data.parent - (u32) arg0->object)); + var_r31->data.parent = (HsfObject *)((u8 *)temp_r27 + ((u32)var_r30->data.parent - (u32)arg0->object)); } var_r31->data.children = HuMemDirectMallocNum(HEAP_DATA, var_r30->data.childrenCount * 4, arg1); if (var_r30->constData) { @@ -3185,29 +3370,31 @@ HsfObject *Hu3DObjDuplicate(HsfData *arg0, u32 arg1) { memcpy(var_r31->constData, var_r30->constData, sizeof(HsfConstData)); } for (j = 0; j < var_r30->data.childrenCount; j++) { - var_r31->data.children[j] = (HsfObject*) ((u8*) temp_r27 + ((u32) var_r30->data.children[j] - (u32) arg0->object)); + var_r31->data.children[j] = (HsfObject *)((u8 *)temp_r27 + ((u32)var_r30->data.children[j] - (u32)arg0->object)); } } } return temp_r27; } -void Hu3DModelObjDrawInit(void) { +void Hu3DModelObjDrawInit(void) +{ s16 i; GXSetCullMode(GX_CULL_BACK); for (i = 0; i < 8; i++) { - BmpPtrBak[i] = (HsfAttribute*) -1; + BmpPtrBak[i] = (HsfAttribute *)-1; } CancelTRXF = 0; hookIdx = -1; shadingBak = -1; vtxModeBak = -1; - materialBak = (HsfMaterial*) -1; + materialBak = (HsfMaterial *)-1; attachMotionF = 0; } -void Hu3DModelObjDraw(s16 arg0, char *arg1, Mtx arg2) { +void Hu3DModelObjDraw(s16 arg0, char *arg1, Mtx arg2) +{ HsfDrawObject sp14; HsfConstData *sp10; HsfObject *temp_r3; diff --git a/src/game/hsfman.c b/src/game/hsfman.c index 4ed699b0..c4a4d3c5 100644 --- a/src/game/hsfman.c +++ b/src/game/hsfman.c @@ -14,34 +14,37 @@ #include "dolphin/gx/GXVert.h" -#include "math.h" #include "ext_math.h" +#ifndef __MWERKS__ +#include "string.h" +#endif + #define SHADOW_HEAP_SIZE 0x9000 -ModelData Hu3DData[HU3D_MODEL_MAX]; -CameraData Hu3DCamera[HU3D_CAM_MAX]; +SHARED_SYM ModelData Hu3DData[HU3D_MODEL_MAX]; +SHARED_SYM CameraData Hu3DCamera[HU3D_CAM_MAX]; static s16 layerNum[8]; static void (*layerHook[8])(s16); AnimData *reflectAnim[5]; -AnimData *hiliteAnim[4]; +SHARED_SYM AnimData *hiliteAnim[4]; ThreeDProjectionStruct Hu3DProjection[4]; -ShadowData Hu3DShadowData; +SHARED_SYM ShadowData Hu3DShadowData; HsfScene FogData; -Mtx Hu3DCameraMtx; -Mtx Hu3DCameraMtxXPose; -LightData Hu3DGlobalLight[0x8]; -LightData Hu3DLocalLight[0x20]; +SHARED_SYM Mtx Hu3DCameraMtx; +SHARED_SYM Mtx Hu3DCameraMtxXPose; +SHARED_SYM LightData Hu3DGlobalLight[0x8]; +SHARED_SYM LightData Hu3DLocalLight[0x20]; Mtx lbl_8018D39C; -GXColor BGColor; +SHARED_SYM GXColor BGColor; s16 reflectMapNo; AnimData *toonAnim; -s16 Hu3DShadowCamBit; -s32 Hu3DShadowF; -s32 shadowModelDrawF; +SHARED_SYM s16 Hu3DShadowCamBit; +SHARED_SYM s32 Hu3DShadowF; +SHARED_SYM s32 shadowModelDrawF; s16 Hu3DProjectionNum; -s16 Hu3DCameraNo; +SHARED_SYM s16 Hu3DCameraNo; s16 Hu3DCameraBit; uintptr_t Hu3DMallocNo; s16 Hu3DPauseF; @@ -178,7 +181,7 @@ void Hu3DExec(void) { HuSprExec(0x7F); } if (FogData.fogType != GX_FOG_NONE) { - GXSetFog(FogData.fogType, FogData.start, FogData.end, camera->near, camera->far, FogData.color); + GXSetFog(FogData.fogType, FogData.start, FogData.end, camera->nnear, camera->ffar, FogData.color); } for (j = 0; j < 8; j++) { if (layerHook[j] != 0) { @@ -1121,7 +1124,7 @@ void Hu3DCameraCreate(s32 cam) { } } -void Hu3DCameraPerspectiveSet(s32 cam, f32 fov, f32 near, f32 far, f32 aspect) { +void Hu3DCameraPerspectiveSet(s32 cam, f32 fov, f32 nnear, f32 ffar, f32 aspect) { s16 mask; s16 i; CameraData* cam_ptr; @@ -1130,8 +1133,8 @@ void Hu3DCameraPerspectiveSet(s32 cam, f32 fov, f32 near, f32 far, f32 aspect) { if ((cam & mask) != 0) { cam_ptr = &Hu3DCamera[i]; cam_ptr->fov = fov; - cam_ptr->near = near; - cam_ptr->far = far; + cam_ptr->nnear = nnear; + cam_ptr->ffar = ffar; cam_ptr->aspect = aspect; } } @@ -1248,7 +1251,7 @@ void Hu3DCameraSet(s32 arg0, Mtx arg1) { CameraData* temp_r31; temp_r31 = &Hu3DCamera[arg0]; - C_MTXPerspective(sp10, temp_r31->fov, temp_r31->aspect, temp_r31->near, temp_r31->far); + C_MTXPerspective(sp10, temp_r31->fov, temp_r31->aspect, temp_r31->nnear, temp_r31->ffar); GXSetProjection(sp10, GX_PERSPECTIVE); if (RenderMode->field_rendering != 0) { GXSetViewportJitter(temp_r31->viewport_x, temp_r31->viewport_y, temp_r31->viewport_w, temp_r31->viewport_h, temp_r31->near_z, temp_r31->far_z, VIGetNextField()); @@ -1299,7 +1302,7 @@ BOOL Hu3DModelCameraInfoSet(s16 arg0, u16 arg1) { sp8.x, sp8.y, sp8.z, obj_copy->camera.pos.x, obj_copy->camera.pos.y, obj_copy->camera.pos.z); - Hu3DCameraPerspectiveSet(arg1, obj_copy->camera.fov, obj_copy->camera.near, obj_copy->camera.far, HU_DISP_ASPECT); + Hu3DCameraPerspectiveSet(arg1, obj_copy->camera.fov, obj_copy->camera.nnear, obj_copy->camera.ffar, HU_DISP_ASPECT); temp_r28->unk_01 = arg1; temp_r24 = &Hu3DData[arg0]; diff --git a/src/game/hsfmotion.c b/src/game/hsfmotion.c index 45f9b575..37d1f98a 100644 --- a/src/game/hsfmotion.c +++ b/src/game/hsfmotion.c @@ -18,7 +18,7 @@ static s32 SearchObjectIndex(HsfData *arg0, u32 arg1); static s32 SearchAttributeIndex(HsfData *arg0, u32 arg1); -MotionData Hu3DMotion[HU3D_MOTION_MAX]; +SHARED_SYM MotionData Hu3DMotion[HU3D_MOTION_MAX]; static HsfBitmap *bitMapPtr; diff --git a/src/game/init.c b/src/game/init.c index 10979b1c..fdd5d55c 100644 --- a/src/game/init.c +++ b/src/game/init.c @@ -22,7 +22,7 @@ extern u32 frand(); static GXRenderModeObj rmodeobj; static BOOL FirstFrame = TRUE; -GXRenderModeObj *RenderMode; +SHARED_SYM GXRenderModeObj *RenderMode; OSHeapHandle currentHeapHandle; static void *DefaultFifo; static GXFifoObj *DefaultFifoObj; @@ -31,7 +31,7 @@ void *DemoFrameBuffer2; void *DemoCurrentBuffer; u32 minimumVcount; float minimumVcountf; -u32 worstVcount; +SHARED_SYM u32 worstVcount; static BOOL DemoStatEnable; diff --git a/src/game/main.c b/src/game/main.c index b25ef144..3831d60f 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -30,7 +30,7 @@ const char *__asan_default_options() #endif extern FileListEntry _ovltbl[]; -u32 GlobalCounter; +SHARED_SYM u32 GlobalCounter; static u32 vcheck; static u32 vmiss; static u32 vstall; diff --git a/src/game/malloc.c b/src/game/malloc.c index f5d747bf..9c112cc7 100644 --- a/src/game/malloc.c +++ b/src/game/malloc.c @@ -11,6 +11,9 @@ void HuMemInitAll(void) void *ptr; u32 free_size; for(i=0; i<4; i++) { +#ifdef TARGET_PC + HeapSizeTbl[i] *= 2; +#endif ptr = OSAlloc(HeapSizeTbl[i]); if(ptr == NULL) { OSReport("HuMem> Failed OSAlloc Size:%d\n", HeapSizeTbl[i]); @@ -55,7 +58,7 @@ void *HuMemDirectMalloc(HeapID heap, s32 size) mflr retaddr } #endif - size = (size+31) & 0xFFFFFFE0; + size = (size + 31) & ~0x1F; return HuMemMemoryAlloc(HeapTbl[heap], size, retaddr); } @@ -69,7 +72,7 @@ void *HuMemDirectMallocNum(HeapID heap, s32 size, uintptr_t num) mflr retaddr } #endif - size = (size+31) & 0xFFFFFFE0; + size = (size + 31) & ~0x1F; return HuMemMemoryAllocNum(HeapTbl[heap], size, num, retaddr); } diff --git a/src/game/mapspace.c b/src/game/mapspace.c index ac8cba65..aec2cd17 100755 --- a/src/game/mapspace.c +++ b/src/game/mapspace.c @@ -1,9 +1,11 @@ #include "game/mapspace.h" #include "game/hsfman.h" -#include "math.h" +#include +#ifdef __MWERKS__ extern void HuSetVecF(Vec*, double, double, double); +#endif static BOOL PolygonRangeCheck(HsfMapAttr *arg0, float arg1, float arg2, float *arg3, float arg4); static s32 DefIfnnerMapCircle(Vec *arg0, s16 *arg1, Vec *arg2, Vec *arg3); @@ -17,7 +19,7 @@ static BOOL GetPolygonCircleMtx(s16 *arg0, Vec *arg1, float *arg2, float *arg3); static s32 PrecalcPntToTriangle(Vec *arg0, Vec *arg1, Vec *arg2, Vec* arg3, Vec *arg4, Vec *arg5); static void DefSetHitFace(float arg0, float arg1, float arg2); -omObjData *MapObject[16]; +SHARED_SYM omObjData *MapObject[16]; Mtx MapMT; Mtx MapMTR; static Vec MTRAdd; @@ -28,10 +30,10 @@ static Vec OldXYZ; Vec HitFace[32]; u8 CharObject[0x30]; -float AddX; -float AddZ; -s32 nMap; -s32 nChar; +SHARED_SYM float AddX; +SHARED_SYM float AddZ; +SHARED_SYM s32 nMap; +SHARED_SYM s32 nChar; s32 HitFaceCount; static HsfData *AttrHsf; static Vec *topvtx; diff --git a/src/game/memory.c b/src/game/memory.c index 766af202..4b997331 100644 --- a/src/game/memory.c +++ b/src/game/memory.c @@ -1,10 +1,18 @@ #include "game/memory.h" #include "dolphin/os.h" + +#if INTPTR_MAX == INT32_MAX +#define MEM_ALLOC_SIZE(size) (((size) + 63) & ~0x1F) #define DATA_GET_BLOCK(ptr) ((struct memory_block *)(((char *)(ptr)) - 32)) #define BLOCK_GET_DATA(block) (((char *)(block)) + 32) - -#define MEM_ALLOC_SIZE(size) (((size) + 63) & 0xFFFFFFE0) +#define BLOCK_ALIGNMENT 32u +#else +#define MEM_ALLOC_SIZE(size) (((size - 1) / 32 + 1) * 32 + 64) +#define DATA_GET_BLOCK(ptr) ((struct memory_block *)(((char *)(ptr)) - 64)) +#define BLOCK_GET_DATA(block) (((char *)(block)) + 64) +#define BLOCK_ALIGNMENT 64u +#endif struct memory_block { s32 size; @@ -47,9 +55,9 @@ static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, uintptr_t num, uintptr_ struct memory_block *block = heap_ptr; do { if (!block->flag && block->size >= alloc_size) { - if (block->size - alloc_size > 32u) { + if (block->size - alloc_size > BLOCK_ALIGNMENT) { #ifdef TARGET_PC - struct memory_block *new_block = (struct memory_block *)(((char *)block) + alloc_size); + struct memory_block *new_block = (struct memory_block *)((char *)block + alloc_size); #else struct memory_block *new_block = (struct memory_block *)(((u32)block) + alloc_size); #endif @@ -202,7 +210,7 @@ s32 HuMemMemorySizeGet(void *ptr) } block = DATA_GET_BLOCK(ptr); if (block->flag == 1 && block->magic == 165) { - return block->size - 32; + return block->size - BLOCK_ALIGNMENT; } else { return 0; diff --git a/src/game/minigame_seq.c b/src/game/minigame_seq.c index f74d4bf4..71fedf72 100644 --- a/src/game/minigame_seq.c +++ b/src/game/minigame_seq.c @@ -33,7 +33,7 @@ typedef struct seq_info { s32 time_max; } SeqInfo; -OverlayID mgSeqOvlPrev = OVL_INVALID; +SHARED_SYM OverlayID mgSeqOvlPrev = OVL_INVALID; static SeqInfo seqInfoTbl[] = { { NULL, NULL, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 }, diff --git a/src/game/objdll.c b/src/game/objdll.c index ec0b6b5a..4ba3a938 100644 --- a/src/game/objdll.c +++ b/src/game/objdll.c @@ -36,7 +36,6 @@ s32 omDLLStart(s16 overlay, s16 flag) 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); @@ -140,7 +139,7 @@ void omDLLUnlink(omDllData *dll_ptr, s16 flag) { OSReport("odjdll>Unlink DLL:%s\n", dll_ptr->name); #ifdef _WIN32 - FreeLibrary(dll_ptr->hModule); + FreeLibrary(dll_ptr->hModule); #else if(flag == 1) { OSReport("objdll>Unlink DLL epilog\n"); diff --git a/src/game/objmain.c b/src/game/objmain.c index 1c3aeda5..55abeee3 100644 --- a/src/game/objmain.c +++ b/src/game/objmain.c @@ -5,8 +5,12 @@ #include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/object.h" +#include #include "game/pad.h" #include "game/printfunc.h" +#include "game/minigame_seq.h" +#include "game/window.h" + #define OM_OVL_HIS_MAX 16 #define OM_MAX_GROUPS 10 @@ -44,6 +48,11 @@ char omUPauseFlag; SHARED_SYM s16 omSysExitReq; s16 omdispinfo; +#ifdef TARGET_PC +OverlayID pcOvlToKill = OVL_INVALID; +s16 pcOvlKillArg = 0; +#endif + static omOvlHisData omovlhis[OM_OVL_HIS_MAX]; u8 omSysPauseEnableFlag = TRUE; @@ -61,16 +70,19 @@ 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) { +#ifdef TARGET_PC + if (pcOvlToKill >= 0) { + omDLLNumEnd(pcOvlToKill, pcOvlKillArg); + pcOvlToKill = OVL_INVALID; + } +#endif if (omnextovl >= 0 && fadeStat == 0) { HuPrcSleep(0); OSReport("++++++++++++++++++++ Start New OVL %d (EVT:%d STAT:0x%08x) ++++++++++++++++++\n", omnextovl, omnextovlevtno, omnextovlstat); @@ -82,22 +94,16 @@ 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; -#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) { @@ -128,6 +134,7 @@ void omOvlCallEx(OverlayID overlay, s16 arg2, s32 event, s32 stat) omovlhis[++omovlhisidx].overlay = overlay; omovlhis[omovlhisidx].event = event; omovlhis[omovlhisidx].stat = stat; + omOvlGotoEx(overlay, arg2, event, stat); } @@ -155,16 +162,10 @@ 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); @@ -172,13 +173,16 @@ 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; +#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); +#endif omcurovl = OVL_INVALID; omDBGSysKeyObj = NULL; } @@ -264,7 +268,7 @@ void omDestroyObjMan(void) OSReport("objman>Destory ObjMan\n"); } -omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt, s16 group, void (*func)(omObjData *)) +omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt, s16 group, omObjFunc func) { s32 i; omObjData *object; diff --git a/src/game/objsub.c b/src/game/objsub.c index b00631c4..6a402e3e 100644 --- a/src/game/objsub.c +++ b/src/game/objsub.c @@ -2,10 +2,11 @@ #include "game/data.h" #include "game/gamework_data.h" #include "game/object.h" +#include "game/pad.h" #include "game/window.h" -MgInfo mgInfoTbl[] = { +SHARED_SYM MgInfo mgInfoTbl[] = { { OVL_M401, // ovl 0, // type @@ -1162,19 +1163,19 @@ MgInfo mgInfoTbl[] = { void MGSeqPracticeExitCheck(omObjData *); -s16 mgTypeCurr; -s16 mgBattleStar[4]; -s16 mgBattleStarMax; -u8 lbl_801D3E94; -u32 mgRecordExtra; -s32 mgQuitExtraF; -s32 mgPracticeEnableF; -s32 mgInstExitEnableF; -u8 mgBoardHostEnableF; +SHARED_SYM s16 mgTypeCurr; +SHARED_SYM s16 mgBattleStar[4]; +SHARED_SYM s16 mgBattleStarMax; +SHARED_SYM u8 lbl_801D3E94; +SHARED_SYM u32 mgRecordExtra; +SHARED_SYM s32 mgQuitExtraF; +SHARED_SYM s32 mgPracticeEnableF; +SHARED_SYM s32 mgInstExitEnableF; +SHARED_SYM u8 mgBoardHostEnableF; -s16 mgTicTacToeGrid[3][3]; -u8 mgIndexList[256]; -GameStat mgGameStatBackup; +SHARED_SYM s16 mgTicTacToeGrid[3][3]; +SHARED_SYM u8 mgIndexList[256]; +SHARED_SYM GameStat mgGameStatBackup; s32 omMgIndexGet(s16 overlay) { diff --git a/src/game/objsysobj.c b/src/game/objsysobj.c index 210bdbfd..438a05df 100644 --- a/src/game/objsysobj.c +++ b/src/game/objsysobj.c @@ -1,16 +1,20 @@ +#include "game/audio.h" #include "game/object.h" #include "game/hsfman.h" #include "game/pad.h" #include "game/objsub.h" #include "game/minigame_seq.h" #include "game/sprite.h" -#include "game/hsfman.h" -#include "game/audio.h" #include "ext_math.h" -Vec CRot; -Vec Center; -float CZoom; +#ifndef __MWERKS__ +void MGSeqPauseKill(void); +#include "game/wipe.h" +#endif + +SHARED_SYM Vec CRot; +SHARED_SYM Vec Center; +SHARED_SYM float CZoom; Vec CRotM[16]; Vec CenterM[16]; float CZoomM[16]; diff --git a/src/game/ovllist.c b/src/game/ovllist.c index df997d83..b03102e9 100644 --- a/src/game/ovllist.c +++ b/src/game/ovllist.c @@ -1,9 +1,16 @@ #include "game/dvd.h" #include "game/object.h" +#ifdef TARGET_PC + #ifdef _WIN32 #define OVL_DEFINE(name, path) { path ".dll", 0 }, #else +#define OVL_DEFINE(name, path) { path ".so", 0 }, +#endif + +#else + #define OVL_DEFINE(name, path) { "dll/" path ".rel", 0 }, #endif diff --git a/src/game/printfunc.c b/src/game/printfunc.c index 032e786e..a63b3c8b 100644 --- a/src/game/printfunc.c +++ b/src/game/printfunc.c @@ -24,7 +24,7 @@ struct strline_data { static struct strline_data strline[256]; static char pfStrBuf[256]; -int fontcolor; +SHARED_SYM int fontcolor; u16 empstrline; u16 strlinecnt; BOOL saftyFrameF; diff --git a/src/game/process.c b/src/game/process.c index 4a85475b..7fd45c55 100644 --- a/src/game/process.c +++ b/src/game/process.c @@ -14,7 +14,7 @@ #define EXEC_CHILDWATCH 2 #define EXEC_KILLED 3 -static jmp_buf processjmpbuf; +static JMPBUF processjmpbuf; static Process *processtop; static Process *processcur; static u16 processcnt; @@ -72,6 +72,9 @@ Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_siz if (stack_size == 0) { stack_size = 2048; } +#ifdef TARGET_PC + stack_size *= 2; +#endif alloc_size = HuMemMemoryAllocSizeGet(sizeof(Process)) + HuMemMemoryAllocSizeGet(stack_size) + HuMemMemoryAllocSizeGet(extra_size); if (!(heap = HuMemDirectMalloc(HEAP_SYSTEM, alloc_size))) { OSReport("process> malloc error size %d\n", alloc_size); diff --git a/src/game/saveload.c b/src/game/saveload.c index df1e5d6e..4a8f1ea1 100644 --- a/src/game/saveload.c +++ b/src/game/saveload.c @@ -27,13 +27,13 @@ static void SLKillSaveWin(void); extern u8 UnMountCnt; -CARDFileInfo curFileInfo; -SaveBufAll saveBuf; +SHARED_SYM CARDFileInfo curFileInfo; +SHARED_SYM SaveBufAll saveBuf; u64 SLSerialNo; -s32 saveExecF; +SHARED_SYM s32 saveExecF; u8 curBoxNo; -s16 curSlotNo; +SHARED_SYM s16 curSlotNo; #if VERSION_JP static u8 commentTbl[2][32] = { "マリオパーティ4", "??月??日 データ?です。" }; @@ -42,7 +42,7 @@ static u8 sjisNumTbl[20] = "0123456789"; static u8 commentTbl[2][32] = { "Mario Party 4", "File 0 00/00/0000" }; #endif -char *SaveFileNameTbl[] = { "MARIPA4BOX0", "MARIPA4BOX1", "MARIPA4BOX2" }; +SHARED_SYM char *SaveFileNameTbl[] = { "MARIPA4BOX0", "MARIPA4BOX1", "MARIPA4BOX2" }; s32 SaveEnableF = 1; diff --git a/src/game/sprman.c b/src/game/sprman.c index 043abc36..2e0385aa 100644 --- a/src/game/sprman.c +++ b/src/game/sprman.c @@ -215,12 +215,7 @@ AnimData *HuSprAnimRead(void *data) AnimBmpData *bmp; AnimBankData *bank; AnimPatData *pat; -#ifdef TARGET_PC - AnimBmpData *bmp2; - AnimBankData *bank2; - AnimPatData *pat2; -#endif - + #ifdef TARGET_PC AnimData *anim = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimData), MEMORY_DEFAULT_NUM); byteswap_animdata(data, anim); @@ -231,25 +226,28 @@ AnimData *HuSprAnimRead(void *data) anim->useNum++; return anim; } - bank = (AnimBankData *)((uintptr_t)anim->bank+(uintptr_t)data); + bank = (void *)((uintptr_t)anim->bank+(uintptr_t)data); #ifdef TARGET_PC - bank2 = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimBankData), MEMORY_DEFAULT_NUM); - byteswap_animbankdata(bank, bank2); - bank = bank2; + bank = HuMemDirectMallocNum(HEAP_DATA, anim->bankNum * sizeof(AnimBankData), MEMORY_DEFAULT_NUM); + for(i=0; ibankNum; i++) { + byteswap_animbankdata(&((AnimBankData32b*)((uintptr_t)anim->bank+(uintptr_t)data))[i], &bank[i]); + } #endif anim->bank = bank; - pat = (AnimPatData *)((uintptr_t)anim->pat+(uintptr_t)data); + pat = (void *)((uintptr_t)anim->pat+(uintptr_t)data); #ifdef TARGET_PC - pat2 = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimPatData), MEMORY_DEFAULT_NUM); - byteswap_animpatdata(pat, pat2); - pat = pat2; + pat = HuMemDirectMallocNum(HEAP_DATA, anim->patNum * sizeof(AnimPatData), MEMORY_DEFAULT_NUM); + for(i=0; ipatNum; i++) { + byteswap_animpatdata(&((AnimPatData32b*)((uintptr_t)anim->pat+(uintptr_t)data))[i], &pat[i]); + } #endif anim->pat = pat; - bmp = (AnimBmpData *)((uintptr_t)anim->bmp+(uintptr_t)data); + bmp = (void *)((uintptr_t)anim->bmp+(uintptr_t)data); #ifdef TARGET_PC - bmp2 = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimBmpData), MEMORY_DEFAULT_NUM); - byteswap_animbmpdata(bmp, bmp2); - bmp = bmp2; + bmp = HuMemDirectMallocNum(HEAP_DATA, anim->bmpNum * sizeof(AnimBmpData), MEMORY_DEFAULT_NUM); + for(i=0; ibmpNum; i++) { + byteswap_animbmpdata(&((AnimBmpData32b*)((uintptr_t)anim->bmp+(uintptr_t)data))[i], &bmp[i]); + } #endif anim->bmp = bmp; for(i=0; ibankNum; i++, bank++) { @@ -754,7 +752,7 @@ void AnimDebug(AnimData *anim) bank++; } bmp = anim->bmp; - for(i=0; ibmpNum & ANIM_BMP_NUM_MASK; i++) { + for(i = 0; i < anim->bmpNum & ANIM_BMP_NUM_MASK; i++) { OSReport("BMP%d:\n", i); OSReport("\tpixSize %d,palNum %d,size (%d,%d)\n", bmp->pixSize, bmp->palNum, bmp->sizeX, bmp->sizeY); bmp++; diff --git a/src/game/window.c b/src/game/window.c index 8846f8f5..5d5cd0b0 100644 --- a/src/game/window.c +++ b/src/game/window.c @@ -1313,8 +1313,6 @@ void HuWinMesRead(s32 mess_data_no) void HuWinMesSet(s16 window, u32 mess) { -#ifdef __MWERKS__ - // TODO PC WindowData *window_ptr = &winData[window]; window_ptr->stat = 1; @@ -1341,13 +1339,10 @@ void HuWinMesSet(s16 window, u32 mess) window_ptr->mess_time = 0; #endif } -#endif } void HuWinInsertMesSet(s16 window, u32 mess, s16 index) { -#ifdef __MWERKS__ - // TODO PC WindowData *window_ptr = &winData[window]; if (!(mess & 0x80000000)) { @@ -1363,7 +1358,6 @@ void HuWinInsertMesSet(s16 window, u32 mess, s16 index) else { window_ptr->insert_mess[index] = (u8 *)mess; } -#endif } s16 HuWinChoiceGet(s16 window, s16 start_choice) @@ -1668,8 +1662,6 @@ void HuWinMesMaxSizeBetGet(float *size, u32 start, u32 end) static void GetMesMaxSizeSub(u32 mess) { -#ifdef __MWERKS__ - // TODO PC s16 line_h; s16 char_w; s16 line_w; @@ -1773,7 +1765,6 @@ static void GetMesMaxSizeSub(u32 mess) if (winMaxHeight < line_h) { winMaxHeight = line_h; } -#endif } static s32 GetMesMaxSizeSub2(WindowData *window, u8 *mess_data) diff --git a/src/game/wipe.c b/src/game/wipe.c index 919ff550..9ed4ffa3 100644 --- a/src/game/wipe.c +++ b/src/game/wipe.c @@ -111,11 +111,9 @@ void WipeExecAlways(void) void WipeCreate(s16 mode, s16 type, s16 duration) { WipeState *wipe; -#ifdef __MWERKS__ // TODO PC if(_CheckFlag(FLAG_ID_MAKE(1, 11)) && boardTutorialF) { return; } -#endif wipe = &wipeData; if(wipe->stat) { return; diff --git a/src/port/OS.c b/src/port/OS.c index 9d5f61d6..2040968f 100644 --- a/src/port/OS.c +++ b/src/port/OS.c @@ -4,6 +4,7 @@ #include #ifndef _WIN32 +#include #include #include #if __APPLE__ @@ -36,7 +37,7 @@ static u64 GetGCTicks() struct timespec tp; clock_gettime(CLOCK_MONOTONIC, &tp); - return u64((tp.tv_sec * 1000000000ull) + tp.tv_nsec) * GetGCTicksPerSec() / 1000000000ull; + return ((tp.tv_sec * 1000000000ull) + tp.tv_nsec) * OS_CORE_CLOCK / 1000000000ull; #elif _WIN32 LARGE_INTEGER perf; QueryPerformanceCounter(&perf); diff --git a/src/port/ar.c b/src/port/ar.c index b7ae0092..71a1ae93 100644 --- a/src/port/ar.c +++ b/src/port/ar.c @@ -17,8 +17,7 @@ BOOL ARCheckInit() u32 ARGetSize() { - // TODO - return 0x8000; + return sizeof(ARAM); } void ARStartDMA(u32 type, u32 mainmem_addr, u32 aram_addr, u32 length) diff --git a/src/port/arq.c b/src/port/arq.c index 36917a97..c95bfbd1 100644 --- a/src/port/arq.c +++ b/src/port/arq.c @@ -5,7 +5,7 @@ extern u8 ARAM[16 * 1024 * 1024]; void ARQPostRequest(ARQRequest *task, u32 owner, u32 type, u32 priority, - u32 source, u32 dest, u32 length, ARQCallback callback) + uintptr_t source, uintptr_t dest, u32 length, ARQCallback callback) { printf("ARQPostRequest: 0x%X, 0x%X, 0x%X\n", (unsigned int)source, (unsigned int)dest, (unsigned int)length); @@ -13,11 +13,11 @@ void ARQPostRequest(ARQRequest *task, u32 owner, u32 type, u32 priority, { case ARQ_TYPE_MRAM_TO_ARAM: memcpy(ARAM + dest, (void *)source, length); - callback((u32)task); + callback((uintptr_t)task); break; case ARQ_TYPE_ARAM_TO_MRAM: memcpy((void *)dest, ARAM + source, length); - callback((u32)task); + callback((uintptr_t)task); break; } } diff --git a/src/port/audio.c b/src/port/audio.c index 639159b1..4b3e5085 100644 --- a/src/port/audio.c +++ b/src/port/audio.c @@ -226,7 +226,6 @@ void HuAudFXListnerKill(void) { void HuAudFXPauseAll(s32 pause) { // msmSePauseAll(pause, 0x64); - return 12; } s32 HuAudFXStatusGet(int seNo) { @@ -352,7 +351,7 @@ s32 HuAudSStreamStatGet(s32 seNo) { // return msmStreamGetStatus(seNo); } -SNDGRPTBL sndGrpTable[] = { +SHARED_SYM SNDGRPTBL sndGrpTable[] = { { OVL_BOOT, -1, 0, 1, -1, -1 }, { OVL_INST, -1, 0, 1, -1, -1 }, { OVL_M401, 18, 0, 2, 64, 64 }, diff --git a/src/port/byteswap.cpp b/src/port/byteswap.cpp index 1a19aa87..ac844e4b 100644 --- a/src/port/byteswap.cpp +++ b/src/port/byteswap.cpp @@ -1,4 +1,5 @@ #include "game/hsfformat.h" +#include "game/hsfformat.h" #include #include #include @@ -6,45 +7,9 @@ #include #include +extern "C" { extern "C" { #include "port/byteswap.h" - -typedef struct AnimData32b { - s16 bankNum; - s16 patNum; - s16 bmpNum; - s16 useNum; - - u32 bank; - u32 pat; - u32 bmp; -} AnimData32b; - -typedef struct AnimBankData32b { - s16 timeNum; - s16 unk; - u32 frame; -} AnimBankData32b; - -typedef struct AnimPatData32b { - s16 layerNum; - s16 centerX; - s16 centerY; - s16 sizeX; - s16 sizeY; - u32 layer; -} AnimPatData32b; - -typedef struct AnimBmpData32b { - u8 pixSize; - u8 dataFmt; - s16 palNum; - s16 sizeX; - s16 sizeY; - u32 dataSize; - u32 palData; - u32 data; -} AnimBmpData32b; } template [[nodiscard]] constexpr T bswap16(T val) noexcept @@ -54,6 +19,7 @@ template [[nodiscard]] constexpr T bswap16(T val) noexcept u16 u; T t; } v { .t = val }; + } v { .t = val }; #if __GNUC__ v.u = __builtin_bswap16(v.u); #elif _WIN32 @@ -71,12 +37,14 @@ template [[nodiscard]] constexpr T bswap32(T val) noexcept u32 u; T t; } v { .t = val }; + } v { .t = val }; #if __GNUC__ v.u = __builtin_bswap32(v.u); #elif _WIN32 v.u = _byteswap_ulong(v.u); #else v.u = ((v.u & 0x0000FFFF) << 16) | ((v.u & 0xFFFF0000) >> 16) | ((v.u & 0x00FF00FF) << 8) | ((v.u & 0xFF00FF00) >> 8); + v.u = ((v.u & 0x0000FFFF) << 16) | ((v.u & 0xFFFF0000) >> 16) | ((v.u & 0x00FF00FF) << 8) | ((v.u & 0xFF00FF00) >> 8); #endif return v.t; } @@ -103,56 +71,59 @@ static std::unordered_set sVisitedPtrs; template T *offset_ptr(B &base, T *ptr) { return reinterpret_cast(reinterpret_cast(&base) + reinterpret_cast(ptr)); + return reinterpret_cast(reinterpret_cast(&base) + reinterpret_cast(ptr)); } template T *offset_ptr(B &base, T *ptr, void *extra) { return reinterpret_cast(reinterpret_cast(&base) + reinterpret_cast(ptr) + reinterpret_cast(extra)); + return reinterpret_cast(reinterpret_cast(&base) + reinterpret_cast(ptr) + reinterpret_cast(extra)); } -template static inline void bswap(B &base, T &data); -template void bswap(B &base, P *&ptr) -{ - ptr = bswap32(ptr); -} -template void bswap(B &base, T *&ptr, s32 count) -{ - ptr = bswap32(ptr); - if (ptr == nullptr) { - return; - } - T *objBase = offset_ptr(base, ptr); - for (s32 i = 0; i < count; ++i) { - if (sVisitedPtrs.contains(objBase)) { - continue; - } - sVisitedPtrs.insert(objBase); - bswap(base, *objBase); - ++objBase; - } -} -template void bswap_list(B &base, T **&ptr) -{ - ptr = bswap32(ptr); - if (ptr == nullptr) { - return; - } - T **objBase = offset_ptr(base, ptr); - while (*objBase != nullptr) { - bswap(base, *objBase, 1); - ++objBase; - } -} -template void bswap_list(B &base, T *(&ptr)[]) -{ - T **objBase = ptr; - while (*objBase != nullptr) { - bswap(base, *objBase, 1); - ++objBase; - } -} +// template static inline void bswap(B &base, T &data); +// template void bswap(B &base, P *&ptr) +// { +// ptr = bswap32(ptr); +// } +// template void bswap(B &base, T *&ptr, s32 count) +// { +// ptr = bswap32(ptr); +// if (ptr == nullptr) { +// return; +// } +// T *objBase = offset_ptr(base, ptr); +// for (s32 i = 0; i < count; ++i) { +// if (sVisitedPtrs.contains(objBase)) { +// continue; +// } +// sVisitedPtrs.insert(objBase); +// bswap(base, *objBase); +// ++objBase; +// } +// } +// template void bswap_list(B &base, T **&ptr) +// { +// ptr = bswap32(ptr); +// if (ptr == nullptr) { +// return; +// } +// T **objBase = offset_ptr(base, ptr); +// while (*objBase != nullptr) { +// bswap(base, *objBase, 1); +// ++objBase; +// } +// } +// template void bswap_list(B &base, T *(&ptr)[]) +// { +// T **objBase = ptr; +// while (*objBase != nullptr) { +// bswap(base, *objBase, 1); +// ++objBase; +// } +// } template void bswap_flat(B &base, T *start, s32 count) { T *objBase = start; + for (s32 i = 0; i < count; ++i) { for (s32 i = 0; i < count; ++i) { bswap(base, objBase[i]); } @@ -214,6 +185,13 @@ template void bswap(B &base, HsfVector3f &vec) bswap(base, vec.z); } +template void bswap(B &base, HsfVector3f &vec) +{ + bswap(base, vec.x); + bswap(base, vec.y); + bswap(base, vec.z); +} + template void bswap(B &base, AnimData32b &obj, AnimData &dest) { bswap(base, obj.bankNum); @@ -228,9 +206,9 @@ template void bswap(B &base, AnimData32b &obj, AnimData &dest) dest.patNum = obj.patNum; dest.bmpNum = obj.bmpNum; dest.useNum = obj.useNum; - dest.bank = reinterpret_cast(obj.bank); - dest.pat = reinterpret_cast(obj.pat); - dest.bmp = reinterpret_cast(obj.bmp); + dest.bank = reinterpret_cast(static_cast(obj.bank)); + dest.pat = reinterpret_cast(static_cast(obj.pat)); + dest.bmp = reinterpret_cast(static_cast(obj.bmp)); } template void bswap(B &base, AnimBankData32b &obj, AnimBankData &dest) @@ -241,7 +219,7 @@ template void bswap(B &base, AnimBankData32b &obj, AnimBankData &de dest.timeNum = obj.timeNum; dest.unk = obj.unk; - dest.frame = reinterpret_cast(obj.frame); + dest.frame = reinterpret_cast(static_cast(obj.frame)); } template void bswap(B &base, AnimPatData32b &obj, AnimPatData &dest) @@ -258,7 +236,7 @@ template void bswap(B &base, AnimPatData32b &obj, AnimPatData &dest dest.centerY = obj.centerY; dest.sizeX = obj.sizeX; dest.sizeY = obj.sizeY; - dest.layer = reinterpret_cast(obj.layer); + dest.layer = reinterpret_cast(static_cast(obj.layer)); } template void bswap(B &base, AnimBmpData32b &obj, AnimBmpData &dest) @@ -278,8 +256,8 @@ template void bswap(B &base, AnimBmpData32b &obj, AnimBmpData &dest dest.sizeX = obj.sizeX; dest.sizeY = obj.sizeY; dest.dataSize = obj.dataSize; - dest.palData = reinterpret_cast(obj.palData); - dest.data = reinterpret_cast(obj.data); + dest.palData = reinterpret_cast(static_cast(obj.palData)); + dest.data = reinterpret_cast(static_cast(obj.data)); } template void bswap(B &base, AnimFrameData &obj) @@ -349,10 +327,10 @@ template void bswap(B &base, HsfCluster32b &obj, HsfCluster &dest) bswap(base, obj.vertexCnt); bswap(base, obj.vertex); - dest.name[0] = reinterpret_cast(obj.name[0]); - dest.name[1] = reinterpret_cast(obj.name[1]); + dest.name[0] = reinterpret_cast(static_cast(obj.name[0])); + dest.name[1] = reinterpret_cast(static_cast(obj.name[1])); - dest.targetName = reinterpret_cast(obj.targetName); + dest.targetName = reinterpret_cast(static_cast(obj.targetName)); dest.index = obj.index; std::copy(std::begin(obj.weight), std::end(obj.weight), dest.weight); @@ -360,7 +338,7 @@ template void bswap(B &base, HsfCluster32b &obj, HsfCluster &dest) dest.unk95 = obj.unk95; dest.type = obj.type; dest.vertexCnt = obj.vertexCnt; - dest.vertex = reinterpret_cast(obj.vertex); + dest.vertex = reinterpret_cast(static_cast(obj.vertex)); } template void bswap(B &base, HsfAttribute32b &obj, HsfAttribute &dest) @@ -380,8 +358,8 @@ template void bswap(B &base, HsfAttribute32b &obj, HsfAttribute &de bswap(base, obj.flag); bswap(base, obj.bitmap); - dest.name = reinterpret_cast(obj.name); - dest.unk04 = reinterpret_cast(obj.unk04); + dest.name = reinterpret_cast(static_cast(obj.name)); + dest.unk04 = reinterpret_cast(static_cast(obj.unk04)); std::copy(std::begin(obj.unk8), std::end(obj.unk8), dest.unk8); dest.unk0C = obj.unk0C; std::copy(std::begin(obj.unk10), std::end(obj.unk10), dest.unk10); @@ -399,7 +377,7 @@ template void bswap(B &base, HsfAttribute32b &obj, HsfAttribute &de std::copy(std::begin(obj.unk6C), std::end(obj.unk6C), dest.unk6C); dest.unk78 = obj.unk78; dest.flag = obj.flag; - dest.bitmap = reinterpret_cast(obj.bitmap); + dest.bitmap = reinterpret_cast(static_cast(obj.bitmap)); } template void bswap(B &base, HsfMaterial32b &obj, HsfMaterial &dest) @@ -416,7 +394,7 @@ template void bswap(B &base, HsfMaterial32b &obj, HsfMaterial &dest bswap(base, obj.numAttrs); bswap(base, obj.attrs); - dest.name = reinterpret_cast(obj.name); + dest.name = reinterpret_cast(static_cast(obj.name)); std::copy(std::begin(obj.unk4), std::end(obj.unk4), dest.unk4); dest.pass = obj.pass; dest.vtxMode = obj.vtxMode; @@ -431,7 +409,7 @@ template void bswap(B &base, HsfMaterial32b &obj, HsfMaterial &dest dest.unk2C = obj.unk2C; dest.flags = obj.flags; dest.numAttrs = obj.numAttrs; - dest.attrs = reinterpret_cast(obj.attrs); + dest.attrs = reinterpret_cast(static_cast(obj.attrs)); } template void bswap(B &base, HsfScene &obj) @@ -449,9 +427,9 @@ template void bswap(B &base, HsfBuffer32b &obj, HsfBuffer &dest) bswap(base, obj.count); bswap(base, obj.data); - dest.name = reinterpret_cast(obj.name); + dest.name = reinterpret_cast(static_cast(obj.name)); dest.count = obj.count; - dest.data = reinterpret_cast(obj.data); + dest.data = reinterpret_cast(static_cast(obj.data)); } template void bswap(B &base, HsfMatrix &obj) @@ -459,7 +437,7 @@ template void bswap(B &base, HsfMatrix &obj) bswap(base, obj.base_idx); bswap(base, obj.count); - obj.data = (Mtx *)((uintptr_t)&obj + sizeof(0xC)); // hardcoded for 64 bit support + obj.data = reinterpret_cast(reinterpret_cast(&obj) + 0xC); // hardcoded for 64 bit support for (s32 i = 0; i < obj.count; i++) { for (s32 j = 0; j < 3; j++) { bswap_flat(base, obj.data[i][j], 4); @@ -474,10 +452,10 @@ template void bswap(B &base, HsfPalette32b &obj, HsfPalette &dest) bswap(base, obj.palSize); bswap(base, obj.data); - dest.name = reinterpret_cast(obj.name); + dest.name = reinterpret_cast(static_cast(obj.name)); dest.unk = obj.unk; dest.palSize = obj.palSize; - dest.data = reinterpret_cast(obj.data); + dest.data = reinterpret_cast(static_cast(obj.data)); } template void bswap(B &base, HsfPart32b &obj, HsfPart &dest) @@ -486,9 +464,9 @@ template void bswap(B &base, HsfPart32b &obj, HsfPart &dest) bswap(base, obj.count); bswap(base, obj.vertex); - dest.name = reinterpret_cast(obj.name); + dest.name = reinterpret_cast(static_cast(obj.name)); dest.count = obj.count; - dest.vertex = reinterpret_cast(obj.vertex); + dest.vertex = reinterpret_cast(static_cast(obj.vertex)); } template void bswap(B &base, HsfBitmap32b &obj, HsfBitmap &dest) @@ -502,7 +480,7 @@ template void bswap(B &base, HsfBitmap32b &obj, HsfBitmap &dest) bswap(base, obj.unk); bswap(base, obj.data); - dest.name = reinterpret_cast(obj.name); + dest.name = reinterpret_cast(static_cast(obj.name)); dest.maxLod = obj.maxLod; dest.dataFmt = obj.dataFmt; dest.pixSize = obj.pixSize; @@ -510,9 +488,9 @@ template void bswap(B &base, HsfBitmap32b &obj, HsfBitmap &dest) dest.sizeY = obj.sizeY; dest.palSize = obj.palSize; dest.tint = obj.tint; - dest.palData = reinterpret_cast(obj.palData); + dest.palData = reinterpret_cast(static_cast(obj.palData)); dest.unk = obj.unk; - dest.data = reinterpret_cast(obj.data); + dest.data = reinterpret_cast(static_cast(obj.data)); } template void bswap(B &base, HsfMapAttr32b &obj, HsfMapAttr &dest) @@ -527,7 +505,7 @@ template void bswap(B &base, HsfMapAttr32b &obj, HsfMapAttr &dest) dest.minX = obj.minX; dest.minZ = obj.minZ; dest.maxX = obj.maxZ; - dest.data = reinterpret_cast(obj.data); + dest.data = reinterpret_cast(static_cast(obj.data)); dest.dataLen = obj.dataLen; } @@ -543,7 +521,7 @@ template void bswap(B &base, HsfSkeleton32b &obj, HsfSkeleton &dest bswap(base, obj.name); bswap(base, obj.transform); - dest.name = reinterpret_cast(obj.name); + dest.name = reinterpret_cast(static_cast(obj.name)); dest.transform = obj.transform; } @@ -552,8 +530,8 @@ template void bswap(B &base, HsfShape32b &obj, HsfShape &dest) bswap(base, obj.name); bswap(base, obj.vertex); - dest.name = reinterpret_cast(obj.name); - dest.vertex = reinterpret_cast(obj.vertex); + dest.name = reinterpret_cast(static_cast(obj.name)); + dest.vertex = reinterpret_cast(static_cast(obj.vertex)); } template void bswap(B &base, HsfCenvSingle &obj) @@ -577,10 +555,10 @@ template void bswap(B &base, HsfCenv32b &obj, HsfCenv &dest) bswap(base, obj.vtxCount); bswap(base, obj.copyCount); - dest.name = reinterpret_cast(obj.name); - dest.singleData = reinterpret_cast(obj.singleData); - dest.dualData = reinterpret_cast(obj.dualData); - dest.multiData = reinterpret_cast(obj.multiData); + dest.name = reinterpret_cast(static_cast(obj.name)); + dest.singleData = reinterpret_cast(static_cast(obj.singleData)); + dest.dualData = reinterpret_cast(static_cast(obj.dualData)); + dest.multiData = reinterpret_cast(static_cast(obj.multiData)); dest.singleCount = obj.singleCount; dest.dualCount = obj.dualCount; dest.multiCount = obj.multiCount; @@ -610,29 +588,29 @@ template void bswap(B &base, HsfObjectData32b &obj, HsfObjectData & bswap(base, obj.cenv); bswap_flat(base, obj.file, sizeof(obj.file) / sizeof(u32)); - dest.parent = reinterpret_cast(obj.parent); + dest.parent = reinterpret_cast(static_cast(obj.parent)); dest.childrenCount = obj.childrenCount; - dest.children = reinterpret_cast(obj.children); + dest.children = reinterpret_cast(static_cast(obj.children)); dest.base = obj.base; dest.curr = obj.curr; - dest.face = reinterpret_cast(obj.face); - dest.vertex = reinterpret_cast(obj.vertex); - dest.normal = reinterpret_cast(obj.normal); - dest.color = reinterpret_cast(obj.color); - dest.st = reinterpret_cast(obj.st); - dest.material = reinterpret_cast(obj.material); - dest.attribute = reinterpret_cast(obj.attribute); + dest.face = reinterpret_cast(static_cast(obj.face)); + dest.vertex = reinterpret_cast(static_cast(obj.vertex)); + dest.normal = reinterpret_cast(static_cast(obj.normal)); + dest.color = reinterpret_cast(static_cast(obj.color)); + dest.st = reinterpret_cast(static_cast(obj.st)); + dest.material = reinterpret_cast(static_cast(obj.material)); + dest.attribute = reinterpret_cast(static_cast(obj.attribute)); std::copy(std::begin(obj.unk120), std::end(obj.unk120), dest.unk120); dest.shapeType = obj.shapeType; dest.unk123 = obj.unk123; dest.vertexShapeCnt = obj.vertexShapeCnt; - dest.vertexShape = reinterpret_cast(obj.vertexShape); + dest.vertexShape = reinterpret_cast(static_cast(obj.vertexShape)); dest.clusterCnt = obj.clusterCnt; - dest.cluster = reinterpret_cast(obj.cluster); + dest.cluster = reinterpret_cast(static_cast(obj.cluster)); dest.cenvCnt = obj.cenvCnt; - dest.cenv = reinterpret_cast(obj.cenv); - dest.file[0] = reinterpret_cast(obj.file[0]); - dest.file[1] = reinterpret_cast(obj.file[1]); + dest.cenv = reinterpret_cast(static_cast(obj.cenv)); + dest.file[0] = reinterpret_cast(static_cast(obj.file[0])); + dest.file[1] = reinterpret_cast(static_cast(obj.file[1])); switch (type) { case HSF_OBJ_MESH: @@ -649,7 +627,7 @@ template void bswap(B &base, HsfObjectData32b &obj, HsfObjectData & case HSF_OBJ_REPLICA: bswap(base, obj.replica); - dest.replica = obj.replica; + dest.replica = reinterpret_cast(static_cast(obj.replica)); break; default: break; @@ -663,9 +641,9 @@ template void bswap(B &base, HsfObject32b &obj, HsfObject &dest) bswap(base, obj.constData); bswap(base, obj.flags); - dest.name = reinterpret_cast(obj.name); + dest.name = reinterpret_cast(static_cast(obj.name)); dest.type = obj.type; - dest.constData = reinterpret_cast(obj.constData); + dest.constData = reinterpret_cast(static_cast(obj.constData)); dest.flags = obj.flags; bswap(base, obj.data, dest.data, obj.type); @@ -677,7 +655,7 @@ template void bswap(B &base, HsfBitmapKey32b &obj, HsfBitmapKey &de bswap(base, obj.data); dest.time = obj.time; - dest.data = reinterpret_cast(obj.data); + dest.data = reinterpret_cast(static_cast(obj.data)); } template void bswap(B &base, HsfTrack32b &obj, HsfTrack &dest) @@ -686,17 +664,23 @@ template void bswap(B &base, HsfTrack32b &obj, HsfTrack &dest) bswap(base, obj.start); bswap(base, obj.curveType); bswap(base, obj.numKeyframes); - bswap(base, obj.data); // this byteswaps "value" too dest.type = obj.type; dest.start = obj.start; dest.curveType = obj.curveType; dest.numKeyframes = obj.numKeyframes; - dest.data = reinterpret_cast(obj.data); // this correctly sets "value" too - if (obj.type = HSF_TRACK_CLUSTER_WEIGHT) { + if (obj.curveType == HSF_CURVE_CONST) { + bswap(base, obj.value); + dest.value = obj.value; + } + else { + bswap(base, obj.data); + dest.data = reinterpret_cast(static_cast(obj.data)); + } + + if (obj.type == HSF_TRACK_CLUSTER_WEIGHT) { bswap(base, obj.unk04); - dest.unk04 = obj.unk04; } else { @@ -715,9 +699,9 @@ template void bswap(B &base, HsfMotion32b &obj, HsfMotion &dest) bswap(base, obj.track); bswap(base, obj.len); - dest.name = reinterpret_cast(obj.name); + dest.name = reinterpret_cast(static_cast(obj.name)); dest.numTracks = obj.numTracks; - dest.track = reinterpret_cast(obj.track); + dest.track = reinterpret_cast(static_cast(obj.track)); dest.len = obj.len; } @@ -737,7 +721,7 @@ template void bswap(B &base, HsfFace32b &obj, HsfFace &dest) bswap_flat(base, obj.strip.indices[0], 3 * 4); dest.strip.count = obj.strip.count; - dest.strip.data = reinterpret_cast(obj.strip.data); + dest.strip.data = reinterpret_cast(static_cast(obj.strip.data)); std::copy(&obj.strip.indices[0][0], &obj.strip.indices[0][0] + 3 * 4, &dest.strip.indices[0][0]); } else { @@ -783,6 +767,19 @@ void byteswap_hsfvec2f(HsfVector2f *src) sVisitedPtrs.clear(); } +void byteswap_hsfvec3f(HsfVector3f *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} + +void byteswap_hsfvec2f(HsfVector2f *src) +{ + auto *vec = reinterpret_cast(src); + bswap(*vec, *vec); + sVisitedPtrs.clear(); +} + void byteswap_animdata(void *src, AnimData *dest) { auto *anim = reinterpret_cast(src); @@ -790,24 +787,21 @@ void byteswap_animdata(void *src, AnimData *dest) sVisitedPtrs.clear(); } -void byteswap_animbankdata(void *src, AnimBankData *dest) +void byteswap_animbankdata(AnimBankData32b *src, AnimBankData *dest) { - auto *bank = reinterpret_cast(src); - bswap(*bank, *bank, *dest); + bswap(*src, *src, *dest); sVisitedPtrs.clear(); } -void byteswap_animpatdata(void *src, AnimPatData *dest) +void byteswap_animpatdata(AnimPatData32b *src, AnimPatData *dest) { - auto *pat = reinterpret_cast(src); - bswap(*pat, *pat, *dest); + bswap(*src, *src, *dest); sVisitedPtrs.clear(); } -void byteswap_animbmpdata(void *src, AnimBmpData *dest) +void byteswap_animbmpdata(AnimBmpData32b *src, AnimBmpData *dest) { - auto *bmp = reinterpret_cast(src); - bswap(*bmp, *bmp, *dest); + bswap(*src, *src, *dest); sVisitedPtrs.clear(); } @@ -943,4 +937,120 @@ void byteswap_hsfface(HsfFace32b *src, HsfFace *dest) { bswap(*src, *src, *dest); sVisitedPtrs.clear(); -} \ No newline at end of file +} + +void byteswap_hsfcluster(HsfCluster32b *src, HsfCluster *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_hsfattribute(HsfAttribute32b *src, HsfAttribute *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_hsfmaterial(HsfMaterial32b *src, HsfMaterial *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_hsfscene(HsfScene *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} + +void byteswap_hsfbuffer(HsfBuffer32b *src, HsfBuffer *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_hsfmatrix(HsfMatrix *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} + +void byteswap_hsfpalette(HsfPalette32b *src, HsfPalette *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_hsfpart(HsfPart32b *src, HsfPart *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_hsfbitmap(HsfBitmap32b *src, HsfBitmap *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_hsfmapattr(HsfMapAttr32b *src, HsfMapAttr *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_hsfskeleton(HsfSkeleton32b *src, HsfSkeleton *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_hsfshape(HsfShape32b *src, HsfShape *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_hsfcenv_single(HsfCenvSingle *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} + +void byteswap_hsfcenv(HsfCenv32b *src, HsfCenv *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_hsfobject(HsfObject32b *src, HsfObject *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + + +void byteswap_hsfbitmapkey(HsfBitmapKey32b *src, HsfBitmapKey *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + + +void byteswap_hsftrack(HsfTrack32b *src, HsfTrack *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_hsfmotion(HsfMotion32b *src, HsfMotion *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_hsfface(HsfFace32b *src, HsfFace *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} diff --git a/src/port/stubs.c b/src/port/stubs.c index 1fe4509f..75c5ca5e 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -5,6 +5,7 @@ #include #include +#include #include // Credits: Super Monkey Ball @@ -196,6 +197,16 @@ s32 CARDWriteAsync(CARDFileInfo *fileInfo, const void *addr, s32 length, s32 off return 0; } +s32 CARDGetSerialNo(s32 chan, u64* serialNo) +{ + return 0; +} + +s32 CARDSetStatus(s32 chan, s32 fileNo, CARDStat* stat) +{ + return 0; +} + void DCFlushRange(void *addr, u32 nBytes) { //puts("DCFlushRange is a stub"); @@ -629,13 +640,51 @@ void GXSetTexCoordScaleManually(GXTexCoordID coord, u8 enable, u16 ss, u16 ts) void GXResetWriteGatherPipe(void) { - puts("GXResetWriteGatherPipe is a stub"); + // puts("GXResetWriteGatherPipe is a stub"); } void ARQInit(void) { puts("ARQInit is a stub"); } +void GXProject(f32 x, f32 y, f32 z, const f32 mtx[3][4], const f32 *pm, const f32 *vp, f32 *sx, f32 *sy, f32 *sz) +{ + Vec peye; + f32 xc; + f32 yc; + f32 zc; + f32 wc; + + peye.x = mtx[0][3] + ((mtx[0][2] * z) + ((mtx[0][0] * x) + (mtx[0][1] * y))); + peye.y = mtx[1][3] + ((mtx[1][2] * z) + ((mtx[1][0] * x) + (mtx[1][1] * y))); + peye.z = mtx[2][3] + ((mtx[2][2] * z) + ((mtx[2][0] * x) + (mtx[2][1] * y))); + if (pm[0] == 0.0f) { + xc = (peye.x * pm[1]) + (peye.z * pm[2]); + yc = (peye.y * pm[3]) + (peye.z * pm[4]); + zc = pm[6] + (peye.z * pm[5]); + wc = 1.0f / -peye.z; + } + else { + xc = pm[2] + (peye.x * pm[1]); + yc = pm[4] + (peye.y * pm[3]); + zc = pm[6] + (peye.z * pm[5]); + wc = 1.0f; + } + *sx = (vp[2] / 2.0f) + (vp[0] + (wc * (xc * vp[2] / 2.0f))); + *sy = (vp[3] / 2.0f) + (vp[1] + (wc * (-yc * vp[3] / 2.0f))); + *sz = vp[5] + (wc * (zc * (vp[5] - vp[4]))); +} + +void GXGetViewportv(f32 *vp) +{ + // TODO +} + +void GXSetZTexture(GXZTexOp op, GXTexFmt fmt, u32 bias) +{ + // TODO +} + // Hudson void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { } @@ -647,16 +696,114 @@ void msmMusFdoutEnd(void) { } +int msmMusPlay(int musId, MSM_MUSPARAM *musParam) +{ + // TODO + return 0; +} + +s32 msmMusGetStatus(int musNo) +{ + // TODO + return 0; +} + +s32 msmStreamGetStatus(int streamNo) +{ + // TODO + return 0; +} + +s32 msmSeSetParam(int seNo, MSM_SEPARAM* param) +{ + return 0; +} + +s32 msmMusSetParam(s32 arg0, MSM_MUSPARAM* arg1) +{ + return 0; +} + +void msmMusSetMasterVolume(s32 vol) +{ +} + +s32 msmSysGetOutputMode(void) +{ + return 0; +} + +s32 msmSeSetListener(Vec* pos, Vec* heading, float sndDist, float sndSpeed, MSM_SELISTENER* listener) +{ + return 0; +} + +void msmSeStopAll(BOOL checkGrp, s32 speed) +{ +} + +BOOL msmSysSetOutputMode(SND_OUTPUTMODE mode) +{ + return TRUE; +} + +void OSSetSoundMode(u32 mode) +{ +} + s32 HuSoftResetButtonCheck(void) { //puts("HuSoftResetButtonCheck is a stub"); return 0; } -void MGSeqMain(void) +s16 HuTHPSprCreateVol(char *path, s16 loop, s16 prio, float volume) { - // puts("MGSeqMain is a stub"); + return 0; } -// TODO remove -u8 fadeStat = 0; +s16 HuTHPSprCreate(char *path, s16 loop, s16 prio) +{ + return 0; +} + +s16 HuTHP3DCreateVol(char *path, s16 loop, float volume) +{ + return 0; +} + +s16 HuTHP3DCreate(char *path, s16 loop) +{ + return 0; +} + +void HuTHPStop(void) +{ +} + +void HuTHPClose(void) +{ +} + +void HuTHPRestart(void) +{ +} + +BOOL HuTHPEndCheck(void) +{ + return TRUE; +} + +s32 HuTHPFrameGet(void) +{ + return 0; +} + +s32 HuTHPTotalFrameGet(void) +{ + return 0; +} + +void HuTHPSetVolume(s32 left, s32 right) +{ +}