diff --git a/.gitmodules b/.gitmodules index 5bdca45d..7e284f7b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,9 @@ [submodule "extern/musyx"] path = extern/musyx url = https://github.com/AxioDL/musyx +[submodule "extern/aurora"] + path = extern/aurora + url = https://github.com/dbalatoni13/aurora.git +[submodule "extern/libco"] + path = extern/libco + url = https://github.com/higan-emu/libco.git diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..691fa122 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,203 @@ +cmake_minimum_required(VERSION 3.13) +if (APPLE) + project(marioparty4 LANGUAGES C CXX OBJC) +else () + project(marioparty4 LANGUAGES C CXX) +endif () + +set(CMAKE_C_STANDARD 11) +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} -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) + +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/mtx/quat.c + src/dolphin/os/OSAlloc.c + src/dolphin/os/OSArena.c + src/dolphin/os/OSStopwatch.c +) + +set(GAME_FILES + 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 +) + +source_group("Dolphin" FILES ${DOLPHIN_FILES}) +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 "-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} extern/libco/libco.c) +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 extern/libco) +target_link_libraries(dol PRIVATE aurora::core aurora::gx aurora::si aurora::vi aurora::pad musyx) +set_source_files_properties(${DOLPHIN_FILES} ${GAME_FILES} PROPERTIES COMPILE_OPTIONS "-fsanitize=address") +if (MSVC) + target_link_options(dol PRIVATE "/DEF:${CMAKE_SOURCE_DIR}/dol.def") + target_compile_options(dol PRIVATE "/Zi") + target_compile_options(dol PRIVATE "/Ob0") + target_compile_options(dol PRIVATE "/Od") + target_compile_options(dol PRIVATE "/RTC1") +else () + # 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 NON_MATCHING VERSION=${VERSION}) +target_include_directories(marioparty4 PRIVATE include) +target_link_libraries(marioparty4 PRIVATE dol aurora::main) + +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}) + set_source_files_properties(${REL_FILES} PROPERTIES COMPILE_OPTIONS "-fsanitize=address") + 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 extern/libco) + if (MSVC) + set_target_properties(${dir} PROPERTIES LINK_FLAGS "/EXPORT:ObjectSetup") + target_compile_options(${dir} PRIVATE "/Zi") + target_compile_options(${dir} PRIVATE "/Ob0") + target_compile_options(${dir} PRIVATE "/Od") + target_compile_options(${dir} PRIVATE "/RTC1") + 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 f1594c57..06a57925 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Linux - For non-x86(_64) platforms: Install wine from your package manager. - For x86(_64), [wibo](https://github.com/decompals/wibo), a minimal 32-bit Windows binary wrapper, will be automatically downloaded and used. -Building +Building the game for the GameCube ======== - Clone the repository: @@ -89,11 +89,13 @@ Building ninja ``` -Diffing -======= +Building the game for PC +===== +After you got the GameCube build up and running for `GMPE01_00`: +- Generate project files using CMake: + ``` + cmake -B build/port -G "Visual Studio 17 2022" -A Win32 + ``` +Linux and MacOS, and x64 support is coming later. -Once the initial build succeeds, an `objdiff.json` should exist in the project root. - -Download the latest release from [encounter/objdiff](https://github.com/encounter/objdiff). Under project settings, set `Project directory`. The configuration should be loaded automatically. - -Select an object from the left sidebar to begin diffing. Changes to the project will rebuild automatically: changes to source files, headers, `configure.py`, `splits.txt` or `symbols.txt`. +- 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/GMPE01_00/rels/resultDll/symbols.txt b/config/GMPE01_00/rels/resultDll/symbols.txt index db16ef1b..621d5373 100644 --- a/config/GMPE01_00/rels/resultDll/symbols.txt +++ b/config/GMPE01_00/rels/resultDll/symbols.txt @@ -207,4 +207,4 @@ lbl_1_bss_19F8 = .bss:0x000019F8; // type:object size:0x20 lbl_1_bss_1A18 = .bss:0x00001A18; // type:object size:0x2 stageSprId = .bss:0x00001A1A; // type:object size:0x42 data:2byte stageMotId = .bss:0x00001A5C; // type:object size:0x40 data:2byte -stageSprId = .bss:0x00001A9C; // type:object size:0x40 data:2byte +stageMdlId = .bss:0x00001A9C; // type:object size:0x40 data:2byte diff --git a/config/GMPE01_00/symbols.txt b/config/GMPE01_00/symbols.txt index 17ef4f4f..6f350097 100644 --- a/config/GMPE01_00/symbols.txt +++ b/config/GMPE01_00/symbols.txt @@ -4620,7 +4620,7 @@ lbl_80192160 = .bss:0x80192160; // type:object size:0x100 lbl_80192260 = .bss:0x80192260; // type:object size:0x100 wipeData = .bss:0x80192360; // type:object size:0x4C data:4byte winData = .bss:0x801923C0; // type:object size:0x3000 align:32 data:byte -winKey = .bss:0x801953C0; // type:object size:0x10 +winKey = .bss:0x801953C0; // type:object size:0x10 scope:local winComKeyBuf = .bss:0x801953D0; // type:object size:0x1400 ARInfo = .bss:0x801967E0; // type:object size:0x400 scope:local data:byte arqReq = .bss:0x80196BE0; // type:object size:0x20 scope:local diff --git a/config/GMPE01_01/symbols.txt b/config/GMPE01_01/symbols.txt index 5bed188a..21137761 100644 --- a/config/GMPE01_01/symbols.txt +++ b/config/GMPE01_01/symbols.txt @@ -4619,7 +4619,7 @@ lbl_80192160 = .bss:0x80192160; // type:object size:0x100 lbl_80192260 = .bss:0x80192260; // type:object size:0x100 wipeData = .bss:0x80192360; // type:object size:0x4C data:4byte winData = .bss:0x801923C0; // type:object size:0x3000 align:32 data:byte -winKey = .bss:0x801953C0; // type:object size:0x10 +winKey = .bss:0x801953C0; // type:object size:0x10 scope:local winComKeyBuf = .bss:0x801953D0; // type:object size:0x1400 ARInfo = .bss:0x801967E0; // type:object size:0x400 data:byte arqReq = .bss:0x80196BE0; // type:object size:0x20 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/GMPJ01_00/symbols.txt b/config/GMPJ01_00/symbols.txt index ca5a261c..b4a34dc7 100644 --- a/config/GMPJ01_00/symbols.txt +++ b/config/GMPJ01_00/symbols.txt @@ -4452,7 +4452,7 @@ lbl_80192160 = .bss:0x80191E00; // type:object size:0x100 lbl_80192260 = .bss:0x80191F00; // type:object size:0x100 wipeData = .bss:0x80192000; // type:object size:0x4C data:4byte winData = .bss:0x80192060; // type:object size:0x3000 data:byte -winKey = .bss:0x80195060; // type:object size:0x10 +winKey = .bss:0x80195060; // type:object size:0x10 scope:local winComKeyBuf = .bss:0x80195070; // type:object size:0x1400 ARInfo = .bss:0x80196480; // type:object size:0x400 scope:local data:byte arqReq = .bss:0x80196880; // type:object size:0x20 scope:local 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/config/GMPP01_00/symbols.txt b/config/GMPP01_00/symbols.txt index acf35410..70a581ce 100644 --- a/config/GMPP01_00/symbols.txt +++ b/config/GMPP01_00/symbols.txt @@ -5547,7 +5547,7 @@ lbl_80192160 = .bss:0x801AF500; // type:object size:0x100 lbl_80192260 = .bss:0x801AF600; // type:object size:0x100 wipeData = .bss:0x801AF700; // type:object size:0x4C data:4byte winData = .bss:0x801AF760; // type:object size:0x3000 align:32 data:byte -winKey = .bss:0x801B2760; // type:object size:0x10 +winKey = .bss:0x801B2760; // type:object size:0x10 scope:local winComKeyBuf = .bss:0x801B2770; // type:object size:0x1400 mesWInsert = .bss:0x801B3B70; // type:object size:0x10 scope:local ARInfo = .bss:0x801B3B80; // type:object size:0x400 data:byte diff --git a/configure.py b/configure.py index 3721f4c9..bc3a4268 100644 --- a/configure.py +++ b/configure.py @@ -160,6 +160,7 @@ config.asflags = [ "-mgekko", "--strip-local-absolute", "-I include", + "-I libc", f"-I build/{config.version}/include", f"--defsym version={version_num}", ] @@ -192,6 +193,7 @@ cflags_base = [ "-fp_contract on", "-str reuse", "-i include", + "-i libc", "-i extern/musyx/include", f"-i build/{config.version}/include", "-multibyte", @@ -270,6 +272,7 @@ cflags_musyx = [ "-nodefaults", "-nosyspath", "-i include", + "-i libc", "-i extern/musyx/include", "-inline auto", "-O4,p", diff --git a/dol.def b/dol.def new file mode 100644 index 00000000..19dcc9a8 --- /dev/null +++ b/dol.def @@ -0,0 +1,1089 @@ +EXPORTS + 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 new file mode 160000 index 00000000..23522538 --- /dev/null +++ b/extern/aurora @@ -0,0 +1 @@ +Subproject commit 23522538e13f67957d62a7119bc617700fa0c6ab diff --git a/extern/libco b/extern/libco new file mode 160000 index 00000000..e18e09d6 --- /dev/null +++ b/extern/libco @@ -0,0 +1 @@ +Subproject commit e18e09d634d612a01781168ad4d76be10a7e3bad diff --git a/extern/musyx b/extern/musyx index a170f2ef..37e8ecd4 160000 --- a/extern/musyx +++ b/extern/musyx @@ -1 +1 @@ -Subproject commit a170f2ef4a3f51edb89bc792dff79d55b2c42a89 +Subproject commit 37e8ecd4e6503e90b97ea81cd7d669357861d501 diff --git a/include/REL/m407dll.h b/include/REL/m407dll.h index e007469c..9c05763a 100644 --- a/include/REL/m407dll.h +++ b/include/REL/m407dll.h @@ -3,6 +3,8 @@ #include "game/object.h" +#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) + typedef void (*VoidFuncs)(void); typedef void (*ObjFuncs)(omObjData *); @@ -16,6 +18,9 @@ void fn_1_334(void); void fn_1_388(u8, s32); void fn_1_3C4(u8); void fn_1_404(void); +#ifndef __MWERKS__ +s32 fn_1_4C0(u8 arg0); +#endif s32 fn_1_508(u8); s32 fn_1_53C(u8); void fn_1_568(s16, s16, s16); @@ -35,6 +40,7 @@ void fn_1_2564(void); void fn_1_25C0(void); s32 fn_1_2880(void); #ifndef __MWERKS__ +void fn_1_2770(u8 arg0); s16 fn_1_28B8(u8 arg0); s16 fn_1_28D4(void); #endif diff --git a/include/REL/m410Dll.h b/include/REL/m410Dll.h index ff6a02e1..1a5672b9 100644 --- a/include/REL/m410Dll.h +++ b/include/REL/m410Dll.h @@ -205,6 +205,10 @@ void fn_1_28AC(s32 arg0); s32 fn_1_28DC(void); float fn_1_2FD4(float arg8, float arg9, float argA); float fn_1_30F0(float arg8, float arg9); +void fn_1_31A4(Process *process); +void fn_1_31F8(void); +void fn_1_33A8(Process *objman); +void fn_1_3484(void); s32 fn_1_76B8(Vec arg0, Vec arg1, u16 arg2); void fn_1_77E8(void *arg0); void fn_1_77F8(u16 arg0, Vec *arg1); @@ -213,5 +217,6 @@ void fn_1_7888(u16 arg0, u16 arg1, Vec *arg2); s32 fn_1_79F8(s16 arg0, char *arg1, Mtx arg2); void fn_1_7AC4(HsfObject *arg0, Mtx arg1, char *arg2, Mtx arg3); void fn_1_7E30(Process *objman); +void fn_1_806C(void); #endif diff --git a/include/REL/m415Dll.h b/include/REL/m415Dll.h index 0be73a76..00ebc506 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)) @@ -257,6 +257,7 @@ float fn_1_7520(float, float *, float *, float *, s32); void fn_1_7674(float *, Vec *, Vec *, s32); void fn_1_7A54(float, Vec *, float *, Vec *, Vec *, s32); // map.c +void fn_1_8780(s16 arg0, s16 arg1); void fn_1_95C0(ModelData *, Mtx); AnimData **fn_1_9734(s16); void fn_1_9DC8(unkSubStruct2 *); @@ -266,11 +267,16 @@ s16 fn_1_A94C(u32, s16, s16); void fn_1_ACF4(s16, s16, s16, s16, s16, s16); void fn_1_AF48(s16); u8 fn_1_AFC8(s16, u8, s32, s16, s16); +u8 fn_1_B038(s16 arg0, u8 arg1, s32 arg2); s32 fn_1_B0B8(s16, u8, s16); +void fn_1_B634(void); void fn_1_B864(s16, float, float, float); +void fn_1_B8D0(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA); void fn_1_BB4C(s16, float, float, float); void fn_1_BC9C(s16, float, float, float); void fn_1_BD08(s16, s16, float, float, float); +void fn_1_BE30(s16 arg0, s16 arg1, s32 arg2); +void fn_1_C110(s16 arg0, s16 arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5); void fn_1_C264(s16, u8); void fn_1_C2D0(s16, s16, u8); void fn_1_C410(s16, s16, u8, u8); diff --git a/include/REL/m424Dll.h b/include/REL/m424Dll.h index ac79d774..02fd6de9 100644 --- a/include/REL/m424Dll.h +++ b/include/REL/m424Dll.h @@ -1,4 +1,5 @@ -#include "dolphin.h" +#ifndef M424DLL_H +#define M424DLL_H #include "game/object.h" @@ -31,6 +32,7 @@ extern M424DllBallStruct2 lbl_1_bss_60[9]; extern u8 lbl_1_bss_58; extern s16 lbl_1_bss_24[4]; +s32 fn_1_FE0(void); float fn_1_1358(float, float); float fn_1_1470(float, float, float); omObjData *fn_1_1AB8(Process *); @@ -42,9 +44,13 @@ void fn_1_2720(Process *); void fn_1_2880(void); Vec *fn_1_8A00(u8); s32 fn_1_8A2C(void); +s32 fn_1_907C(Vec *arg0, Vec *arg1); omObjData *fn_1_93F0(Process *); void fn_1_94A4(void); s32 fn_1_B804(void); s32 fn_1_B888(void); s32 fn_1_B8AC(void); s32 fn_1_B924(void); +void fn_1_C2E0(s32 arg0); + +#endif \ No newline at end of file diff --git a/include/REL/m434Dll.h b/include/REL/m434Dll.h index d83bd084..20130d9f 100644 --- a/include/REL/m434Dll.h +++ b/include/REL/m434Dll.h @@ -6,6 +6,9 @@ void fn_1_1C44(s32 arg0, s32 arg1); s32 fn_1_1C88(s32 arg0); s32 fn_1_1CB8(void); +#ifndef __MWERKS__ +s16 fn_1_1D44(void); +#endif s32 fn_1_1D54(void); void fn_1_1D64(s32 arg0); s32 fn_1_1D74(s32 arg0); diff --git a/include/REL/m440Dll.h b/include/REL/m440Dll.h index d7d2c5b8..3b853962 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; @@ -240,6 +241,7 @@ typedef struct _unkObjStruct { float unk68; float unk6C; float unk70; + char unk74[0x4]; } unkObjStruct; #if VERSION_NTSC diff --git a/include/REL/m446Dll.h b/include/REL/m446Dll.h index bdbdadb2..f15f662b 100644 --- a/include/REL/m446Dll.h +++ b/include/REL/m446Dll.h @@ -235,6 +235,7 @@ void fn_1_34A0(unkStruct5 *, unkStruct4 **, s32, s32); s32 m446DeckPushCard(unkStruct5 *, unkStruct4 *, s32); s32 m446DeckPopCard(unkStruct2 **, unkStruct4 **); void fn_1_38B0(unkStruct2 **); +// void fn_1_38E0(u32 arg0); // TODO s32 fn_1_38F0(void); // table.c s32 fn_1_3924(void); 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/w03Dll.h b/include/REL/w03Dll.h index a7163c63..022b6894 100644 --- a/include/REL/w03Dll.h +++ b/include/REL/w03Dll.h @@ -8,6 +8,8 @@ #include "game/window.h" #include "game/object.h" +#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) + enum { MAPOBJ_MAX = 12 }; 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/ar.h b/include/dolphin/ar.h index db0adaf3..bbdea48a 100644 --- a/include/dolphin/ar.h +++ b/include/dolphin/ar.h @@ -20,7 +20,7 @@ typedef void (*ARCallback)(void); ARCallback ARRegisterDMACallback(ARCallback callback); u32 ARGetDMAStatus(void); -void ARStartDMA(u32 type, u32 mainmem_addr, u32 aram_addr, u32 length); +void ARStartDMA(u32 type, uintptr_t mainmem_addr, u32 aram_addr, u32 length); u32 ARInit(u32* stack_index_addr, u32 num_entries); u32 ARGetBaseAddress(void); BOOL ARCheckInit(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/demo/DEMOStats.h b/include/dolphin/demo/DEMOStats.h index 92a61bf6..d9c29c93 100644 --- a/include/dolphin/demo/DEMOStats.h +++ b/include/dolphin/demo/DEMOStats.h @@ -29,10 +29,10 @@ typedef enum { DEMO_STAT_IO = 4 } DEMO_STAT_DISP; -extern unsigned char DemoStatEnable; - void DEMOSetStats(DemoStatData * stat, unsigned long nstats, DEMO_STAT_DISP disp); void DEMOUpdateStats(unsigned char inc); void DEMOPrintStats(void); +void DEMOUpdateStats(unsigned char inc); +void DEMOPrintStats(void); #endif 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/gx/GXDispList.h b/include/dolphin/gx/GXDispList.h index 552eda2d..422fbd5a 100644 --- a/include/dolphin/gx/GXDispList.h +++ b/include/dolphin/gx/GXDispList.h @@ -7,8 +7,15 @@ extern "C" { #endif +#ifdef AURORA +#define GXCallDisplayListNative GXCallDisplayListLE +#else +#define GXCallDisplayListNative GXCallDisplayList +#endif + void GXBeginDisplayList(void* list, u32 size); u32 GXEndDisplayList(void); +void GXCallDisplayListLE(const void* list, u32 nbytes); void GXCallDisplayList(const void* list, u32 nbytes); #ifdef __cplusplus diff --git a/include/dolphin/gx/GXGeometry.h b/include/dolphin/gx/GXGeometry.h index 632ebc69..77effd85 100644 --- a/include/dolphin/gx/GXGeometry.h +++ b/include/dolphin/gx/GXGeometry.h @@ -20,8 +20,10 @@ void GXSetPointSize(u8 pointSize, GXTexOffset texOffsets); void GXEnableTexOffsets(GXTexCoordID coord, GXBool line_enable, GXBool point_enable); #ifdef TARGET_PC void GXSetArray(GXAttr attr, const void* data, u32 size, u8 stride); +#define GXSETARRAY(attr, data, size, stride) GXSetArray((attr), (data), (size), (stride)) #else void GXSetArray(GXAttr attr, const void* data, u8 stride); +#define GXSETARRAY(attr, data, size, stride) GXSetArray((attr), (data), (stride)) #endif void GXInvalidateVtxCache(void); diff --git a/include/dolphin/gx/GXPriv.h b/include/dolphin/gx/GXPriv.h index 1cd42e37..b2d1878a 100644 --- a/include/dolphin/gx/GXPriv.h +++ b/include/dolphin/gx/GXPriv.h @@ -2,8 +2,9 @@ #define _DOLPHIN_GXPRIV #include "dolphin/gx.h" +#include "dolphin/os.h" -#ifdef DEBUG +#ifndef NDEBUG #define ASSERTLINE(line, cond) \ ((cond) || (OSPanic(__FILE__, line, "Failed assertion " #cond), 0)) diff --git a/include/dolphin/mtx.h b/include/dolphin/mtx.h index 49dc1b7e..84505659 100644 --- a/include/dolphin/mtx.h +++ b/include/dolphin/mtx.h @@ -6,7 +6,11 @@ #ifdef __cplusplus extern "C" { #endif + +#if defined(__MWERKS__) && !defined(GEKKO) #define GEKKO +#endif + #ifndef GEKKO #define MTX_USE_C #undef MTX_USE_PS @@ -35,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); @@ -42,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); @@ -302,6 +309,20 @@ void PSMTXMultS16VecArray(const Mtx m, const S16Vec* srcBase, Vec* dstBase, u32 void PSMTXROMultS16VecArray(const ROMtx m, const S16Vec* srcBase, Vec* dstBase, u32 count); #endif +#ifdef MTX_USE_PS +#define MTXReorder PSMTXReorder +#define MTXROMultVecArray PSMTXROMultVecArray +#define MTXROSkin2VecArray PSMTXROSkin2VecArray +#define MTXROMultS16VecArray PSMTXROMultS16VecArray +#define MTXMultS16VecArray PSMTXMultS16VecArray +#else // MTX_USE_C +#define MTXReorder C_MTXReorder +#define MTXROMultVecArray C_MTXROMultVecArray +#define MTXROSkin2VecArray C_MTXROSkin2VecArray +#define MTXROMultS16VecArray C_MTXROMultS16VecArray +#define MTXMultS16VecArray C_MTXMultS16VecArray +#endif + void MTXInitStack(MtxStack* sPtr, u32 numMtx); MtxPtr MTXPush(MtxStack* sPtr, const Mtx m); MtxPtr MTXPushFwd(MtxStack* sPtr, const Mtx m); diff --git a/include/dolphin/os.h b/include/dolphin/os.h index d255bb04..b0f91c56 100644 --- a/include/dolphin/os.h +++ b/include/dolphin/os.h @@ -23,10 +23,15 @@ extern "C" { #endif typedef s64 OSTime; typedef u32 OSTick; +#ifdef __MWERKS__ u32 __OSBusClock AT_ADDRESS(OS_BASE_CACHED | 0x00F8); // sync with OSLoMem.h u32 __OSCoreClock AT_ADDRESS(OS_BASE_CACHED | 0x00FC); // sync with OSLoMem.h #define OS_BUS_CLOCK (u32) __OSBusClock #define OS_CORE_CLOCK __OSCoreClock +#else +#define OS_BUS_CLOCK 162000000ull +#define OS_CORE_CLOCK 486000000ull +#endif #define OS_TIMER_CLOCK (OS_BUS_CLOCK / 4) #ifndef _DEBUG @@ -57,8 +62,8 @@ u32 OSUncachedToCached(void *ucaddr); #define OSDiffTick(tick1, tick0) ((s32)(tick1) - (s32)(tick0)) -#define OSRoundUp32B(x) (((u32)(x) + 0x1F) & ~(0x1F)) -#define OSRoundDown32B(x) (((u32)(x)) & ~(0x1F)) +#define OSRoundUp32B(x) (((size_t)(x) + 0x1F) & ~(0x1F)) +#define OSRoundDown32B(x) (((size_t)(x)) & ~(0x1F)) #define OSRoundUp(x, align) (((x) + (align)-1) & (-(align))) #define OSRoundUpPtr(x, align) ((void*)((((u32)(x)) + (align)-1) & (~((align)-1)))) diff --git a/include/dolphin/os/OSAlloc.h b/include/dolphin/os/OSAlloc.h index 686dae2b..afa788c0 100644 --- a/include/dolphin/os/OSAlloc.h +++ b/include/dolphin/os/OSAlloc.h @@ -9,17 +9,17 @@ extern "C" { typedef int OSHeapHandle; typedef void (*OSAllocVisitor)(void *obj, u32 size); void *OSInitAlloc(void *arenaStart, void *arenaEnd, int maxHeaps); -OSHeapHandle OSCreateHeap(void *start, void *end); +uintptr_t OSCreateHeap(void *start, void *end); void OSDestroyHeap(OSHeapHandle heap); void OSAddToHeap(OSHeapHandle heap, void *start, void *end); OSHeapHandle OSSetCurrentHeap(OSHeapHandle heap); -void *OSAllocFromHeap(OSHeapHandle heap, u32 size); +void *OSAllocFromHeap(int heap, unsigned long size); void *OSAllocFixed(void **rstart, void **rend); void OSFreeToHeap(OSHeapHandle heap, void *ptr); long OSCheckHeap(OSHeapHandle heap); void OSDumpHeap(OSHeapHandle heap); -u32 OSReferentSize(void *ptr); -void OSVisitAllocated(OSAllocVisitor visitor); +unsigned long OSReferentSize(void *ptr); +void OSVisitAllocated(void (*visitor)(void *, unsigned long)); extern volatile OSHeapHandle __OSCurrHeap; #define OSAlloc(size) OSAllocFromHeap(__OSCurrHeap, (size)) #define OSFree(ptr) OSFreeToHeap(__OSCurrHeap, (ptr)) diff --git a/include/dolphin/os/OSFastCast.h b/include/dolphin/os/OSFastCast.h index b52cabfe..9fb24e30 100644 --- a/include/dolphin/os/OSFastCast.h +++ b/include/dolphin/os/OSFastCast.h @@ -1,6 +1,8 @@ #ifndef _DOLPHIN_OSFASTCAST #define _DOLPHIN_OSFASTCAST +#include "dolphin/types.h" + #ifdef __cplusplus extern "C" { #endif @@ -44,6 +46,7 @@ static inline void OSInitFastCast(void) { static inline s16 __OSf32tos16(register f32 inF) { +#ifdef __MWERKS__ u32 tmp; register u32* tmpPtr = &tmp; register s16 out; @@ -55,12 +58,16 @@ static inline s16 __OSf32tos16(register f32 inF) // clang-format on return out; +#else + return (s16) inF; +#endif } static inline void OSf32tos16(f32 *f, s16 *out) { *out = __OSf32tos16(*f); } static inline u8 __OSf32tou8(register f32 inF) { +#ifdef __MWERKS__ u32 tmp; register u32 *tmpPtr = &tmp; register u8 out; @@ -72,12 +79,16 @@ static inline u8 __OSf32tou8(register f32 inF) // clang-format on return out; +#else + return (u8)inF; +#endif } static inline void OSf32tou8(f32 *f, u8 *out) { *out = __OSf32tou8(*f); } static inline s8 __OSf32tos8(register f32 inF) { +#ifdef __MWERKS__ u32 tmp; register u32 *tmpPtr = &tmp; register s8 out; @@ -90,12 +101,16 @@ static inline s8 __OSf32tos8(register f32 inF) // clang-format on return out; +#else + return (s8) inF; +#endif } static inline void OSf32tos8(f32 *f, s8 *out) { *out = __OSf32tos8(*f); } static inline u16 __OSf32tou16(register f32 inF) { +#ifdef __MWERKS__ u32 tmp; register u32 *tmpPtr = &tmp; register u16 out; @@ -107,11 +122,15 @@ static inline u16 __OSf32tou16(register f32 inF) // clang-format on return out; +#else + return (u16) inF; +#endif } static inline void OSf32tou16(f32 *f, u16 *out) { *out = __OSf32tou16(*f); } static inline float __OSs8tof32(register const s8* arg) { +#ifdef __MWERKS__ register float ret; asm { @@ -119,11 +138,15 @@ static inline float __OSs8tof32(register const s8* arg) { } return ret; +#else + return (f32)*arg; +#endif } static inline void OSs8tof32(const s8* in, float* out) { *out = __OSs8tof32(in); } static inline float __OSs16tof32(register const s16* arg) { +#ifdef __MWERKS__ register float ret; asm { @@ -131,11 +154,15 @@ static inline float __OSs16tof32(register const s16* arg) { } return ret; +#else + return (f32)*arg; +#endif } static inline void OSs16tof32(const s16* in, float* out) { *out = __OSs16tof32(in); } static inline float __OSu8tof32(register const u8* arg) { +#ifdef __MWERKS__ register float ret; asm { @@ -143,11 +170,15 @@ static inline float __OSu8tof32(register const u8* arg) { } return ret; +#else + return (f32)*arg; +#endif } static inline void OSu8tof32(const u8* in, float* out) { *out = __OSu8tof32(in); } static inline float __OSu16tof32(register const u16* arg) { +#ifdef __MWERKS__ register float ret; asm { @@ -155,6 +186,9 @@ static inline float __OSu16tof32(register const u16* arg) { } return ret; +#else + return (f32)*arg; +#endif } static inline void OSu16tof32(const u16* in, float* out) { *out = __OSu16tof32(in); } 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/dolphin/types.h b/include/dolphin/types.h index 822ec081..b4d273b4 100644 --- a/include/dolphin/types.h +++ b/include/dolphin/types.h @@ -20,6 +20,9 @@ typedef unsigned char u8; typedef unsigned short int u16; typedef unsigned long u32; typedef unsigned long long int u64; + +typedef u32 size_t; +typedef u32 uintptr_t; #endif typedef volatile u8 vu8; @@ -64,7 +67,7 @@ typedef int BOOL; #define NULL ((void *)0) #endif #endif -#if !defined(__cplusplus) || __cplusplus < 201103L +#if !defined(__cplusplus) #ifndef nullptr #define nullptr NULL #endif diff --git a/include/dolphin/vi.h b/include/dolphin/vi.h index f503f4b5..da232cb2 100644 --- a/include/dolphin/vi.h +++ b/include/dolphin/vi.h @@ -15,6 +15,7 @@ u32 VIGetTvFormat(void); void VISetNextFrameBuffer(void* fb); void VIWaitForRetrace(void); void VISetBlack(BOOL black); +void VIConfigurePan(u16 xOrg, u16 yOrg, u16 width, u16 height); #ifdef TARGET_PC void VISetWindowTitle(const char* title); diff --git a/include/ext_math.h b/include/ext_math.h index e979909d..d13a036e 100644 --- a/include/ext_math.h +++ b/include/ext_math.h @@ -4,6 +4,10 @@ #include "math.h" #include "dolphin/mtx.h" +#ifndef M_PI +#define M_PI 3.141592653589793 +#endif + typedef struct vec2f { float x; float y; @@ -33,7 +37,8 @@ typedef struct vec2f { #define atan2d(y, x) (180.0*(atan2((y), (x)) / M_PI)) #ifndef __MWERKS__ -void HuSetVecF(Vec* arg0, f32 arg8, f32 arg9, f32 argA) +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/animdata.h b/include/game/animdata.h index 63876d94..b4199a7e 100644 --- a/include/game/animdata.h +++ b/include/game/animdata.h @@ -78,6 +78,13 @@ typedef struct anim_data { /* 0x08 */ AnimBankData *bank; /* 0x0C */ AnimPatData *pat; /* 0x10 */ AnimBmpData *bmp; +#ifdef TARGET_PC + u32 valid; +#endif } AnimData; //sizeof 0x14 +#ifdef TARGET_PC +#define ANIM_DATA_ALLOCATION_VALID 0xD3D3D3D3 +#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/chrman.h b/include/game/chrman.h index d826fb68..c20b79cc 100755 --- a/include/game/chrman.h +++ b/include/game/chrman.h @@ -44,8 +44,6 @@ s32 CharModelEffectNpcInit(s16 arg0, s16 arg1, s16 arg2, s16 arg3); s32 CharModelEffectNpcInitSilent(s16 arg0, s16 arg1, s16 arg2); void CharModelStepTypeSet(s16 character, s32 arg1); -#define CHARNO_MAX 8 -#define CHAR_NPC_MAX 7 -#define CHAR_EFFECT_AND_PARTICLE_MAX 8 +#define GW_CHARACTER_MAX 8 #endif 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 f26f62dc..5cfb1bbd 100644 --- a/include/game/gamework_data.h +++ b/include/game/gamework_data.h @@ -5,7 +5,7 @@ #include "game/flag.h" #include "version.h" -//HACK: to prevent prototype errors +// HACK: to prevent prototype errors extern void HuPadRumbleAllStop(void); typedef struct player_config { @@ -17,12 +17,12 @@ typedef struct player_config { } PlayerConfig; typedef struct system_state { -/* 0x00 */ struct { + /* 0x00 */ struct { u8 party : 1; u8 team : 1; }; -/* 0x01 */ u8 diff_story; -/* 0x02 */ struct { + /* 0x01 */ u8 diff_story; + /* 0x02 */ struct { u16 bonus_star : 1; u16 explain_mg : 1; u16 show_com_mg : 1; @@ -30,35 +30,35 @@ typedef struct system_state { u16 mess_speed : 2; u16 save_mode : 2; }; -/* 0x04 */ u8 turn; -/* 0x05 */ u8 max_turn; -/* 0x06 */ u8 star_flag; -/* 0x07 */ u8 star_total; -/* 0x08 */ struct { - u8 star_pos : 3; - u8 board : 5; -}; -/* 0x09 */ s8 last5_effect; -/* 0x0A */ s8 player_curr; -/* 0x0B */ u8 storyCharBit; -/* 0x0C */ s8 storyChar; -/* 0x0E */ s16 block_pos; -/* 0x10 */ u8 ATTRIBUTE_ALIGN(4) board_data[32]; -/* 0x30 */ u8 mess_delay; -/* 0x31 */ struct { + /* 0x04 */ u8 turn; + /* 0x05 */ u8 max_turn; + /* 0x06 */ u8 star_flag; + /* 0x07 */ u8 star_total; + /* 0x08 */ struct { + u8 star_pos : 3; + u8 board : 5; + }; + /* 0x09 */ s8 last5_effect; + /* 0x0A */ s8 player_curr; + /* 0x0B */ u8 storyCharBit; + /* 0x0C */ s8 storyChar; + /* 0x0E */ s16 block_pos; + /* 0x10 */ u8 ATTRIBUTE_ALIGN(4) board_data[32]; + /* 0x30 */ u8 mess_delay; + /* 0x31 */ struct { u8 bowser_loss : 4; u8 bowser_event : 4; }; -/* 0x32 */ s8 lucky_value; -/* 0x34 */ u16 mg_next; -/* 0x36 */ s16 mg_type; -/* 0x38 */ u16 unk_38; -/* 0x3A */ u8 flag[3][16]; -/* 0x6A */ u8 unk_6A[0x72]; -} SystemState; //8018fcf8, sizeof 0xDC + /* 0x32 */ s8 lucky_value; + /* 0x34 */ u16 mg_next; + /* 0x36 */ s16 mg_type; + /* 0x38 */ u16 unk_38; + /* 0x3A */ u8 flag[3][16]; + /* 0x6A */ u8 unk_6A[0x72]; +} SystemState; // 8018fcf8, sizeof 0xDC typedef struct player_state { -/* 0x00 */ struct { + /* 0x00 */ struct { u16 diff : 2; u16 com : 1; u16 character : 4; @@ -66,15 +66,15 @@ typedef struct player_state { u16 draw_ticket : 1; u16 ticket_player : 6; }; -/* 0x02 */ struct { + /* 0x02 */ struct { u8 team : 1; u8 spark : 1; u8 player_idx : 2; }; -/* 0x03 */ s8 handicap; -/* 0x04 */ s8 port; -/* 0x05 */ s8 items[3]; -/* 0x08 */ struct { + /* 0x03 */ s8 handicap; + /* 0x04 */ s8 port; + /* 0x05 */ s8 items[3]; + /* 0x08 */ struct { u16 color : 2; u16 moving : 1; u16 jump : 1; @@ -85,30 +85,30 @@ typedef struct player_state { u16 bowser_suit : 1; u16 team_backup : 1; }; -/* 0x0A */ s8 roll; -/* 0x0C */ s16 space_curr; -/* 0x0E */ s16 space_prev; -/* 0x10 */ s16 space_next; -/* 0x12 */ s16 space_shock; -/* 0x14 */ s8 blue_count; -/* 0x15 */ s8 red_count; -/* 0x16 */ s8 question_count; -/* 0x17 */ s8 fortune_count; -/* 0x18 */ s8 bowser_count; -/* 0x19 */ s8 battle_count; -/* 0x1A */ s8 mushroom_count; -/* 0x1B */ s8 warp_count; -/* 0x1C */ s16 coins; -/* 0x1E */ s16 coins_mg; -/* 0x20 */ s16 coins_total; -/* 0x22 */ s16 coins_max; -/* 0x24 */ s16 coins_battle; -/* 0x26 */ s16 coin_collect; -/* 0x28 */ s16 coin_win; -/* 0x2A */ s16 stars; -/* 0x2C */ s16 stars_max; -/* 0x2E */ char unk_2E[2]; -} PlayerState; //size of 0x30 + /* 0x0A */ s8 roll; + /* 0x0C */ s16 space_curr; + /* 0x0E */ s16 space_prev; + /* 0x10 */ s16 space_next; + /* 0x12 */ s16 space_shock; + /* 0x14 */ s8 blue_count; + /* 0x15 */ s8 red_count; + /* 0x16 */ s8 question_count; + /* 0x17 */ s8 fortune_count; + /* 0x18 */ s8 bowser_count; + /* 0x19 */ s8 battle_count; + /* 0x1A */ s8 mushroom_count; + /* 0x1B */ s8 warp_count; + /* 0x1C */ s16 coins; + /* 0x1E */ s16 coins_mg; + /* 0x20 */ s16 coins_total; + /* 0x22 */ s16 coins_max; + /* 0x24 */ s16 coins_battle; + /* 0x26 */ s16 coin_collect; + /* 0x28 */ s16 coin_win; + /* 0x2A */ s16 stars; + /* 0x2C */ s16 stars_max; + /* 0x2E */ char unk_2E[2]; +} PlayerState; // size of 0x30 typedef struct pause_backup_config { u8 explain_mg : 1; @@ -119,21 +119,21 @@ typedef struct pause_backup_config { } PauseBackupConfig; typedef struct game_stat { -/* 0x0 */ s16 unk_00; -/* 0x2 */ u8 language; -/* 0x3 */ u8 sound_mode; -/* 0x4 */ s8 rumble; -/* 0x6 */ u16 total_stars; -/* 0x8 */ OSTime create_time; -/* 0x10 */ u32 mg_custom[2]; -/* 0x18 */ u32 mg_avail[2]; -/* 0x20 */ u32 mg_record[15]; -/* 0x5C */ u8 board_win_count[9][8]; -/* 0xA4 */ u8 board_play_count[9]; -/* 0xAE */ u16 board_max_stars[9]; -/* 0xC0 */ u16 board_max_coins[9]; -/* 0xD2 */ u8 present[60]; -/* 0x10E */ struct { + /* 0x0 */ s16 unk_00; + /* 0x2 */ u8 language; + /* 0x3 */ u8 sound_mode; + /* 0x4 */ s8 rumble; + /* 0x6 */ u16 total_stars; + /* 0x8 */ OSTime create_time; + /* 0x10 */ u32 mg_custom[2]; + /* 0x18 */ u32 mg_avail[2]; + /* 0x20 */ u32 mg_record[15]; + /* 0x5C */ u8 board_win_count[9][8]; + /* 0xA4 */ u8 board_play_count[9]; + /* 0xAE */ u16 board_max_stars[9]; + /* 0xC0 */ u16 board_max_coins[9]; + /* 0xD2 */ u8 present[60]; + /* 0x10E */ struct { u8 story_continue : 1; u8 party_continue : 1; u8 open_w06 : 1; @@ -141,17 +141,17 @@ typedef struct game_stat { u8 customPackEnable : 1; u8 musicAllF : 1; }; -/* 0x10F */ PauseBackupConfig story_pause; -/* 0x110 */ PauseBackupConfig party_pause; + /* 0x10F */ PauseBackupConfig story_pause; + /* 0x110 */ PauseBackupConfig party_pause; } GameStat; -extern s16 GwLanguage; -extern s16 GwLanguageSave; +SHARED_SYM extern s16 GwLanguage; +SHARED_SYM extern s16 GwLanguageSave; -extern PlayerConfig GWPlayerCfg[4]; -extern PlayerState GWPlayer[4]; -extern SystemState GWSystem; -extern GameStat GWGameStat; +SHARED_SYM extern PlayerConfig GWPlayerCfg[4]; +SHARED_SYM extern PlayerState GWPlayer[4]; +SHARED_SYM extern SystemState GWSystem; +SHARED_SYM extern GameStat GWGameStat; static inline s32 GWPlayerCfgGroupGet(s32 player) { @@ -196,7 +196,7 @@ static inline s32 GWRumbleGet(void) static inline void GWRumbleSet(s32 value) { GWGameStat.rumble = value; - if(value == 0) { + if (value == 0) { HuPadRumbleAllStop(); } } @@ -206,7 +206,6 @@ static inline s32 GWBonusStarGet(void) return GWSystem.bonus_star; } - static inline s32 GWMGExplainGet(void) { return GWSystem.explain_mg; @@ -250,9 +249,9 @@ static inline s32 GWMessSpeedGet(void) static inline void GWMessSpeedSet(s32 value) { - #if VERSION_NTSC +#if VERSION_NTSC GWSystem.mess_speed = value; - switch(value) { + switch (value) { case 0: GWSystem.mess_delay = 16; break; @@ -265,9 +264,9 @@ static inline void GWMessSpeedSet(s32 value) GWSystem.mess_delay = 32; break; } - #else +#else GWSystem.mess_speed = value; - switch(value) { + switch (value) { case 0: GWSystem.mess_delay = 32; break; @@ -275,7 +274,7 @@ static inline void GWMessSpeedSet(s32 value) case 2: GWSystem.mess_delay = 64; break; - + case 1: GWSystem.mess_delay = 48; break; @@ -284,7 +283,7 @@ static inline void GWMessSpeedSet(s32 value) GWSystem.mess_delay = 120; break; } - #endif +#endif } static inline void GWSaveModeSet(s32 value) @@ -367,7 +366,7 @@ static inline void GWPlayerCoinWinSet(s32 player, s16 value) } } -#define GWPlayerCoinWinAdd(player, value) GWPlayerCoinWinSet((player), GWPlayerCoinWinGet((player))+(value)) -#define GWPlayerCoinCollectAdd(player, value) GWPlayerCoinCollectSet((player), (s32)GWPlayerCoinCollectGet((player))+(value)) +#define GWPlayerCoinWinAdd(player, value) GWPlayerCoinWinSet((player), GWPlayerCoinWinGet((player)) + (value)) +#define GWPlayerCoinCollectAdd(player, value) GWPlayerCoinCollectSet((player), (s32)GWPlayerCoinCollectGet((player)) + (value)) #endif diff --git a/include/game/hsfanim.h b/include/game/hsfanim.h index 9cf16673..e251c5fb 100644 --- a/include/game/hsfanim.h +++ b/include/game/hsfanim.h @@ -4,10 +4,15 @@ #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; +#ifdef TARGET_PC +typedef void (*ParticleDLCallFunc)(ParticleData *particle); +#endif + typedef void (*ParticleHook)(ModelData *model, ParticleData *particle, Mtx matrix); typedef struct { @@ -44,11 +49,11 @@ struct particle_data { /* 0x34 */ u32 unk_34; /* 0x38 */ s32 unk_38; /* 0x3C */ u32 unk_3C; - /* 0x40 */ s32 unk_40; + /* 0x40 */ s32 unk_40; // dlSize /* 0x44 */ AnimData *unk_44; /* 0x48 */ HsfanimStruct01 *unk_48; /* 0x4C */ Vec *unk_4C; - /* 0x50 */ void *unk_50; + /* 0x50 */ void *unk_50; // dlPtr /* 0x54 */ ParticleHook unk_54; }; // Size 0x58 @@ -138,7 +143,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 d3b46df6..aca5f1d4 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; @@ -56,9 +56,8 @@ typedef struct hsf_draw_object { void Hu3DDrawPreInit(void); void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2); s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2); -void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1); void Hu3DDrawPost(void); -void MakeDisplayList(s16 arg0, u32 arg1); +void MakeDisplayList(s16 arg0, uintptr_t arg1); HsfConstData *ObjConstantMake(HsfObject *arg0, u32 arg1); void mtxTransCat(Mtx arg0, float arg1, float arg2, float arg3); void mtxRotCat(Mtx arg0, float arg1, float arg2, float arg3); @@ -71,7 +70,7 @@ void Hu3DModelObjMtxGet(s16 arg0, char *arg1, Mtx arg2); void PGObjCall(ModelData *arg0, HsfObject *arg1); void PGObjCalc(ModelData *arg0, HsfObject *arg1); void PGObjReplica(ModelData *arg0, HsfObject *arg1); -HsfObject *Hu3DObjDuplicate(HsfData *arg0, u32 arg1); +HsfObject *Hu3DObjDuplicate(HsfData *arg0, uintptr_t arg1); void Hu3DModelObjDrawInit(void); void Hu3DModelObjDraw(s16 arg0, char *arg1, Mtx arg2); diff --git a/include/game/hsfformat.h b/include/game/hsfformat.h index 36c083a9..68b317cd 100644 --- a/include/game/hsfformat.h +++ b/include/game/hsfformat.h @@ -227,9 +227,8 @@ typedef struct hsf_cluster { s32 target; }; HsfPart *part; - float unk10; - float unk14[1]; // unknown array size - u8 unk18[124]; + float index; + float weight[32]; // unknown array size u8 adjusted; u8 unk95; u16 type; @@ -261,7 +260,7 @@ typedef struct hsf_object_data { } mesh; struct hsf_object *replica; }; - + HsfBuffer *face; HsfBuffer *vertex; HsfBuffer *normal; @@ -278,7 +277,8 @@ typedef struct hsf_object_data { HsfCluster **cluster; u32 cenvCnt; HsfCenv *cenv; - void *file[2]; + HsfVector3f *vtxtop; + HsfVector3f *normtop; } HsfObjectData; typedef struct hsf_camera { @@ -286,8 +286,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 { @@ -351,6 +351,9 @@ typedef struct hsf_track { float value; void *data; }; +#ifdef TARGET_PC + void *dataTop; +#endif } HsfTrack; typedef struct hsf_motion { @@ -397,6 +400,9 @@ typedef struct hsf_data { HsfObject *object; HsfMapAttr *mapAttr; HsfMatrix *matrix; +#ifdef TARGET_PC + void **symbol; +#endif s16 sceneCnt; s16 attributeCnt; s16 materialCnt; diff --git a/include/game/hsfload.h b/include/game/hsfload.h index 1b67cb21..c1003f05 100644 --- a/include/game/hsfload.h +++ b/include/game/hsfload.h @@ -8,5 +8,8 @@ void ClusterAdjustObject(HsfData *model, HsfData *src_model); char *SetName(u32 *str_ofs); char *MakeObjectName(char *name); s32 CmpObjectName(char *name1, char *name2); +#ifdef TARGET_PC +void KillHSF(HsfData *data); +#endif #endif \ No newline at end of file diff --git a/include/game/hsfman.h b/include/game/hsfman.h index 2be96d31..6fb6d133 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; @@ -283,6 +284,9 @@ void Hu3DLLightStaticSet(s16, s16, s32); s32 Hu3DModelLightInfoSet(s16, s16); s16 Hu3DLightSet(ModelData *, Mtx *, Mtx *, float); void lightSet(LightData *arg0, s16 arg1, Mtx *arg2, Mtx *arg3, float arg8); +#ifndef __MWERKS__ +void Hu3DReflectMapSet(AnimData* arg0); +#endif void Hu3DReflectNoSet(s16 arg0); void Hu3DFogSet(float, float, u8, u8, u8); void Hu3DFogClear(void); @@ -297,23 +301,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 f820bd7f..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))) @@ -10,9 +11,9 @@ typedef struct motion_data { - s16 unk_00; - s16 unk_02; - HsfData *unk_04; + s16 attr; + s16 modelId; + HsfData *hsfData; } MotionData; typedef struct { @@ -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 0aadbc43..f1f6a9eb 100755 --- a/include/game/jmp.h +++ b/include/game/jmp.h @@ -16,4 +16,4 @@ typedef struct jump_buf { s32 gcsetjmp(jmp_buf *jump); s32 gclongjmp(jmp_buf *jump, s32 status); -#endif +#endif \ No newline at end of file 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/memory.h b/include/game/memory.h index 95728bde..efc86334 100644 --- a/include/game/memory.h +++ b/include/game/memory.h @@ -19,23 +19,23 @@ void *HuMemInit(void *ptr, s32 size); void HuMemDCFlushAll(); void HuMemDCFlush(HeapID heap); void *HuMemDirectMalloc(HeapID heap, s32 size); -void *HuMemDirectMallocNum(HeapID heap, s32 size, u32 num); +void *HuMemDirectMallocNum(HeapID heap, s32 size, uintptr_t num); void HuMemDirectFree(void *ptr); -void HuMemDirectFreeNum(HeapID heap, u32 num); +void HuMemDirectFreeNum(HeapID heap, uintptr_t num); s32 HuMemUsedMallocSizeGet(HeapID heap); s32 HuMemUsedMallocBlockGet(HeapID heap); u32 HuMemHeapSizeGet(HeapID heap); void *HuMemHeapPtrGet(HeapID heap); void *HuMemHeapInit(void *ptr, s32 size); -void *HuMemMemoryAlloc(void *heap_ptr, s32 size, u32 retaddr); -void *HuMemMemoryAllocNum(void *heap_ptr, s32 size, u32 num, u32 retaddr); -void HuMemMemoryFree(void *ptr, u32 retaddr); -void HuMemMemoryFreeNum(void *heap_ptr, u32 num, u32 retaddr); +void *HuMemMemoryAlloc(void *heap_ptr, s32 size, uintptr_t retaddr); +void *HuMemMemoryAllocNum(void *heap_ptr, s32 size, uintptr_t num, uintptr_t retaddr); +void HuMemMemoryFree(void *ptr, uintptr_t retaddr); +void HuMemMemoryFreeNum(void *heap_ptr, uintptr_t num, uintptr_t retaddr); s32 HuMemUsedMemorySizeGet(void *heap_ptr); s32 HuMemUsedMemoryBlockGet(void *heap_ptr); s32 HuMemMemorySizeGet(void *ptr); s32 HuMemMemoryAllocSizeGet(s32 size); void HuMemHeapDump(void *heap_ptr, s16 status); -#endif \ No newline at end of file +#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/msm.h b/include/game/msm.h index e5106677..2916a32e 100644 --- a/include/game/msm.h +++ b/include/game/msm.h @@ -165,6 +165,7 @@ s32 msmSysDelGroupAll(void); s32 msmSysGetSampSize(BOOL baseGrp); s32 msmSysDelGroupBase(s32 grpNum); s32 msmSysSetAux(s32 auxA, s32 auxB); +void msmSysRegularProc(void); s32 msmSeSetParam(int seNo, MSM_SEPARAM *param); int msmSePlay(int seId, MSM_SEPARAM *param); @@ -185,6 +186,7 @@ int msmMusPlay(int musId, MSM_MUSPARAM *musParam); s32 msmMusStop(int musNo, s32 speed); void msmMusPauseAll(BOOL pause, s32 speed); s32 msmMusPause(int musNo, BOOL pause, s32 speed); +void msmMusFdoutEnd(void); s32 msmMusGetMidiCtrl(int musNo, s32 channel, s32 ctrl); void msmMusStopAll(BOOL checkGrp, s32 speed); s32 msmMusGetStatus(int musNo); diff --git a/include/game/object.h b/include/game/object.h index 69f4cb6b..8c022103 100644 --- a/include/game/object.h +++ b/include/game/object.h @@ -5,6 +5,10 @@ #include "game/process.h" #include "game/dvd.h" +#ifdef _WIN32 +#include +#endif + #define OM_DLL_MAX 20 #define OVL_DEFINE(name, path) name, @@ -60,9 +64,14 @@ typedef struct om_obj_data { typedef struct om_dll_data { char *name; +#if _WIN32 + HMODULE hModule; +#else OSModuleHeader *module; void *bss; s32 ret; +#endif + } omDllData; void omMasterInit(s32 prio, FileListEntry *ovl_list, s32 ovl_count, OverlayID start_ovl); @@ -112,26 +121,26 @@ void omSysPauseCtrl(s16 flag); extern omObjData *omDBGSysKeyObj; extern Process *omwatchproc; extern OverlayID omnextovl; -extern OverlayID omcurovl; +SHARED_SYM extern OverlayID omcurovl; extern s32 omcurdll; -extern s32 omovlhisidx; -extern s32 omovlevtno; +SHARED_SYM extern s32 omovlhisidx; +SHARED_SYM extern s32 omovlevtno; extern s32 omnextovlevtno; -extern u32 omovlstat; +SHARED_SYM extern u32 omovlstat; extern char omUPauseFlag; -extern s16 omSysExitReq; +SHARED_SYM extern s16 omSysExitReq; extern s16 omdispinfo; extern u8 omSysPauseEnableFlag; extern OverlayID omprevovl; extern omDllData *omDLLinfoTbl[OM_DLL_MAX]; -extern Vec CRot; -extern Vec Center; -extern float CZoom; -extern Vec CRotM[16]; -extern Vec CenterM[16]; -extern float CZoomM[16]; -extern s16 omDBGMenuButton; +SHARED_SYM extern Vec CRot; +SHARED_SYM extern Vec Center; +SHARED_SYM extern float CZoom; +SHARED_SYM extern Vec CRotM[16]; +SHARED_SYM extern Vec CenterM[16]; +SHARED_SYM extern float CZoomM[16]; +SHARED_SYM extern s16 omDBGMenuButton; #endif diff --git a/include/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/pad.h b/include/game/pad.h index 2223f0b4..3c279ff4 100644 --- a/include/game/pad.h +++ b/include/game/pad.h @@ -2,23 +2,24 @@ #define _GAME_PAD_H #include "dolphin.h" +#include "version.h" #define PAD_BUTTON_DIR (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT | PAD_BUTTON_UP | PAD_BUTTON_DOWN) #define PAD_BUTTON_TRIGGER_L 0x4000 #define PAD_BUTTON_TRIGGER_R 0x2000 -extern u16 HuPadBtn[4]; -extern u16 HuPadBtnDown[4]; -extern u16 HuPadBtnRep[4]; -extern s8 HuPadStkX[4]; -extern s8 HuPadStkY[4]; -extern s8 HuPadSubStkX[4]; -extern s8 HuPadSubStkY[4]; -extern u8 HuPadTrigL[4]; -extern u8 HuPadTrigR[4]; -extern u8 HuPadDStk[4]; -extern u8 HuPadDStkRep[4]; +SHARED_SYM extern u16 HuPadBtn[4]; +SHARED_SYM extern u16 HuPadBtnDown[4]; +SHARED_SYM extern u16 HuPadBtnRep[4]; +SHARED_SYM extern s8 HuPadStkX[4]; +SHARED_SYM extern s8 HuPadStkY[4]; +SHARED_SYM extern s8 HuPadSubStkX[4]; +SHARED_SYM extern s8 HuPadSubStkY[4]; +SHARED_SYM extern u8 HuPadTrigL[4]; +SHARED_SYM extern u8 HuPadTrigR[4]; +SHARED_SYM extern u8 HuPadDStk[4]; +SHARED_SYM extern u8 HuPadDStkRep[4]; extern s8 HuPadErr[4]; extern u16 _PadBtn[4]; extern u16 _PadBtnDown[4]; @@ -32,4 +33,4 @@ void HuPadRumbleAllStop(void); s16 HuPadStatGet(s16 pad); u32 HuPadRumbleGet(void); -#endif \ No newline at end of file +#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 3bd6a297..cf4a3af6 100644 --- a/include/game/process.h +++ b/include/game/process.h @@ -1,9 +1,15 @@ #ifndef _GAME_PROCESS_H #define _GAME_PROCESS_H -#include "game/jmp.h" #include "dolphin/types.h" +#ifdef TARGET_PC +#include +#include "libco.h" +#else +#include "game/jmp.h" +#endif + #define PROCESS_STAT_PAUSE 0x1 #define PROCESS_STAT_UPAUSE 0x2 #define PROCESS_STAT_PAUSE_EN 0x4 @@ -21,8 +27,12 @@ typedef struct process { u16 stat; u16 prio; s32 sleep_time; - u32 base_sp; +#ifdef TARGET_PC + cothread_t thread; +#else + uintptr_t base_sp; jmp_buf jump; +#endif void (*dtor)(void); void *user_data; } Process; @@ -50,4 +60,4 @@ void HuPrcResetStat(Process *process, u16 value); void HuPrcAllPause(s32 flag); void HuPrcAllUPause(s32 flag); -#endif \ No newline at end of file +#endif 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/game/sreset.h b/include/game/sreset.h new file mode 100644 index 00000000..caf8b15b --- /dev/null +++ b/include/game/sreset.h @@ -0,0 +1,9 @@ +#ifndef _GAME_SRESET_H +#define _GAME_SRESET_H + +#include "dolphin.h" + +s32 HuSoftResetButtonCheck(void); +void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2); + +#endif diff --git a/include/game/window.h b/include/game/window.h index a2ff8eb1..05afd68d 100644 --- a/include/game/window.h +++ b/include/game/window.h @@ -3,6 +3,7 @@ #include "game/animdata.h" #include "dolphin.h" +#include "version.h" #define MAKE_MESSID(bank, mess) (((bank) << 16)+(mess)) #define MAKE_MESSID_PTR(ptr) ((u32)(ptr)) @@ -75,8 +76,8 @@ typedef struct { /* 0x160 */ u8 ATTRIBUTE_ALIGN(32) mess_pal[10][3]; } WindowData; // Size 0x180 -extern WindowData winData[32]; -extern void *messDataPtr; +SHARED_SYM extern WindowData winData[32]; +SHARED_SYM extern void *messDataPtr; void HuWindowInit(void); void HuWinInit(s32 mess_data_no); @@ -139,6 +140,4 @@ void HuWinExCleanup(s16 window); void HuWinExAnimPopIn(s16 window, s16 portrait); void *MessData_MesPtrGet(void *data, u32 index); -extern void *messDataPtr; - #endif diff --git a/include/game/wipe.h b/include/game/wipe.h index baafbe25..52f2f985 100644 --- a/include/game/wipe.h +++ b/include/game/wipe.h @@ -2,6 +2,7 @@ #define _GAME_WIPE_H #include "dolphin.h" +#include "version.h" #define WIPE_TYPE_PREV -1 #define WIPE_TYPE_NORMAL 0 @@ -37,7 +38,7 @@ void WipeCreate(s16 mode, s16 type, s16 duration); void WipeColorSet(u8 r, u8 g, u8 b); u8 WipeStatGet(void); -extern WipeState wipeData; +SHARED_SYM extern WipeState wipeData; extern BOOL wipeFadeInF; #endif diff --git a/include/ovl_table.h b/include/ovl_table.h index fe695ea9..d391d305 100644 --- a/include/ovl_table.h +++ b/include/ovl_table.h @@ -1,108 +1,108 @@ #include "version.h" -OVL_DEFINE(OVL__MINI, "dll/_minigameDLL.rel") -OVL_DEFINE(OVL_BOOT, "dll/bootdll.rel") -OVL_DEFINE(OVL_E3SETUP, "dll/e3setupDLL.rel") -OVL_DEFINE(OVL_INST, "dll/instdll.rel") -OVL_DEFINE(OVL_M300, "dll/m300dll.rel") -OVL_DEFINE(OVL_M302, "dll/m302dll.rel") -OVL_DEFINE(OVL_M303, "dll/m303dll.rel") -OVL_DEFINE(OVL_M330, "dll/m330dll.rel") -OVL_DEFINE(OVL_M333, "dll/m333dll.rel") -OVL_DEFINE(OVL_M401, "dll/m401dll.rel") -OVL_DEFINE(OVL_M402, "dll/m402dll.rel") -OVL_DEFINE(OVL_M403, "dll/m403dll.rel") -OVL_DEFINE(OVL_M404, "dll/m404dll.rel") -OVL_DEFINE(OVL_M405, "dll/m405dll.rel") -OVL_DEFINE(OVL_M406, "dll/m406dll.rel") -OVL_DEFINE(OVL_M407, "dll/m407dll.rel") -OVL_DEFINE(OVL_M408, "dll/m408dll.rel") -OVL_DEFINE(OVL_M409, "dll/m409dll.rel") -OVL_DEFINE(OVL_M410, "dll/m410dll.rel") -OVL_DEFINE(OVL_M411, "dll/m411dll.rel") -OVL_DEFINE(OVL_M412, "dll/m412dll.rel") -OVL_DEFINE(OVL_M413, "dll/m413dll.rel") -OVL_DEFINE(OVL_M414, "dll/m414dll.rel") -OVL_DEFINE(OVL_M415, "dll/m415dll.rel") -OVL_DEFINE(OVL_M416, "dll/m416dll.rel") -OVL_DEFINE(OVL_M417, "dll/m417dll.rel") -OVL_DEFINE(OVL_M418, "dll/m418dll.rel") -OVL_DEFINE(OVL_M419, "dll/m419dll.rel") -OVL_DEFINE(OVL_M420, "dll/m420dll.rel") -OVL_DEFINE(OVL_M421, "dll/m421dll.rel") -OVL_DEFINE(OVL_M422, "dll/m422dll.rel") -OVL_DEFINE(OVL_M423, "dll/m423dll.rel") -OVL_DEFINE(OVL_M424, "dll/m424dll.rel") -OVL_DEFINE(OVL_M425, "dll/m425dll.rel") -OVL_DEFINE(OVL_M426, "dll/m426dll.rel") -OVL_DEFINE(OVL_M427, "dll/m427dll.rel") -OVL_DEFINE(OVL_M428, "dll/m428dll.rel") -OVL_DEFINE(OVL_M429, "dll/m429dll.rel") -OVL_DEFINE(OVL_M430, "dll/m430dll.rel") -OVL_DEFINE(OVL_M431, "dll/m431dll.rel") -OVL_DEFINE(OVL_M432, "dll/m432dll.rel") -OVL_DEFINE(OVL_M433, "dll/m433dll.rel") -OVL_DEFINE(OVL_M434, "dll/m434dll.rel") -OVL_DEFINE(OVL_M435, "dll/m435dll.rel") -OVL_DEFINE(OVL_M436, "dll/m436dll.rel") -OVL_DEFINE(OVL_M437, "dll/m437dll.rel") -OVL_DEFINE(OVL_M438, "dll/m438dll.rel") -OVL_DEFINE(OVL_M439, "dll/m439dll.rel") -OVL_DEFINE(OVL_M440, "dll/m440dll.rel") -OVL_DEFINE(OVL_M441, "dll/m441dll.rel") -OVL_DEFINE(OVL_M442, "dll/m442dll.rel") -OVL_DEFINE(OVL_M443, "dll/m443dll.rel") -OVL_DEFINE(OVL_M444, "dll/m444dll.rel") -OVL_DEFINE(OVL_M445, "dll/m445dll.rel") -OVL_DEFINE(OVL_M446, "dll/m446dll.rel") -OVL_DEFINE(OVL_M447, "dll/m447dll.rel") -OVL_DEFINE(OVL_M448, "dll/m448dll.rel") -OVL_DEFINE(OVL_M449, "dll/m449dll.rel") -OVL_DEFINE(OVL_M450, "dll/m450dll.rel") -OVL_DEFINE(OVL_M451, "dll/m451dll.rel") -OVL_DEFINE(OVL_M453, "dll/m453dll.rel") -OVL_DEFINE(OVL_M455, "dll/m455dll.rel") -OVL_DEFINE(OVL_M456, "dll/m456dll.rel") -OVL_DEFINE(OVL_M457, "dll/m457dll.rel") -OVL_DEFINE(OVL_M458, "dll/m458dll.rel") -OVL_DEFINE(OVL_M459, "dll/m459dll.rel") -OVL_DEFINE(OVL_M460, "dll/m460dll.rel") -OVL_DEFINE(OVL_M461, "dll/m461dll.rel") -OVL_DEFINE(OVL_M462, "dll/m462dll.rel") -OVL_DEFINE(OVL_M463, "dll/m463dll.rel") -OVL_DEFINE(OVL_MENT, "dll/mentdll.rel") +OVL_DEFINE(OVL__MINI, "_minigameDLL") +OVL_DEFINE(OVL_BOOT, "bootdll") +OVL_DEFINE(OVL_E3SETUP, "e3setupDLL") +OVL_DEFINE(OVL_INST, "instdll") +OVL_DEFINE(OVL_M300, "m300dll") +OVL_DEFINE(OVL_M302, "m302dll") +OVL_DEFINE(OVL_M303, "m303dll") +OVL_DEFINE(OVL_M330, "m330dll") +OVL_DEFINE(OVL_M333, "m333dll") +OVL_DEFINE(OVL_M401, "m401dll") +OVL_DEFINE(OVL_M402, "m402dll") +OVL_DEFINE(OVL_M403, "m403dll") +OVL_DEFINE(OVL_M404, "m404dll") +OVL_DEFINE(OVL_M405, "m405dll") +OVL_DEFINE(OVL_M406, "m406dll") +OVL_DEFINE(OVL_M407, "m407dll") +OVL_DEFINE(OVL_M408, "m408dll") +OVL_DEFINE(OVL_M409, "m409dll") +OVL_DEFINE(OVL_M410, "m410dll") +OVL_DEFINE(OVL_M411, "m411dll") +OVL_DEFINE(OVL_M412, "m412dll") +OVL_DEFINE(OVL_M413, "m413dll") +OVL_DEFINE(OVL_M414, "m414dll") +OVL_DEFINE(OVL_M415, "m415dll") +OVL_DEFINE(OVL_M416, "m416dll") +OVL_DEFINE(OVL_M417, "m417dll") +OVL_DEFINE(OVL_M418, "m418dll") +OVL_DEFINE(OVL_M419, "m419dll") +OVL_DEFINE(OVL_M420, "m420dll") +OVL_DEFINE(OVL_M421, "m421dll") +OVL_DEFINE(OVL_M422, "m422dll") +OVL_DEFINE(OVL_M423, "m423dll") +OVL_DEFINE(OVL_M424, "m424dll") +OVL_DEFINE(OVL_M425, "m425dll") +OVL_DEFINE(OVL_M426, "m426dll") +OVL_DEFINE(OVL_M427, "m427dll") +OVL_DEFINE(OVL_M428, "m428dll") +OVL_DEFINE(OVL_M429, "m429dll") +OVL_DEFINE(OVL_M430, "m430dll") +OVL_DEFINE(OVL_M431, "m431dll") +OVL_DEFINE(OVL_M432, "m432dll") +OVL_DEFINE(OVL_M433, "m433dll") +OVL_DEFINE(OVL_M434, "m434dll") +OVL_DEFINE(OVL_M435, "m435dll") +OVL_DEFINE(OVL_M436, "m436dll") +OVL_DEFINE(OVL_M437, "m437dll") +OVL_DEFINE(OVL_M438, "m438dll") +OVL_DEFINE(OVL_M439, "m439dll") +OVL_DEFINE(OVL_M440, "m440dll") +OVL_DEFINE(OVL_M441, "m441dll") +OVL_DEFINE(OVL_M442, "m442dll") +OVL_DEFINE(OVL_M443, "m443dll") +OVL_DEFINE(OVL_M444, "m444dll") +OVL_DEFINE(OVL_M445, "m445dll") +OVL_DEFINE(OVL_M446, "m446dll") +OVL_DEFINE(OVL_M447, "m447dll") +OVL_DEFINE(OVL_M448, "m448dll") +OVL_DEFINE(OVL_M449, "m449dll") +OVL_DEFINE(OVL_M450, "m450dll") +OVL_DEFINE(OVL_M451, "m451dll") +OVL_DEFINE(OVL_M453, "m453dll") +OVL_DEFINE(OVL_M455, "m455dll") +OVL_DEFINE(OVL_M456, "m456dll") +OVL_DEFINE(OVL_M457, "m457dll") +OVL_DEFINE(OVL_M458, "m458dll") +OVL_DEFINE(OVL_M459, "m459dll") +OVL_DEFINE(OVL_M460, "m460dll") +OVL_DEFINE(OVL_M461, "m461dll") +OVL_DEFINE(OVL_M462, "m462dll") +OVL_DEFINE(OVL_M463, "m463dll") +OVL_DEFINE(OVL_MENT, "mentdll") #if VERSION_JP -OVL_DEFINE(OVL_MGMODE, "dll/mgmodedll.rel") -OVL_DEFINE(OVL_MODELTEST, "dll/modeltestdll.rel") -OVL_DEFINE(OVL_MODESEL, "dll/modeseldll.rel") -OVL_DEFINE(OVL_MOVIE, "dll/moviedll.rel") +OVL_DEFINE(OVL_MGMODE, "mgmodedll") +OVL_DEFINE(OVL_MODELTEST, "modeltestdll") +OVL_DEFINE(OVL_MODESEL, "modeseldll") +OVL_DEFINE(OVL_MOVIE, "moviedll") #else -OVL_DEFINE(OVL_MESS, "dll/messdll.rel") -OVL_DEFINE(OVL_MGMODE, "dll/mgmodedll.rel") -OVL_DEFINE(OVL_MODELTEST, "dll/modeltestdll.rel") -OVL_DEFINE(OVL_MODESEL, "dll/modeseldll.rel") +OVL_DEFINE(OVL_MESS, "messdll") +OVL_DEFINE(OVL_MGMODE, "mgmodedll") +OVL_DEFINE(OVL_MODELTEST, "modeltestdll") +OVL_DEFINE(OVL_MODESEL, "modeseldll") #endif -OVL_DEFINE(OVL_MPEX, "dll/mpexdll.rel") -OVL_DEFINE(OVL_MSETUP, "dll/msetupdll.rel") -OVL_DEFINE(OVL_MSTORY2, "dll/mstory2dll.rel") -OVL_DEFINE(OVL_MSTORY3, "dll/mstory3dll.rel") -OVL_DEFINE(OVL_MSTORY4, "dll/mstory4dll.rel") -OVL_DEFINE(OVL_MSTORY, "dll/mstorydll.rel") -OVL_DEFINE(OVL_NIS, "dll/nisdll.rel") -OVL_DEFINE(OVL_OPTION, "dll/option.rel") -OVL_DEFINE(OVL_PRESENT, "dll/present.rel") -OVL_DEFINE(OVL_RESULT, "dll/resultdll.rel") -OVL_DEFINE(OVL_SAF, "dll/safdll.rel") -OVL_DEFINE(OVL_SELMENU, "dll/selmenuDLL.rel") -OVL_DEFINE(OVL_STAFF, "dll/staffdll.rel") -OVL_DEFINE(OVL_SUBCHRSEL, "dll/subchrseldll.rel") -OVL_DEFINE(OVL_W01, "dll/w01dll.rel") -OVL_DEFINE(OVL_W02, "dll/w02dll.rel") -OVL_DEFINE(OVL_W03, "dll/w03dll.rel") -OVL_DEFINE(OVL_W04, "dll/w04dll.rel") -OVL_DEFINE(OVL_W05, "dll/w05dll.rel") -OVL_DEFINE(OVL_W06, "dll/w06dll.rel") -OVL_DEFINE(OVL_W10, "dll/w10dll.rel") -OVL_DEFINE(OVL_W20, "dll/w20dll.rel") -OVL_DEFINE(OVL_W21, "dll/w21dll.rel") -OVL_DEFINE(OVL_ZTAR, "dll/ztardll.rel") +OVL_DEFINE(OVL_MPEX, "mpexdll") +OVL_DEFINE(OVL_MSETUP, "msetupdll") +OVL_DEFINE(OVL_MSTORY2, "mstory2dll") +OVL_DEFINE(OVL_MSTORY3, "mstory3dll") +OVL_DEFINE(OVL_MSTORY4, "mstory4dll") +OVL_DEFINE(OVL_MSTORY, "mstorydll") +OVL_DEFINE(OVL_NIS, "nisdll") +OVL_DEFINE(OVL_OPTION, "option") +OVL_DEFINE(OVL_PRESENT, "present") +OVL_DEFINE(OVL_RESULT, "resultdll") +OVL_DEFINE(OVL_SAF, "safdll") +OVL_DEFINE(OVL_SELMENU, "selmenuDLL") +OVL_DEFINE(OVL_STAFF, "staffdll") +OVL_DEFINE(OVL_SUBCHRSEL, "subchrseldll") +OVL_DEFINE(OVL_W01, "w01dll") +OVL_DEFINE(OVL_W02, "w02dll") +OVL_DEFINE(OVL_W03, "w03dll") +OVL_DEFINE(OVL_W04, "w04dll") +OVL_DEFINE(OVL_W05, "w05dll") +OVL_DEFINE(OVL_W06, "w06dll") +OVL_DEFINE(OVL_W10, "w10dll") +OVL_DEFINE(OVL_W20, "w20dll") +OVL_DEFINE(OVL_W21, "w21dll") +OVL_DEFINE(OVL_ZTAR, "ztardll") diff --git a/include/port/byteswap.h b/include/port/byteswap.h new file mode 100644 index 00000000..bbdec9a1 --- /dev/null +++ b/include/port/byteswap.h @@ -0,0 +1,352 @@ +#ifndef _SRC_BYTESWAP_H_ +#define _SRC_BYTESWAP_H_ + +#ifdef __cplusplus +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; + u32 part; + float index; + float weight[32]; + u8 adjusted; + u8 unk95; + u16 type; + u32 vertexCnt; + u32 vertex; +} HsfCluster32b; + +typedef struct HsfAttribute32b { + u32 name; + u32 unk04; + u8 unk8[4]; + float unk0C; + u8 unk10[4]; + float unk14; + u8 unk18[8]; + float unk20; + u8 unk24[4]; + float unk28; + float unk2C; + float unk30; + float unk34; + u8 unk38[44]; + u32 wrap_s; + u32 wrap_t; + u8 unk6C[12]; + u32 unk78; + u32 flag; + u32 bitmap; +} HsfAttribute32b; + +typedef struct HsfMaterial32b { + u32 name; + u8 unk4[4]; + u16 pass; + u8 vtxMode; + u8 litColor[3]; + u8 color[3]; + u8 shadowColor[3]; + float hilite_scale; + float unk18; + float invAlpha; + float unk20[2]; + float refAlpha; + float unk2C; + u32 flags; + u32 numAttrs; + u32 attrs; +} HsfMaterial32b; + +typedef struct HsfMapAttr32b { + float minX; + float minZ; + float maxX; + float maxZ; + u32 data; + u32 dataLen; +} HsfMapAttr32b; + +typedef struct HsfBuffer32b { + u32 name; + s32 count; + u32 data; +} HsfBuffer32b; + +typedef struct HsfPalette32b { + u32 name; + s32 unk; + u32 palSize; + u32 data; +} HsfPalette32b; + +typedef struct HsfBitmap32b { + u32 name; + u32 maxLod; + u8 dataFmt; + u8 pixSize; + s16 sizeX; + s16 sizeY; + s16 palSize; + GXColor tint; + u32 palData; + u32 unk; + u32 data; +} HsfBitmap32b; + +typedef struct HsfPart32b { + u32 name; + u32 count; + u32 vertex; +} HsfPart32b; + +typedef struct HsfSkeleton32b { + u32 name; + HsfTransform transform; +} HsfSkeleton32b; + +typedef struct HsfShape32b { + u32 name; + union { + u16 count16[2]; + u32 vertexCnt; + }; + u32 vertex; +} HsfShape32b; + +typedef struct HsfCenvDual32b { + u32 target1; + u32 target2; + u32 weightCnt; + u32 weight; +} HsfCenvDual32b; + +typedef struct HsfCenvMulti32b { + u32 weightCnt; + u16 pos; + u16 posCnt; + u16 normal; + u16 normalCnt; + u32 weight; +} HsfCenvMulti32b; + +typedef struct HsfCenv32b { + u32 name; + u32 singleData; + u32 dualData; + u32 multiData; + u32 singleCount; + u32 dualCount; + u32 multiCount; + u32 vtxCount; + u32 copyCount; +} HsfCenv32b; + +typedef struct HsfObjectData32b { + u32 parent; + u32 childrenCount; + u32 children; + HsfTransform base; + HsfTransform curr; + union { + struct { + HsfVector3f min; + HsfVector3f max; + float baseMorph; + float morphWeight[33]; + } mesh; + u32 replica; + }; + + u32 face; + u32 vertex; + u32 normal; + u32 color; + u32 st; + u32 material; + u32 attribute; + u8 unk120[2]; + u8 shapeType; + u8 unk123; + u32 vertexShapeCnt; + u32 vertexShape; + u32 clusterCnt; + u32 cluster; + u32 cenvCnt; + u32 cenv; + u32 vtxtop; + u32 normtop; +} HsfObjectData32b; + +typedef struct HsfObject32b { + u32 name; + u32 type; + u32 constData; + u32 flags; + HsfObjectData32b data; +} HsfObject32b; + +typedef struct HsfTrack32b { + u8 type; + u8 start; + union { + u16 target; + s16 target_s16; + }; + union { + s32 unk04; + struct { + union { + s16 param; + u16 param_u16; + }; + union { + u16 channel; + s16 channel_s16; + }; + }; + }; + u16 curveType; + u16 numKeyframes; + union { + float value; + u32 data; + }; +} HsfTrack32b; + +typedef struct HsfMotion32b { + u32 name; + s32 numTracks; + u32 track; + float len; +} HsfMotion32b; + +typedef struct HsfBitmapKey32b { + float time; + u32 data; +} HsfBitmapKey32b; + +typedef struct HsfFace32b { + s16 type; + s16 mat; + union { + struct { + s16 indices[3][4]; + u32 count; + u32 data; + } strip; + s16 indices[4][4]; + }; + Vec nbt; +} HsfFace32b; + +typedef struct HsfMatrix32b { + u32 base_idx; + u32 count; + u32 data; +} HsfMatrix32b; + +void byteswap_u16(u16 *src); +void byteswap_s16(s16 *src); +void byteswap_u32(u32 *src); +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(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); + +void byteswap_hsfheader(HsfHeader *src); +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(HsfMatrix32b *src, HsfMatrix *dest); +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); +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_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_dual_weight(HsfCenvDualWeight *src); +void byteswap_hsfcenv_dual(HsfCenvDual32b *src, HsfCenvDual *dest); +void byteswap_hsfcenv_multi_weight(HsfCenvMultiWeight *src); +void byteswap_hsfcenv_multi(HsfCenvMulti32b *src, HsfCenvMulti *dest); +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 +} +#endif + +#endif diff --git a/include/port/imgui.h b/include/port/imgui.h new file mode 100644 index 00000000..5c761fb0 --- /dev/null +++ b/include/port/imgui.h @@ -0,0 +1,18 @@ +#ifndef _SRC_IMGUI_H_ +#define _SRC_IMGUI_H_ + +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + + void imgui_main(const AuroraInfo* info); + void frame_limiter(); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/types.h b/include/types.h index 349256d9..462b4f66 100644 --- a/include/types.h +++ b/include/types.h @@ -1,8 +1,6 @@ #ifndef _TYPES_H_ #define _TYPES_H_ -#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) - #include "dolphin/types.h" #endif diff --git a/include/version.h b/include/version.h index 209a7d53..8a25ab40 100644 --- a/include/version.h +++ b/include/version.h @@ -21,4 +21,15 @@ #define REFRESH_RATE 60 #endif +#if _WIN32 +#ifdef TARGET_DOL +#define SHARED_SYM __declspec(dllexport) +#else +#define SHARED_SYM __declspec(dllimport) +#endif + +#else + #define SHARED_SYM +#endif + #endif diff --git a/include/ctype.h b/libc/ctype.h similarity index 100% rename from include/ctype.h rename to libc/ctype.h diff --git a/include/float.h b/libc/float.h similarity index 100% rename from include/float.h rename to libc/float.h diff --git a/include/math.h b/libc/math.h similarity index 98% rename from include/math.h rename to libc/math.h index 5ac49892..5722be26 100644 --- a/include/math.h +++ b/libc/math.h @@ -1,8 +1,6 @@ #ifndef _MATH_H #define _MATH_H -#define M_PI 3.141592653589793 - #ifndef _MATH_INLINE #define _MATH_INLINE static inline #endif diff --git a/include/stdarg.h b/libc/stdarg.h similarity index 100% rename from include/stdarg.h rename to libc/stdarg.h diff --git a/include/stddef.h b/libc/stddef.h similarity index 100% rename from include/stddef.h rename to libc/stddef.h diff --git a/include/stdint.h b/libc/stdint.h similarity index 100% rename from include/stdint.h rename to libc/stdint.h diff --git a/include/stdio.h b/libc/stdio.h similarity index 100% rename from include/stdio.h rename to libc/stdio.h diff --git a/include/stdlib.h b/libc/stdlib.h similarity index 100% rename from include/stdlib.h rename to libc/stdlib.h diff --git a/include/string.h b/libc/string.h similarity index 100% rename from include/string.h rename to libc/string.h 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/E3setupDLL/main.c b/src/REL/E3setupDLL/main.c index a080e2de..8ad28587 100644 --- a/src/REL/E3setupDLL/main.c +++ b/src/REL/E3setupDLL/main.c @@ -14,6 +14,10 @@ #include "REL/E3SetupDLL.h" +#ifndef __MWERKS__ +void HuSysVWaitSet(s16 vcount); +#endif + static struct { s16 playerCnt; s16 rumble; @@ -300,7 +304,7 @@ float MotionMaxTimeGet(s16 arg0) HsfMotion *temp_r30; s16 temp_r29; - temp_r30 = temp_r31->unk_04->motion; + temp_r30 = temp_r31->hsfData->motion; temp_r29 = temp_r30->len; return temp_r29; } diff --git a/src/REL/E3setupDLL/mgselect.c b/src/REL/E3setupDLL/mgselect.c index 3c8bb026..9cedbc78 100644 --- a/src/REL/E3setupDLL/mgselect.c +++ b/src/REL/E3setupDLL/mgselect.c @@ -1,4 +1,7 @@ #include "ext_math.h" +#include "game/audio.h" +#include "game/frand.h" +#include "game/gamework.h" #include "game/gamework_data.h" #include "game/hsfman.h" #include "game/init.h" @@ -9,6 +12,10 @@ #include "REL/E3SetupDLL.h" +#ifndef __MWERKS__ +void HuSysVWaitSet(s16 vcount); +#endif + static s16 mgDefault; static omObjData *mgInterfaceObj; static omObjData *mgSelectObj; 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 ee8b1b04..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" @@ -23,7 +24,7 @@ #define HU_PAD_BTNDOWN_ALL (HuPadBtnDown[0] | HuPadBtnDown[1] | HuPadBtnDown[2] | HuPadBtnDown[3]) #define HU_PAD_DSTK_ALL (HuPadDStkRep[0] | HuPadDStkRep[1] | HuPadDStkRep[2] | HuPadDStkRep[3]) -extern int SystemInitF; +SHARED_SYM extern int SystemInitF; static omObjData *debugOutView; Process *objman; @@ -82,706 +83,734 @@ void ObjectSetup(void) #endif } -#if VERSION_PAL -s32 LanguageBootGet(void); -BOOL LanguageMenuExec(void); + #if VERSION_PAL + s32 LanguageBootGet(void); + BOOL LanguageMenuExec(void); + #endif + + void BootExec(void) + { + AnimData *data; + s16 group; + s16 sprite_nintendo; + s16 sprite_hudson; + s16 i; + OSTick tick_prev; + Process *curr = HuPrcCurrentGet(); + #if VERSION_NTSC + if (omovlevtno == 0) { + BootProgExec(); + } + #else + if(SystemInitF == FALSE) { + GwLanguage = LanguageBootGet(); + if(GwLanguage == -1) { + if(LanguageMenuExec()) { + SystemInitF = TRUE; + } + } else { + GWLanguageSet(GwLanguage); + } + } + #endif + group = HuSprGrpCreate(2); + data = HuSprAnimRead(NintendoDataDecode()); + sprite_nintendo = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 0, sprite_nintendo); + HuSprPosSet(group, 0, 288, 240); + HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); + if (omovlevtno != 0) { + HuAudSndGrpSetSet(0); + data = HuSprAnimReadFile(TITLE_HUDSON_ANM); + sprite_hudson = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 1, sprite_hudson); + HuSprPosSet(group, 1, 288, 240); + HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); + HuWinInit(1); + BootTitleCreate(); + SystemInitF = 1; + } + else { + s16 group_thp; + BOOL skip_wait; + float win_size[2]; + s16 sprite_thp; + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].pad_idx = i; + } + #if VERSION_PAL + if(SystemInitF) { + data = HuSprAnimReadFile(TITLE_HUDSON_ANM); + sprite_hudson = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 1, sprite_hudson); + HuSprPosSet(group, 1, 288, 240); + HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); + HuAudSndGrpSetSet(0); + BootTitleCreate(); + HuWinInit(1); + } + #endif + repeat: + HuSprAttrReset(group, 0, HUSPR_ATTR_DISPOFF); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + WipeColorSet(255, 255, 255); + if (!SystemInitF) { + tick_prev = OSGetTick(); + CharManInit(); + HuWindowInit(); + MGSeqInit(); + HuWinInit(1); + BootTitleCreate(); + data = HuSprAnimReadFile(TITLE_HUDSON_ANM); + sprite_hudson = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 1, sprite_hudson); + HuSprPosSet(group, 1, 288, 240); + HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); + while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { + HuPrcVSleep(); + } + } + else { + for (i = 0; i < 180; i++) { + #if VERSION_NTSC + if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { + break; + } + #else + if (initLanguageF && (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A))) { + break; + } + #endif + HuPrcVSleep(); + } + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(group, 1, HUSPR_ATTR_DISPOFF); + HuPrcSleep(60); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + if (!SystemInitF) { +#ifdef __MWERKS__ + // TODO PC + void *group_samp; #endif - -void BootExec(void) -{ - AnimData *data; - s16 group; - s16 sprite_nintendo; - s16 sprite_hudson; - s16 i; - OSTick tick_prev; - Process *curr = HuPrcCurrentGet(); - #if VERSION_NTSC - if (omovlevtno == 0) { - BootProgExec(); - } - #else - if(SystemInitF == FALSE) { - GwLanguage = LanguageBootGet(); - if(GwLanguage == -1) { - if(LanguageMenuExec()) { - SystemInitF = TRUE; - } - } else { - GWLanguageSet(GwLanguage); - } - } - #endif - group = HuSprGrpCreate(2); - data = HuSprAnimRead(NintendoDataDecode()); - sprite_nintendo = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 0, sprite_nintendo); - HuSprPosSet(group, 0, 288, 240); - HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); - if (omovlevtno != 0) { - HuAudSndGrpSetSet(0); - data = HuSprAnimReadFile(TITLE_HUDSON_ANM); - sprite_hudson = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 1, sprite_hudson); - HuSprPosSet(group, 1, 288, 240); - HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); - HuWinInit(1); - BootTitleCreate(); - SystemInitF = 1; - } - else { - s16 group_thp; - BOOL skip_wait; - float win_size[2]; - s16 sprite_thp; - for (i = 0; i < 4; i++) { - GWPlayerCfg[i].pad_idx = i; - } - #if VERSION_PAL - if(SystemInitF) { - data = HuSprAnimReadFile(TITLE_HUDSON_ANM); - sprite_hudson = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 1, sprite_hudson); - HuSprPosSet(group, 1, 288, 240); - HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); - HuAudSndGrpSetSet(0); - BootTitleCreate(); - HuWinInit(1); - } - #endif - repeat: - HuSprAttrReset(group, 0, HUSPR_ATTR_DISPOFF); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - WipeColorSet(255, 255, 255); - if (!SystemInitF) { - tick_prev = OSGetTick(); - CharManInit(); - HuWindowInit(); - MGSeqInit(); - HuWinInit(1); - BootTitleCreate(); - data = HuSprAnimReadFile(TITLE_HUDSON_ANM); - sprite_hudson = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 1, sprite_hudson); - HuSprPosSet(group, 1, 288, 240); - HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); - while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { - HuPrcVSleep(); - } - } - else { - for (i = 0; i < 180; i++) { - #if VERSION_NTSC - if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { - break; - } - #else - if (initLanguageF && (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A))) { - break; - } - #endif - HuPrcVSleep(); - } - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrReset(group, 1, HUSPR_ATTR_DISPOFF); - HuPrcSleep(60); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - if (!SystemInitF) { - void *group_samp; - tick_prev = OSGetTick(); - group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0)); - msmSysLoadGroup(0, group_samp, 0); - HuMemDirectFree(group_samp); - while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { - HuPrcVSleep(); - } - } - else { - for (i = 0; i < 180; i++) { - #if VERSION_NTSC - if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { - break; - } - #else - if (initLanguageF && (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A))) { - break; - } - #endif - HuPrcVSleep(); - } - } - #if VERSION_PAL - initLanguageF = TRUE; - #endif - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - tick_prev = OSGetTick(); - if (!SystemInitF) { - HuAudSndGrpSetSet(0); - SystemInitF = 1; - } - while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 1000) { - HuPrcVSleep(); - } - HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); - group_thp = HuSprGrpCreate(1); - sprite_thp = HuTHPSprCreateVol("movie/opmov_a00.thp", 0, 100, 122); - HuSprGrpMemberSet(group_thp, 0, sprite_thp); - HuSprPosSet(group_thp, 0, 288, 240); - HuWinMesMaxSizeBetGet(win_size, MAKE_MESSID(54, 0), MAKE_MESSID(54, 4)); - demoWinId = HuWinCreate(-10000, 448 - win_size[1], win_size[0], win_size[1], 0); - HuWinMesSpeedSet(demoWinId, 0); - HuWinBGTPLvlSet(demoWinId, 0); - HuWinPriSet(demoWinId, 10); - HuWinAttrSet(demoWinId, 0x800); - HuPrcSleep(5); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); - while (WipeStatGet()) { - HuPrcVSleep(); - } - skip_wait = FALSE; - while (!HuTHPEndCheck()) { - UpdateDemoMess(); - if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { - skip_wait = TRUE; - break; - } - HuPrcVSleep(); - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - HuWinKill(demoWinId); - HuTHPClose(); - HuPrcVSleep(); - HuSprGrpKill(group_thp); - if (!skip_wait) { - HuPrcSleep(60); - } - skip_wait = FALSE; - } - if (!BootTitleExec()) { - HuPrcSleep(60); - goto repeat; - } - WipeColorSet(255, 255, 255); - HuAudSStreamAllFadeOut(500); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - HuPrcVSleep(); - if (omSysExitReq) { - omOvlReturnEx(1, 1); - } - else { - omOvlCallEx(OVL_MODESEL, 1, 0, 0); - } - for (i = 0; i < 4; i++) { - GWPlayerCfg[i].character = -1; - } - HuPrcEnd(); - do { - HuPrcVSleep(); - } while (1); -} - -static s16 demoMessTimeTbl[] = { - 1686, - 1785, - 1850, - 1936, - 1993, - 2097, - 2135, - 2245, - 2258, - 2320, - -1, - -1, -}; - -static void UpdateDemoMess(void) -{ - int frame = HuTHPFrameGet(); - int i; - for (i = 0; demoMessTimeTbl[i * 2] != -1; i++) { - if (frame == demoMessTimeTbl[i * 2]) { - HuWinMesSet(demoWinId, MAKE_MESSID(54, i)); - } - if (frame == demoMessTimeTbl[(i * 2) + 1]) { - HuWinHomeClear(demoWinId); - } - } -} - -#if VERSION_NTSC - -static u16 progPosTbl[] = { 236, 313, 353, 313 }; - -void BootProgExec(void) -{ - s16 i; - s16 option; - s16 group; - s16 sprite; - AnimData *data; - option = 0; - if (OSGetResetCode() != OS_RESET_RESTART) { - return; - } - if (VIGetDTVStatus() != VI_NON_INTERLACE) { - OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); - return; - } - if (OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_OFF && !(HU_PAD_BTN_ALL & PAD_BUTTON_B)) { - return; - } - if (OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_ON) { - VIConfigure(&GXNtsc480IntDf); - VIFlush(); - } - group = HuSprGrpCreate(3); - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CHOOSE_ANM); - sprite = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 0, sprite); - HuSprPosSet(group, 0, 288, 240); - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_ON_ANM); - sprite = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 1, sprite); - HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_OFF_ANM); - sprite = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 2, sprite); - HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); - HuSprAttrSet(group, 2, HUSPR_ATTR_DISPOFF); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - for (i = 0; i < 600; i++) { - if (HU_PAD_DSTK_ALL & (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT)) { - option ^= 1; - HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); - i = 0; - } - if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { - HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); - HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); - HuSprAttrReset(group, 2, HUSPR_ATTR_DISPOFF); - break; - } - HuPrcVSleep(); - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); - while (WipeStatGet()) { - HuPrcVSleep(); - } - if (!option) { - OSSetProgressiveMode(OS_PROGRESSIVE_MODE_ON); - VIConfigure(&GXNtsc480Prog); - VIFlush(); - HuPrcSleep(100); - } - else { - OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); - } - HuSprGrpKill(group); - group = HuSprGrpCreate(1); - if (!option) { - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_ON_ANM); - } - else { - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_OFF_ANM); - } - sprite = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 0, sprite); - HuSprPosSet(group, 0, 288, 240); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); - while (WipeStatGet()) { - HuPrcVSleep(); - } - HuPrcSleep(60); - for (i = 0; i < 180; i++) { - if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { - break; - } - HuPrcVSleep(); - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - HuSprGrpKill(group); - HuPrcSleep(30); -} - + tick_prev = OSGetTick(); +#ifdef __MWERKS__ + // TODO PC + group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0)); + msmSysLoadGroup(0, group_samp, 0); + HuMemDirectFree(group_samp); #endif + while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { + HuPrcVSleep(); + } + } + else { + for (i = 0; i < 180; i++) { + #if VERSION_NTSC + if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { + break; + } + #else + if (initLanguageF && (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A))) { + break; + } + #endif + HuPrcVSleep(); + } + } + #if VERSION_PAL + initLanguageF = TRUE; + #endif + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + tick_prev = OSGetTick(); + if (!SystemInitF) { + HuAudSndGrpSetSet(0); + SystemInitF = 1; + } + while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 1000) { + HuPrcVSleep(); + } + HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); + group_thp = HuSprGrpCreate(1); +#ifdef __MWERKS__ + // TODO PC + sprite_thp = HuTHPSprCreateVol("movie/opmov_a00.thp", 0, 100, 122); + HuSprGrpMemberSet(group_thp, 0, sprite_thp); + HuSprPosSet(group_thp, 0, 288, 240); + HuWinMesMaxSizeBetGet(win_size, MAKE_MESSID(54, 0), MAKE_MESSID(54, 4)); + demoWinId = HuWinCreate(-10000, 448 - win_size[1], win_size[0], win_size[1], 0); + HuWinMesSpeedSet(demoWinId, 0); + HuWinBGTPLvlSet(demoWinId, 0); + HuWinPriSet(demoWinId, 10); + HuWinAttrSet(demoWinId, 0x800); +#endif + HuPrcSleep(5); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet()) { + HuPrcVSleep(); + } + skip_wait = FALSE; + while (!HuTHPEndCheck()) { + UpdateDemoMess(); + if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { + skip_wait = TRUE; + break; + } + HuPrcVSleep(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuWinKill(demoWinId); + HuTHPClose(); + HuPrcVSleep(); + HuSprGrpKill(group_thp); + if (!skip_wait) { + HuPrcSleep(60); + } + skip_wait = FALSE; + } + if (!BootTitleExec()) { + HuPrcSleep(60); + goto repeat; + } + WipeColorSet(255, 255, 255); + HuAudSStreamAllFadeOut(500); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuPrcVSleep(); + if (omSysExitReq) { + omOvlReturnEx(1, 1); + } + else { + omOvlCallEx(OVL_MODESEL, 1, 0, 0); + } + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].character = -1; + } + HuPrcEnd(); + do { + HuPrcVSleep(); + } while (1); + } -static u16 debugCamTbl[] = { 1, 2 }; + static s16 demoMessTimeTbl[] = { + 1686, + 1785, + 1850, + 1936, + 1993, + 2097, + 2135, + 2245, + 2258, + 2320, + -1, + -1, + }; -void DebugCamOutView(omObjData *obj) -{ - s16 i; - for (i = 0; i < 1; i++) { - Vec pos, target, up; - float x, y, z; + static void UpdateDemoMess(void) + { + int frame = HuTHPFrameGet(); + int i; + for (i = 0; demoMessTimeTbl[i * 2] != -1; i++) { + if (frame == demoMessTimeTbl[i * 2]) { + HuWinMesSet(demoWinId, MAKE_MESSID(54, i)); + } + if (frame == demoMessTimeTbl[(i * 2) + 1]) { + HuWinHomeClear(demoWinId); + } + } + } - x = debugCamRot[i].x; - y = debugCamRot[i].y; - z = debugCamRot[i].z; + #if VERSION_NTSC - pos.x = (((sind(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].x); - pos.y = (-sind(x) * debugCamZoom[i]) + debugCamPos[i].y; - pos.z = ((cosd(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].z; - target.x = debugCamPos[i].x; - target.y = debugCamPos[i].y; - target.z = debugCamPos[i].z; - up.x = sind(y) * sind(x); - up.y = cosd(x); - up.z = cosd(y) * sind(x); - Hu3DCameraPosSet(debugCamTbl[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); - } -} + static u16 progPosTbl[] = { 236, 313, 353, 313 }; -void DebugCamUpdate(omObjData *obj) -{ - Vec pos; - Vec offset; - Vec dir; - Vec y_offset; + void BootProgExec(void) + { + s16 i; + s16 option; + s16 group; + s16 sprite; + AnimData *data; +#ifdef TARGET_PC + return; +#else + option = 0; + if (OSGetResetCode() != OS_RESET_RESTART) { + return; + } + if (VIGetDTVStatus() != VI_NON_INTERLACE) { + OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); + return; + } + if (OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_OFF && !(HU_PAD_BTN_ALL & PAD_BUTTON_B)) { + return; + } + if (OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_ON) { + VIConfigure(&GXNtsc480IntDf); + VIFlush(); + } +#endif + group = HuSprGrpCreate(3); + data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CHOOSE_ANM); + sprite = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 0, sprite); + HuSprPosSet(group, 0, 288, 240); + data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_ON_ANM); + sprite = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 1, sprite); + HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); + data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_OFF_ANM); + sprite = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 2, sprite); + HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); + HuSprAttrSet(group, 2, HUSPR_ATTR_DISPOFF); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + for (i = 0; i < 600; i++) { + if (HU_PAD_DSTK_ALL & (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT)) { + option ^= 1; + HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); + i = 0; + } + if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { + HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); + HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); + HuSprAttrReset(group, 2, HUSPR_ATTR_DISPOFF); + break; + } + HuPrcVSleep(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet()) { + HuPrcVSleep(); + } +#ifdef __MWERKS__ + if (!option) { + OSSetProgressiveMode(OS_PROGRESSIVE_MODE_ON); + VIConfigure(&GXNtsc480Prog); + VIFlush(); + HuPrcSleep(100); + } + else { + OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); + } +#endif + HuSprGrpKill(group); + group = HuSprGrpCreate(1); + if (!option) { + data = HuSprAnimReadFile(TITLE_PROGRESSIVE_ON_ANM); + } + else { + data = HuSprAnimReadFile(TITLE_PROGRESSIVE_OFF_ANM); + } + sprite = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 0, sprite); + HuSprPosSet(group, 0, 288, 240); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuPrcSleep(60); + for (i = 0; i < 180; i++) { + if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { + break; + } + HuPrcVSleep(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuSprGrpKill(group); + HuPrcSleep(30); + } - f32 z_rot; - s8 stick_pos; + #endif + + static u16 debugCamTbl[] = { 1, 2 }; + + void DebugCamOutView(omObjData *obj) + { + s16 i; + for (i = 0; i < 1; i++) { + Vec pos, target, up; + float x, y, z; + + x = debugCamRot[i].x; + y = debugCamRot[i].y; + z = debugCamRot[i].z; + + pos.x = (((sind(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].x); + pos.y = (-sind(x) * debugCamZoom[i]) + debugCamPos[i].y; + pos.z = ((cosd(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].z; + target.x = debugCamPos[i].x; + target.y = debugCamPos[i].y; + target.z = debugCamPos[i].z; + up.x = sind(y) * sind(x); + up.y = cosd(x); + up.z = cosd(y) * sind(x); + Hu3DCameraPosSet(debugCamTbl[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); + } + } + + #ifdef __MWERKS__ + void DebugCamUpdate(omObjData *obj) + { + Vec pos; + Vec offset; + Vec dir; + Vec y_offset; + + f32 z_rot; + s8 stick_pos; + #if VERSION_NTSC + if ((HuPadBtnDown[0] & 0x800)) { + debugCamOnF = (debugCamOnF) ? 0 : 1; + } + #endif + if (debugCamOnF != 0) { + debugCamRot[0].y += 0.1f * HuPadStkX[0]; + debugCamRot[0].x += 0.1f * HuPadStkY[0]; + debugCamZoom[0] += HuPadTrigL[0] / 2; + debugCamZoom[0] -= HuPadTrigR[0] / 2; + if (debugCamZoom[0] < 100.0f) { + debugCamZoom[0] = 100.0f; + } + pos.x = debugCamPos[0].x + (debugCamZoom[0] * (sind(debugCamRot[0].y) * cosd(debugCamRot[0].x))); + pos.y = (debugCamPos[0].y + (debugCamZoom[0] * -sind(debugCamRot[0].x))); + pos.z = (debugCamPos[0].z + (debugCamZoom[0] * (cosd(debugCamRot[0].y) * cosd(debugCamRot[0].x)))); + offset.x = debugCamPos[0].x - pos.x; + offset.y = debugCamPos[0].y - pos.y; + offset.z = debugCamPos[0].z - pos.z; + dir.x = (sind(debugCamRot[0].y) * sind(debugCamRot[0].x)); + dir.y = cosd(debugCamRot[0].x); + dir.z = (cosd(debugCamRot[0].y) * sind(debugCamRot[0].x)); + z_rot = debugCamRot[0].z; + y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot)) + + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot)) + + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot)); + + y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot)) + + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot)) + + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot)); + + y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot)) + + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot)) + + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot))); + + VECCrossProduct(&dir, &offset, &offset); + VECNormalize(&offset, &offset); + stick_pos = (HuPadSubStkX[0] & 0xF8); + if (stick_pos != 0) { + debugCamPos[0].x += 0.05f * (offset.x * stick_pos); + debugCamPos[0].y += 0.05f * (offset.y * stick_pos); + debugCamPos[0].z += 0.05f * (offset.z * stick_pos); + } + VECNormalize(&y_offset, &offset); + stick_pos = -(HuPadSubStkY[0] & 0xF8); + if (stick_pos != 0) { + debugCamPos[0].x += 0.05f * (offset.x * stick_pos); + debugCamPos[0].y += 0.05f * (offset.y * stick_pos); + debugCamPos[0].z += 0.05f * (offset.z * stick_pos); + } + } + } +#endif + + void BootTitleCreate(void) + { + s16 model; + s16 sprite; + AnimData *sprite_data; + s16 i; + titleMdlId[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF); + Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); + titleMdlId[1] = model = Hu3DModelCreateFile(TITLE_CUBE_HSF); + Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); + titleMdlId[2] = model = Hu3DModelCreateFile(TITLE_SKY_HSF); + Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); + Hu3DModelCameraInfoSet(model, 1); + Hu3DModelLightInfoSet(model, 1); + #if VERSION_NTSC + bootGrpId = HuSprGrpCreate(4); + #else + bootGrpId = HuSprGrpCreate(13); + #endif + sprite_data = HuSprAnimReadFile(TITLE_BG_ANM); + sprite = HuSprCreate(sprite_data, 0, 0); + HuSprGrpMemberSet(bootGrpId, 0, sprite); + HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); + HuSprDrawNoSet(bootGrpId, 0, 127); + HuSprPosSet(bootGrpId, 0, 288, 240); + sprite_data = HuSprAnimReadFile(TITLE_COPYRIGHT_ANM); + sprite = HuSprCreate(sprite_data, 1, 0); + HuSprGrpMemberSet(bootGrpId, 1, sprite); + HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); + HuSprPosSet(bootGrpId, 1, 288, 420); #if VERSION_NTSC - if ((HuPadBtnDown[0] & 0x800)) { - debugCamOnF = (debugCamOnF) ? 0 : 1; - } - #endif - if (debugCamOnF != 0) { - debugCamRot[0].y += 0.1f * HuPadStkX[0]; - debugCamRot[0].x += 0.1f * HuPadStkY[0]; - debugCamZoom[0] += HuPadTrigL[0] / 2; - debugCamZoom[0] -= HuPadTrigR[0] / 2; - if (debugCamZoom[0] < 100.0f) { - debugCamZoom[0] = 100.0f; - } - pos.x = debugCamPos[0].x + (debugCamZoom[0] * (sind(debugCamRot[0].y) * cosd(debugCamRot[0].x))); - pos.y = (debugCamPos[0].y + (debugCamZoom[0] * -sind(debugCamRot[0].x))); - pos.z = (debugCamPos[0].z + (debugCamZoom[0] * (cosd(debugCamRot[0].y) * cosd(debugCamRot[0].x)))); - offset.x = debugCamPos[0].x - pos.x; - offset.y = debugCamPos[0].y - pos.y; - offset.z = debugCamPos[0].z - pos.z; - dir.x = (sind(debugCamRot[0].y) * sind(debugCamRot[0].x)); - dir.y = cosd(debugCamRot[0].x); - dir.z = (cosd(debugCamRot[0].y) * sind(debugCamRot[0].x)); - z_rot = debugCamRot[0].z; - y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot)) - + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot)) - + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot)); - - y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot)) - + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot)) - + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot)); - - y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot)) - + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot)) - + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot))); - - VECCrossProduct(&dir, &offset, &offset); - VECNormalize(&offset, &offset); - stick_pos = (HuPadSubStkX[0] & 0xF8); - if (stick_pos != 0) { - debugCamPos[0].x += 0.05f * (offset.x * stick_pos); - debugCamPos[0].y += 0.05f * (offset.y * stick_pos); - debugCamPos[0].z += 0.05f * (offset.z * stick_pos); - } - VECNormalize(&y_offset, &offset); - stick_pos = -(HuPadSubStkY[0] & 0xF8); - if (stick_pos != 0) { - debugCamPos[0].x += 0.05f * (offset.x * stick_pos); - debugCamPos[0].y += 0.05f * (offset.y * stick_pos); - debugCamPos[0].z += 0.05f * (offset.z * stick_pos); - } - } -} - -void BootTitleCreate(void) -{ - s16 model; - s16 sprite; - AnimData *sprite_data; - s16 i; - titleMdlId[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF); - Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); - titleMdlId[1] = model = Hu3DModelCreateFile(TITLE_CUBE_HSF); - Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); - titleMdlId[2] = model = Hu3DModelCreateFile(TITLE_SKY_HSF); - Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); - Hu3DModelCameraInfoSet(model, 1); - Hu3DModelLightInfoSet(model, 1); - #if VERSION_NTSC - bootGrpId = HuSprGrpCreate(4); - #else - bootGrpId = HuSprGrpCreate(13); - #endif - sprite_data = HuSprAnimReadFile(TITLE_BG_ANM); - sprite = HuSprCreate(sprite_data, 0, 0); - HuSprGrpMemberSet(bootGrpId, 0, sprite); - HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); - HuSprDrawNoSet(bootGrpId, 0, 127); - HuSprPosSet(bootGrpId, 0, 288, 240); - sprite_data = HuSprAnimReadFile(TITLE_COPYRIGHT_ANM); - sprite = HuSprCreate(sprite_data, 1, 0); - HuSprGrpMemberSet(bootGrpId, 1, sprite); - HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); - HuSprPosSet(bootGrpId, 1, 288, 420); - #if VERSION_NTSC - sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_ANM); - sprite = HuSprCreate(sprite_data, 2, 0); - HuSprGrpMemberSet(bootGrpId, 2, sprite); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); - HuSprPosSet(bootGrpId, 2, 288, 380); - sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); - sprite = HuSprCreate(sprite_data, 0, 0); - HuSprGrpMemberSet(bootGrpId, 3, sprite); - HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); - HuSprPosSet(bootGrpId, 3, 288, 200); - #else - sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); - sprite = HuSprCreate(sprite_data, 0, 0); - HuSprGrpMemberSet(bootGrpId, 2, sprite); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); - HuSprPosSet(bootGrpId, 2, 288, 200); - for(i=0; i<5; i++) { + sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_ANM); + sprite = HuSprCreate(sprite_data, 2, 0); + HuSprGrpMemberSet(bootGrpId, 2, sprite); + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); + HuSprPosSet(bootGrpId, 2, 288, 380); + sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); + sprite = HuSprCreate(sprite_data, 0, 0); + HuSprGrpMemberSet(bootGrpId, 3, sprite); + HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); + HuSprPosSet(bootGrpId, 3, 288, 200); + #else + sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); + sprite = HuSprCreate(sprite_data, 0, 0); + HuSprGrpMemberSet(bootGrpId, 2, sprite); + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); + HuSprPosSet(bootGrpId, 2, 288, 200); + for(i=0; i<5; i++) { sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_EN_ANM+i); sprite = HuSprCreate(sprite_data, 3+i, 0); HuSprGrpMemberSet(bootGrpId, 3+i, sprite); HuSprAttrSet(bootGrpId, 3+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); HuSprPosSet(bootGrpId, 3+i, 288, 340); - } - for(i=0; i<5; i++) { - sprite_data = HuSprAnimReadFile(TITLE_LANGUAGE_EN_ANM+i); - sprite = HuSprCreate(sprite_data, 8+i, 0); - HuSprGrpMemberSet(bootGrpId, 8+i, sprite); - HuSprAttrSet(bootGrpId, 8+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); - HuSprPosSet(bootGrpId, 8+i, 288, 380); - } - #endif -} + } + for(i=0; i<5; i++) { + sprite_data = HuSprAnimReadFile(TITLE_LANGUAGE_EN_ANM+i); + sprite = HuSprCreate(sprite_data, 8+i, 0); + HuSprGrpMemberSet(bootGrpId, 8+i, sprite); + HuSprAttrSet(bootGrpId, 8+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); + HuSprPosSet(bootGrpId, 8+i, 288, 380); + } + #endif + } -BOOL BootTitleExec(void) -{ - float scale; - float scale_time; - int seNo[32]; - s16 pressStartMemberNo; - s16 languageMemberNo; - s16 i; - s16 choice; - float temp; - repeat: - Hu3DModelAttrReset(titleMdlId[0], HU3D_ATTR_DISPOFF); - Hu3DModelAttrReset(titleMdlId[1], HU3D_ATTR_DISPOFF); - HuSprAttrReset(bootGrpId, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrReset(bootGrpId, 1, HUSPR_ATTR_DISPOFF); - OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, seNo)); - OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0)); - HuAudSStreamPlay(20); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - #if VERSION_NTSC - HuSprAttrReset(bootGrpId, 3, HUSPR_ATTR_DISPOFF); - for (i = 1; i <= 50; i++) { - scale = (cosd(i * 1.8) * 10.0) + 1.0; - HuSprScaleSet(bootGrpId, 3, scale, scale); - HuSprTPLvlSet(bootGrpId, 3, i / 50.0); - HuPrcVSleep(); - } - HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - #else - HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - for (i = 1; i <= 50; i++) { - scale = (cosd(i * 1.8) * 10.0) + 1.0; - HuSprScaleSet(bootGrpId, 2, scale, scale); - HuSprTPLvlSet(bootGrpId, 2, i / 50.0); - HuPrcVSleep(); - } - if(GwLanguage == -1) { - pressStartMemberNo = 3; - languageMemberNo = 8; - } else { - pressStartMemberNo = GwLanguage+3-1; - languageMemberNo = GwLanguage+8-1; - } - HuSprAttrReset(bootGrpId, pressStartMemberNo, HUSPR_ATTR_DISPOFF); - HuSprAttrReset(bootGrpId, languageMemberNo, HUSPR_ATTR_DISPOFF); - for(i=1; i<=20; i++) { - scale = sind(i*4.5); - HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); - HuSprScaleSet(bootGrpId, languageMemberNo, scale*0.7, scale*0.7); - HuPrcVSleep(); - } - choice = 0; - scale_time = 0; - #endif + BOOL BootTitleExec(void) + { + float scale; + float scale_time; + int seNo[32]; + s16 pressStartMemberNo; + s16 languageMemberNo; + s16 i; + s16 choice; + float temp; + repeat: + Hu3DModelAttrReset(titleMdlId[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(titleMdlId[1], HU3D_ATTR_DISPOFF); + HuSprAttrReset(bootGrpId, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(bootGrpId, 1, HUSPR_ATTR_DISPOFF); +#ifdef __MWERKS__ + // TODO PC + OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, seNo)); + OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0)); + HuAudSStreamPlay(20); +#endif + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + #if VERSION_NTSC + HuSprAttrReset(bootGrpId, 3, HUSPR_ATTR_DISPOFF); + for (i = 1; i <= 50; i++) { + scale = (cosd(i * 1.8) * 10.0) + 1.0; + HuSprScaleSet(bootGrpId, 3, scale, scale); + HuSprTPLvlSet(bootGrpId, 3, i / 50.0); + HuPrcVSleep(); + } + HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + #else + HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + for (i = 1; i <= 50; i++) { + scale = (cosd(i * 1.8) * 10.0) + 1.0; + HuSprScaleSet(bootGrpId, 2, scale, scale); + HuSprTPLvlSet(bootGrpId, 2, i / 50.0); + HuPrcVSleep(); + } + if(GwLanguage == -1) { + pressStartMemberNo = 3; + languageMemberNo = 8; + } else { + pressStartMemberNo = GwLanguage+3-1; + languageMemberNo = GwLanguage+8-1; + } + HuSprAttrReset(bootGrpId, pressStartMemberNo, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(bootGrpId, languageMemberNo, HUSPR_ATTR_DISPOFF); + for(i=1; i<=20; i++) { + scale = sind(i*4.5); + HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); + HuSprScaleSet(bootGrpId, languageMemberNo, scale*0.7, scale*0.7); + HuPrcVSleep(); + } + choice = 0; + scale_time = 0; + #endif - #if VERSION_NTSC - for (i = scale_time = 0; i < 1800; i++) { - #else - for (i = temp = 0; i < 1800; i++) { - #endif - #if VERSION_PAL - if((choice == 0 && (HuPadDStkRep[0] & PAD_BUTTON_DOWN)) || (choice != 0 && (HuPadDStkRep[0] & PAD_BUTTON_UP))) { - HuAudFXPlay(0); - for(i=1; i<=10; i++) { - scale = ((1-(i/10.0))*(((cosd(scale_time)*0.1)+0.9)-0.7))+0.7; - if(choice == 0) { - HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); - } else { - HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); - } - scale = ((1-(i/10.0))*(((cosd(scale_time/3.0)*0.05)+0.65)-1.0))+1.0; - if(choice == 0) { - HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); - } else { - HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); - } - HuPrcVSleep(); - } - choice ^= 1; - scale_time = 0; - } - if (HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) { - if(choice == 0) { - s32 ret = HuAudFXPlay(2092); - if (ret < 0) { - OSReport(">>>>>Error %d\n", ret); - } - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - return 1; - } else { - HuAudFXPlay(1); - HuAudSStreamAllFadeOut(500); - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - for(i=0; i<5; i++) { - HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); - } - for(i=0; i<5; i++) { - HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); - } - LanguageMenuExec(); - Hu3DModelCameraInfoSet(titleMdlId[2], 1); - Hu3DModelLightInfoSet(titleMdlId[2], 1); - HuWinInit(1); - goto repeat; - } - } - scale = (cosd(scale_time) * 0.1) + 0.9; - if(choice == 0) { - HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); - } else { - HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); - } - scale = (cosd(scale_time/3.0) * 0.05) + 0.65; - if(choice == 0) { - HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); - } else { - HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); - } - scale_time += 5; - HuPrcVSleep(); - #else - if (i <= 10) { - HuSprTPLvlSet(bootGrpId, 2, i / 10.0); - } - if (HuPadBtnDown[0] & PAD_BUTTON_START) { - s32 ret = HuAudFXPlay(2092); - if (ret < 0) { - OSReport(">>>>>Error %d\n", ret); - } - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - return 1; - } - scale = (sind(i * scale_time) * 0.1) + 0.9; - scale_time += 0.05; - if (scale_time > 5) { - scale_time = 5; - } - HuSprScaleSet(bootGrpId, 2, scale, scale); - HuPrcVSleep(); - #endif + #if VERSION_NTSC + for (i = scale_time = 0; i < 1800; i++) { + #else + for (i = temp = 0; i < 1800; i++) { + #endif + #if VERSION_PAL + if((choice == 0 && (HuPadDStkRep[0] & PAD_BUTTON_DOWN)) || (choice != 0 && (HuPadDStkRep[0] & PAD_BUTTON_UP))) { + HuAudFXPlay(0); + for(i=1; i<=10; i++) { + scale = ((1-(i/10.0))*(((cosd(scale_time)*0.1)+0.9)-0.7))+0.7; + if(choice == 0) { + HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); + } else { + HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); + } + scale = ((1-(i/10.0))*(((cosd(scale_time/3.0)*0.05)+0.65)-1.0))+1.0; + if(choice == 0) { + HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); + } else { + HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); + } + HuPrcVSleep(); + } + choice ^= 1; + scale_time = 0; + } + if (HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) { + if(choice == 0) { + s32 ret = HuAudFXPlay(2092); + if (ret < 0) { + OSReport(">>>>>Error %d\n", ret); + } + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + return 1; + } else { + HuAudFXPlay(1); + HuAudSStreamAllFadeOut(500); + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + for(i=0; i<5; i++) { + HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); + } + for(i=0; i<5; i++) { + HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); + } + LanguageMenuExec(); + Hu3DModelCameraInfoSet(titleMdlId[2], 1); + Hu3DModelLightInfoSet(titleMdlId[2], 1); + HuWinInit(1); + goto repeat; + } + } + scale = (cosd(scale_time) * 0.1) + 0.9; + if(choice == 0) { + HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); + } else { + HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); + } + scale = (cosd(scale_time/3.0) * 0.05) + 0.65; + if(choice == 0) { + HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); + } else { + HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); + } + scale_time += 5; + HuPrcVSleep(); + #else + if (i <= 10) { + HuSprTPLvlSet(bootGrpId, 2, i / 10.0); + } + if (HuPadBtnDown[0] & PAD_BUTTON_START) { + s32 ret = HuAudFXPlay(2092); + if (ret < 0) { + OSReport(">>>>>Error %d\n", ret); + } + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + return 1; + } + scale = (sind(i * scale_time) * 0.1) + 0.9; + scale_time += 0.05; + if (scale_time > 5) { + scale_time = 5; + } + HuSprScaleSet(bootGrpId, 2, scale, scale); + HuPrcVSleep(); + #endif - } - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); - #if VERSION_NTSC - HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF); - #else - HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - for(i=0; i<5; i++) { - HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); - } - for(i=0; i<5; i++) { - HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); - } - #endif - return 0; -} + } + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); + #if VERSION_NTSC + HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF); + #else + HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + for(i=0; i<5; i++) { + HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); + } + for(i=0; i<5; i++) { + HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); + } + #endif + return 0; + } -#include "nintendoData.inc" + #include "nintendoData.inc" -void *NintendoDataDecode(void) -{ - u32 *src = (u32 *)nintendoData; - u32 size = *src++; - void *dst = HuMemDirectMalloc(HEAP_DATA, size); - int decode_type = *src++; - if(dst) { - HuDecodeData(src, dst, size, decode_type); - } - return dst; -} + void *NintendoDataDecode(void) + { + u32 *src = (u32 *)nintendoData; + u32 size = *src++; + void *dst; + s32 decode_type; +#ifdef TARGET_PC + byteswap_u32(&size); +#endif + dst = HuMemDirectMalloc(HEAP_DATA, size); + decode_type = *src++; +#ifdef TARGET_PC + byteswap_s32(&decode_type); +#endif + if(dst) { + HuDecodeData(src, dst, size, decode_type); + } + return dst; + } diff --git a/src/REL/instDll/main.c b/src/REL/instDll/main.c index 5d7b064c..4208e8ca 100644 --- a/src/REL/instDll/main.c +++ b/src/REL/instDll/main.c @@ -1180,4 +1180,7 @@ static void ShadowDraw(ModelData *model, Mtx mtx) GXPosition3f32(2000.0f, 0, 2000.0f); GXPosition3f32(-2000.0f, 0, 2000.0f); GXEnd(); +#ifdef TARGET_PC + GXDestroyTexObj(&tex); +#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..8deaf8dc 100755 --- a/src/REL/m402Dll/main.c +++ b/src/REL/m402Dll/main.c @@ -24,6 +24,11 @@ #include "ext_math.h" #include "version.h" +#ifndef __MWERKS__ +#include "game/audio.h" +void HuSysVWaitSet(s16 vcount); +#endif + #undef ABS #define ABS(x) ((0 > (x)) ? -(x) : (x)) @@ -682,7 +687,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 ba9e9ca0..1e4158d7 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: @@ -1295,7 +1300,7 @@ void fn_1_58E4(ModelData *modelData, Mtx arg1) GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetCullMode(GX_CULL_BACK); - GXCallDisplayList(var_r31->unk_44, var_r31->unk_48); + GXCallDisplayListNative(var_r31->unk_44, var_r31->unk_48); GXInitTexObj(&sp3C, var_r31->unk_4C->bmp->data, var_r31->unk_4C->bmp->sizeX, var_r31->unk_4C->bmp->sizeY, 1, GX_CLAMP, GX_CLAMP, GX_FALSE); GXLoadTexObj(&sp3C, GX_TEXMAP0); GXSetNumTevStages(1); @@ -1306,8 +1311,11 @@ void fn_1_58E4(ModelData *modelData, Mtx arg1) GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevColor(GX_TEVREG0, sp14); - GXCallDisplayList(var_r31->unk_44, var_r31->unk_48); + GXCallDisplayListNative(var_r31->unk_44, var_r31->unk_48); } +#ifdef TARGET_PC + GXDestroyTexObj(&sp3C); +#endif } AnimData *fn_1_5D64(u16 sizeX, u16 sizeY, s32 arg2) diff --git a/src/REL/m405Dll/main.c b/src/REL/m405Dll/main.c index 0eade3f2..3086732e 100755 --- a/src/REL/m405Dll/main.c +++ b/src/REL/m405Dll/main.c @@ -19,10 +19,16 @@ #include "game/process.h" #include "game/sprite.h" #include "game/wipe.h" +#include + #include "dolphin.h" #include "ext_math.h" +#ifndef __MWERKS__ +#include "game/audio.h" +#endif + #undef ABS #define ABS(x) ((0 > (x)) ? -(x) : (x)) @@ -1002,12 +1008,15 @@ void fn_1_37A4(ModelData *arg0, Mtx arg1) GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, lbl_1_bss_5AC.unk14, 0xC); + GXSETARRAY(GX_VA_POS, lbl_1_bss_5AC.unk14, 900 * sizeof(Vec), sizeof(Vec)); GXSetCullMode(GX_CULL_BACK); - GXCallDisplayList(lbl_1_bss_5AC.unk24, lbl_1_bss_5AC.unk28); + GXCallDisplayListNative(lbl_1_bss_5AC.unk24, lbl_1_bss_5AC.unk28); GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); +#ifdef TARGET_PC + GXDestroyTexObj(&spC); +#endif } void fn_1_3F1C(ModelData *arg0, Mtx arg1) @@ -1077,6 +1086,9 @@ void fn_1_4024(ModelData *arg0, Mtx arg1) GXPosition3f32(600.0f, -2.0f, 1250.0f); GXPosition3f32(-600.0f, -2.0f, 1250.0f); GXEnd(); +#ifdef TARGET_PC + GXDestroyTexObj(&sp18); +#endif } void fn_1_4700(ModelData *arg0, Mtx arg1) @@ -1271,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/main.c b/src/REL/m406Dll/main.c index 8642d951..fc6607e5 100644 --- a/src/REL/m406Dll/main.c +++ b/src/REL/m406Dll/main.c @@ -4,6 +4,7 @@ #include "game/gamework_data.h" #include "game/hsfdraw.h" #include "game/minigame_seq.h" +#include "game/objsub.h" #include "game/wipe.h" #include "REL/m406Dll.h" diff --git a/src/REL/m406Dll/map.c b/src/REL/m406Dll/map.c index e995e73a..020225ca 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) { @@ -1111,20 +1115,20 @@ void fn_1_45BC(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_84, sizeof(Vec)); + GXSETARRAY(GX_VA_POS, var_r31->unk_84, var_r31->unk_80 * 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_88, sizeof(Vec)); + GXSETARRAY(GX_VA_NRM, var_r31->unk_88, var_r31->unk_80 * 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_90, 4); - GXCallDisplayList(var_r31->unk_A4, var_r31->unk_A0); + GXSETARRAY(GX_VA_CLR0, var_r31->unk_90, var_r31->unk_80 * sizeof(GXColor), sizeof(GXColor)); + GXCallDisplayListNative(var_r31->unk_A4, var_r31->unk_A0); for (var_r30 = 1; var_r30 < 29; var_r30++) { var_r29 = var_r30 * 35; - GXSetArray(GX_VA_POS, &var_r31->unk_84[var_r29], sizeof(Vec)); - GXSetArray(GX_VA_NRM, &var_r31->unk_88[var_r29], sizeof(Vec)); - GXSetArray(GX_VA_CLR0, &var_r31->unk_90[var_r29], sizeof(GXColor)); - GXCallDisplayList(var_r31->unk_A4, var_r31->unk_A0); + GXSETARRAY(GX_VA_POS, &var_r31->unk_84[var_r29], 35 * sizeof(Vec), sizeof(Vec)); + GXSETARRAY(GX_VA_NRM, &var_r31->unk_88[var_r29], 35 * sizeof(Vec), sizeof(Vec)); + GXSETARRAY(GX_VA_CLR0, &var_r31->unk_90[var_r29], 35 * sizeof(GXColor), sizeof(GXColor)); + GXCallDisplayListNative(var_r31->unk_A4, var_r31->unk_A0); } } } @@ -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,17 +2954,17 @@ 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); } - PSMTXReorder(sp128, sp8); + MTXReorder(sp128, sp8); if (var_r31->unk_4C) { var_r18 = var_r31->unk_4C; var_r18(arg0, var_r31, arg1); @@ -2964,7 +2972,7 @@ void fn_1_BC18(ModelData *arg0, float (*arg1)[4]) var_r29 = var_r31->unk_3C; var_r30 = var_r31->unk_40; var_r28 = var_r31->unk_44; - PSMTXROMultVecArray(sp8, lbl_1_data_8E0, &sp38[0], 4); + MTXROMultVecArray(sp8, lbl_1_data_8E0, &sp38[0], 4); for (var_r26 = 0; var_r26 < var_r31->unk_26; var_r26++, var_r29++) { if (!var_r29->unk_28) { var_r30->x = var_r30->y = var_r30->z = 0.0f; @@ -3026,7 +3034,7 @@ void fn_1_BC18(ModelData *arg0, float (*arg1)[4]) DCFlushRangeNoSync(var_r31->unk_44, var_r31->unk_26 * 8 * 4); DCFlushRangeNoSync(var_r31->unk_3C, var_r31->unk_26 * 0x44); PPCSync(); - GXCallDisplayList(var_r31->unk_48, var_r31->unk_34); + GXCallDisplayListNative(var_r31->unk_48, var_r31->unk_34); if (!shadowModelDrawF) { if ((var_r31->unk_21 & 2) == 0) { var_r31->unk_28++; @@ -3162,14 +3170,14 @@ 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); } - PSMTXReorder(sp9C, spC); + MTXReorder(sp9C, spC); if (var_r31->unk_4C) { var_r23 = var_r31->unk_4C; var_r23(arg0, var_r31, arg1); @@ -3177,7 +3185,7 @@ void fn_1_C86C(ModelData *arg0, Mtx arg1) var_r29 = var_r31->unk_3C; var_r30 = var_r31->unk_40; sp8 = var_r31->unk_44; - PSMTXROMultVecArray(spC, lbl_1_data_930, (Vec *)sp3C, 4); + MTXROMultVecArray(spC, lbl_1_data_930, (Vec *)sp3C, 4); for (var_r25 = 0; var_r25 < var_r31->unk_26; var_r25++, var_r29++) { if (!var_r29->unk_28) { var_r30->x = var_r30->y = var_r30->z = 0.0f; @@ -3205,7 +3213,7 @@ void fn_1_C86C(ModelData *arg0, Mtx arg1) DCFlushRangeNoSync(var_r31->unk_40, var_r31->unk_26 * 0xC * 4); DCFlushRangeNoSync(var_r31->unk_3C, var_r31->unk_26 * 0x44); PPCSync(); - GXCallDisplayList(var_r31->unk_48, var_r31->unk_34); + GXCallDisplayListNative(var_r31->unk_48, var_r31->unk_34); if (!shadowModelDrawF) { if ((var_r31->unk_21 & 2) == 0) { var_r31->unk_28++; diff --git a/src/REL/m406Dll/player.c b/src/REL/m406Dll/player.c index 9685aac0..ce4f573d 100644 --- a/src/REL/m406Dll/player.c +++ b/src/REL/m406Dll/player.c @@ -12,6 +12,11 @@ #include "REL/m406Dll.h" +#ifndef __MWERKS__ +#include "game/frand.h" +#include "game/hsfex.h" +#endif + typedef struct UnkM406PlayerStruct { /* 0x00 */ float unk_00; /* 0x04 */ float unk_04; diff --git a/src/REL/m407dll/map.c b/src/REL/m407dll/map.c index 4675aa80..fb37b159 100644 --- a/src/REL/m407dll/map.c +++ b/src/REL/m407dll/map.c @@ -64,10 +64,6 @@ void fn_1_15D8(void) void fn_1_162C(omObjData *arg0) { - s32 var_r30; - s32 var_r30_2; - s32 var_r30_3; - s32 var_r30_4; s32 i; arg0->func = fn_1_1A8C; diff --git a/src/REL/m407dll/player.c b/src/REL/m407dll/player.c index 0557ca80..d5b9da02 100644 --- a/src/REL/m407dll/player.c +++ b/src/REL/m407dll/player.c @@ -8,7 +8,7 @@ #include "game/objsub.h" #include "game/pad.h" #include "game/process.h" -#include "math.h" +#include "ext_math.h" #include "REL/m407dll.h" @@ -257,7 +257,6 @@ void fn_1_404(void) { omObjData *temp_r31; unkDominationData *unkData; - s32 temp_r0; u8 i; for (i = 0; i < 4; i++) { @@ -330,7 +329,6 @@ void fn_1_628(omObjData *arg0, s32 arg1) void fn_1_64C(omObjData *arg0) { u32 temp_r29; - unkDominationData *temp_r27; unkDominationData *temp_r31; u32 i; @@ -526,10 +524,7 @@ void fn_1_1074(omObjData *arg0) void fn_1_11CC(omObjData *arg0) { - unkDominationData *temp_r31; - s16 temp; - - temp_r31 = arg0->data; + unkDominationData *temp_r31 = arg0->data; if (temp_r31->unk_20 == 0) { CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[3], 0); CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[3], 0.0f, 10.0f, HU3D_MOTATTR_NONE); @@ -543,6 +538,7 @@ void fn_1_11CC(omObjData *arg0) temp_r31->unk_24 += 0.3f; if (!(temp_r31->unk_14 > 300.0f)) { + s16 temp; temp_r31->unk_14 = 300.0f; CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[4], 0); CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[4], 0.0f, 10.0f, HU3D_MOTATTR_NONE); diff --git a/src/REL/m407dll/score.c b/src/REL/m407dll/score.c index 4895ebd8..a289daf2 100644 --- a/src/REL/m407dll/score.c +++ b/src/REL/m407dll/score.c @@ -127,12 +127,9 @@ void fn_1_5FE4(omObjData *arg0) void fn_1_61A0(void) { - s32 i; - unkDominationData6 *temp_r31; - - temp_r31 = lbl_1_bss_3988->data; - + unkDominationData6 *temp_r31 = lbl_1_bss_3988->data; if (temp_r31->unk_04 == 0) { + s32 i; for (i = 0; i < ARRAY_COUNT(temp_r31->unk_0C); i++) { espDispOff(temp_r31->unk_0C[i]); } @@ -142,12 +139,9 @@ void fn_1_61A0(void) void fn_1_6218(void) { - s16 i; - unkDominationData6 *temp_r31; - - temp_r31 = lbl_1_bss_3988->data; - + unkDominationData6 *temp_r31 = lbl_1_bss_3988->data; if (temp_r31->unk_04 == 0) { + s16 i; for (i = 0; i < ARRAY_COUNT(temp_r31->unk_0C); i++) { espDispOn(temp_r31->unk_0C[i]); } diff --git a/src/REL/m407dll/whomp.c b/src/REL/m407dll/whomp.c index 43275f60..1c13f3b1 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; @@ -156,7 +155,11 @@ void fn_1_26CC(u8 arg0) } } +#ifdef __MWERKS__ void fn_1_2770(u8 arg0, s16 arg2) +#else +void fn_1_2770(u8 arg0) +#endif { omObjData *temp_r30; unkDominationData7 *temp_r31; @@ -200,15 +203,13 @@ void fn_1_290C(omObjData *arg0, s32 arg1) void fn_1_2930(omObjData *arg0) { - unkDominationData7 *temp_r28; omObjData *temp_r29; u32 i; - unkDominationData7 *temp_r31; - - temp_r31 = arg0->data; + unkDominationData7 *temp_r31 = arg0->data; lbl_1_data_258[temp_r31->unk_24](arg0); if ((temp_r31->unk_08.z > (Center.z - 2000.0f)) && (temp_r31->unk_08.z < (2000.0f + Center.z)) && (temp_r31->unk_04 == 0)) { for (i = 0; i < 8; i++) { + unkDominationData7 *temp_r28; temp_r29 = lbl_1_bss_2DB0[(temp_r31->unk_00 % 80) + (i * 80)]; temp_r29->model[0] = -1; temp_r28 = temp_r29->data; @@ -371,7 +372,7 @@ void fn_1_31F8(omObjData *arg0) } } -void fn_1_3360(omObjData *) { } +void fn_1_3360(omObjData *arg0) { } void fn_1_3364(omObjData *arg0) { @@ -473,9 +474,7 @@ void fn_1_36D0(omObjData *arg0) void fn_1_37B0(omObjData *arg0) { - unkDominationData7 *temp_r31; - - temp_r31 = arg0->data; + unkDominationData7 *temp_r31 = arg0->data; if (temp_r31->unk_2C == 0) { temp_r31->unk_14.x = 0.0f; temp_r31->unk_08.y = 0.0f; diff --git a/src/REL/m407dll/whomp_score.c b/src/REL/m407dll/whomp_score.c index 1d985246..6ce497bb 100644 --- a/src/REL/m407dll/whomp_score.c +++ b/src/REL/m407dll/whomp_score.c @@ -1,4 +1,5 @@ #include "game/esprite.h" +#include "game/hsfex.h" #include "game/gamework_data.h" #include "game/object.h" #include "game/process.h" @@ -16,7 +17,6 @@ typedef struct unkDominationData3 { } unkDominationData3; // sizeof 0x24 // function signatures -void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2); void fn_1_3D28(omObjData *arg0, s32 arg1); void fn_1_3E34(omObjData *); void fn_1_3F7C(omObjData *arg0); @@ -58,17 +58,14 @@ void fn_1_3B68(void) void fn_1_3BB8(s16 arg0, f32 arg8, f32 arg9) { - omObjData *obj; - Vec sp14; - unkDominationData3 *temp_r31; u32 i; - s16 temp; for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37C8); i++) { - obj = lbl_1_bss_37C8[i]; - temp_r31 = obj->data; + omObjData *obj = lbl_1_bss_37C8[i]; + unkDominationData3 *temp_r31 = obj->data; if (temp_r31->unk_04 == 0) { - temp = arg0; + Vec sp14; + s16 temp = arg0; espBankSet(temp_r31->unk_18[1], (temp / 100)); temp = (temp - ((temp / 100) * 100)); espBankSet(temp_r31->unk_18[2], (temp / 10)); @@ -95,7 +92,6 @@ void fn_1_3D28(omObjData *arg0, s32 arg1) void fn_1_3D4C(omObjData *arg0) { - s32 temp_r5; unkDominationData3 *temp_r31; temp_r31 = arg0->data; diff --git a/src/REL/m408Dll/camera.c b/src/REL/m408Dll/camera.c index 370848c4..857d4d27 100644 --- a/src/REL/m408Dll/camera.c +++ b/src/REL/m408Dll/camera.c @@ -1,24 +1,22 @@ +#include "game/audio.h" #include "game/chrman.h" -#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/pad.h" #include "game/wipe.h" - #include "game/hsfanim.h" -#include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/sprite.h" -#include "game/audio.h" -#include "game/gamework_data.h" - #include "REL/m408Dll.h" #include "ext_math.h" #include "math.h" +#ifndef __MWERKS__ +#include "game/frand.h" +#endif + omObjData *lbl_1_bss_110; u32 lbl_1_bss_10C; Vec lbl_1_bss_100; @@ -266,7 +264,6 @@ void fn_1_A4E8(s32 arg0, Vec *arg1, u32 arg2); void fn_1_99C8(omObjData *object) { float temp_f31; - float temp_f30; Vec sp2C; Vec sp20; @@ -282,7 +279,7 @@ void fn_1_99C8(omObjData *object) switch (object->work[0]) { case 0: if (object->work[1] < 120.0f) { - temp_f30 = (1.0f / 60.0f) * (1.5f * (120.0f - object->work[1])); + float temp_f30 = (1.0f / 60.0f) * (1.5f * (120.0f - object->work[1])); if (temp_f30 > 1.0f) { temp_f30 = 1.0f; } @@ -469,13 +466,11 @@ void fn_1_A37C(ModelData *model, ParticleData *particle, Mtx matrix) void fn_1_A4E8(s32 arg0, Vec *arg1, u32 arg2) { - float temp_f31; - HsfanimStruct01 *temp_r31; - ParticleData *temp_r30; - s32 temp_r29; - temp_r30 = Hu3DData[arg0].unk_120; + ParticleData *temp_r30 = Hu3DData[arg0].unk_120; if (temp_r30->unk_00) { - temp_r31 = temp_r30->unk_48; + float temp_f31; + s32 temp_r29; + HsfanimStruct01 *temp_r31 = temp_r30->unk_48; for (temp_r29 = 0; temp_r29 < temp_r30->unk_30; temp_r29++, temp_r31++) { if (temp_r31->unk00 != 0) { continue; @@ -514,7 +509,6 @@ void fn_1_A894(ModelData *model, ParticleData *particle, Mtx matrix) { 600, 1, 0.6, 0.9, 0.3, 0 }, { 13, 1, 1, 1, 0.5, 0 }, }; - Vec sp8; if (particle->unk_00 == 0) { particle->unk_00++; temp_r31 = particle->unk_48; @@ -549,6 +543,7 @@ void fn_1_A894(ModelData *model, ParticleData *particle, Mtx matrix) else { temp_r31 = particle->unk_48; for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + Vec sp8; if (temp_r31->unk00 == 0) { continue; } @@ -598,9 +593,6 @@ void fn_1_AFF4(ModelData *model, ParticleData *particle, Mtx matrix) float temp_f30; HsfanimStruct01 *temp_r30; s32 temp_r29; - Vec sp20; - Vec sp14; - Vec sp8; if (particle->unk_00 == 0) { particle->unk_00++; temp_f31 = -70; @@ -635,6 +627,9 @@ void fn_1_AFF4(ModelData *model, ParticleData *particle, Mtx matrix) } } else { + Vec sp20; + Vec sp14; + Vec sp8; sp20.x = sind(CRot.y) * cosd(CRot.x); sp20.y = -sind(CRot.x); sp20.z = cosd(CRot.y) * cosd(CRot.x); diff --git a/src/REL/m408Dll/main.c b/src/REL/m408Dll/main.c index fa04e61a..790b23f7 100644 --- a/src/REL/m408Dll/main.c +++ b/src/REL/m408Dll/main.c @@ -1,18 +1,17 @@ +#include "game/audio.h" #include "game/chrman.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/gamework_data.h" #include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" #include "game/pad.h" #include "game/wipe.h" - -#include "game/hsfanim.h" -#include "game/hsfdraw.h" -#include "game/hsfman.h" -#include "game/hsfmotion.h" #include "game/sprite.h" -#include "game/audio.h" -#include "game/gamework_data.h" #include "REL/m408Dll.h" @@ -20,6 +19,7 @@ #include "math.h" #ifndef __MWERKS__ +#include "game/frand.h" #include "game/esprite.h" #endif @@ -384,12 +384,12 @@ void fn_1_12A0(omObjData *object) void fn_1_148C(omObjData *object) { - Vec sp30; - Vec sp24; - Vec sp18; - Vec spC; - float temp_f29; if (!WipeStatGet()) { + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + float temp_f29; lbl_1_bss_54 = 0; sp30.x = 0; sp30.y = 50; @@ -515,17 +515,14 @@ void fn_1_1E54(omObjData *object) s32 fn_1_1EBC(omObjData *object) { - float temp_f31; - float temp_f22; - float temp_f21; - Vec sp3C; - Vec sp30; - Vec sp24; - Work2FAC *temp_r31 = object->data; - temp_f31 = (temp_r31->unk1C.x * temp_r31->unk1C.x) + ((10.0f / 7.0f) * ((10.0f / 7.0f) * temp_r31->unk1C.z * temp_r31->unk1C.z)); + float temp_f31 = (temp_r31->unk1C.x * temp_r31->unk1C.x) + ((10.0f / 7.0f) * ((10.0f / 7.0f) * temp_r31->unk1C.z * temp_r31->unk1C.z)); if (temp_f31 > 6400) { - temp_f22 = 80.0f / sqrtf(temp_f31); + Vec sp3C; + Vec sp30; + Vec sp24; + float temp_f21; + float temp_f22 = 80.0f / sqrtf(temp_f31); sp3C.x = temp_r31->unk1C.x * temp_f22; sp3C.z = temp_r31->unk1C.z * temp_f22; temp_r31->unk34.x = sp3C.x - temp_r31->unk1C.x; @@ -551,9 +548,7 @@ s32 fn_1_1EBC(omObjData *object) temp_r31->unk28.z += (sp30.z * 20.0f) + (sp30.z * 2.0f * temp_f22); return 1; } - else { - return 0; - } + return 0; } void fn_1_26E4(omObjData *object); @@ -747,12 +742,9 @@ void fn_1_2FAC(omObjData *object) } } -void fn_1_38D0(omObjData *arg0, s8 *arg1, s8 *arg2) +void fn_1_38D0(omObjData *object, s8 *arg1, s8 *arg2) { float temp_f31; - float temp_f30; - float temp_f29; - Work2FAC *temp_r31; Work2FAC *temp_r30; s8 temp_r29; s32 temp_r28; @@ -761,79 +753,79 @@ void fn_1_38D0(omObjData *arg0, s8 *arg1, s8 *arg2) Vec spC; s8 sp8[4]; - temp_r31 = arg0->data; - *arg1 = temp_r31->unk7C[0]; - *arg2 = temp_r31->unk7C[1]; - sp18.x = temp_r31->unk1C.x; - sp18.y = temp_r31->unk1C.y; - sp18.z = temp_r31->unk1C.z; + Work2FAC *work = object->data; + *arg1 = work->unk7C[0]; + *arg2 = work->unk7C[1]; + sp18.x = work->unk1C.x; + sp18.y = work->unk1C.y; + sp18.z = work->unk1C.z; temp_r25 = fn_1_162CC(&sp18, &spC); temp_r29 = 0; sp8[0] = -1; for (temp_r28 = 0; temp_r28 < 4; temp_r28++) { - if (temp_r28 != temp_r31->unk0) { + if (temp_r28 != work->unk0) { temp_r30 = fn_1_68A8(temp_r28); if ((temp_r30->unk4 & 0x12) == 0) { sp8[temp_r29++] = temp_r28; } } } - switch (temp_r31->unk8E) { + switch (work->unk8E) { case 0: if (temp_r29 > 0 || temp_r25) { if (temp_r29 > 0) { - temp_r31->unk8C = sp8[frandmod(temp_r29)]; + work->unk8C = sp8[frandmod(temp_r29)]; } - temp_r31->unk74 = frandmod(180) + 120.0f; - temp_r31->unk78 = 0; - temp_r31->unk8E = 1; + work->unk74 = frandmod(180) + 120.0f; + work->unk78 = 0; + work->unk8E = 1; } else { - temp_r31->unk78 = 0; - temp_r31->unk8E = 2; + work->unk78 = 0; + work->unk8E = 2; } break; case 1: - if ((temp_r31->unk78 & 0x3) == 0) { + if ((work->unk78 & 0x3) == 0) { if (temp_r25) { - temp_f31 = atan2d(spC.x - temp_r31->unk1C.x, spC.z - temp_r31->unk1C.z); + temp_f31 = atan2d(spC.x - work->unk1C.x, spC.z - work->unk1C.z); } else { - temp_r30 = fn_1_68A8(temp_r31->unk8C); - temp_f31 = atan2d(temp_r30->unk1C.x - temp_r31->unk1C.x, temp_r30->unk1C.z - temp_r31->unk1C.z); + temp_r30 = fn_1_68A8(work->unk8C); + temp_f31 = atan2d(temp_r30->unk1C.x - work->unk1C.x, temp_r30->unk1C.z - work->unk1C.z); } - temp_r31->unk84[1] = fn_1_883C(temp_r31->unk84[0], temp_f31, (0.3f * temp_r31->unk90) + 0.15f); + work->unk84[1] = fn_1_883C(work->unk84[0], temp_f31, (0.3f * work->unk90) + 0.15f); } - temp_r31->unk78++; - temp_r31->unk84[0] = fn_1_883C(temp_r31->unk84[0], temp_r31->unk84[1], 0.2f); - temp_r31->unk7C[0] = sind(temp_r31->unk84[0]) * 80.0; - temp_r31->unk7C[1] = -cosd(temp_r31->unk84[0]) * 80.0; - *arg1 = temp_r31->unk7C[0]; - *arg2 = temp_r31->unk7C[1]; - temp_r31->unk74--; + work->unk78++; + work->unk84[0] = fn_1_883C(work->unk84[0], work->unk84[1], 0.2f); + work->unk7C[0] = sind(work->unk84[0]) * 80.0; + work->unk7C[1] = -cosd(work->unk84[0]) * 80.0; + *arg1 = work->unk7C[0]; + *arg2 = work->unk7C[1]; + work->unk74--; if (temp_r25 == 0 && (temp_r30->unk4 & 0x12)) { - temp_r31->unk74 = 0; + work->unk74 = 0; } - if (temp_r31->unk74 == 0) { - temp_r31->unk8E = 0; + if (work->unk74 == 0) { + work->unk8E = 0; } break; case 2: - if ((temp_r31->unk78 & 0xF) == 0) { - temp_f30 = (0.04f * frandmod(1000)) - 20.0f; - temp_f29 = (0.04f * frandmod(1000)) - 20.0f; - temp_r31->unk84[1] = temp_f31 = atan2d(temp_f30 - temp_r31->unk1C.x, temp_f29 - temp_r31->unk1C.z); + if ((work->unk78 & 0xF) == 0) { + float temp_f30 = (0.04f * frandmod(1000)) - 20.0f; + float temp_f29 = (0.04f * frandmod(1000)) - 20.0f; + work->unk84[1] = temp_f31 = atan2d(temp_f30 - work->unk1C.x, temp_f29 - work->unk1C.z); } - temp_r31->unk78++; - temp_r31->unk84[0] = fn_1_883C(temp_r31->unk84[0], temp_r31->unk84[1], 0.2f); - temp_r31->unk7C[0] = sind(temp_r31->unk84[0]) * 80.0; - temp_r31->unk7C[1] = -cosd(temp_r31->unk84[0]) * 80.0; - *arg1 = temp_r31->unk7C[0]; - *arg2 = temp_r31->unk7C[1]; + work->unk78++; + work->unk84[0] = fn_1_883C(work->unk84[0], work->unk84[1], 0.2f); + work->unk7C[0] = sind(work->unk84[0]) * 80.0; + work->unk7C[1] = -cosd(work->unk84[0]) * 80.0; + *arg1 = work->unk7C[0]; + *arg2 = work->unk7C[1]; if (temp_r29 > 0 || temp_r25) { - temp_r31->unk8E = 0; + work->unk8E = 0; } break; } @@ -942,12 +934,10 @@ void fn_1_3E80(omObjData *object) void fn_1_4A58(omObjData *object) { - Work2FAC *temp_r31; s32 temp_r28; s32 temp_r26; - s32 sp8; - temp_r31 = object->data; - sp8 = temp_r31->unk0; + Work2FAC *temp_r31 = object->data; + s32 sp8 = temp_r31->unk0; temp_r31->unk4 |= 2; temp_r31->unk1C.y = lbl_1_bss_54; fn_1_1EBC(object); @@ -1006,38 +996,36 @@ void fn_1_54E4(omObjData *object); void fn_1_5098(omObjData *object) { - Work2FAC *temp_r29; - s32 temp_r27; - - temp_r29 = object->data; + Work2FAC *work = object->data; object->trans.x = lbl_1_data_144[object->work[0]].x; object->trans.z = lbl_1_data_144[object->work[0]].z; if (object->work[1] == 0) { - if (lbl_1_bss_3C < temp_r29->unk8) { - lbl_1_bss_3C = temp_r29->unk8; + if (lbl_1_bss_3C < work->unk8) { + lbl_1_bss_3C = work->unk8; } } - else if (object->work[1] == 10 && lbl_1_bss_3C == temp_r29->unk8) { + else if (object->work[1] == 10 && lbl_1_bss_3C == work->unk8) { + s32 temp_r27; for (temp_r27 = 0; lbl_1_bss_28[temp_r27] >= 0; temp_r27++) ; - lbl_1_bss_28[temp_r27] = temp_r29->unk2; + lbl_1_bss_28[temp_r27] = work->unk2; } object->work[1]++; - temp_r29->unk1C.y = lbl_1_bss_54; - temp_r29->unk58.y = 0; - temp_r29->unk58.x = 0; + work->unk1C.y = lbl_1_bss_54; + work->unk58.y = 0; + work->unk58.x = 0; object->rot.x = object->rot.y = object->rot.z = 0; - object->trans.y = temp_r29->unk1C.y; - temp_r29->unk1C.x = object->trans.x; - temp_r29->unk1C.z = object->trans.z; - temp_r29->unk1C.y += lbl_1_data_A0[temp_r29->unk2]; + object->trans.y = work->unk1C.y; + work->unk1C.x = object->trans.x; + work->unk1C.z = object->trans.z; + work->unk1C.y += lbl_1_data_A0[work->unk2]; if (object->trans.y < 0) { object->trans.y = 0; } fn_1_1BE8(object, 1.0f); if (fn_1_6878() == 5) { object->func = fn_1_54E4; - if (temp_r29->unk14) { + if (work->unk14) { lbl_1_bss_C = 1; } } @@ -1069,9 +1057,7 @@ void fn_1_5AA0(omObjData *object); void fn_1_5684(omObjData *object) { - Work2FAC *temp_r31; - s32 temp_r29; - temp_r31 = object->data; + Work2FAC *temp_r31 = object->data; if (fabs(object->trans.x) < 160.0 || fabs(object->trans.z) < 160.0) { temp_r31->unk1C.x += temp_r31->unk28.x * (1.0f / 60.0f); temp_r31->unk1C.z += temp_r31->unk28.z * (1.0f / 60.0f); @@ -1088,6 +1074,7 @@ void fn_1_5684(omObjData *object) omSetTra(object, temp_r31->unk1C.x + temp_r31->unk68.x, temp_r31->unk1C.y + temp_r31->unk68.y, temp_r31->unk1C.z + temp_r31->unk68.z); } if (fn_1_6878() >= 4) { + s32 temp_r29; GWPlayerCoinCollectAdd(object->work[0], temp_r31->unk14); if (lbl_1_bss_48) { Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); @@ -1157,15 +1144,13 @@ void fn_1_5AB4(ModelData *model, ParticleData *particle, Mtx matrix) void fn_1_5DCC(s32 arg0, Vec *arg1, u32 arg2) { - float temp_f31; - float temp_f30; - HsfanimStruct01 *temp_r31; - ParticleData *temp_r29; - s32 temp_r28; - temp_r29 = Hu3DData[arg0].unk_120; + ParticleData *temp_r29 = Hu3DData[arg0].unk_120; if (temp_r29->unk_00 != 0) { - temp_r31 = temp_r29->unk_48; + float temp_f31; + float temp_f30; + HsfanimStruct01 *temp_r31 = temp_r29->unk_48; + s32 temp_r28; for (temp_r28 = 0; temp_r28 < temp_r29->unk_30; temp_r28++, temp_r31++) { if (temp_r31->unk00) { continue; diff --git a/src/REL/m408Dll/object.c b/src/REL/m408Dll/object.c index a7db6c04..d37dc474 100644 --- a/src/REL/m408Dll/object.c +++ b/src/REL/m408Dll/object.c @@ -1,23 +1,19 @@ +#include "game/audio.h" #include "game/object.h" -#include "game/chrman.h" -#include "game/minigame_seq.h" #include "game/objsub.h" -#include "game/pad.h" -#include "game/wipe.h" - #include "game/hsfanim.h" -#include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/sprite.h" -#include "game/audio.h" -#include "game/gamework_data.h" - #include "REL/m408Dll.h" #include "ext_math.h" -#include "math.h" + +#ifndef __MWERKS__ +#include "game/frand.h" +#endif +s32 rand8(void); typedef struct struct_data_20C { s32 unk0; @@ -372,10 +368,9 @@ void fn_1_11E3C(StructBssDA4 *arg0, s32 arg1) void fn_1_12354(omObjData *object) { - s32 temp_r31; - u32 temp_r30; - temp_r30 = fn_1_6878(); + u32 temp_r30 = fn_1_6878(); if (temp_r30 == 2) { + s32 temp_r31; for (temp_r31 = 0; temp_r31 < lbl_1_bss_DA0; temp_r31++) ; object->func = fn_1_123C8; @@ -522,7 +517,6 @@ void fn_1_127A0(StructBssDA4 *arg0) void fn_1_12C6C(StructBssDA4 *arg0) { - Work2FAC *temp_r30; float temp_f31; float temp_f30; float temp_f26; diff --git a/src/REL/m408Dll/stage.c b/src/REL/m408Dll/stage.c index 71b8bafd..e0149180 100644 --- a/src/REL/m408Dll/stage.c +++ b/src/REL/m408Dll/stage.c @@ -1,23 +1,21 @@ +#include "ext_math.h" +#include "game/audio.h" #include "game/chrman.h" -#include "game/minigame_seq.h" -#include "game/object.h" -#include "game/objsub.h" -#include "game/pad.h" -#include "game/wipe.h" - #include "game/hsfanim.h" #include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/hsfmotion.h" +#include "game/object.h" +#include "game/objsub.h" #include "game/sprite.h" +#include "game/wipe.h" -#include "game/audio.h" -#include "game/gamework_data.h" #include "REL/m408Dll.h" -#include "ext_math.h" -#include "math.h" +#ifndef __MWERKS__ +#include "game/frand.h" +#endif s32 lbl_1_bss_160[2]; AnimData *lbl_1_bss_14C[5]; @@ -262,18 +260,14 @@ void fn_1_D6F0(omObjData *object); void fn_1_D004(omObjData *object) { float temp_f31; - float temp_f30; float temp_f29; - float temp_f28; - u16 *temp_r30; float *temp_r28; s32 temp_r27; s32 temp_r26; - CameraData *sp8; - temp_r30 = object->data; - sp8 = &Hu3DCamera[0]; - temp_f30 = fn_1_6888(); - temp_f28 = 7000; + u16 *temp_r30 = object->data; + CameraData *sp8 = &Hu3DCamera[0]; + float temp_f30 = fn_1_6888(); + float temp_f28 = 7000; switch (temp_r30[0]) { case 2: Hu3DModelAttrReset(object->model[9], HU3D_ATTR_DISPOFF); @@ -1042,7 +1036,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 +1044,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); @@ -1077,7 +1071,7 @@ void fn_1_10484(UnkFn10484 *arg0, HsfFace *arg1, HsfDrawData *arg2, GXColor *arg } fn_1_10B60(arg0, temp_r31); temp_r20 = (void *)(arg2->dlOfs + ((u32)lbl_1_bss_120[0])); - GXCallDisplayList(temp_r20, arg2->dlSize); + GXCallDisplayListNative(temp_r20, arg2->dlSize); } void fn_1_10830(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3) @@ -1138,6 +1132,10 @@ void fn_1_10830(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3) GXInitTexObjLOD(&sp1C, GX_LINEAR, GX_LINEAR, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1); } GXLoadTexObj(&sp1C, arg3); +#ifdef TARGET_PC + GXDestroyTexObj(&sp1C); + GXDestroyTlutObj(&sp10); +#endif } #define SET_TEVCOLOR_ALPHA(reg, color_var, value) \ @@ -1146,7 +1144,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..64a94409 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,19 +213,19 @@ 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); - GXCallDisplayList(var_r31->unk3C, var_r31->unk38); + GXSETARRAY(GX_VA_NRM, var_r31->unk48, sizeof(Vec), sizeof(Vec)); + GXCallDisplayListNative(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); @@ -768,7 +767,7 @@ s32 fn_1_E2A8(s16 arg0, u8 arg1, u32 arg2, s16 arg3, s16 arg4) temp_r31->unkC = 1.0f; temp_r31->unk10 = 0.0f; if (temp_r31->unk4 == NULL) { - temp_r31->unk4 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x20, MEMORY_DEFAULT_NUM); + temp_r31->unk4 = HuMemDirectMallocNum(HEAP_SYSTEM, 4 * sizeof(HsfVector2f), MEMORY_DEFAULT_NUM); } temp_r31->unk4[0].x = temp_r31->unk0 * temp_r30->unk54; temp_r31->unk4[0].y = temp_r31->unk0 * temp_r30->unk58; diff --git a/src/REL/m409Dll/main.c b/src/REL/m409Dll/main.c index 70955a13..5a32824a 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,15 +1357,15 @@ 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); - PSMTXReorder(sp128, spF8); + MTXReorder(sp128, spF8); if (((u8)omPauseChk() == 0) && (temp_r30->unkC)) { var_r23 = temp_r30->unkC; var_r23(arg0, temp_r30, arg1); @@ -1393,7 +1373,7 @@ void fn_1_602C(ModelData *arg0, f32 (*arg1)[4]) var_r29 = temp_r30->unk18; var_r31 = temp_r30->unk1C; var_r26 = temp_r30->unk20; - PSMTXROMultVecArray(spF8, &temp_r30->unk2C, &sp68[0], 4); + MTXROMultVecArray(spF8, &temp_r30->unk2C, &sp68[0], 4); for (var_r25 = 0; var_r25 < temp_r30->unk0; var_r25++, var_r29++, var_r26 += 4) { if (var_r29->unk4E == 0) { @@ -1432,7 +1412,7 @@ void fn_1_602C(ModelData *arg0, f32 (*arg1)[4]) DCFlushRangeNoSync(temp_r30->unk1C, temp_r30->unk0 * 0xC * 4); DCFlushRangeNoSync(temp_r30->unk20, temp_r30->unk0 * 8 * 4); PPCSync(); - GXCallDisplayList(temp_r30->unk28, temp_r30->unk4); + GXCallDisplayListNative(temp_r30->unk28, temp_r30->unk4); } void fn_1_6608(HsfVector2f *arg0, s16 arg1, s16 arg2, f32 arg3, f32 arg4) diff --git a/src/REL/m409Dll/player.c b/src/REL/m409Dll/player.c index 9157deeb..64f453f1 100644 --- a/src/REL/m409Dll/player.c +++ b/src/REL/m409Dll/player.c @@ -1,14 +1,15 @@ -#include "REL/m409Dll.h" - -#include "ext_math.h" #include "game/audio.h" #include "game/chrman.h" +#include "game/frand.h" #include "game/gamework_data.h" #include "game/hsfmotion.h" +#include "game/objsub.h" #include "game/pad.h" #include "game/sprite.h" #include "ext_math.h" +#include "REL/m409Dll.h" + #ifndef __MWERKS__ #include "game/esprite.h" #endif @@ -174,17 +175,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 +374,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 +1010,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 +1065,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) { @@ -1263,7 +1246,7 @@ f32 fn_1_BF38(s16 arg0) f32 length; motionData = &Hu3DMotion[arg0]; - hsfMotionData = motionData->unk_04->motion; + hsfMotionData = motionData->hsfData->motion; length = hsfMotionData->len; return length; } 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..1ddf2698 100644 --- a/src/REL/m410Dll/main.c +++ b/src/REL/m410Dll/main.c @@ -1,13 +1,16 @@ -#include "ext_math.h" +#include #include "game/gamework_data.h" #include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/minigame_seq.h" #include "game/object.h" +#include "game/objsub.h" #include "game/wipe.h" +#include "ext_math.h" #include "REL/m410Dll.h" + Process *lbl_1_bss_28; omObjData *lbl_1_bss_24; omObjData *lbl_1_bss_20; @@ -223,11 +226,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 +264,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 +466,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 3286d2c0..1503788a 100644 --- a/src/REL/m410Dll/player.c +++ b/src/REL/m410Dll/player.c @@ -1,4 +1,5 @@ #include "ext_math.h" +#include "game/audio.h" #include "game/chrman.h" #include "game/gamework_data.h" #include "game/hsfdraw.h" @@ -9,10 +10,12 @@ #include "game/pad.h" #include "game/sprite.h" + #include "REL/m410Dll.h" #ifndef __MWERKS__ #include "game/esprite.h" +#include "game/frand.h" #endif omObjData *lbl_1_bss_74; @@ -259,14 +262,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 +462,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 +470,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 +1105,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++) { @@ -1138,10 +1126,13 @@ void fn_1_B140(ModelData *arg0, Mtx arg1) GXLoadTexMtxImm(spF4, 30, GX_MTX3x4); MTXRotRad(sp124, 90, 0.017453292f * -var_r31->unk_08); GXLoadTexMtxImm(sp124, 33, GX_MTX2x4); - GXCallDisplayList(var_r30->unk_120.unk_E5C, var_r30->unk_120.unk_E58); + GXCallDisplayListNative(var_r30->unk_120.unk_E5C, var_r30->unk_120.unk_E58); } } GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); } +#ifdef TARGET_PC + GXDestroyTexObj(&sp14); +#endif } diff --git a/src/REL/m411Dll/main.c b/src/REL/m411Dll/main.c index c99ccbca..3edd0e89 100755 --- a/src/REL/m411Dll/main.c +++ b/src/REL/m411Dll/main.c @@ -16,9 +16,12 @@ #include "game/sprite.h" #include "game/wipe.h" -#include "dolphin.h" #include "ext_math.h" +#ifndef __MWERKS__ +#include "game/hsfex.h" +#endif + typedef struct { /* 0x00 */ s16 unk00; /* 0x02 */ s16 unk02[5]; @@ -377,7 +380,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..6436c16a 100644 --- a/src/REL/m412Dll/main.c +++ b/src/REL/m412Dll/main.c @@ -11,7 +11,6 @@ #include "game/pad.h" #include "game/sprite.h" #include "game/wipe.h" -#include "math.h" // bss s16 lbl_1_bss_7A0; @@ -569,8 +568,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 +698,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 +915,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 +1255,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 +1576,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 +1996,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..7a1fb9ac 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; @@ -468,12 +468,12 @@ void fn_1_10B8(Work19C8 *arg0) { s32 temp_r31; s32 temp_r30; - u8 sp16C[12][17] = {}; - u8 sp6C[12] = {}; + u8 sp16C[12][17] = {0}; + u8 sp6C[12] = {0}; s32 temp_r22 = (arg0->unk48[0]->unk18 - 4 < 0) ? 0 : (arg0->unk48[0]->unk18 - 4); s32 temp_r21 = (arg0->unk48[0]->unk18 + 4 > 11) ? 11 : (arg0->unk48[0]->unk18 + 4); - s32 sp44[2] = {}; - s32 sp3C[2] = {}; + s32 sp44[2] = {0}; + s32 sp3C[2] = {0}; s32 sp34[2] = { 9, 9 }; s32 temp_r20 = 0; s32 temp_r19 = 0; @@ -722,12 +722,11 @@ void fn_1_19C8(omObjData *object) HuSprAttrReset(temp_r31->unkA4, 0, HUSPR_ATTR_DISPOFF); HuSprAttrReset(temp_r31->unkA4, 0, HUSPR_ATTR_REVERSE); { - s32 sp258[12] = {}; + s32 sp258[12] = {0}; s32 sp194; for (sp194 = 0; sp194 < 3; sp194++) { StructBss2A6C *sp190; for (sp190 = lbl_1_bss_7884[sp194 + (temp_r31->unk10 * 3)]; sp190; sp190 = sp190->unk48) { - sp258[sp194] += (sp190 && sp190->unk0 && (sp190->unk1 & 0x2) == 0 && sp258[sp194] < 9); } } @@ -942,7 +941,7 @@ void fn_1_8AC8(StructBss2A6C *arg0, StructSp14C8 *arg1); void fn_1_52A4(s32 arg0) { omObjData *sp1EC = lbl_1_bss_30; - StructBss2A6C *sp2E48[14][19] = {}; + StructBss2A6C *sp2E48[14][19] = {NULL}; StructBss2A6C *sp1E8 = NULL; StructBss2A6C *temp_r31; StructBss2A6C *temp_r30; @@ -2011,7 +2010,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/m414Dll/main.c b/src/REL/m414Dll/main.c index 8ca555e6..bcd43d32 100644 --- a/src/REL/m414Dll/main.c +++ b/src/REL/m414Dll/main.c @@ -10,6 +10,10 @@ #include "game/sprite.h" #include "game/wipe.h" +#ifndef __MWERKS__ +#include "game/hsfex.h" +#endif + typedef struct UnkM414Struct { s32 unk00; s32 unk04; diff --git a/src/REL/m415Dll/main.c b/src/REL/m415Dll/main.c index 2053aed7..975aa227 100644 --- a/src/REL/m415Dll/main.c +++ b/src/REL/m415Dll/main.c @@ -14,7 +14,6 @@ #include "game/pad.h" #include "game/sprite.h" #include "game/wipe.h" -#include "math.h" // bss unkStruct5 lbl_1_bss_36C; @@ -421,8 +420,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..96ae4ec7 100644 --- a/src/REL/m415Dll/map.c +++ b/src/REL/m415Dll/map.c @@ -1,3 +1,4 @@ +#include "game/memory.h" #define HUSPR_USE_OLD_DEFS #include "REL/m415Dll.h" @@ -241,20 +242,20 @@ 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); - GXCallDisplayList(var_r31->unk3C, var_r31->unk38); + GXSETARRAY(GX_VA_NRM, var_r31->unk48, sizeof(Vec), sizeof(Vec)); + GXCallDisplayListNative(var_r31->unk3C, var_r31->unk38); } } } @@ -767,7 +768,7 @@ void fn_1_ACF4(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5) HuSprAnimKill(var_r31->unk0); var_r31->unk8 |= 0xFFFF0000; var_r30 = HuSprAnimMake(arg2, arg3, arg1); - var_r30->bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg3 * (var_r30->bmp->pixSize * arg2), 0x10000000U); + var_r30->bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg3 * (var_r30->bmp->pixSize * arg2), MEMORY_DEFAULT_NUM); var_f31 = arg4 / (f32)var_r30->bmp->sizeX; var_f30 = arg5 / (f32)var_r30->bmp->sizeY; var_r31->unk0 = var_r30; @@ -885,7 +886,7 @@ s32 fn_1_B0B8(s16 arg0, u8 arg1, s16 arg2) return 1; } -void fn_1_B634(s32 arg0) +void fn_1_B634(void) { s32 var_r28; s32 var_r27; diff --git a/src/REL/m416Dll/main.c b/src/REL/m416Dll/main.c index 0364445e..b5ca6c1d 100644 --- a/src/REL/m416Dll/main.c +++ b/src/REL/m416Dll/main.c @@ -3,6 +3,7 @@ #include "game/frand.h" #include "game/gamework_data.h" #include "game/hsfanim.h" +#include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/minigame_seq.h" @@ -13,7 +14,6 @@ #include "game/wipe.h" #include "ext_math.h" -#include "math.h" #include "REL/m416Dll.h" diff --git a/src/REL/m416Dll/map.c b/src/REL/m416Dll/map.c index ea6a46bd..24f26414 100644 --- a/src/REL/m416Dll/map.c +++ b/src/REL/m416Dll/map.c @@ -5,15 +5,11 @@ #include "game/hsfanim.h" #include "game/hsfman.h" #include "game/hsfmotion.h" -#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/pad.h" #include "game/sprite.h" -#include "game/wipe.h" #include "ext_math.h" -#include "math.h" #include "REL/m416Dll.h" @@ -278,6 +274,9 @@ void fn_1_89BC(ModelData *model, Mtx mtx) GXTexCoord2f32(0, 1); GXEnd(); fn_1_8904(lbl_1_bss_1180, GX_FALSE); +#ifdef TARGET_PC + GXDestroyTexObj(&sp14); +#endif } void fn_1_8EA0(void) diff --git a/src/REL/m417Dll/main.c b/src/REL/m417Dll/main.c index db0d47a6..60972bd2 100644 --- a/src/REL/m417Dll/main.c +++ b/src/REL/m417Dll/main.c @@ -1,11 +1,14 @@ #include "ext_math.h" #include "game/audio.h" +#include "game/chrman.h" #include "game/hsfdraw.h" #include "game/minigame_seq.h" +#include "game/objsub.h" #include "game/wipe.h" #include "REL/m417Dll.h" + typedef struct UnkM417Struct { /* 0x00 */ u32 unk_00; /* 0x04 */ u32 unk_04; @@ -109,9 +112,9 @@ void fn_1_4D8(omObjData *object) { UnkM417Struct *var_r31; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x68, 268435456); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM417Struct), 268435456); var_r31 = object->data; - memset(var_r31, 0, 0x68); + memset(var_r31, 0, sizeof(UnkM417Struct)); var_r31->unk_00 = 0; var_r31->unk_04 = 0; var_r31->unk_0C = 0; diff --git a/src/REL/m417Dll/player.c b/src/REL/m417Dll/player.c index 81f282b0..c371130f 100644 --- a/src/REL/m417Dll/player.c +++ b/src/REL/m417Dll/player.c @@ -4,13 +4,15 @@ #include "game/gamework_data.h" #include "game/hsfdraw.h" #include "game/hsfmotion.h" -#include "game/minigame_seq.h" #include "game/objsub.h" #include "game/pad.h" -#include "game/wipe.h" #include "REL/m417Dll.h" +#ifndef __MWERKS__ +#include "game/frand.h" +#endif + typedef struct UnkM417Struct8 { /* 0x00 */ u16 unk_00; /* 0x04 */ float unk_04; diff --git a/src/REL/m417Dll/water.c b/src/REL/m417Dll/water.c index 85cdcaea..5bb65bee 100644 --- a/src/REL/m417Dll/water.c +++ b/src/REL/m417Dll/water.c @@ -6,6 +6,10 @@ #include "REL/m417Dll.h" +#ifndef __MWERKS__ +#include "game/frand.h" +#endif + typedef struct UnkM417Struct3 { /* 0x00 */ s16 unk_00; /* 0x02 */ char unk02[4]; @@ -265,12 +269,10 @@ void fn_1_3D54(omObjData *object) { } void fn_1_3D58(omObjData *object) { Vec spC; - float sp8; float var_f31; float var_f29; float var_f28; - float var_f27; s32 var_r31; s32 var_r30; @@ -305,7 +307,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); @@ -574,8 +576,8 @@ void fn_1_4E64(omObjData *object) MTXScale(spC8, var_f31, var_f31, var_f31 * var_r31->unk_28); MTXConcat(sp68, spC8, sp98); MTXInverse(sp98, spC8); - PSMTXReorder(spC8, sp38); - PSMTXROMultVecArray(sp38, lbl_1_bss_178.unk_2C, lbl_1_bss_178.unk_34, lbl_1_bss_178.unk_18); + MTXReorder(spC8, sp38); + MTXROMultVecArray(sp38, lbl_1_bss_178.unk_2C, lbl_1_bss_178.unk_34, lbl_1_bss_178.unk_18); sp2C.x = (0.15f * var_r31->unk_18) * (var_r31->unk_24 * sind(var_r31->unk_10)); sp2C.y = 0.0f; sp2C.z = (0.15f * var_r31->unk_18) * (var_r31->unk_24 * cosd(var_r31->unk_10)); @@ -752,9 +754,6 @@ void fn_1_604C(ModelData *arg0, Mtx arg1) Mtx sp38; GXTexObj sp18; - GXColor *var_r30; - GXColor *var_r29; - GXColor sp14 = { 0xD8, 0xE2, 0xE5, 0x4C }; GXColor sp10 = { 0xE0, 0xD8, 0xF4, 0x40 }; DCStoreRangeNoSync(&sp14, 4); @@ -856,16 +855,19 @@ 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); - GXCallDisplayList(lbl_1_bss_178.unk_6E0[0], lbl_1_bss_178.unk_6E8[0]); + 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)); + GXCallDisplayListNative(lbl_1_bss_178.unk_6E0[0], lbl_1_bss_178.unk_6E8[0]); GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); GXSetTevDirect(GX_TEVSTAGE2); GXSetTevDirect(GX_TEVSTAGE3); +#ifdef TARGET_PC + GXDestroyTexObj(&sp18); +#endif } void fn_1_6B04(ModelData *model, Mtx arg1) @@ -1001,14 +1003,7 @@ void fn_1_6D64(s32 arg0, u32 arg1, float arg8, float arg9, float argA) void fn_1_7510(float arg8, float arg9, float argA, float argB) { - float var_f31; - float var_f30; - float var_f28; - - s32 var_r31; - s32 var_r30; - - var_f31 = 180.0 + (atan2d(arg8, argA)); + float var_f31 = 180.0 + (atan2d(arg8, argA)); if (var_f31 >= 360.0f) { var_f31 -= 360.0f; } diff --git a/src/REL/m418Dll/main.c b/src/REL/m418Dll/main.c index 38b547ca..cc4c9627 100644 --- a/src/REL/m418Dll/main.c +++ b/src/REL/m418Dll/main.c @@ -1,5 +1,6 @@ #include "ext_math.h" #include "game/chrman.h" +#include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/minigame_seq.h" #include "game/objsub.h" @@ -9,6 +10,12 @@ #include "REL/m418Dll.h" + +#ifndef __MWERKS__ +s32 rand8(void); +#include "game/audio.h" +#endif + // types typedef struct M418DllUnkStruct2 { omObjData *unk0; @@ -432,7 +439,7 @@ void fn_1_E74(omObjData *object) } if (object->work[1] != 0) { const char *sp8[4] = { "doukasen-null_B", "doukasen-null_A", "doukasen-null_X", "doukasen-null_Y" }; - Hu3DModelObjMtxGet(object->model[3], sp8[object->work[0]], sp18); + Hu3DModelObjMtxGet(object->model[3], (char*)sp8[object->work[0]], sp18); Hu3DModelPosSet(object->model[4], sp18[0][3], sp18[1][3], sp18[2][3]); } temp_r27 = &lbl_1_bss_170[object->work[0]]; @@ -494,7 +501,6 @@ s32 fn_1_18FC(omObjData *object, Vec arg1, f32 arg8, f32 arg9) f32 var_f30; f32 var_f27; f32 var_f26; - f32 var_f24; f32 var_f20; var_r28 = 0; @@ -806,7 +812,6 @@ void fn_1_3240(omObjData *object) Vec sp8; M418DllUnkStruct3 *temp_r28; ModelData *temp_r30; - M418DllWorkStruct *var_r29; temp_r30 = &Hu3DData[object->model[11]]; temp_r28 = &lbl_1_bss_26C[object->work[0]]; @@ -858,7 +863,6 @@ void fn_1_3444(omObjData *object, Vec arg1, f32 arg8, f32 arg9) f32 temp_f28; f32 var_f24; f32 var_f23; - f32 var_f22; s32 var_r27; s32 var_r29; @@ -961,17 +965,14 @@ void fn_1_3444(omObjData *object, Vec arg1, f32 arg8, f32 arg9) void fn_1_3EB0(omObjData *object, Vec arg1, f32 arg8, f32 arg9) { - M418DllUnkStruct3 *temp_r30; - s32 sp10; f32 var_f31; f32 var_f30; f32 var_f27; f32 var_f26; - f32 var_f24; f32 var_f20; - sp10 = 0; - temp_r30 = &lbl_1_bss_26C[object->work[0]]; + s32 sp10 = 0; + M418DllUnkStruct3 *temp_r30 = &lbl_1_bss_26C[object->work[0]]; var_f31 = arg1.x - object->trans.x; var_f30 = object->trans.z - arg1.z; var_f26 = 90.0 + atan2d(var_f30, var_f31); @@ -1132,16 +1133,10 @@ void fn_1_4C84(omObjData *object) Mtx sp14; Vec sp8; f32 var_f31; - M418DllUnkStruct3 *temp_r26; - M418DllWorkStruct *var_r27; - M418DllUnkStruct3 *temp_r30; - ModelData *temp_r28; - ModelData *temp_r29; - s32 temp_r0; - u32 temp_r3; - temp_r30 = &lbl_1_bss_26C[object->work[0]]; + M418DllUnkStruct3 *temp_r30 = &lbl_1_bss_26C[object->work[0]]; if (temp_r30->unk8 == 0) { + ModelData *temp_r29; var_f31 = (0.5f * temp_r30->unk3C) + ((CRot.x / 90.0f) * (0.5f * temp_r30->unk3C)); temp_r29 = &Hu3DData[object->model[12]]; if ((temp_r30->unk14 == 7) || (temp_r30->unk14 == 5)) { @@ -1261,11 +1256,9 @@ void fn_1_56AC(s32 arg0) void fn_1_5768(s32 arg0) { s32 var_r31; - M418DllUnkStruct4 *var_r30; - M418DllUnkStruct *var_r26; for (var_r31 = 0; var_r31 < 3; var_r31++) { - var_r30 = &lbl_1_bss_170[var_r31]; + M418DllUnkStruct4 *var_r30 = &lbl_1_bss_170[var_r31]; var_r30->unkC = 0; } @@ -1275,9 +1268,8 @@ void fn_1_5768(s32 arg0) s32 fn_1_57E4(s32 arg0) { M418DllUnkStruct4 *temp_r31; - M418DllUnkStruct *var_r25; - s32 var_r29; s32 var_r30; + s32 var_r29; if (fn_1_B0C8(&lbl_1_bss_50, 0) >= 0x3C) { for (var_r30 = 0; var_r30 < 3; var_r30++) { @@ -1359,7 +1351,6 @@ s32 fn_1_5A6C(s32 arg0) s32 var_r26; omObjData *temp_r25; s32 var_r24; - M418DllUnkStruct *temp_r20; temp_r27 = &lbl_1_bss_3EC; for (var_r31 = 0; var_r31 < 3; var_r31++) { @@ -1651,7 +1642,6 @@ void fn_1_6808(s32 arg0) M418DllUnkStruct6 *var_r30 = &lbl_1_bss_3EC; M418DllUnkStruct3 *var_r29; M418DllUnkStruct4 *var_r28; - M418DllUnkStruct *var_r23; HuAudAUXVolSet(0x40, 0x40); @@ -1678,12 +1668,10 @@ s32 fn_1_6914(s32 arg0) { Vec sp14; M418DllUnkStruct3 *temp_r31; - M418DllUnkStruct3 *temp_r30; s32 var_r29; s32 temp_r27; M418DllUnkStruct6 *var_r26; M418DllUnkStruct4 *var_r25; - M418DllUnkStruct *var_r18; var_r26 = &lbl_1_bss_3EC; @@ -2006,7 +1994,6 @@ s32 fn_1_7B68(s32 arg0) M418DllUnkStruct4 *temp_r28; s32 var_r27; s32 var_r26; - M418DllUnkStruct *temp_r21; var_r26 = -1; temp_r30 = &lbl_1_bss_3EC; @@ -2251,7 +2238,6 @@ void fn_1_8548(void) void fn_1_8668(void) { M418DllUnkStruct sp8; - f32 temp_f1; M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; @@ -2312,7 +2298,6 @@ s32 fn_1_88B4(s32 arg0) s32 var_r29; M418DllUnkStruct3 *var_r28; M418DllUnkStruct3 *var_r27; - M418DllUnkStruct *var_r23; var_r29 = 5; var_r30 = &lbl_1_bss_3EC; @@ -2426,10 +2411,8 @@ void fn_1_8C84(s32 arg0) s32 var_r30; M418DllUnkStruct6 *temp_r29; M418DllUnkStruct3 *temp_r28; - s32 var_r27; - s32 temp_r0; - var_r27 = 0; + s32 var_r27 = 0; temp_r29 = &lbl_1_bss_3EC; for (var_r30 = 0; var_r30 < 3; var_r30++) { temp_r31 = &lbl_1_bss_26C[temp_r29->unk4[var_r30]]; @@ -2452,17 +2435,12 @@ Vec lbl_1_data_3FC[6] = { { -200.0f, 0.0f, -450.0f }, { 0.0f, 0.0f, -400.0f }, { s32 fn_1_8D70(s32 arg0) { - s32 sp10; - s32 spC; - s32 sp8; M418DllUnkStruct3 *temp_r31; M418DllUnkStruct6 *temp_r30; s32 var_r29; M418DllUnkStruct3 *temp_r28; M418DllUnkStruct3 *temp_r27; omObjData *var_r26; - s32 temp_r3; - void *temp_r4; temp_r30 = &lbl_1_bss_3EC; @@ -2493,9 +2471,7 @@ s32 fn_1_8D70(s32 arg0) if (fn_1_B0C8(&lbl_1_bss_20, 1) != 0) { return fn_1_AF38(&lbl_1_bss_20); } - else { - return 0; - } + return 0; } void fn_1_8F74(s32 arg0) @@ -2669,10 +2645,8 @@ void fn_1_958C(void) M418DllUnkStruct4 *temp_r27; M418DllUnkStruct4 *temp_r26; M418DllUnkStruct3 *temp_r25; - s32 temp_r0; - s32 var_r24; - var_r24 = 0; + s32 var_r24 = 0; temp_r28 = &lbl_1_bss_1E0; for (var_r30 = 1; var_r30 < 4; var_r30++) { fn_1_ABC4(temp_r28->unk0, var_r30, var_r30, 0, 2); @@ -2857,7 +2831,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/m419Dll/main.c b/src/REL/m419Dll/main.c index dd58a28a..11054aac 100755 --- a/src/REL/m419Dll/main.c +++ b/src/REL/m419Dll/main.c @@ -3,6 +3,7 @@ #include "game/data.h" #include "game/frand.h" #include "game/gamework_data.h" +#include "game/hsfex.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/minigame_seq.h" @@ -13,7 +14,6 @@ #include "game/sprite.h" #include "game/wipe.h" -#include "dolphin.h" #include "ext_math.h" typedef struct { @@ -220,7 +220,7 @@ void fn_1_57C(s16 arg0) temp_r30 = &Hu3DData[lbl_1_bss_5BE]; sp14 = temp_r30->pos; sp14.y += 50.0f; - Hu3D3Dto2D(&sp14, 1, &sp8.x); + Hu3D3Dto2D(&sp14, 1, &sp8); var_r31 = sp8.x - 96.0f; var_r31 &= 0xFFF8; sp8.x = var_r31; @@ -323,6 +323,10 @@ void fn_1_AD0(s16 arg0) GXPosition3f32(lbl_1_bss_0[arg0].x, lbl_1_bss_0[arg0].y + 192.0f, 0.0f); GXTexCoord2f32(0.0f, 1.0f); GXEnd(); +#ifdef TARGET_PC + GXDestroyTexObj(&sp58); + GXDestroyTexObj(&sp38); +#endif } void fn_1_F58(void) @@ -548,7 +552,6 @@ void fn_1_F58(void) float fn_1_1F84(float arg0, float arg1) { float var_f31; - float var_f30; if (arg0 > 600.0f - arg1) { var_f31 = 600.0f + 200.0f * ((800.0f - (arg0 + arg1)) / 200.0f); diff --git a/src/REL/m420dll/camera.c b/src/REL/m420dll/camera.c index c587a69e..571c823a 100644 --- a/src/REL/m420dll/camera.c +++ b/src/REL/m420dll/camera.c @@ -1,12 +1,9 @@ #include "ext_math.h" -#include "game/audio.h" #include "game/flag.h" #include "game/hsfman.h" -#include "game/minigame_seq.h" #include "game/objsub.h" #include "game/pad.h" #include "game/printfunc.h" -#include "game/wipe.h" #include "REL/m420dll.h" diff --git a/src/REL/m420dll/main.c b/src/REL/m420dll/main.c index d6574513..32ccdabf 100644 --- a/src/REL/m420dll/main.c +++ b/src/REL/m420dll/main.c @@ -1,10 +1,9 @@ #include "ext_math.h" #include "game/flag.h" +#include "game/frand.h" #include "game/hsfman.h" #include "game/minigame_seq.h" #include "game/objsub.h" -#include "game/pad.h" -#include "game/printfunc.h" #include "game/wipe.h" #include "REL/m420dll.h" diff --git a/src/REL/m420dll/map.c b/src/REL/m420dll/map.c index 14b48a41..a2bebd31 100644 --- a/src/REL/m420dll/map.c +++ b/src/REL/m420dll/map.c @@ -4,6 +4,10 @@ #include "REL/m420dll.h" +#ifndef __MWERKS__ +#include "game/audio.h" +#endif + typedef struct M420DllUnkMapStruct2 { /* 0x00 */ struct { s8 unk_00_field0 : 1; diff --git a/src/REL/m420dll/player.c b/src/REL/m420dll/player.c index 5bdb79f2..6178a969 100644 --- a/src/REL/m420dll/player.c +++ b/src/REL/m420dll/player.c @@ -3,11 +3,11 @@ #include "game/chrman.h" #include "game/esprite.h" #include "game/hsfdraw.h" +#include "game/hsfex.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/objsub.h" #include "game/pad.h" -#include "game/wipe.h" #include "REL/m420dll.h" @@ -386,10 +386,6 @@ void fn_1_22CC(M420DllPlayerStruct *arg0) M420DllUnkStruct2 *var_r30; s32 var_r29; s32 var_r28; - s32 var_r26; - s32 var_r23; - s32 var_r21; - s32 var_r18; var_r30 = &lbl_1_data_50[arg0->unk_08]; fn_1_3098(arg0); @@ -469,27 +465,11 @@ void fn_1_22CC(M420DllPlayerStruct *arg0) void fn_1_276C(M420DllPlayerStruct *arg0) { - s32 sp8[4]; - float var_f31; float var_f30; s32 var_r30; - M420DllUnkStruct2 *var_r29; - s32 var_r28; - s32 var_r27; - s32 var_r26; - s32 var_r25; - s32 var_r24; - s32 var_r23; - s32 var_r22; - s32 var_r21; - s32 var_r20; - s32 var_r19; - s32 var_r18; - s32 var_r17; - - var_r29 = &lbl_1_data_50[arg0->unk_08]; + M420DllUnkStruct2 *var_r29 = &lbl_1_data_50[arg0->unk_08]; if (arg0->unk_4C == 1) { HuAudFXPlay(0x5F1); fn_1_669C(1); @@ -628,14 +608,6 @@ void fn_1_2D7C(M420DllPlayerStruct *arg0) void fn_1_2EA8(M420DllPlayerStruct *arg0) { s16 var_r30; - s32 var_r29; - s32 var_r28; - s32 var_r27; - s32 var_r26; - s32 var_r25; - s32 var_r24; - s32 var_r23; - s32 var_r22; fn_1_326C(arg0); CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[3], 0.0f, 1.0f, 0); @@ -1012,22 +984,12 @@ void fn_1_4294(M420DllPlayerStruct *arg0) void fn_1_4574(M420DllPlayerStruct *arg0) { - float var_f31; - M420DllPlayerStruct *var_r31; - s32 var_r29; - s32 var_r28; - CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[1], 0.0f, 4.0f, 0); fn_1_2260(arg0); } void fn_1_476C(M420DllPlayerStruct *arg0) { - float var_f31; - M420DllPlayerStruct *var_r31; - s32 var_r29; - s32 var_r28; - CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[2], 0.0f, 4.0f, 0); fn_1_2260(arg0); } diff --git a/src/REL/m421Dll/main.c b/src/REL/m421Dll/main.c index 8ab50b74..67639fbc 100644 --- a/src/REL/m421Dll/main.c +++ b/src/REL/m421Dll/main.c @@ -834,8 +834,6 @@ s32 fn_1_3FF8(void) void fn_1_4030(Vec *sp8, Vec *var_r31) { Vec sp10; - float var_f30; - float var_f29; VECSubtract(var_r31, sp8, &sp10); Center = *var_r31; diff --git a/src/REL/m421Dll/player.c b/src/REL/m421Dll/player.c index ce14a94c..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); @@ -1825,4 +1825,7 @@ void fn_1_ABDC(ModelData *model, Mtx matrix) GXColor1x8(1); } } +#ifdef TARGET_PC + GXDestroyTexObj(&sp8); +#endif } diff --git a/src/REL/m422Dll/main.c b/src/REL/m422Dll/main.c index 79b64b3c..6e0bcbdd 100755 --- a/src/REL/m422Dll/main.c +++ b/src/REL/m422Dll/main.c @@ -10,13 +10,16 @@ #include "game/hsfmotion.h" #include "game/minigame_seq.h" #include "game/object.h" +#include "game/objsub.h" #include "game/pad.h" #include "game/sprite.h" #include "game/wipe.h" -#include "dolphin.h" #include "ext_math.h" +#ifndef __MWERKS__ +s32 rand8(void); +#endif typedef struct { /* 0x00 */ s32 unk00; diff --git a/src/REL/m423Dll/main.c b/src/REL/m423Dll/main.c index 4590b4a0..1754f6e3 100755 --- a/src/REL/m423Dll/main.c +++ b/src/REL/m423Dll/main.c @@ -9,17 +9,21 @@ #include "game/memory.h" #include "game/minigame_seq.h" #include "game/object.h" +#include "game/objsub.h" #include "game/pad.h" #include "game/process.h" #include "game/sprite.h" #include "game/wipe.h" -#include "dolphin.h" #include "ext_math.h" +#ifndef __MWERKS__ +#include "game/frand.h" +#endif + #define frand7() (frand() & 0x7F) -extern u32 GlobalCounter; +SHARED_SYM extern u32 GlobalCounter; typedef struct { /* 0x00 */ s32 unk00; @@ -874,16 +878,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,9 +1259,9 @@ 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)); - GXCallDisplayList(temp_r31->unk38, temp_r31->unk34); + 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)); + GXCallDisplayListNative(temp_r31->unk38, temp_r31->unk34); } } } @@ -4471,9 +4475,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) { @@ -4493,10 +4497,13 @@ void fn_1_EF44(ModelData *arg0, Mtx arg1) GXLoadTexMtxImm(spF4, GX_TEXMTX0, GX_MTX3x4); MTXRotRad(sp124, 'Z', MTXDegToRad(-var_r31->unk0C)); GXLoadTexMtxImm(sp124, GX_TEXMTX1, GX_MTX2x4); - GXCallDisplayList(temp_r30->unk220, temp_r30->unk21C); + GXCallDisplayListNative(temp_r30->unk220, temp_r30->unk21C); } GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); +#ifdef TARGET_PC + GXDestroyTexObj(&sp14); +#endif } s32 fn_1_F574(Vec arg0, float arg1, s32 arg2) @@ -4505,7 +4512,6 @@ s32 fn_1_F574(Vec arg0, float arg1, s32 arg2) ModelData *var_r28; StructM423_0B *var_r26; StructM423_0A *var_r31; - s32 var_r27; s32 i; var_r29 = lbl_1_bss_9C; @@ -4861,7 +4867,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); @@ -4911,6 +4917,9 @@ void fn_1_11008(StructBssD0Data *arg0, void *arg1, s16 arg2, GXTexWrapMode arg3, GXInitTexObjLOD(&sp18, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); } GXLoadTexObj(&sp18, arg2); +#ifdef TARGET_PC + GXDestroyTexObj(&sp18); +#endif } s16 fn_1_11114(AnimData *arg0, s16 arg1) @@ -5148,7 +5157,7 @@ void fn_1_11900(ModelData *arg0, Mtx arg1) if (HmfInverseMtxF3X3(arg1, sp128) == 0) { MTXIdentity(sp128); } - PSMTXReorder(sp128, sp8); + MTXReorder(sp128, sp8); if (temp_r31->unk4C) { var_r18 = temp_r31->unk4C; var_r18(arg0, temp_r31, arg1); @@ -5156,7 +5165,7 @@ void fn_1_11900(ModelData *arg0, Mtx arg1) var_r29 = temp_r31->unk3C; var_r30 = temp_r31->unk40; var_r28 = temp_r31->unk44; - PSMTXROMultVecArray(sp8, lbl_1_data_8C4, sp38, 4); + MTXROMultVecArray(sp8, lbl_1_data_8C4, sp38, 4); for (i = 0; i < temp_r31->unk26; i++, var_r29++) { if (!var_r29->unk30) { var_r30->x = var_r30->y = var_r30->z = 0.0f; @@ -5221,14 +5230,14 @@ 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); - GXCallDisplayList(temp_r31->unk48, temp_r31->unk34); + GXSETARRAY(GX_VA_TEX0, temp_r31->unk44, temp_r31->unk26 * sizeof(Vec2f) * 4, sizeof(Vec2f)); + GXCallDisplayListNative(temp_r31->unk48, temp_r31->unk34); if (shadowModelDrawF == 0) { if (!(temp_r31->unk21 & 2)) { temp_r31->unk28++; diff --git a/src/REL/m424Dll/ball.c b/src/REL/m424Dll/ball.c index c8c3177e..f0a15594 100644 --- a/src/REL/m424Dll/ball.c +++ b/src/REL/m424Dll/ball.c @@ -4,10 +4,12 @@ #include "game/audio.h" #include "game/chrman.h" #include "game/data.h" +#include "game/frand.h" #include "game/gamework_data.h" #include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/hsfmotion.h" +#include "game/memory.h" #include "game/pad.h" #include "game/sprite.h" #include "string.h" @@ -1084,7 +1086,7 @@ void *fn_1_6078(s32 arg0) if (var_r31 == 0x20) { return NULL; } - lbl_1_bss_5BC[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, arg0, 0x10000000); + lbl_1_bss_5BC[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, arg0, MEMORY_DEFAULT_NUM); return lbl_1_bss_5BC[var_r31]; } diff --git a/src/REL/m424Dll/claw.c b/src/REL/m424Dll/claw.c index 42d11821..07647127 100644 --- a/src/REL/m424Dll/claw.c +++ b/src/REL/m424Dll/claw.c @@ -1,13 +1,20 @@ #include "REL/m424Dll.h" -#include "math.h" #include "ext_math.h" #include "game/audio.h" #include "game/chrman.h" +#include "game/EnvelopeExec.h" #include "game/gamework_data.h" +#include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/hsfmotion.h" +#include "game/memory.h" #include "game/pad.h" +#include "math.h" + +#ifndef __MWERKS__ +#include "game/frand.h" +#endif // STRUCT typedef struct _M424DllClawStruct { @@ -146,8 +153,8 @@ void fn_1_94D0(omObjData *arg0) s32 var_r29; M424DllClawStruct *var_r31; - var_r31 = arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1B0, 0x10000000); - memset(var_r31, 0, 0x1B0); + var_r31 = arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M424DllClawStruct), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, sizeof(M424DllClawStruct)); var_r31->unk0 = lbl_1_bss_24[3]; var_r31->unk2 = GWPlayerCfg[var_r31->unk0].character; var_r31->unk4 = GWPlayerCfg[var_r31->unk0].pad_idx; diff --git a/src/REL/m424Dll/map.c b/src/REL/m424Dll/map.c index 4536b396..5cd4eb0d 100644 --- a/src/REL/m424Dll/map.c +++ b/src/REL/m424Dll/map.c @@ -55,8 +55,8 @@ void fn_1_1BB8(omObjData *arg0) { M424DllMapStruct *var_r30; - var_r30 = arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x54, 0x10000000); - memset(var_r30, 0, 0x54); + var_r30 = arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M424DllMapStruct), MEMORY_DEFAULT_NUM); + memset(var_r30, 0, sizeof(M424DllMapStruct)); var_r30->unk0 = 0.0f; var_r30->unk4 = 0.0f; var_r30->unk38 = -1; diff --git a/src/REL/m425Dll/main.c b/src/REL/m425Dll/main.c index 7d1a75d0..f2221b7b 100644 --- a/src/REL/m425Dll/main.c +++ b/src/REL/m425Dll/main.c @@ -5,7 +5,6 @@ #include "ext_math.h" #include "game/audio.h" #include "game/chrman.h" -#include "game/esprite.h" #include "game/flag.h" #include "game/frand.h" #include "game/gamework_data.h" @@ -18,16 +17,14 @@ #include "game/object.h" #include "game/objsub.h" #include "game/pad.h" -#include "game/printfunc.h" #include "game/sprite.h" -#include "game/window.h" #include "game/wipe.h" #include "math.h" #include "string.h" #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; @@ -342,8 +339,6 @@ void fn_1_8E4(omObjData *object) s32 var_r30; s32 var_r29; s32 var_r28; - s16 var_r26; - s16 var_r25; switch (lbl_1_bss_648) { case 4: @@ -683,49 +678,49 @@ void fn_1_1B40(omObjData *object) float var_f19; float var_f18; - (void) object; - (void) object; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r30; - (void) var_r30; - (void) var_r30; - (void) var_r30; - (void) var_r30; - (void) var_r30; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f20; - (void) var_f20; - (void) var_f20; - (void) var_f19; - (void) var_f19; - (void) var_f19; - (void) var_f18; - (void) var_f18; - (void) var_f18; + (void)object; + (void)object; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r30; + (void)var_r30; + (void)var_r30; + (void)var_r30; + (void)var_r30; + (void)var_r30; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f20; + (void)var_f20; + (void)var_f20; + (void)var_f19; + (void)var_f19; + (void)var_f19; + (void)var_f18; + (void)var_f18; + (void)var_f18; } var_r31->unk_38 = var_r31->unk_04 * sind(var_r31->unk_18); var_r31->unk_40 = var_r31->unk_04 * cosd(var_r31->unk_18); @@ -1455,7 +1450,7 @@ void fn_1_5608(GXColor **arg0, s16 arg1, GXColor *arg2) s32 var_r29; s32 var_r28; - var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (4 * sizeof(GXColor)), 0x10000000); + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (4 * sizeof(GXColor)), MEMORY_DEFAULT_NUM); for (var_r29 = 0; var_r29 < arg1; var_r29++) { for (var_r28 = 0; var_r28 < 4; var_r31++, arg2++, var_r28++) { var_r31->r = arg2->r; @@ -1628,20 +1623,20 @@ 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); - GXCallDisplayList(var_r31->unk_10, var_r31->unk_0C); + 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)); + GXCallDisplayListNative(var_r31->unk_10, var_r31->unk_0C); } u32 lbl_1_data_114 = 0x41C64E6D; @@ -1678,18 +1673,7 @@ float fn_1_66BC(float arg8, float arg9, float argA, float argB) void fn_1_6734(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) { float spC[3]; - float sp8; - float var_f31; - float var_f30; float var_f29; - float var_f28; - float var_f27; - float var_f26; - float var_f25; - float var_f24; - float var_f23; - float var_f22; - float var_f21; s32 var_r31; for (var_r31 = 0; var_r31 < 3; var_r31++) { diff --git a/src/REL/m425Dll/thwomp.c b/src/REL/m425Dll/thwomp.c index 3f02dce6..9711ac9d 100644 --- a/src/REL/m425Dll/thwomp.c +++ b/src/REL/m425Dll/thwomp.c @@ -4,9 +4,6 @@ #include "ext_math.h" #include "game/animdata.h" #include "game/audio.h" -#include "game/chrman.h" -#include "game/esprite.h" -#include "game/flag.h" #include "game/frand.h" #include "game/gamework_data.h" #include "game/hsfanim.h" @@ -14,20 +11,15 @@ #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/memory.h" -#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/pad.h" -#include "game/printfunc.h" #include "game/sprite.h" -#include "game/window.h" -#include "game/wipe.h" #include "string.h" #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 +423,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++) { @@ -2131,23 +2123,23 @@ void fn_1_101C4(ModelData *var_r29, Mtx var_r28) if (HmfInverseMtxF3X3(var_r28, sp50) == 0) { MTXIdentity(sp50); } - PSMTXReorder(sp50, sp20); + MTXReorder(sp50, sp20); 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]); + GXCallDisplayListNative(var_r31->unk_2A8[var_r30], var_r31->unk_244[var_r30]); } } GXSetNumTevStages(2); @@ -2181,18 +2173,18 @@ 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]); + GXCallDisplayListNative(var_r31->unk_2A8[1], var_r31->unk_244[1]); } } @@ -2684,17 +2676,17 @@ 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); } - PSMTXReorder(sp128, &sp8[0]); + MTXReorder(sp128, &sp8[0]); if (var_r31->unk_4C) { var_r18 = var_r31->unk_4C; var_r18(var_r24, var_r31, var_r21); @@ -2702,7 +2694,7 @@ void fn_1_11EE0(ModelData *var_r24, Mtx var_r21) var_r29 = var_r31->unk_3C; var_r30 = var_r31->unk_40; var_r26 = var_r31->unk_44; - PSMTXROMultVecArray(sp8, lbl_1_data_19C, &sp38[0], 4); + MTXROMultVecArray(sp8, lbl_1_data_19C, &sp38[0], 4); for (var_r23 = 0; var_r23 < var_r31->unk_24; var_r23++, var_r29++) { if (!var_r29->unk_28) { var_r30->x = var_r30->y = var_r30->z = 0.0f; @@ -2748,10 +2740,10 @@ 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); + GXCallDisplayListNative(var_r31->unk_48, var_r31->unk_34); if (shadowModelDrawF == 0) { if ((var_r31->unk_21 & 2) == 0) { var_r31->unk_28++; diff --git a/src/REL/m426Dll/main.c b/src/REL/m426Dll/main.c index 9a80a823..511afc04 100644 --- a/src/REL/m426Dll/main.c +++ b/src/REL/m426Dll/main.c @@ -13,6 +13,10 @@ #include "string.h" #include "version.h" +#ifndef __MWERKS__ +#include "game/frand.h" +#endif + typedef struct UnkM426Struct { /* 0x00 */ s32 unk_00; /* 0x04 */ omObjData *unk_04[2]; @@ -265,7 +269,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 }, @@ -799,7 +803,6 @@ void fn_1_16F8(omObjData *object) float var_f26; float var_f25; float var_f24; - float var_f23; float var_f22; float var_f21; @@ -1311,8 +1314,6 @@ void fn_1_2F5C(omObjData *object, float *arg1, float *arg2, s32 *arg3) s32 spC[2]; UnkM426Struct *sp8; - float var_f31; - UnkM426Struct2 *var_r31; s32 var_r30; s32 var_r29; @@ -3035,17 +3036,17 @@ 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); } - PSMTXReorder(sp128, sp8); + MTXReorder(sp128, sp8); if (var_r31->unk_4C) { var_r18 = var_r31->unk_4C; var_r18(arg0, var_r31, arg1); @@ -3053,7 +3054,7 @@ void fn_1_80DC(ModelData *arg0, Mtx arg1) var_r29 = var_r31->unk_3C; var_r30 = var_r31->unk_40; var_r26 = var_r31->unk_44; - PSMTXROMultVecArray(sp8, lbl_1_data_22C, &sp38[0], 4); + MTXROMultVecArray(sp8, lbl_1_data_22C, &sp38[0], 4); for (var_r23 = 0; var_r23 < var_r31->unk_24; var_r23++, var_r29++) { if (!var_r29->unk_28) { var_r30->x = var_r30->y = var_r30->z = 0.0f; @@ -3102,7 +3103,7 @@ void fn_1_80DC(ModelData *arg0, Mtx arg1) 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); + GXCallDisplayListNative(var_r31->unk_48, var_r31->unk_34); if (!shadowModelDrawF) { if ((var_r31->unk_21 & 2) == 0) { var_r31->unk_28++; @@ -3122,7 +3123,6 @@ void fn_1_88B4(ModelData *arg0, Mtx arg1) { float var_f31; float var_f30; - float var_f28; float var_f27; float var_f26; @@ -3135,7 +3135,7 @@ void fn_1_88B4(ModelData *arg0, Mtx arg1) var_f27 = var_r30->pos.y - arg0->pos.y; var_f30 = var_r30->pos.z - arg0->pos.z; var_f26 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); - arg0->rot.x = (atan2d(var_f26, var_f27)) - 90.0; + arg0->rot.x = (atan2d(var_f26, var_f27))-90.0; arg0->rot.y = atan2d(var_f31, var_f30); var_r29 = arg0->unk_120; GXLoadPosMtxImm(arg1, 0); @@ -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/main.c b/src/REL/m427Dll/main.c index 7031739f..a00ca58c 100644 --- a/src/REL/m427Dll/main.c +++ b/src/REL/m427Dll/main.c @@ -2,6 +2,8 @@ #include "ext_math.h" #include "game/audio.h" +#include "game/chrman.h" +#include "game/frand.h" #include "game/gamework.h" #include "game/gamework_data.h" #include "game/hsfformat.h" @@ -541,7 +543,7 @@ void fn_1_1954(void) { s32 var_r31; M427DllStruct2* var_r30; - var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xA4, 0x10000000); + var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M427DllStruct2), MEMORY_DEFAULT_NUM); lbl_1_bss_40 = var_r30; var_r30->unk9C = 0; var_r30->unkA0 = 0; @@ -736,7 +738,6 @@ void fn_1_21E8(s32 arg0, s32 arg1) { void fn_1_232C(s32 arg0) { M427DllStruct2* temp_r29; - f32 temp_f0; s32 var_r31; temp_r29 = lbl_1_bss_40; @@ -785,7 +786,6 @@ void fn_1_232C(s32 arg0) { void fn_1_2518(s32 arg0) { M427DllStruct2* temp_r29; - f32 temp_f0; s32 var_r31; temp_r29 = lbl_1_bss_40; diff --git a/src/REL/m427Dll/map.c b/src/REL/m427Dll/map.c index fa191ed6..c7b5a3f3 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)) @@ -388,9 +388,9 @@ void fn_1_32F4(Process *arg0) lbl_1_bss_158.unk0 = 0; lbl_1_bss_548 = omAddObjEx(arg0, 0x7F, 0, 0, -1, fn_1_6760); - lbl_1_bss_F0 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10 * sizeof(M427DllMapStruct), MEMORY_DEFAULT_NUM); + lbl_1_bss_F0 = HuMemDirectMallocNum(HEAP_SYSTEM, 16 * sizeof(M427DllMapStruct), MEMORY_DEFAULT_NUM); - for (var_r31 = 0; var_r31 < 0x10; var_r31++) { + for (var_r31 = 0; var_r31 < 16; var_r31++) { lbl_1_bss_F0[var_r31].unk2 = -1; } temp_r30 = HuSprAnimRead(HuDataReadNum(0x3A0017, MEMORY_DEFAULT_NUM)); @@ -613,8 +613,8 @@ void fn_1_3E58(omObjData *arg0) var_r29->unk48[0] = 0; var_r29->unk4A = 0; var_r29->unk4 = 0; - lbl_1_bss_E4 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10 * sizeof(M427DllMapStruct5), MEMORY_DEFAULT_NUM); - for (var_r28 = 0; var_r28 < 0x10; var_r28++) { + lbl_1_bss_E4 = HuMemDirectMallocNum(HEAP_SYSTEM, 16 * sizeof(M427DllMapStruct5), MEMORY_DEFAULT_NUM); + for (var_r28 = 0; var_r28 < 16; var_r28++) { lbl_1_bss_E4[var_r28].unk10 = -1.0f; } fn_1_510C(0, 0x32, 0x32); @@ -629,7 +629,6 @@ void fn_1_4218(omObjData *arg0) M427DllMapStruct5 *var_r31; s16 var_r30; M427DllMapStruct4 *var_r29; - s32 temp_r28; var_r29 = &lbl_1_bss_98; var_r31 = &lbl_1_bss_E4[0]; @@ -798,12 +797,6 @@ void fn_1_50A0(ModelData *arg0, Mtx arg1) void fn_1_510C(s32 arg0, s16 arg1, s16 arg2) { - s16 sp12; - s16 sp10; - s16 spE; - s16 spC; - s16 spA; - s16 sp8; M427DllMapStruct4 *var_r31; M427DllMapSubstruct5 *var_r30; s16 var_r29; @@ -837,7 +830,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); @@ -895,11 +888,9 @@ void fn_1_558C(M427DllMapStruct4 *arg0) Vec *var_r29; Vec *var_r28; s16 var_r27; - M427DllMapStruct5 *var_r26; Vec2f *var_r25; s16 var_r24; CameraData *var_r23; - s16 var_r22; var_r23 = &Hu3DCamera[0]; if (lbl_1_data_F8 == -1.0f) { @@ -1013,13 +1004,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); @@ -1072,10 +1063,13 @@ void fn_1_618C(ModelData *arg0, Mtx arg1) GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); GXSetZCompLoc(0); GXSetBlendMode(GX_BM_NONE, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); - GXCallDisplayList(var_r31->unk20, var_r31->unk24); + GXCallDisplayListNative(var_r31->unk20, var_r31->unk24); GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); +#ifdef TARGET_PC + GXDestroyTexObj(&sp14); +#endif } s32 lbl_1_data_FC[0xC] = { @@ -1109,7 +1103,6 @@ void fn_1_6760(omObjData *object) s16 var_r26; M427DllMapSubstruct3Sub *var_r25; M427DllMapStruct3 *var_r24; - u16 var_r23; var_r24 = &lbl_1_bss_158; Hu3DFogSet(3500.0f, 20000.0f, 0, 0, 0); @@ -1975,13 +1968,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); @@ -2017,7 +2010,7 @@ void fn_1_9B88(ModelData *model, Mtx matrix) GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); GXSetZCompLoc(0); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); - GXCallDisplayList(var_r31->unk80, var_r31->unk84); + GXCallDisplayListNative(var_r31->unk80, var_r31->unk84); GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); @@ -2055,7 +2048,6 @@ s16 fn_1_A1F4(s32 arg0, s16 arg1, s16 arg2, s16 arg3, float arg8, Vec *arg4, Vec Vec2f *var_r26; void *var_r25; M427DllMapStruct3 *var_r22; - u16 var_r21; s16 var_r19; void *var_r18; @@ -2348,13 +2340,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); } @@ -2439,10 +2431,13 @@ void fn_1_B3CC(ModelData *model, Mtx matrix) GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); GXSetZCompLoc(0); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); - GXCallDisplayList(var_r31->unk_40, var_r31->unk_44); + GXCallDisplayListNative(var_r31->unk_40, var_r31->unk_44); GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); +#ifdef TARGET_PC + GXDestroyTexObj(&sp44); +#endif } void fn_1_BD2C(ModelData *model, Mtx matrix) @@ -2793,7 +2788,6 @@ M427DllMapSubstruct6 *fn_1_D4FC(s16 arg0, Vec *arg1, Vec *arg2, float arg8, GXCo s16 fn_1_D63C(AnimData *arg0, s16 arg1, float arg8, s16 arg2, s16 arg3) { - float temp_f0; M427DllMapStruct7 *var_r31; s16 var_r30; Vec2f *var_r29; @@ -3009,13 +3003,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]; @@ -3028,7 +3022,7 @@ void fn_1_DCD4(ModelData *model, Mtx matrix) sp128[0][3] = 0.0f; sp128[1][3] = 0.0f; sp128[2][3] = 0.0f; - PSMTXReorder(sp128, spF8); + MTXReorder(sp128, spF8); if ((omPauseChk() == 0) && (var_r30->unk_0C)) { var_r23 = var_r30->unk_0C; var_r23(model, var_r30, matrix); @@ -3036,7 +3030,7 @@ void fn_1_DCD4(ModelData *model, Mtx matrix) var_r29 = var_r30->unk_18; var_r31 = var_r30->unk_1C; var_r26 = var_r30->unk_20; - PSMTXROMultVecArray(spF8, &var_r30->unk_2C, sp68, 4); + MTXROMultVecArray(spF8, &var_r30->unk_2C, sp68, 4); for (var_r25 = 0; var_r25 < var_r30->unk_00; var_r25++, var_r29++, var_r26 += 4) { if (var_r29->unk_62 == 0) { var_r31->x = var_r31->y = var_r31->z = 0.0f; @@ -3051,20 +3045,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); - PSMTXRotRad(spC8, 0x5A, MTXDegToRad(var_r29->unk_44)); - PSMTXConcat(sp128, spC8, sp98); - PSMTXMultVecArray(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++); + MTXRotRad(spC8, 0x5A, MTXDegToRad(var_r29->unk_44)); + MTXConcat(sp128, spC8, sp98); + MTXMultVecArray(sp98, &sp38, &sp8, 4); + 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); @@ -3074,7 +3068,7 @@ void fn_1_DCD4(ModelData *model, Mtx matrix) DCFlushRangeNoSync(var_r30->unk_1C, var_r30->unk_00 * sizeof(Vec) * 4); DCFlushRangeNoSync(var_r30->unk_20, var_r30->unk_00 * sizeof(Vec2f) * 4); PPCSync(); - GXCallDisplayList(var_r30->unk_28, var_r30->unk_04); + GXCallDisplayListNative(var_r30->unk_28, var_r30->unk_04); } void fn_1_E2B0(Vec2f *arg0, s16 arg1, s16 arg2, float arg8, float arg9) diff --git a/src/REL/m427Dll/player.c b/src/REL/m427Dll/player.c index fe097531..1d28252d 100644 --- a/src/REL/m427Dll/player.c +++ b/src/REL/m427Dll/player.c @@ -6,18 +6,15 @@ #include "ext_math.h" #include "game/audio.h" #include "game/chrman.h" -#include "game/gamework.h" #include "game/gamework_data.h" #include "game/hsfdraw.h" #include "game/hsfformat.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/memory.h" -#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" #include "game/pad.h" -#include "game/wipe.h" #include "string.h" #ifndef __MWERKS__ @@ -1460,26 +1457,6 @@ void fn_1_12580(omObjData *var_r24) void fn_1_12B08(void) { Vec sp20; - float sp1C; - float sp18; - float sp14; - float sp10; - float spC; - float sp8; - float var_f31; - float var_f30; - float var_f29; - float var_f28; - float var_f27; - float var_f26; - float var_f25; - float var_f24; - float var_f23; - float var_f22; - float var_f21; - float var_f20; - float var_f19; - float var_f18; M427DllBss590Struct *var_r31; s32 var_r30; M427DllBss57CStruct *var_r29; @@ -1593,10 +1570,10 @@ void fn_1_12B08(void) lbl_1_bss_558 = lbl_1_data_260; lbl_1_bss_554 = lbl_1_data_3BC; lbl_1_bss_550 = lbl_1_bss_584; - var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x40 * sizeof(M427DllBss57CStruct), MEMORY_DEFAULT_NUM); + var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, 64 * sizeof(M427DllBss57CStruct), MEMORY_DEFAULT_NUM); lbl_1_bss_57C = var_r29; - memset(lbl_1_bss_57C, 0, 0x40 * sizeof(M427DllBss57CStruct)); - for (var_r30 = 0; var_r30 < 0x40; var_r30++, var_r29++) { + memset(lbl_1_bss_57C, 0, 64 * sizeof(M427DllBss57CStruct)); + for (var_r30 = 0; var_r30 < 64; var_r30++, var_r29++) { var_r29->unk_00 = var_r30; var_r29->unk_04 = -1; var_r29->unk_08 = -1; @@ -1645,7 +1622,7 @@ void fn_1_13FBC(ModelData *model, Mtx matrix) var_r27 = &lbl_1_bss_578[*var_r25]; var_r24 = lbl_1_bss_56C[*var_r25]; GXLoadPosMtxImm(matrix, 0); - PSMTXInvXpose(matrix, sp70); + MTXInvXpose(matrix, sp70); GXLoadNrmMtxImm(sp70, 0); GXSetNumTevStages(1); GXSetNumTexGens(1); @@ -1666,10 +1643,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 +1655,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 +1667,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); @@ -1849,9 +1826,6 @@ s32 fn_1_154BC(float arg8, float arg9, float argA) s32 fn_1_155E0(float arg8, float arg9, float argA, float *arg0) { float var_f31; - float var_f30; - double var_f29; - double var_f28; M427DllBss590Struct *var_r31; s32 var_r30; M427DllBss590Struct *var_r29; @@ -2138,7 +2112,6 @@ float fn_1_166AC(float arg8, float arg9, float argA) { float var_f31; float var_f30; - float var_f26; if (arg8 >= 360.0) { arg8 -= 360.0; diff --git a/src/REL/m428Dll/main.c b/src/REL/m428Dll/main.c index 1ee62c82..170625b0 100644 --- a/src/REL/m428Dll/main.c +++ b/src/REL/m428Dll/main.c @@ -4,7 +4,6 @@ #include "game/audio.h" #include "game/chrman.h" #include "game/gamework_data.h" -#include "game/hsfanim.h" #include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/hsfmotion.h" @@ -12,9 +11,7 @@ #include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/pad.h" #include "game/sprite.h" -#include "game/window.h" #include "game/wipe.h" #include "string.h" @@ -980,6 +977,9 @@ void fn_1_3B64(void) GXTexCoord2f32(0.0f, 1.0f); } } +#ifdef TARGET_PC + GXDestroyTexObj(&sp14); +#endif } s32 lbl_1_data_EC[] = { diff --git a/src/REL/m428Dll/map.c b/src/REL/m428Dll/map.c index 925c04bc..df9739e3 100644 --- a/src/REL/m428Dll/map.c +++ b/src/REL/m428Dll/map.c @@ -1,23 +1,13 @@ #include "dolphin/gx/GXEnum.h" #include "dolphin/gx/GXVert.h" #include "ext_math.h" -#include "game/audio.h" -#include "game/chrman.h" -#include "game/gamework_data.h" #include "game/hsfanim.h" -#include "game/hsfdraw.h" #include "game/hsfformat.h" #include "game/hsfman.h" -#include "game/hsfmotion.h" -#include "game/init.h" #include "game/memory.h" -#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/pad.h" #include "game/sprite.h" -#include "game/window.h" -#include "game/wipe.h" #include "string.h" #include "REL/m428Dll.h" @@ -565,8 +555,6 @@ void fn_1_5CCC(HsfData *var_r31, HsfObject *var_r23) void fn_1_6280(ModelData *arg1, ParticleData *particle, Mtx matrix) { - s32 sp3C; - s32 sp38; Vec sp8; float var_f31; float var_f30; @@ -1131,7 +1119,6 @@ void fn_1_939C(float *arg0, float (*arg1)[3], float (*arg2)[3], s32 var_r28) float spD4[16]; float sp94[16]; Vec sp8; - s32 var_r31; s32 var_r30; s32 var_r27; diff --git a/src/REL/m428Dll/player.c b/src/REL/m428Dll/player.c index 4964e8a5..39e17187 100644 --- a/src/REL/m428Dll/player.c +++ b/src/REL/m428Dll/player.c @@ -9,15 +9,11 @@ #include "game/hsfload.h" #include "game/hsfman.h" #include "game/hsfmotion.h" -#include "game/init.h" #include "game/memory.h" -#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" #include "game/pad.h" #include "game/sprite.h" -#include "game/window.h" -#include "game/wipe.h" #include "string.h" #include "REL/m428Dll.h" @@ -239,7 +235,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 }, @@ -973,8 +969,6 @@ void fn_1_BBD0(omObjData *object) float var_f31; float var_f30; float var_f27; - float var_f26; - float var_f25; float var_f24; float var_f23; float var_f22; @@ -2120,7 +2114,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 +2131,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 +2175,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); @@ -3109,7 +3103,7 @@ void fn_1_134C0(ModelData *var_r23, Mtx var_r22) if (HmfInverseMtxF3X3(var_r22, &sp128[0]) == 0) { MTXIdentity(sp128); } - PSMTXReorder(sp128, sp8); + MTXReorder(sp128, sp8); if (var_r31->unk_4C) { var_r18 = var_r31->unk_4C; var_r18(var_r23, var_r31, var_r22); @@ -3117,7 +3111,7 @@ void fn_1_134C0(ModelData *var_r23, Mtx var_r22) var_r29 = var_r31->unk_3C; var_r30 = var_r31->unk_40; var_r28 = var_r31->unk_44; - PSMTXROMultVecArray(sp8, lbl_1_data_6A4, &sp38[0], 4); + MTXROMultVecArray(sp8, lbl_1_data_6A4, &sp38[0], 4); for (var_r26 = 0; var_r26 < var_r31->unk_26; var_r26++, var_r29++) { if (!var_r29->unk_30) { var_r30->x = var_r30->y = var_r30->z = 0.0f; @@ -3182,14 +3176,14 @@ 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)); - GXCallDisplayList(var_r31->unk_48, var_r31->unk_34); + GXSETARRAY(GX_VA_TEX0, var_r31->unk_44, var_r31->unk_26 * sizeof(Vec2f) * 4, sizeof(Vec2f)); + GXCallDisplayListNative(var_r31->unk_48, var_r31->unk_34); if (shadowModelDrawF == 0) { if ((var_r31->unk_21 & 2) == 0) { var_r31->unk_28++; diff --git a/src/REL/m429Dll/main.c b/src/REL/m429Dll/main.c index 01040112..6fb1ab01 100644 --- a/src/REL/m429Dll/main.c +++ b/src/REL/m429Dll/main.c @@ -1,28 +1,33 @@ #include "REL/executor.h" #include "game/chrman.h" #include "game/frand.h" -#include "game/minigame_seq.h" -#include "game/object.h" -#include "game/objsub.h" -#include "game/wipe.h" - -#include "game/gamework_data.h" - -#include "game/mapspace.h" -#include "game/pad.h" -#include "game/printfunc.h" - +#include "game/esprite.h" #include "game/hsfanim.h" #include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/hsfmotion.h" - -#include "game/esprite.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/mapspace.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" #include "game/sprite.h" +#include "game/wipe.h" #include "ext_math.h" #include "version.h" + +#ifndef __MWERKS__ +#include "game/audio.h" +#include "game/hsfex.h" +#endif + +void HuSysVWaitSet(s16 vcount); + #undef ABS #define ABS(x) ((0 > (x)) ? -(x) : (x)) @@ -1323,7 +1328,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) { @@ -1499,8 +1506,6 @@ void fn_1_50AC(Work8F68 *arg0, omObjData *arg1) void fn_1_54BC(Work8F68 *arg0, omObjData *arg1) { float temp_f31; - float temp_f30; - float temp_f29; Vec sp14; Vec sp8; omObjData *temp_r29; @@ -1616,7 +1621,6 @@ void fn_1_595C(Work8F68 *arg0, Work8F68 *arg1) s32 fn_1_5CDC(Work8F68 *arg0) { - s32 temp_r30; s32 temp_r29; s32 temp_r28; Work3284 *temp_r27; diff --git a/src/REL/m430Dll/main.c b/src/REL/m430Dll/main.c index d848689f..c52b221d 100644 --- a/src/REL/m430Dll/main.c +++ b/src/REL/m430Dll/main.c @@ -2,20 +2,15 @@ #include "game/audio.h" #include "game/chrman.h" #include "game/flag.h" -#include "game/frand.h" #include "game/gamework_data.h" #include "game/hsfanim.h" #include "game/hsfdraw.h" #include "game/hsfman.h" -#include "game/hsfmotion.h" #include "game/memory.h" #include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/pad.h" -#include "game/printfunc.h" #include "game/sprite.h" -#include "game/window.h" #include "game/wipe.h" #include "string.h" @@ -499,10 +494,6 @@ float fn_1_4130(void) void fn_1_41F0(Vec *arg0, Vec *arg1) { Vec sp10; - float var_f29; - float var_f28; - float var_f27; - float var_f26; sp10.x = arg1->x - arg0->x; sp10.y = arg1->y - arg0->y; diff --git a/src/REL/m430Dll/player.c b/src/REL/m430Dll/player.c index baa21d63..ce6f7efb 100644 --- a/src/REL/m430Dll/player.c +++ b/src/REL/m430Dll/player.c @@ -11,14 +11,10 @@ #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/memory.h" -#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" #include "game/pad.h" -#include "game/printfunc.h" #include "game/sprite.h" -#include "game/window.h" -#include "game/wipe.h" #include "string.h" #include "REL/m430Dll.h" @@ -785,11 +781,6 @@ void fn_1_D828(omObjData *var_r30) float var_f25; float var_f24; float var_f23; - float var_f22; - float var_f21; - float var_f20; - float var_f19; - float var_f18; M430PlayerWork *var_r31; M430PlayerBss174Struct *var_r29; s32 var_r28; @@ -1262,12 +1253,6 @@ s32 fn_1_F62C(omObjData *object) void fn_1_F6A0(omObjData *object) { Vec sp38; - float sp30; - float sp28; - float sp20; - float sp18; - float sp10; - float sp8; float var_f31; float var_f30; float var_f29; @@ -1275,13 +1260,6 @@ void fn_1_F6A0(omObjData *object) float var_f27; float var_f26; float var_f25; - float var_f24; - float var_f23; - float var_f22; - float var_f21; - float var_f20; - float var_f19; - float var_f18; M430PlayerWork *work; s32 var_r29; s32 var_r28; @@ -1493,11 +1471,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,15 +1617,15 @@ 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); - GXCallDisplayList(var_r31->unk_60, var_r31->unk_5C); + 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)); + GXCallDisplayListNative(var_r31->unk_60, var_r31->unk_5C); } void fn_1_10B88(void) @@ -1655,9 +1633,9 @@ void fn_1_10B88(void) M430PlayerBss16CStruct *var_r31; s32 var_r30; - var_r31 = lbl_1_bss_16C = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10 * sizeof(M430PlayerBss16CStruct), MEMORY_DEFAULT_NUM); - memset(var_r31, 0, 0x10 * sizeof(M430PlayerBss16CStruct)); - for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + var_r31 = lbl_1_bss_16C = HuMemDirectMallocNum(HEAP_SYSTEM, 16 * sizeof(M430PlayerBss16CStruct), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 16 * sizeof(M430PlayerBss16CStruct)); + for (var_r30 = 0; var_r30 < 16; var_r30++, var_r31++) { var_r31->unk_00 = var_r30; if (var_r30 == 0) { var_r31->unk_04 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x23)); @@ -1832,9 +1810,9 @@ void fn_1_113AC(void) M430PlayerBss168Struct *var_r31; s32 var_r30; - var_r31 = lbl_1_bss_168 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x20 * sizeof(M430PlayerBss168Struct), MEMORY_DEFAULT_NUM); - memset(var_r31, 0, 0x20 * sizeof(M430PlayerBss168Struct)); - for (var_r30 = 0; var_r30 < 0x20; var_r31++) { + var_r31 = lbl_1_bss_168 = HuMemDirectMallocNum(HEAP_SYSTEM, 32 * sizeof(M430PlayerBss168Struct), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 32 * sizeof(M430PlayerBss168Struct)); + for (var_r30 = 0; var_r30 < 32; var_r31++) { var_r31->unk_00 = var_r30; if (var_r30 == 0) { var_r31->unk_04 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x22)); diff --git a/src/REL/m430Dll/water.c b/src/REL/m430Dll/water.c index cfb782c7..0bb03d09 100644 --- a/src/REL/m430Dll/water.c +++ b/src/REL/m430Dll/water.c @@ -4,27 +4,19 @@ #include "ext_math.h" #include "game/audio.h" #include "game/chrman.h" -#include "game/flag.h" #include "game/gamework_data.h" #include "game/hsfanim.h" -#include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/memory.h" -#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/pad.h" -#include "game/printfunc.h" #include "game/sprite.h" -#include "game/window.h" -#include "game/wipe.h" #include "string.h" #include "REL/m430Dll.h" #ifndef __MWERKS__ -#include "game/esprite.h" #include "game/frand.h" void GXSetTevIndWarp(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXBool signed_offsets, GXBool replace_mode, GXIndTexMtxID matrix_sel); @@ -733,7 +725,6 @@ void fn_1_732C(omObjData *object, M430DllUnkStruct2 *arg1) Vec sp8; float var_f31; float var_f30; - float var_f29; s32 var_r30; s32 var_r29; s32 var_r28; @@ -1276,14 +1267,17 @@ 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); + GXCallDisplayListNative(var_r31->unk_60, var_r31->unk_64); GXSetCullMode(GX_CULL_BACK); GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); +#ifdef TARGET_PC + GXDestroyTexObj(&sp24); +#endif } Vec lbl_1_data_60[6] = { @@ -1369,8 +1363,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); @@ -1487,8 +1481,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); @@ -1506,8 +1500,6 @@ void fn_1_A3A8(ModelData *model, Mtx matrix) Mtx sp18; float var_f31; float var_f30; - u8 *var_r30; - u8 *var_r29; GXColor sp14 = { 0xFF, 0xA5, 0x59, 0xB2 }; GXColor sp10 = { 0x99, 0x72, 0x59, 0xB2 }; @@ -1576,8 +1568,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 4aec497d..83334e46 100644 --- a/src/REL/m431Dll/main.c +++ b/src/REL/m431Dll/main.c @@ -17,6 +17,8 @@ #include "REL/m431Dll.h" #include "version.h" +s32 rand8(void); + typedef struct bss_5C_struct { s16 unk0[6]; s16 unkC[2]; @@ -2087,15 +2089,15 @@ 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); - PSMTXReorder(sp128, spF8); + MTXReorder(sp128, spF8); if (!omPauseChk() && temp_r30->unkC) { temp_r23 = temp_r30->unkC; temp_r23(model, temp_r30, mtx); @@ -2103,7 +2105,7 @@ void fn_1_72B4(ModelData *model, Mtx mtx) temp_r29 = temp_r30->unk18; temp_r31 = temp_r30->unk1C; temp_r27 = temp_r30->unk20; - PSMTXROMultVecArray(spF8, temp_r30->unk2C, sp68, 4); + MTXROMultVecArray(spF8, temp_r30->unk2C, sp68, 4); for (temp_r26 = 0; temp_r26 < temp_r30->unk0; temp_r26++, temp_r29++, temp_r27 += 4) { if (temp_r29->unk56 == 0) { temp_r31->x = temp_r31->y = temp_r31->z = 0; @@ -2141,7 +2143,7 @@ void fn_1_72B4(ModelData *model, Mtx mtx) DCFlushRangeNoSync(temp_r30->unk1C, (temp_r30->unk0 * sizeof(Vec)) * 4); DCFlushRangeNoSync(temp_r30->unk20, (temp_r30->unk0 * sizeof(HsfVector2f)) * 4); PPCSync(); - GXCallDisplayList(temp_r30->unk28, temp_r30->unk4); + GXCallDisplayListNative(temp_r30->unk28, temp_r30->unk4); } void fn_1_7824(HsfVector2f *arg0, s16 arg1, s16 arg2, float arg3, float arg4) diff --git a/src/REL/m431Dll/object.c b/src/REL/m431Dll/object.c index aaa65ed0..4e86c54f 100644 --- a/src/REL/m431Dll/object.c +++ b/src/REL/m431Dll/object.c @@ -1,20 +1,19 @@ +#include "game/audio.h" #include "game/chrman.h" #include "game/hsfman.h" #include "game/hsfmotion.h" - -#include "game/audio.h" #include "game/gamework_data.h" -#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" #include "game/pad.h" #include "game/sprite.h" -#include "game/wipe.h" #include "REL/m431Dll.h" #include "ext_math.h" #include "version.h" +s32 rand8(void); + typedef struct bss_struct_62C { u8 unk0; float unk4; diff --git a/src/REL/m432Dll/main.c b/src/REL/m432Dll/main.c index 038512c9..15e2894b 100644 --- a/src/REL/m432Dll/main.c +++ b/src/REL/m432Dll/main.c @@ -1,5 +1,4 @@ #include "REL/executor.h" -#include "dolphin/types.h" #include "game/chrman.h" #include "game/frand.h" #include "game/memory.h" @@ -1358,8 +1357,6 @@ void fn_1_5848(UnkM432DllStruct *var_r28, UnkM432DllBss0SubStruct *var_r31) s32 sp20; float var_f31; float var_f30; - float var_f29; - float var_f28; s32 var_r30; s32 var_r27; @@ -2238,14 +2235,14 @@ 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) { UnkM432DllStruct *var_r31; s32 var_r30; - u32 var_r29; - u32 var_r28; if (HuPadBtn[0] & 2) { lbl_1_bss_57C = 300 * REFRESH_RATE; @@ -2301,12 +2298,7 @@ void fn_1_B518(omObjData *object) void fn_1_B7E4(omObjData *object) { UnkM432DllStruct2 *var_r30; - UnkBss5D0Struct *var_r29; - UnkBss5D0Struct *var_r28; - UnkBss5D0Struct *var_r27; s16 var_r26; - s16 var_r25; - s16 var_r24; var_r26 = fn_1_AC(0x1000); if (var_r26 < 0) { @@ -2336,7 +2328,7 @@ void fn_1_B974(Vec *arg0, float arg8, float arg9) if (lbl_1_bss_402 < 0xF0) { lbl_1_bss_402++; var_r30 = omAddObjEx(lbl_1_bss_5B4, 0x67, 1, 0, 3, fn_1_B7E4); - var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM432DllStruct2), 0x10000000); + var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM432DllStruct2), MEMORY_DEFAULT_NUM); var_r31 = var_r30->data; var_r31->unk_00 = *arg0; var_r31->unk_00.x += 30.0f * arg9; @@ -2481,17 +2473,9 @@ void fn_1_C33C(UnkM432DllStruct *arg0) void fn_1_C724(UnkM432DllStruct *var_r31, omObjData *var_r25, omObjData *var_r24) { - Vec spC; float var_f25; - UnkBss0Struct *var_r30; - UnkM432DllStruct *var_r29; - s32 var_r28; - void *var_r27; - s32 var_r26; - float var_f19; - - var_r30 = &lbl_1_bss_0[var_r31->unk_184 >> 1]; + UnkBss0Struct *var_r30 = &lbl_1_bss_0[var_r31->unk_184 >> 1]; fn_1_BF9C(var_r31); if (fn_1_BF08(var_r31) == 0x7D4) { var_r30->unk_1D4 += 1.0f - (2.0f * (var_r31->unk_14C / REFRESH_RATE)); @@ -3055,11 +3039,7 @@ void fn_1_10CCC(omObjData *object) UnkM432DllStruct *var_r31; s32 var_r29; - s32 var_r28; - s32 var_r27; UnkM432DllBss0SubStruct *var_r26; - s32 var_r24; - s32 var_r23; var_r31 = object->data; var_r26 = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_10[var_r31->unk_184 & 1]; @@ -3263,13 +3243,7 @@ void fn_1_128C8(omObjData *object) s32 var_r31; UnkM432DllStruct *var_r30; UnkM432DllStruct *var_r29; - s32 var_r28; - s32 var_r27; - void *var_r26; - void *var_r25; omObjData *var_r24; - void *var_r23; - void *var_r22; if (lbl_1_bss_41C->work[0] >= 0x3EB) { for (var_r31 = 0; var_r31 < 2; var_r31++) { @@ -3373,8 +3347,6 @@ void fn_1_131A8(omObjData *var_r28) float var_f30; float var_f27; float var_f26; - float var_f22; - float var_f21; UnkBss0Struct *var_r29; s32 var_r26; @@ -3620,7 +3592,6 @@ void fn_1_131A8(omObjData *var_r28) void fn_1_15320(omObjData *object) { - s32 var_r31; object->work[0] = 0x3E8; fn_1_B4C(80.0f, DATA_MAKE_NUM(DATADIR_M432, 0x1E)); fn_1_9EC(); @@ -3631,17 +3602,12 @@ void fn_1_15320(omObjData *object) void ObjectSetup(void) { Vec sp8; - float var_f31; - float var_f30; - float var_f29; - UnkBss0Struct *var_r31; s32 var_r30; float *var_r29; UnkM432DllStruct *var_r28; omObjData *var_r27; s32 var_r26; - s32 var_r24; s32 var_r23; s32 var_r22; s32 var_r21; diff --git a/src/REL/m433Dll/main.c b/src/REL/m433Dll/main.c index 6e36fe20..425e62ab 100644 --- a/src/REL/m433Dll/main.c +++ b/src/REL/m433Dll/main.c @@ -3,15 +3,11 @@ #include "game/chrman.h" #include "game/gamework_data.h" #include "game/hsfanim.h" -#include "game/hsfdraw.h" #include "game/hsfman.h" -#include "game/hsfmotion.h" #include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/pad.h" #include "game/sprite.h" -#include "game/window.h" #include "game/wipe.h" #include "string.h" diff --git a/src/REL/m433Dll/map.c b/src/REL/m433Dll/map.c index 40aab323..162905a1 100644 --- a/src/REL/m433Dll/map.c +++ b/src/REL/m433Dll/map.c @@ -2,23 +2,15 @@ #include "ext_math.h" #include "game/audio.h" #include "game/chrman.h" -#include "game/flag.h" #include "game/frand.h" #include "game/gamework_data.h" #include "game/hsfanim.h" -#include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/memory.h" -#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/pad.h" -#include "game/printfunc.h" #include "game/sprite.h" -#include "game/window.h" -#include "game/wipe.h" -#include "string.h" #include "REL/m433Dll.h" diff --git a/src/REL/m433Dll/player.c b/src/REL/m433Dll/player.c index b6ef317c..afe2dd50 100644 --- a/src/REL/m433Dll/player.c +++ b/src/REL/m433Dll/player.c @@ -3,21 +3,16 @@ #include "ext_math.h" #include "game/audio.h" #include "game/chrman.h" -#include "game/flag.h" #include "game/gamework_data.h" #include "game/hsfanim.h" #include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/memory.h" -#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" #include "game/pad.h" -#include "game/printfunc.h" #include "game/sprite.h" -#include "game/window.h" -#include "game/wipe.h" #include "string.h" #include "REL/m433Dll.h" @@ -3456,9 +3451,7 @@ s32 fn_1_10D24(Vec *sp8) Vec sp18; Vec spC; float var_f31; - float var_f30; M433PlayerWork2 *var_r31; - M433PlayerWork2 *var_r30; var_r31 = lbl_1_bss_7CC->data; fn_1_10D24_inline(&spC); diff --git a/src/REL/m434Dll/fish.c b/src/REL/m434Dll/fish.c index b5940faa..ebd0649c 100644 --- a/src/REL/m434Dll/fish.c +++ b/src/REL/m434Dll/fish.c @@ -3,16 +3,14 @@ #include "game/hsfmotion.h" #include "game/object.h" #include "game/objsub.h" -#include "game/wipe.h" - #include "REL/m434Dll.h" #include "ext_math.h" -#include "game/gamework_data.h" -#include "game/minigame_seq.h" -#include "math.h" #include "version.h" +#ifndef __MWERKS__ +#include "game/frand.h" +#endif typedef struct bss_7480_struct { s32 unk0; diff --git a/src/REL/m434Dll/map.c b/src/REL/m434Dll/map.c index ee77f381..8e697fde 100644 --- a/src/REL/m434Dll/map.c +++ b/src/REL/m434Dll/map.c @@ -3,17 +3,12 @@ #include "game/object.h" #include "game/objsub.h" -#include "game/audio.h" #include "game/frand.h" #include "game/hsfmotion.h" #include "game/sprite.h" -#include "game/wipe.h" #include "REL/m434Dll.h" #include "ext_math.h" -#include "game/gamework_data.h" -#include "game/minigame_seq.h" -#include "math.h" #include "version.h" typedef struct bss_2468_data { @@ -342,12 +337,15 @@ 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); + GXCallDisplayListNative(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4); GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); +#ifdef TARGET_PC + GXDestroyTexObj(&spC); +#endif } void fn_1_3004(void) @@ -468,6 +466,9 @@ void fn_1_3594(ModelData *model, Mtx mtx) GXPosition3f32(1000.0f, -5.000001f, 1000.0f); GXPosition3f32(-1000.0f, -5.000001f, 1000.0f); GXEnd(); +#ifdef TARGET_PC + GXDestroyTexObj(&sp10); +#endif } GXColor lbl_1_data_170 = { 255, 0, 0, 255 }; @@ -538,7 +539,7 @@ void fn_1_3CC8(ModelData *model, Mtx mtx) MTXScale(sp14, 0.5f * temp_f31, 0.5f * temp_f31, 1.0f); mtxTransCat(sp14, (200.0f * (600.0f + temp_r31->unk0.x)) / 1200.0f, (200.0f * (600.0f + temp_r31->unk0.z)) / 1200.0f, 0); GXLoadPosMtxImm(sp14, GX_PNMTX0); - GXCallDisplayList(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4); + GXCallDisplayListNative(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4); } fn_1_32DC(&lbl_1_bss_3F0[0], GX_TRUE); } diff --git a/src/REL/m434Dll/player.c b/src/REL/m434Dll/player.c index 55ae04c8..1bf45c71 100644 --- a/src/REL/m434Dll/player.c +++ b/src/REL/m434Dll/player.c @@ -3,19 +3,18 @@ #include "game/hsfman.h" #include "game/hsfdraw.h" #include "game/hsfmotion.h" +#include "game/gamework_data.h" #include "game/object.h" #include "game/objsub.h" #include "game/pad.h" -#include "game/wipe.h" - - -#include "REL/m434Dll.h" #include "ext_math.h" -#include "game/gamework_data.h" -#include "game/minigame_seq.h" -#include "math.h" #include "version.h" +#include "REL/m434Dll.h" + +#ifndef __MWERKS__ +#include "game/frand.h" +#endif typedef struct data_224_struct { u16 unk0; diff --git a/src/REL/m435Dll/main.c b/src/REL/m435Dll/main.c index df551b13..996a0a69 100755 --- a/src/REL/m435Dll/main.c +++ b/src/REL/m435Dll/main.c @@ -4,6 +4,8 @@ #include "game/esprite.h" #include "game/gamework.h" #include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfex.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/minigame_seq.h" @@ -17,6 +19,11 @@ #include "ext_math.h" +s32 rand8(void); +#ifndef __MWERKS__ +#include "game/audio.h" +#endif + typedef struct { /* 0x00 */ omObjData* unk00; /* 0x04 */ s32 unk04; @@ -4252,7 +4259,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..44a7ea82 100755 --- a/src/REL/m436Dll/main.c +++ b/src/REL/m436Dll/main.c @@ -1,6 +1,7 @@ #include "REL/m436Dll.h" #include "game/chrman.h" #include "game/data.h" +#include "game/gamework.h" #include "game/gamework_data.h" #include "game/hsfdraw.h" #include "game/hsfman.h" @@ -16,6 +17,11 @@ #include "ext_math.h" #include "version.h" +s32 rand8(void); +#ifndef __MWERKS__ +#include "game/audio.h" +#endif + typedef struct { /* 0x00 */ omObjData *unk00; /* 0x04 */ s32 unk04; @@ -3280,7 +3286,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..fa14307a 100755 --- a/src/REL/m437Dll/main.c +++ b/src/REL/m437Dll/main.c @@ -15,11 +15,15 @@ #include "game/window.h" #include "game/wipe.h" -#include "dolphin.h" #include "math.h" #include "string.h" #include "version.h" +s32 rand8(void); +#ifndef __MWERKS__ +#include "game/audio.h" +#endif + typedef struct { /* 0x000 */ omObjData *unk00; /* 0x004 */ s32 unk04; @@ -3443,7 +3447,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 349febca..712704c0 100644 --- a/src/REL/m438Dll/fire.c +++ b/src/REL/m438Dll/fire.c @@ -1,37 +1,41 @@ #include "REL/m438Dll.h" #include "game/hsfdraw.h" +#include "game/memory.h" #define HUSPR_USE_OLD_DEFS #include "game/sprite.h" -extern u8 texMtxTbl[]; +#include + +SHARED_SYM extern u8 texMtxTbl[]; // PROTO -void fn_1_E790(M438UnkStruct2*); -void fn_1_F538(ModelData*, Mtx); -void fn_1_FAB8(M438UnkStruct*); -void fn_1_FD40(M438UnkStruct2*); +void fn_1_E790(M438UnkStruct2 *); +void fn_1_F538(ModelData *, Mtx); +void fn_1_FAB8(M438UnkStruct *); +void fn_1_FD40(M438UnkStruct2 *); void fn_1_10F0C(s16); s32 fn_1_110B4(s16, u8, s16); -void fn_1_E658(s16 arg0, s16 arg1) { - M438UnkStruct2* var_r29; +void fn_1_E658(s16 arg0, s16 arg1) +{ + M438UnkStruct2 *var_r29; s32 var_r31; - M438UnkStruct3* var_r30; + M438UnkStruct3 *var_r30; lbl_1_bss_DE4.unk_34 = Hu3DHookFuncCreate(fn_1_F538); Hu3DModelLayerSet(lbl_1_bss_DE4.unk_34, 6); lbl_1_bss_DE4.unk_30 = arg0; - var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(M438UnkStruct2), 0x10000000); + var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(M438UnkStruct2), MEMORY_DEFAULT_NUM); lbl_1_bss_DE4.unk_40 = var_r29; lbl_1_bss_DE4.unk_32 = arg1; - var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(M438UnkStruct3), 0x10000000); + var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(M438UnkStruct3), MEMORY_DEFAULT_NUM); lbl_1_bss_DE4.unk_3C = var_r30; - + for (var_r31 = 0; var_r31 < arg0; var_r31++, var_r29++) { var_r29->unk_08 = 0; } - + for (var_r31 = 0; var_r31 < arg1; var_r31++, var_r30++) { var_r30->unk_06 = 0; var_r30->unk_08 = 0; @@ -39,7 +43,8 @@ void fn_1_E658(s16 arg0, s16 arg1) { lbl_1_bss_DE4.unk_36 = lbl_1_bss_DE4.unk_38 = lbl_1_bss_DE4.unk_3A = 0; } -void fn_1_E790(M438UnkStruct2* arg0) { +void fn_1_E790(M438UnkStruct2 *arg0) +{ ModelData sp120; Mtx spF0; Mtx spC0; @@ -48,11 +53,11 @@ void fn_1_E790(M438UnkStruct2* arg0) { Mtx sp30; GXColor sp2C; s16 sp8; - M438UnkStruct* var_r31; + M438UnkStruct *var_r31; s16 var_r29; s16 var_r28; s32 var_r27; - M438UnkStruct3* temp_r26; + M438UnkStruct3 *temp_r26; s32 var_r25; s32 var_r24; s16 temp_r23; @@ -62,17 +67,17 @@ void fn_1_E790(M438UnkStruct2* arg0) { s32 var_r19; mtxRot(sp60, arg0->unk_18.x, arg0->unk_18.y, arg0->unk_18.z); - PSMTXScale(sp90, arg0->unk_24.x, arg0->unk_24.y, arg0->unk_24.z); - PSMTXConcat(sp60, sp90, sp90); + MTXScale(sp90, arg0->unk_24.x, arg0->unk_24.y, arg0->unk_24.z); + MTXConcat(sp60, sp90, sp90); mtxTransCat(sp90, arg0->unk_0C.x, arg0->unk_0C.y, arg0->unk_0C.z); - PSMTXConcat(Hu3DCameraMtx, sp90, spC0); + MTXConcat(Hu3DCameraMtx, sp90, spC0); var_r29 = 0; var_r28 = 0; sp8 = 0; for (var_r27 = GX_TEXMAP0; var_r27 < arg0->unk_04; var_r27++) { if (arg0->unk_34[var_r27] != 0) { temp_r26 = &lbl_1_bss_DE4.unk_3C[arg0->unk_34[var_r27]]; - PSMTXCopy(temp_r26->unk_18, sp30); + MTXCopy(temp_r26->unk_18, sp30); mtxTransCat(sp30, temp_r26->unk_0C.x, temp_r26->unk_0C.y, temp_r26->unk_0C.z); switch (temp_r26->unk_04) { case 0: @@ -84,11 +89,13 @@ void fn_1_E790(M438UnkStruct2* arg0) { if ((temp_r26->unk_00->bmp->dataFmt == 7) || (temp_r26->unk_00->bmp->dataFmt == 8)) { GXSetTevColor(GX_TEVREG2, temp_r26->unk_48); GXSetTevColorIn(var_r29, GX_CC_ZERO, GX_CC_C2, GX_CC_RASC, GX_CC_ZERO); - } else { + } + else { GXSetTevColorIn(var_r29, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); } GXSetTevAlphaIn(var_r29, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); - } else { + } + else { sp2C.a = temp_r26->unk_48.a; GXSetTevColor(GX_TEVREG2, sp2C); GXSetTevColorIn(var_r29, GX_CC_CPREV, GX_CC_TEXC, GX_CC_A2, GX_CC_ZERO); @@ -137,14 +144,14 @@ void fn_1_E790(M438UnkStruct2* arg0) { break; case 4: mtxRot(sp60, arg0->unk_18.x, arg0->unk_18.y, arg0->unk_18.z); - PSMTXScale(sp90, arg0->unk_24.x, arg0->unk_24.y, arg0->unk_24.z); - PSMTXConcat(sp60, sp90, sp90); + MTXScale(sp90, arg0->unk_24.x, arg0->unk_24.y, arg0->unk_24.z); + MTXConcat(sp60, sp90, sp90); mtxTransCat(sp90, arg0->unk_0C.x, arg0->unk_0C.y, arg0->unk_0C.z); - PSMTXConcat(Hu3DCameraMtx, sp90, sp30); - PSMTXInverse(Hu3DCameraMtx, sp60); - PSMTXConcat(sp60, sp30, sp60); - PSMTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp90); - PSMTXConcat(sp90, sp60, sp30); + MTXConcat(Hu3DCameraMtx, sp90, sp30); + MTXInverse(Hu3DCameraMtx, sp60); + MTXConcat(sp60, sp30, sp60); + MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp90); + MTXConcat(sp90, sp60, sp30); GXLoadTexMtxImm(sp30, texMtxTbl[var_r28], GX_MTX3x4); var_r19 = texMtxTbl[var_r28]; GXSetTexCoordGen2(var_r28, GX_TG_MTX3x4, GX_TG_POS, var_r19, 0, 0x7D); @@ -152,7 +159,8 @@ void fn_1_E790(M438UnkStruct2* arg0) { if (var_r27 == GX_TEXMAP0) { GXSetTevColorIn(var_r29, GX_CC_ONE, GX_CC_ZERO, GX_CC_TEXC, GX_CC_ZERO); GXSetTevAlphaIn(var_r29, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); - } else { + } + else { GXSetTevColorIn(var_r29, GX_CC_CPREV, GX_CC_ZERO, GX_CC_TEXC, GX_CC_ZERO); GXSetTevAlphaIn(var_r29, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); } @@ -164,7 +172,8 @@ void fn_1_E790(M438UnkStruct2* arg0) { var_r28++; if (temp_r26->unk_4D != 0) { HuSprTexLoad(temp_r26->unk_00, 0, var_r27, 1, 1, 1); - } else { + } + else { HuSprTexLoad(temp_r26->unk_00, 0, var_r27, 0, 0, 1); } } @@ -178,40 +187,42 @@ void fn_1_E790(M438UnkStruct2* arg0) { case 0: mtxRot(sp60, var_r31->unk_0C.x, var_r31->unk_0C.y, var_r31->unk_0C.z); if (var_r31->unk_31 == 2) { - PSMTXConcat(lbl_1_bss_DE4.unk_00, sp60, sp60); - } else if (var_r31->unk_31 == 1) { - PSMTXRotRad(sp90, 0x59, MTXDegToRad(CRot.y)); - PSMTXConcat(sp90, sp60, sp60); + MTXConcat(lbl_1_bss_DE4.unk_00, sp60, sp60); } - PSMTXScale(sp90, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); - PSMTXTrans(sp30, var_r31->unk_24.x, var_r31->unk_24.y, var_r31->unk_24.z); - PSMTXConcat(sp90, sp30, sp90); - PSMTXConcat(sp60, sp90, sp90); + else if (var_r31->unk_31 == 1) { + MTXRotRad(sp90, 0x59, MTXDegToRad(CRot.y)); + MTXConcat(sp90, sp60, sp60); + } + MTXScale(sp90, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); + MTXTrans(sp30, var_r31->unk_24.x, var_r31->unk_24.y, var_r31->unk_24.z); + MTXConcat(sp90, sp30, sp90); + MTXConcat(sp60, sp90, sp90); mtxTransCat(sp90, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); - PSMTXConcat(Hu3DCameraMtx, sp90, spF0); + MTXConcat(Hu3DCameraMtx, sp90, spF0); break; case 1: mtxRot(sp60, var_r31->unk_0C.x, var_r31->unk_0C.y, var_r31->unk_0C.z); if (var_r31->unk_31 == 2) { if (HmfInverseMtxF3X3(spC0, sp90) == 0) { - PSMTXIdentity(sp90); + MTXIdentity(sp90); } - PSMTXConcat(sp90, sp60, sp60); - } else if (var_r31->unk_31 == 1) { - PSMTXRotRad(sp90, 0x59, MTXDegToRad(CRot.y)); - PSMTXConcat(sp90, sp60, sp60); + MTXConcat(sp90, sp60, sp60); } - PSMTXScale(sp90, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); - PSMTXTrans(sp30, var_r31->unk_24.x, var_r31->unk_24.y, var_r31->unk_24.z); - PSMTXConcat(sp90, sp30, sp90); - PSMTXConcat(sp60, sp90, sp90); + else if (var_r31->unk_31 == 1) { + MTXRotRad(sp90, 0x59, MTXDegToRad(CRot.y)); + MTXConcat(sp90, sp60, sp60); + } + MTXScale(sp90, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); + MTXTrans(sp30, var_r31->unk_24.x, var_r31->unk_24.y, var_r31->unk_24.z); + MTXConcat(sp90, sp30, sp90); + MTXConcat(sp60, sp90, sp90); mtxTransCat(sp90, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); - PSMTXConcat(spC0, sp90, spF0); + MTXConcat(spC0, sp90, spF0); break; } GXLoadPosMtxImm(spF0, 0); - PSMTXInverse(spF0, sp90); - PSMTXTranspose(sp90, sp60); + MTXInverse(spF0, sp90); + MTXTranspose(sp90, sp60); GXLoadNrmMtxImm(sp60, 0); GXSetChanAmbColor(GX_COLOR0A0, var_r31->unk_50); GXSetChanMatColor(GX_COLOR0A0, var_r31->unk_54); @@ -230,7 +241,8 @@ void fn_1_E790(M438UnkStruct2* arg0) { } if ((var_r31->unk_38 & 0x10) != 0) { GXSetZMode(0, GX_LEQUAL, 1); - } else { + } + else { GXSetZMode(1, GX_LEQUAL, 0); } sp120.attr = 0; @@ -238,7 +250,8 @@ void fn_1_E790(M438UnkStruct2* arg0) { GXSetNumChans(1); if ((var_r31->unk_38 & 8) != 0) { var_r25 = GX_SRC_VTX; - } else { + } + else { var_r25 = GX_SRC_REG; } switch (var_r31->unk_32) { @@ -254,77 +267,84 @@ 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); - GXCallDisplayList(var_r31->unk_40, var_r31->unk_3C); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0U); + GXSETARRAY(GX_VA_NRM, var_r31->unk_4C, sizeof(Vec), sizeof(Vec)); + GXCallDisplayListNative(var_r31->unk_40, var_r31->unk_3C); } } } -void fn_1_F538(ModelData* arg0, Mtx arg1) { +void fn_1_F538(ModelData *arg0, Mtx arg1) +{ Mtx sp38; Mtx sp8; - M438UnkStruct2* var_r31; + M438UnkStruct2 *var_r31; s32 var_r30; var_r31 = lbl_1_bss_DE4.unk_40; GXLoadPosMtxImm(arg1, 0); - PSMTXInverse(arg1, sp38); - PSMTXTranspose(sp38, sp8); + MTXInverse(arg1, sp38); + MTXTranspose(sp38, sp8); GXLoadNrmMtxImm(sp8, 0); HmfInverseMtxF3X3(Hu3DCameraMtx, lbl_1_bss_DE4.unk_00); - + for (var_r30 = 0; var_r30 < lbl_1_bss_DE4.unk_30; var_r30++, var_r31++) { if ((var_r31->unk_08 != 0) && ((var_r31->unk_08 & 2) != 0) && ((var_r31->unk_08 & 4) == 0)) { if ((u8)omPauseChk() == 0) { if (var_r31->unk_30) { var_r31->unk_30(var_r31); } - if (var_r31->unk_08 == 0) continue; + if (var_r31->unk_08 == 0) + continue; fn_1_FD40(var_r31); - if (var_r31->unk_08 == 0) continue; + if (var_r31->unk_08 == 0) + continue; } fn_1_E790(var_r31); } } } -M438UnkStruct2* fn_1_F664(s16 arg0) { +M438UnkStruct2 *fn_1_F664(s16 arg0) +{ return &lbl_1_bss_DE4.unk_40[arg0]; } -M438UnkStruct* fn_1_F680(s16 arg0, s16 arg1) { +M438UnkStruct *fn_1_F680(s16 arg0, s16 arg1) +{ return &lbl_1_bss_DE4.unk_40[arg0].unk_3C[arg1]; } -M438UnkStruct3* fn_1_F6AC(s16 arg0) { +M438UnkStruct3 *fn_1_F6AC(s16 arg0) +{ return &lbl_1_bss_DE4.unk_3C[arg0]; } -void fn_1_F6C8(M438FireStruct** arg0, s16 arg1, f32 arg8, f32 arg9) { +void fn_1_F6C8(M438FireStruct **arg0, s16 arg1, f32 arg8, f32 arg9) +{ s32 var_r30; - M438FireStruct* var_r31; + M438FireStruct *var_r31; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(M438FireStruct), MEMORY_DEFAULT_NUM); - var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(M438FireStruct), 0x10000000); - for (var_r30 = 0; var_r30 < arg1; var_r31++, var_r30++) { - var_r31->unk0.x = (-0.5f * arg8); - var_r31->unk0.y = (0.5f * arg9); - var_r31->unk0.z = 0.0f; - var_r31->unkC.x = (0.5f * arg8); - var_r31->unkC.y = (0.5f * arg9); - var_r31->unkC.z = 0.0f; + var_r31->unk0.x = (-0.5f * arg8); + var_r31->unk0.y = (0.5f * arg9); + var_r31->unk0.z = 0.0f; + var_r31->unkC.x = (0.5f * arg8); + var_r31->unkC.y = (0.5f * arg9); + var_r31->unkC.z = 0.0f; var_r31->unk18.x = (0.5f * arg8); var_r31->unk18.y = (-0.5f * arg9); var_r31->unk18.z = 0.0f; @@ -334,13 +354,14 @@ void fn_1_F6C8(M438FireStruct** arg0, s16 arg1, f32 arg8, f32 arg9) { } } -void fn_1_F84C(M438FireStruct** arg0, s16 arg1, Vec* arg2) { - Vec* var_r31; +void fn_1_F84C(M438FireStruct **arg0, s16 arg1, Vec *arg2) +{ + Vec *var_r31; s32 var_r29; s32 var_r28; - var_r31 = (Vec*)*arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(M438FireStruct), 0x10000000); - + var_r31 = (Vec *)*arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(M438FireStruct), MEMORY_DEFAULT_NUM); + for (var_r29 = 0; var_r29 < arg1; var_r29++) { for (var_r28 = 0; var_r28 < 4; var_r31++, arg2++, var_r28++) { var_r31->x = arg2->x; @@ -350,13 +371,14 @@ void fn_1_F84C(M438FireStruct** arg0, s16 arg1, Vec* arg2) { } } -void fn_1_F8EC(M438FireStruct2** arg0, s16 arg1, GXColor* arg2) { - GXColor* var_r31; +void fn_1_F8EC(M438FireStruct2 **arg0, s16 arg1, GXColor *arg2) +{ + GXColor *var_r31; s32 var_r29; s32 var_r28; - var_r31 = (GXColor*)*arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(M438FireStruct2), 0x10000000U); - + var_r31 = (GXColor *)*arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(M438FireStruct2), MEMORY_DEFAULT_NUM); + for (var_r29 = 0; var_r29 < arg1; var_r29++) { for (var_r28 = 0; var_r28 < 4; var_r31++, arg2++, var_r28++) { var_r31->r = arg2->r; @@ -367,12 +389,13 @@ void fn_1_F8EC(M438FireStruct2** arg0, s16 arg1, GXColor* arg2) { } } -void fn_1_F994(Vec** arg0, s16 arg1, Vec* arg2) { +void fn_1_F994(Vec **arg0, s16 arg1, Vec *arg2) +{ s32 var_r29; - Vec* var_r31; - - var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(Vec), 0x10000000); - + Vec *var_r31; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(Vec), MEMORY_DEFAULT_NUM); + for (var_r29 = 0; var_r29 < arg1; var_r31++, arg2++, var_r29++) { var_r31->x = arg2->x; var_r31->y = arg2->y; @@ -380,13 +403,14 @@ void fn_1_F994(Vec** arg0, s16 arg1, Vec* arg2) { } } -void fn_1_FA20(M438FireStruct3** arg0, s16 arg1, HsfVector2f* arg2) { - HsfVector2f* var_r31; +void fn_1_FA20(M438FireStruct3 **arg0, s16 arg1, HsfVector2f *arg2) +{ + HsfVector2f *var_r31; s32 var_r29; s32 var_r28; - - var_r31 = (HsfVector2f*)*arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(M438FireStruct3), 0x10000000); - + + var_r31 = (HsfVector2f *)*arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(M438FireStruct3), MEMORY_DEFAULT_NUM); + for (var_r29 = 0; var_r29 < arg1; var_r29++) { for (var_r28 = 0; var_r28 < 4; var_r31++, arg2++, var_r28++) { var_r31->x = arg2->x; @@ -395,30 +419,20 @@ void fn_1_FA20(M438FireStruct3** arg0, s16 arg1, HsfVector2f* arg2) { } } -void fn_1_FAB8(M438UnkStruct* arg0) { - Vec sp1C[4] = { - { -50.0f, 50.0f, 0.0f }, - { 50.0f, 50.0f, 0.0f }, - { 50.0f, -50.0f, 0.0f }, - { -50.0f, -50.0f, 0.0f } - }; - GXColor spC[4] = { - { 0xFF, 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xFF, 0xFF, 0xFF } - }; - - void* sp8; +void fn_1_FAB8(M438UnkStruct *arg0) +{ + Vec sp1C[4] = { { -50.0f, 50.0f, 0.0f }, { 50.0f, 50.0f, 0.0f }, { 50.0f, -50.0f, 0.0f }, { -50.0f, -50.0f, 0.0f } }; + GXColor spC[4] = { { 0xFF, 0xFF, 0xFF, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF } }; + + void *sp8; s32 var_r31; s32 var_r29; - void* temp_r28; - - + void *temp_r28; + for (var_r31 = 0; var_r31 < 4; var_r31++) { arg0->unk_44[var_r31] = sp1C[var_r31]; } - + for (var_r31 = 0; var_r31 < 4; var_r31++) { arg0->unk_48[var_r31] = spC[var_r31]; } @@ -429,7 +443,7 @@ void fn_1_FAB8(M438UnkStruct* arg0) { sp8 = temp_r28; GXBeginDisplayList(temp_r28, 0x100); GXBegin(GX_QUADS, GX_VTXFMT0, 4); - + for (var_r31 = 0; var_r31 < 4; var_r31++) { GXPosition1x16(var_r31); GXColor1x16(0); @@ -441,22 +455,24 @@ void fn_1_FAB8(M438UnkStruct* arg0) { arg0->unk_3C = GXEndDisplayList(); } -void fn_1_FD40(M438UnkStruct2* arg0) { - M438UnkStruct* var_r28; - M438UnkStruct3* temp_r30; - M438UnkSubStruct* var_r31; +void fn_1_FD40(M438UnkStruct2 *arg0) +{ + M438UnkStruct *var_r28; + M438UnkStruct3 *temp_r30; + M438UnkSubStruct *var_r31; s32 temp_r0; s32 var_r25; s32 var_r26; s32 var_r27; var_r27 = 0; - + var_r28 = arg0->unk_3C; for (var_r25 = 0; var_r25 < arg0->unk_02; var_r25++, var_r28++) { if ((var_r28->unk_38 & 4) != 0) { var_r27++; - } else { + } + else { var_r31 = var_r28->unk_58; for (var_r26 = 0; var_r26 < var_r28->unk_34; var_r26++, var_r31++) { temp_r30 = &lbl_1_bss_DE4.unk_3C[arg0->unk_34[var_r26]]; @@ -481,30 +497,37 @@ void fn_1_FD40(M438UnkStruct2* arg0) { if ((var_r31->unk_24 & 0x10) != 0) { var_r31->unk_24 |= 8; var_r31->unk_00 -= 1; - } else if ((var_r31->unk_24 & 0x40) != 0) { + } + else if ((var_r31->unk_24 & 0x40) != 0) { var_r31->unk_24 = (var_r31->unk_24 & 0xF0) | 2; var_r31->unk_00 -= 2; - } else if ((var_r31->unk_24 & 0x20) != 0) { + } + else if ((var_r31->unk_24 & 0x20) != 0) { var_r31->unk_00 = 0; } var_r31->unk_24 |= 4; - } else if (var_r31->unk_00 < 0) { + } + else if (var_r31->unk_00 < 0) { if ((var_r31->unk_24 & 0x10) != 0) { var_r31->unk_24 |= 8; var_r31->unk_00 = 0; - } else if ((var_r31->unk_24 & 0x20) != 0) { + } + else if ((var_r31->unk_24 & 0x20) != 0) { if ((var_r31->unk_24 & 0x40) != 0) { var_r31->unk_24 = (var_r31->unk_24 & 0xF0) | 1; var_r31->unk_00 = 1; - } else { + } + else { var_r31->unk_00 = temp_r30->unk_4C - 1; } - } else if ((var_r31->unk_24 & 0x40) != 0) { + } + else if ((var_r31->unk_24 & 0x40) != 0) { var_r31->unk_24 |= 8; var_r31->unk_00 = 0; } var_r31->unk_24 |= 4; - } else { + } + else { var_r31->unk_24 &= ~8; } if (var_r31->unk_00 != var_r31->unk_01) { @@ -525,11 +548,13 @@ void fn_1_FD40(M438UnkStruct2* arg0) { if ((var_r31->unk_24 & 0x40) == 0) { if (var_r31->unk_00 <= 0) { var_r31->unk_00 = temp_r30->unk_4C; - } else { + } + else { var_r31->unk_00 = 0; } } - } else if ((var_r28->unk_38 & 0x80000000) != 0) { + } + else if ((var_r28->unk_38 & 0x80000000) != 0) { fn_1_107BC(arg0->unk_00); } var_r27++; @@ -540,24 +565,27 @@ void fn_1_FD40(M438UnkStruct2* arg0) { if (var_r27 >= arg0->unk_02) { if ((arg0->unk_08 & 0x40000000) != 0) { arg0->unk_08 |= 4; - } else if ((arg0->unk_08 & 0x80000000) != 0) { + } + else if ((arg0->unk_08 & 0x80000000) != 0) { fn_1_107BC(arg0->unk_00); } } PPCSync(); } -s16 fn_1_10258(u8 arg0, u8 arg1) { - M438UnkStruct* var_r30; - M438UnkStruct2* var_r31; +s16 fn_1_10258(u8 arg0, u8 arg1) +{ + M438UnkStruct *var_r30; + M438UnkStruct2 *var_r31; s32 var_r29; s32 var_r28; - void* temp_r25; + void *temp_r25; var_r31 = &lbl_1_bss_DE4.unk_40[1]; - + for (var_r29 = 1; var_r29 < lbl_1_bss_DE4.unk_30; var_r29++, var_r31++) { - if (var_r31->unk_08 == 0) break; + if (var_r31->unk_08 == 0) + break; } if (var_r29 == lbl_1_bss_DE4.unk_30) { OSReport("OVER BILL\n"); @@ -568,15 +596,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 * sizeof(M438UnkStruct), 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 * sizeof(s16), 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 * (4 * sizeof(Vec)), MEMORY_DEFAULT_NUM); + var_r31->unk_54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * (4 * sizeof(GXColor)), MEMORY_DEFAULT_NUM); + var_r31->unk_58 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(Vec), MEMORY_DEFAULT_NUM); + var_r31->unk_5C = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (arg0 * sizeof(M438UnkSubStruct)), 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; @@ -584,15 +612,15 @@ s16 fn_1_10258(u8 arg0, u8 arg1) { var_r31->unk_70.x = var_r31->unk_70.y = var_r31->unk_70.z = 0.0f; var_r31->unk_64.x = var_r31->unk_64.y = var_r31->unk_64.z = 0.0f; var_r31->unk_60 = 0; - + for (var_r29 = 0; var_r29 < 0x20; var_r29++) { var_r31->unk_7Ca[var_r29] = 0; } - + for (var_r29 = 0; var_r29 < arg1; var_r29++) { var_r31->unk_34[var_r29] = 0; } - + for (var_r29 = 0; var_r29 < arg0; var_r29++, var_r30++) { var_r30->unk_38 = 1; var_r30->unk_34 = arg1; @@ -605,7 +633,7 @@ s16 fn_1_10258(u8 arg0, u8 arg1) { var_r30->unk_54.r = var_r30->unk_54.g = var_r30->unk_54.b = 0xFF; var_r30->unk_54.a = 0xFF; var_r30->unk_58 = &var_r31->unk_5C[var_r29 * arg1]; - + for (var_r28 = 0; var_r28 < arg1; var_r28++) { var_r30->unk_58[var_r28].unk_00 = var_r30->unk_58[var_r28].unk_01 = 0; var_r30->unk_58[var_r28].unk_28 = 1.0f; @@ -618,19 +646,19 @@ s16 fn_1_10258(u8 arg0, u8 arg1) { var_r30->unk_24.x = var_r30->unk_24.y = var_r30->unk_24.z = 0.0f; var_r30->unk_60.x = var_r30->unk_60.y = var_r30->unk_60.z = 0.0f; var_r30->unk_5C = 0; - + for (var_r28 = 0; var_r28 < 0x10; var_r28++) { var_r30->unk_78[var_r28] = 0; } var_r30->unk_44 = &var_r31->unk_50[var_r29 * 4]; var_r30->unk_48 = &var_r31->unk_54[var_r29 * 4]; var_r30->unk_4C = &var_r31->unk_58[var_r29]; - var_r30->unk_40 = ((char*)var_r31->unk_4C) + var_r31->unk_48; + var_r30->unk_40 = ((char *)var_r31->unk_4C) + var_r31->unk_48; fn_1_FAB8(var_r30); var_r31->unk_48 += var_r30->unk_3C; } temp_r25 = var_r31->unk_4C; - var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_48, 0x10000000); + var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_48, MEMORY_DEFAULT_NUM); memcpy(var_r31->unk_4C, temp_r25, var_r31->unk_48); HuMemDirectFree(temp_r25); DCFlushRangeNoSync(var_r31->unk_50, arg0 * 0x30); @@ -639,9 +667,9 @@ s16 fn_1_10258(u8 arg0, u8 arg1) { DCFlushRangeNoSync(var_r31->unk_4C, var_r31->unk_48); var_r30 = var_r31->unk_3C; var_r31->unk_48 = 0; - + for (var_r29 = 0; var_r29 < arg0; var_r29++, var_r30++) { - var_r30->unk_40 = ((char*)var_r31->unk_4C) + var_r31->unk_48; + var_r30->unk_40 = ((char *)var_r31->unk_4C) + var_r31->unk_48; var_r31->unk_48 += var_r30->unk_3C; } lbl_1_bss_DE4.unk_36 = var_r31->unk_00; @@ -651,13 +679,14 @@ s16 fn_1_10258(u8 arg0, u8 arg1) { return var_r31->unk_00; } -void fn_1_107BC(s16 arg0) { - M438UnkStruct2* temp_r31; +void fn_1_107BC(s16 arg0) +{ + M438UnkStruct2 *temp_r31; s32 var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; - if ((u32) temp_r31->unk_08 != 0) { + if ((u32)temp_r31->unk_08 != 0) { if (temp_r31->unk_50 != NULL) { HuMemDirectFree(temp_r31->unk_50); } @@ -673,7 +702,7 @@ void fn_1_107BC(s16 arg0) { if (temp_r31->unk_5C != NULL) { HuMemDirectFree(temp_r31->unk_5C); } - + for (var_r30 = 0; var_r30 < temp_r31->unk_04; var_r30++) { fn_1_10F0C(temp_r31->unk_34[var_r30]); } @@ -685,7 +714,8 @@ void fn_1_107BC(s16 arg0) { } } -void fn_1_108E4(s16 arg0, s16 arg1, u8 arg2) { +void fn_1_108E4(s16 arg0, s16 arg1, u8 arg2) +{ lbl_1_bss_DE4.unk_36 = arg0; lbl_1_bss_DE4.unk_38 = arg1; lbl_1_bss_DE4.unk_3A = arg2; @@ -693,40 +723,45 @@ void fn_1_108E4(s16 arg0, s16 arg1, u8 arg2) { #include "game/sprite.h" -s16 fn_1_10910(u32 arg0, s16 arg1, s16 arg2) { +s16 fn_1_10910(u32 arg0, s16 arg1, s16 arg2) +{ f32 var_f31; f32 var_f30; - AnimData* var_r30; - M438UnkStruct3* var_r31; + AnimData *var_r30; + M438UnkStruct3 *var_r31; s32 var_r29; var_r31 = &lbl_1_bss_DE4.unk_3C[1]; for (var_r29 = 1; var_r29 < lbl_1_bss_DE4.unk_32; var_r29++, var_r31++) { - if ((var_r31->unk_06 != 0) && (var_r31->unk_08 == arg0)) break; + if ((var_r31->unk_06 != 0) && (var_r31->unk_08 == arg0)) + break; } if (var_r29 < lbl_1_bss_DE4.unk_32) { var_r31->unk_06++; return var_r29; } - + var_r31 = &lbl_1_bss_DE4.unk_3C[1]; for (var_r29 = 1; var_r29 < lbl_1_bss_DE4.unk_32; var_r29++, var_r31++) { - if (var_r31->unk_06 == 0) break; + if (var_r31->unk_06 == 0) + break; } var_r31->unk_08 = arg0; var_r31->unk_06 = 1; if (((arg0 & 0xFFFF0000) + 0x10000) == 0) { var_r30 = HuSprAnimMake(arg1, arg2, 2); - var_r30->bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg2 * (arg1 * 2), 0x10000000); + var_r30->bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg2 * (arg1 * 2), MEMORY_DEFAULT_NUM); arg1 = arg2 = 0; - } else { - var_r30 = HuSprAnimRead(HuDataReadNum(arg0, 0x10000000)); + } + else { + var_r30 = HuSprAnimRead(HuDataReadNum(arg0, MEMORY_DEFAULT_NUM)); } if ((arg1 == 0) || (arg2 == 0)) { arg1 = var_r30->bmp->sizeX; arg2 = var_r30->bmp->sizeY; var_f31 = var_f30 = 1.0f; - } else { + } + else { var_f31 = arg1 / (f32)var_r30->bmp->sizeX; var_f30 = arg2 / (f32)var_r30->bmp->sizeY; } @@ -748,31 +783,32 @@ s16 fn_1_10910(u32 arg0, s16 arg1, s16 arg2) { } var_r31->unk_48.r = var_r31->unk_48.g = var_r31->unk_48.b = 0xFF; var_r31->unk_48.a = 0xFF; - PSMTXIdentity(var_r31->unk_18); + MTXIdentity(var_r31->unk_18); var_r31->unk_0C.x = var_r31->unk_0C.y = var_r31->unk_0C.z = 0.0f; return var_r29; } -void fn_1_10CB8(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5) { +void fn_1_10CB8(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5) +{ f32 var_f31; f32 var_f30; - M438UnkStruct3* temp_r31; - AnimData* temp_r30; + M438UnkStruct3 *temp_r31; + AnimData *temp_r30; temp_r31 = &lbl_1_bss_DE4.unk_3C[arg0]; HuSprAnimKill(temp_r31->unk_00); temp_r31->unk_08 |= 0xFFFF0000; temp_r30 = HuSprAnimMake(arg2, arg3, arg1); - temp_r30->bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg3 * (temp_r30->bmp->pixSize * arg2), 0x10000000U); - var_f31 = arg4 / (f32) temp_r30->bmp->sizeX; - var_f30 = arg5 / (f32) temp_r30->bmp->sizeY; + temp_r30->bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg3 * (temp_r30->bmp->pixSize * arg2), MEMORY_DEFAULT_NUM); + var_f31 = arg4 / (f32)temp_r30->bmp->sizeX; + var_f30 = arg5 / (f32)temp_r30->bmp->sizeY; temp_r31->unk_00 = temp_r30; temp_r31->unk_4E = arg2; temp_r31->unk_50 = arg3; temp_r31->unk_54 = var_f31; temp_r31->unk_58 = var_f30; - temp_r31->unk_5C = 1.0f / (f32) temp_r30->bmp->sizeX; - temp_r31->unk_60 = 1.0f / (f32) temp_r30->bmp->sizeY; + temp_r31->unk_5C = 1.0f / (f32)temp_r30->bmp->sizeX; + temp_r31->unk_60 = 1.0f / (f32)temp_r30->bmp->sizeY; temp_r31->unk_04 = 0; temp_r31->unk_4C = temp_r30->bmp->sizeY / arg5; temp_r31->unk_4D = 0; @@ -780,8 +816,9 @@ void fn_1_10CB8(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5) { temp_r31->unk_48.a = 0xFF; } -void fn_1_10F0C(s16 arg0) { - M438UnkStruct3* temp_r31; +void fn_1_10F0C(s16 arg0) +{ + M438UnkStruct3 *temp_r31; temp_r31 = &lbl_1_bss_DE4.unk_3C[arg0]; if (temp_r31->unk_08 != 0) { @@ -795,31 +832,36 @@ void fn_1_10F0C(s16 arg0) { } } -u8 fn_1_10F8C(s16 arg0, u8 arg1, u32 arg2, s16 arg3, s16 arg4) { +u8 fn_1_10F8C(s16 arg0, u8 arg1, u32 arg2, s16 arg3, s16 arg4) +{ s32 var_r31; - if (arg0 == 0) return 0; - + if (arg0 == 0) + return 0; + var_r31 = fn_1_10910(arg2, arg3, arg4); - if (var_r31 == 0) return 0; - + if (var_r31 == 0) + return 0; + fn_1_110B4(arg0, arg1, var_r31); return var_r31; } -u8 fn_1_11018(s16 arg0, u8 arg1, u32 arg2) { +u8 fn_1_11018(s16 arg0, u8 arg1, u32 arg2) +{ u8 var_r31; var_r31 = fn_1_10F8C(arg0, arg1, arg2, 0, 0); - + return var_r31; } -s32 fn_1_110B4(s16 arg0, u8 arg1, s16 arg2) { - M438UnkStruct* var_r29; - M438UnkStruct2* temp_r28; - M438UnkStruct3* temp_r30; - M438UnkSubStruct* temp_r31; +s32 fn_1_110B4(s16 arg0, u8 arg1, s16 arg2) +{ + M438UnkStruct *var_r29; + M438UnkStruct2 *temp_r28; + M438UnkStruct3 *temp_r30; + M438UnkSubStruct *temp_r31; s32 var_r26; if (arg2 == 0) { @@ -835,7 +877,7 @@ s32 fn_1_110B4(s16 arg0, u8 arg1, s16 arg2) { } temp_r28->unk_34[arg1] = arg2; temp_r30 = &lbl_1_bss_DE4.unk_3C[arg2]; - + var_r29 = temp_r28->unk_3C; for (var_r26 = 0; var_r26 < temp_r28->unk_02; var_r26++, var_r29++) { if (arg1 == 0) { @@ -874,10 +916,11 @@ s32 fn_1_110B4(s16 arg0, u8 arg1, s16 arg2) { return 1; } -void fn_1_11658(void) { - M438UnkStruct2* temp_r31; - M438UnkStruct3* temp_r30; - M438UnkStruct3* temp_r29; +void fn_1_11658(void) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct3 *temp_r30; + M438UnkStruct3 *temp_r29; s32 var_r28; s32 var_r27; s16 var_r26; @@ -901,7 +944,7 @@ void fn_1_11658(void) { if (temp_r31->unk_5C != NULL) { HuMemDirectFree(temp_r31->unk_5C); } - + for (var_r27 = 0; var_r27 < temp_r31->unk_04; var_r27++) { var_r26 = temp_r31->unk_34[var_r27]; temp_r29 = &lbl_1_bss_DE4.unk_3C[var_r26]; @@ -922,7 +965,7 @@ void fn_1_11658(void) { } } } - + for (var_r28 = 1; var_r28 < lbl_1_bss_DE4.unk_32; var_r28++) { temp_r30 = &lbl_1_bss_DE4.unk_3C[(s16)var_r28]; if (temp_r30->unk_08 != 0U) { @@ -940,8 +983,9 @@ void fn_1_11658(void) { Hu3DModelKill(lbl_1_bss_DE4.unk_34); } -void fn_1_11890(s16 arg0, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct2* temp_r31; +void fn_1_11890(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct2 *temp_r31; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -954,9 +998,10 @@ void fn_1_11890(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_118FC(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct* temp_r31; - M438UnkStruct2* temp_r30; +void fn_1_118FC(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct *temp_r31; + M438UnkStruct2 *temp_r30; if (arg0 != 0) { temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -969,9 +1014,10 @@ void fn_1_118FC(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_1196C(s16 arg0, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct* var_r31; - M438UnkStruct2* temp_r30; +void fn_1_1196C(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct *var_r31; + M438UnkStruct2 *temp_r30; s32 var_r29; if (arg0 != 0) { @@ -985,8 +1031,9 @@ void fn_1_1196C(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_119E0(s16 arg0, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct2* temp_r31; +void fn_1_119E0(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct2 *temp_r31; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -999,9 +1046,10 @@ void fn_1_119E0(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_11A64(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct* temp_r31; - M438UnkStruct2* temp_r30; +void fn_1_11A64(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct *temp_r31; + M438UnkStruct2 *temp_r30; if (arg0 != 0) { temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1014,9 +1062,10 @@ void fn_1_11A64(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_11AEC(s16 arg0, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct* var_r31; - M438UnkStruct2* temp_r30; +void fn_1_11AEC(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct *var_r31; + M438UnkStruct2 *temp_r30; s32 var_r29; if (arg0 != 0) { @@ -1030,9 +1079,10 @@ void fn_1_11AEC(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_11B78(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct* temp_r31; - M438UnkStruct2* temp_r30; +void fn_1_11B78(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct *temp_r31; + M438UnkStruct2 *temp_r30; if (arg0 != 0) { temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1045,9 +1095,10 @@ void fn_1_11B78(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_11BE8(s16 arg0, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct* var_r31; - M438UnkStruct2* temp_r30; +void fn_1_11BE8(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct *var_r31; + M438UnkStruct2 *temp_r30; s32 var_r29; if (arg0 != 0) { @@ -1061,8 +1112,9 @@ void fn_1_11BE8(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_11C5C(s16 arg0, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct2* temp_r31; +void fn_1_11C5C(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct2 *temp_r31; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1075,9 +1127,10 @@ void fn_1_11C5C(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_11CC8(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct* temp_r31; - M438UnkStruct2* temp_r30; +void fn_1_11CC8(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct *temp_r31; + M438UnkStruct2 *temp_r30; if (arg0 != 0) { temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1090,9 +1143,10 @@ void fn_1_11CC8(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_11D38(s16 arg0, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct* var_r31; - M438UnkStruct2* temp_r30; +void fn_1_11D38(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct *var_r31; + M438UnkStruct2 *temp_r30; s32 var_r29; if (arg0 != 0) { @@ -1106,8 +1160,9 @@ void fn_1_11D38(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_11DAC(s16 arg0, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct2* temp_r31; +void fn_1_11DAC(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct2 *temp_r31; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1120,9 +1175,10 @@ void fn_1_11DAC(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_11E18(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct* temp_r31; - M438UnkStruct2* temp_r30; +void fn_1_11E18(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct *temp_r31; + M438UnkStruct2 *temp_r30; if (arg0 != 0) { temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1135,9 +1191,10 @@ void fn_1_11E18(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_11E88(s16 arg0, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct* var_r31; - M438UnkStruct2* temp_r30; +void fn_1_11E88(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct *var_r31; + M438UnkStruct2 *temp_r30; s32 var_r29; if (arg0 != 0) { @@ -1151,8 +1208,9 @@ void fn_1_11E88(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_11EFC(s16 arg0, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct2* temp_r31; +void fn_1_11EFC(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct2 *temp_r31; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1165,9 +1223,10 @@ void fn_1_11EFC(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_11F68(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct* temp_r31; - M438UnkStruct2* temp_r30; +void fn_1_11F68(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct *temp_r31; + M438UnkStruct2 *temp_r30; if (arg0 != 0) { temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1180,9 +1239,10 @@ void fn_1_11F68(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_11FD8(s16 arg0, f32 arg8, f32 arg9, f32 argA) { - M438UnkStruct* var_r31; - M438UnkStruct2* temp_r30; +void fn_1_11FD8(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + M438UnkStruct *var_r31; + M438UnkStruct2 *temp_r30; s32 var_r29; if (arg0 != 0) { @@ -1196,8 +1256,9 @@ void fn_1_11FD8(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_1204C(s16 arg0, s32 arg1) { - M438UnkStruct2* temp_r31; +void fn_1_1204C(s16 arg0, s32 arg1) +{ + M438UnkStruct2 *temp_r31; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1205,9 +1266,10 @@ void fn_1_1204C(s16 arg0, s32 arg1) { } } -void fn_1_12090(s16 arg0, s16 arg1, s32 arg2) { - M438UnkStruct* temp_r30; - M438UnkStruct2* temp_r31; +void fn_1_12090(s16 arg0, s16 arg1, s32 arg2) +{ + M438UnkStruct *temp_r30; + M438UnkStruct2 *temp_r31; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1218,9 +1280,10 @@ void fn_1_12090(s16 arg0, s16 arg1, s32 arg2) { } } -void fn_1_12100(s16 arg0, s32 arg1) { - M438UnkStruct2* temp_r31; - M438UnkStruct* var_r30; +void fn_1_12100(s16 arg0, s32 arg1) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct *var_r30; s32 var_r29; if (arg0 != 0) { @@ -1232,8 +1295,9 @@ void fn_1_12100(s16 arg0, s32 arg1) { } } -void fn_1_12174(s16 arg0, u32 arg1) { - M438UnkStruct2* temp_r31; +void fn_1_12174(s16 arg0, u32 arg1) +{ + M438UnkStruct2 *temp_r31; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1241,22 +1305,24 @@ void fn_1_12174(s16 arg0, u32 arg1) { } } -void fn_1_121B8(s16 arg0, s16 arg1, u32 arg2) { - M438UnkStruct* temp_r30; - M438UnkStruct2* temp_r31; +void fn_1_121B8(s16 arg0, s16 arg1, u32 arg2) +{ + M438UnkStruct *temp_r30; + M438UnkStruct2 *temp_r31; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; - if ((s16) temp_r31->unk_02 > arg1) { + if ((s16)temp_r31->unk_02 > arg1) { temp_r30 = &temp_r31->unk_3C[arg1]; temp_r30->unk_38 &= ~arg2; } } } -void fn_1_12228(s16 arg0, u32 arg1) { - M438UnkStruct2* temp_r31; - M438UnkStruct* var_r30; +void fn_1_12228(s16 arg0, u32 arg1) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct *var_r30; s32 var_r29; if (arg0 != 0) { @@ -1268,9 +1334,10 @@ void fn_1_12228(s16 arg0, u32 arg1) { } } -s32 fn_1_1229C(s16 arg0, s32 arg1) { - M438UnkStruct2* var_r31; - +s32 fn_1_1229C(s16 arg0, s32 arg1) +{ + M438UnkStruct2 *var_r31; + if (arg0 == 0) { return 0; } @@ -1282,9 +1349,10 @@ s32 fn_1_1229C(s16 arg0, s32 arg1) { return 0; } -s16 fn_1_122F8(s16 arg0, s16 arg1, s32 arg2) { - M438UnkStruct2* temp_r31; - M438UnkStruct* var_r30; +s16 fn_1_122F8(s16 arg0, s16 arg1, s32 arg2) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1299,9 +1367,10 @@ s16 fn_1_122F8(s16 arg0, s16 arg1, s32 arg2) { return arg0; } -void fn_1_12378(s16 arg0, s16 arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5) { - M438UnkStruct* temp_r31; - M438UnkStruct2* temp_r30; +void fn_1_12378(s16 arg0, s16 arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5) +{ + M438UnkStruct *temp_r31; + M438UnkStruct2 *temp_r30; if (arg0 != 0) { temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1315,9 +1384,10 @@ void fn_1_12378(s16 arg0, s16 arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5) { } } -void fn_1_123EC(s16 arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4) { - M438UnkStruct* var_r31; - M438UnkStruct2* temp_r30; +void fn_1_123EC(s16 arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4) +{ + M438UnkStruct *var_r31; + M438UnkStruct2 *temp_r30; s32 var_r29; if (arg0 != 0) { @@ -1332,9 +1402,10 @@ void fn_1_123EC(s16 arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4) { } } -void fn_1_12464(s16 arg0, s16 arg1, u8 arg2) { - M438UnkStruct2* temp_r31; - M438UnkStruct* var_r30; +void fn_1_12464(s16 arg0, s16 arg1, u8 arg2) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1345,9 +1416,10 @@ void fn_1_12464(s16 arg0, s16 arg1, u8 arg2) { } } -void fn_1_124CC(s16 arg0, u8 arg1) { - M438UnkStruct2* temp_r31; - M438UnkStruct* var_r30; +void fn_1_124CC(s16 arg0, u8 arg1) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct *var_r30; s32 var_r29; if (arg0 != 0) { @@ -1359,9 +1431,10 @@ void fn_1_124CC(s16 arg0, u8 arg1) { } } -void fn_1_12538(s16 arg0, s16 arg1, u8 arg2) { - M438UnkStruct2* temp_r31; - M438UnkStruct* var_r30; +void fn_1_12538(s16 arg0, s16 arg1, u8 arg2) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1372,9 +1445,10 @@ void fn_1_12538(s16 arg0, s16 arg1, u8 arg2) { } } -void fn_1_125A0(s16 arg0, u8 arg1) { - M438UnkStruct2* temp_r31; - M438UnkStruct* var_r30; +void fn_1_125A0(s16 arg0, u8 arg1) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct *var_r30; s32 var_r29; if (arg0 != 0) { @@ -1386,9 +1460,10 @@ void fn_1_125A0(s16 arg0, u8 arg1) { } } -void fn_1_1260C(s16 arg0, s16 arg1, u8 arg2) { - M438UnkStruct2* temp_r31; - M438UnkStruct* var_r30; +void fn_1_1260C(s16 arg0, s16 arg1, u8 arg2) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1399,9 +1474,10 @@ void fn_1_1260C(s16 arg0, s16 arg1, u8 arg2) { } } -void fn_1_12674(s16 arg0, u8 arg1) { - M438UnkStruct2* temp_r31; - M438UnkStruct* var_r30; +void fn_1_12674(s16 arg0, u8 arg1) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct *var_r30; s32 var_r29; if (arg0 != 0) { @@ -1413,9 +1489,10 @@ void fn_1_12674(s16 arg0, u8 arg1) { } } -void fn_1_126E0(s16 arg0, s16 arg1, u8 arg2) { - M438UnkStruct2* temp_r31; - M438UnkStruct* var_r30; +void fn_1_126E0(s16 arg0, s16 arg1, u8 arg2) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1426,9 +1503,10 @@ void fn_1_126E0(s16 arg0, s16 arg1, u8 arg2) { } } -void fn_1_1274C(s16 arg0, s16 arg1, u8 arg2, u8 arg3) { - M438UnkStruct2* temp_r31; - M438UnkStruct* var_r30; +void fn_1_1274C(s16 arg0, s16 arg1, u8 arg2, u8 arg3) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1439,15 +1517,16 @@ void fn_1_1274C(s16 arg0, s16 arg1, u8 arg2, u8 arg3) { } } -void fn_1_127C4(s16 arg0, u8 arg1) { - M438UnkStruct* var_r31; - M438UnkStruct2* temp_r29; +void fn_1_127C4(s16 arg0, u8 arg1) +{ + M438UnkStruct *var_r31; + M438UnkStruct2 *temp_r29; s32 var_r28; s32 var_r30; if (arg0 != 0) { temp_r29 = &lbl_1_bss_DE4.unk_40[arg0]; - var_r31 = (M438UnkStruct*)&temp_r29->unk_3C; //! bug + var_r31 = (M438UnkStruct *)&temp_r29->unk_3C; //! bug for (var_r28 = 0; var_r28 < temp_r29->unk_02; var_r28++, var_r31++) { for (var_r30 = 0; var_r30 < var_r31->unk_34; var_r30++) { var_r31->unk_58[var_r30].unk_24 = arg1; @@ -1456,9 +1535,10 @@ void fn_1_127C4(s16 arg0, u8 arg1) { } } -void fn_1_1285C(s16 arg0, s16 arg1, f32 arg8) { - M438UnkStruct2* temp_r31; - M438UnkStruct* var_r30; +void fn_1_1285C(s16 arg0, s16 arg1, f32 arg8) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1469,9 +1549,10 @@ void fn_1_1285C(s16 arg0, s16 arg1, f32 arg8) { } } -void fn_1_128C8(s16 arg0, s16 arg1, u8 arg2, f32 arg8) { - M438UnkStruct2* temp_r31; - M438UnkStruct* var_r30; +void fn_1_128C8(s16 arg0, s16 arg1, u8 arg2, f32 arg8) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1482,16 +1563,17 @@ void fn_1_128C8(s16 arg0, s16 arg1, u8 arg2, f32 arg8) { } } -void fn_1_12940(s16 arg0, f32 arg8) { - M438UnkStruct* var_r31; - M438UnkStruct2* temp_r30; +void fn_1_12940(s16 arg0, f32 arg8) +{ + M438UnkStruct *var_r31; + M438UnkStruct2 *temp_r30; s32 var_r28; s32 var_r29; if (arg0 != 0) { temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; var_r31 = temp_r30->unk_3C; - + for (var_r28 = 0; var_r28 < temp_r30->unk_02; var_r28++, var_r31++) { for (var_r29 = 0; var_r29 < var_r31->unk_34; var_r29++) { var_r31->unk_58[var_r29].unk_28 = arg8; @@ -1500,9 +1582,10 @@ void fn_1_12940(s16 arg0, f32 arg8) { } } -void fn_1_129D8(s16 arg0, s16 arg1, u8 arg2) { - M438UnkStruct2* temp_r31; - M438UnkStruct* var_r30; +void fn_1_129D8(s16 arg0, s16 arg1, u8 arg2) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1513,9 +1596,10 @@ void fn_1_129D8(s16 arg0, s16 arg1, u8 arg2) { } } -void fn_1_12A48(s16 arg0, s16 arg1, u8 arg2, u8 arg3) { - M438UnkStruct2* temp_r31; - M438UnkStruct* var_r30; +void fn_1_12A48(s16 arg0, s16 arg1, u8 arg2, u8 arg3) +{ + M438UnkStruct2 *temp_r31; + M438UnkStruct *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; @@ -1526,16 +1610,17 @@ void fn_1_12A48(s16 arg0, s16 arg1, u8 arg2, u8 arg3) { } } -void fn_1_12AC0(s16 arg0, u8 arg1) { - M438UnkStruct* var_r31; - M438UnkStruct2* temp_r30; +void fn_1_12AC0(s16 arg0, u8 arg1) +{ + M438UnkStruct *var_r31; + M438UnkStruct2 *temp_r30; s32 var_r28; s32 var_r29; if (arg0 != 0) { temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; var_r31 = temp_r30->unk_3C; - + for (var_r28 = 0; var_r28 < temp_r30->unk_02; var_r28++, var_r31++) { for (var_r29 = 0; var_r29 < var_r31->unk_34; var_r29++) { var_r31->unk_58[var_r29].unk_00 = arg1; @@ -1544,9 +1629,10 @@ void fn_1_12AC0(s16 arg0, u8 arg1) { } } -void fn_1_12B58(s16 arg0, u8 arg1) { - M438UnkStruct3* var_r31; - +void fn_1_12B58(s16 arg0, u8 arg1) +{ + M438UnkStruct3 *var_r31; + if (arg0 != 0) { var_r31 = &lbl_1_bss_DE4.unk_3C[arg0]; var_r31->unk_04 = arg1; diff --git a/src/REL/m438Dll/main.c b/src/REL/m438Dll/main.c index 861c653d..18b50662 100644 --- a/src/REL/m438Dll/main.c +++ b/src/REL/m438Dll/main.c @@ -1,6 +1,7 @@ #include "ext_math.h" #include "game/audio.h" #include "game/chrman.h" +#include "game/hsfex.h" #include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/hsfmotion.h" @@ -13,6 +14,10 @@ #include "REL/m438Dll.h" +#ifndef __MWERKS__ +#include "game/frand.h" +#endif + #define BOARD_FABS(value) ((value < 0.0f) ? -(value) : (value)) typedef struct M438MainWork { @@ -1197,7 +1202,6 @@ void fn_1_35C0(omObjData *object) s16 sp0A; s16 sp8; - float var_f31; float var_f30; float var_f29; @@ -1497,7 +1501,6 @@ void fn_1_4984(omObjData *object) Vec sp8; float var_f31; s32 var_r27; - M438MainWork3 *var_r28; M438MainWork3 *var_r30; M438MainWork3 *var_r31; @@ -1592,9 +1595,7 @@ void fn_1_4F50(omObjData *object) float var_f29; float var_f28; float var_f27; - float var_f25; s32 var_r26; - M438MainWork3 *var_r27; s32 var_r28; M438MainWork *var_r29; M438MainWork3 *var_r31; @@ -2601,8 +2602,6 @@ void fn_1_9420(float arg8, float *arg0, float *arg1, float arg2[3][3], float arg float sp48[16]; float sp8[16]; - float var_f29; - s32 var_r30; s32 var_r29; @@ -2672,8 +2671,6 @@ f32 fn_1_9960(Vec *arg0, Vec *arg1, Vec *arg2) { Vec sp44; f32 var_f31; - f32 var_f30; - f32 temp_f29; if (0.0f == ((arg2->z * arg2->z) + ((arg2->x * arg2->x) + (arg2->y * arg2->y)))) { return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) @@ -2686,28 +2683,7 @@ f32 fn_1_9960(Vec *arg0, Vec *arg1, Vec *arg2) f32 fn_1_9C9C(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) { - f32 sp44; - f32 sp40; - f32 sp3C; - f32 sp38; - f32 sp34; - f32 sp30; - f32 sp2C; - f32 sp28; - f32 sp24; - Vec sp18; - f32 sp14; - f32 sp10; - f32 spC; - f32 sp8; - f32 temp_f25; - f32 temp_f26; - f32 temp_f28; - f32 var_f24; f32 var_f27; - f64 temp_f31; - f64 temp_f31_2; - f64 temp_f31_3; if (0.0f == ((arg2->z * arg2->z) + ((arg2->x * arg2->x) + (arg2->y * arg2->y)))) { return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) diff --git a/src/REL/m438Dll/map.c b/src/REL/m438Dll/map.c index ea4ba2d0..1ba02bc0 100644 --- a/src/REL/m438Dll/map.c +++ b/src/REL/m438Dll/map.c @@ -1,12 +1,17 @@ #include "REL/m438Dll.h" #include "ext_math.h" +#include "game/audio.h" #include "game/hsfanim.h" #include "game/hsfmotion.h" +#include "game/memory.h" #include "game/sprite.h" #include "game/wipe.h" #include "string.h" +#ifndef __MWERKS__ +#include "game/frand.h" +#endif // STRUCT typedef struct M438MapStruct { @@ -92,7 +97,7 @@ void fn_1_B54C(omObjData *arg0) M438MapStruct *var_r24; M438MapStruct3 *temp_r23; - arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x108C, 0x10000000); + arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x108C, MEMORY_DEFAULT_NUM); temp_r23 = arg0->data; memset(temp_r23, 0, 0x108C); arg0->model[0] = Hu3DModelCreateFile(0x450000); @@ -372,7 +377,6 @@ void fn_1_C764(ModelData *model, ParticleData *particle, Mtx matrix) { HsfanimStruct01 *var_r31; s32 var_r29; - u16 temp_r0; var_r31 = particle->unk_48; @@ -399,7 +403,6 @@ void fn_1_C8E8(ModelData *model, ParticleData *particle, Mtx matrix) { HsfanimStruct01 *var_r31; s32 var_r29; - u16 temp_r0; var_r31 = particle->unk_48; @@ -508,7 +511,6 @@ void fn_1_D3FC(ModelData *model, ParticleData *particle, Mtx matrix) { HsfanimStruct01 *var_r31; s32 var_r29; - u16 temp_r0; lbl_1_bss_E2C = 0; var_r31 = particle->unk_48; @@ -581,7 +583,6 @@ s32 fn_1_DA64(f32 arg8) s32 var_r30; M438MapStruct2 *var_r31; float var_f31; - float var_f29; var_r28 = lbl_1_bss_108C[0]->data; var_r29 = 0; diff --git a/src/REL/m439Dll/main.c b/src/REL/m439Dll/main.c index 44c7927b..81595139 100644 --- a/src/REL/m439Dll/main.c +++ b/src/REL/m439Dll/main.c @@ -1,5 +1,6 @@ #include "game/hsfanim.h" #include "game/hsfdraw.h" +#include "game/hsfex.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/object.h" @@ -23,6 +24,12 @@ #include "REL/m439data.h" #include "version.h" +#ifndef __MWERKS__ +#include "game/ClusterExec.h" +#include "game/EnvelopeExec.h" +#include "game/ShapeExec.h" +#endif + typedef struct camera_params { float zoom; Vec pos; diff --git a/src/REL/m440Dll/main.c b/src/REL/m440Dll/main.c index 85db113d..ff62f742 100644 --- a/src/REL/m440Dll/main.c +++ b/src/REL/m440Dll/main.c @@ -600,7 +600,7 @@ void fn_1_2470(omObjData *arg0) s16 var_r30; unkStruct2 *temp_r27; - arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x34, MEMORY_DEFAULT_NUM); + arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct2), MEMORY_DEFAULT_NUM); temp_r27 = arg0->data; arg0->stat |= 0x100; arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M440, 0x08)); @@ -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; @@ -1565,7 +1565,7 @@ void fn_1_6B58(unkStruct6 *arg0, HsfObject *arg1) break; } } - arg0->unk24 = HuMemDirectMallocNum(HEAP_DATA, arg0->unk20 * 0xD0, var_r22->unk_48); + arg0->unk24 = HuMemDirectMallocNum(HEAP_DATA, arg0->unk20 * sizeof(unkStruct8), var_r22->unk_48); var_r31 = arg0->unk24; if (var_r24 != 0) { var_r30 = arg1->data.vertex->count; @@ -1843,7 +1843,10 @@ void fn_1_7D60(unkStruct15 *arg0, unkStruct13 *arg1, s16 arg2) } GXInitTexObjLOD(&sp1C, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1); GXLoadTexObj(&sp1C, arg2); - return; +#ifdef TARGET_PC + GXDestroyTexObj(&sp1C); + GXDestroyTlutObj(&sp10); +#endif } void fn_1_806C(ModelData *arg0, Mtx arg1) @@ -1876,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); @@ -1894,18 +1897,18 @@ 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; - HuSprTexLoad(*hiliteAnim, 0, lbl_1_bss_2C, GX_CLAMP, GX_CLAMP, GX_LINEAR); + HuSprTexLoad(hiliteAnim[0], 0, lbl_1_bss_2C, GX_CLAMP, GX_CLAMP, GX_LINEAR); fn_1_8470(temp_r31->unk28, temp_r29); } GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); GXSetZCompLoc(GX_FALSE); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); - GXCallDisplayList(temp_r31->unk30, temp_r31->unk34); + GXCallDisplayListNative(temp_r31->unk30, temp_r31->unk34); } void fn_1_8470(unkStruct12 *arg0, unkStruct13 *arg1) @@ -2132,6 +2135,9 @@ void fn_1_8D1C(void) GXSetTexCopyDst(0x280, 0x1E0, GX_TF_RGBA8, GX_FALSE); GXCopyTex(lbl_1_bss_28, 0); DCFlushRange(lbl_1_bss_28, lbl_1_bss_24); +#ifdef TARGET_PC + GXDestroyTexObj(&sp10); +#endif } void fn_1_91A4(Vec *arg0, Vec *arg1, Vec *arg2, f32 arg3[5]) @@ -2249,33 +2255,33 @@ s16 fn_1_956C(AnimData *arg0, s16 arg1, f32 arg2, s16 arg3, s16 arg4) var_r20 = Hu3DHookFuncCreate(fn_1_9C04); temp_r28 = &Hu3DData[var_r20]; - var_r31 = HuMemDirectMallocNum(HEAP_DATA, 0x68, temp_r28->unk_48); + var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(unkStruct5), temp_r28->unk_48); temp_r28->unk_120 = var_r31; arg0->useNum += 1; var_r31->unk10 = arg0; var_r31->unk0 = arg1; var_r31->unk8 = 0; var_r31->unkC = NULL; - var_r24 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 0x64, temp_r28->unk_48); + var_r24 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(unkStruct4), temp_r28->unk_48); var_r31->unk18 = var_r24; for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r24++) { 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++) { @@ -2452,15 +2458,15 @@ 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); - PSMTXReorder(sp128, spF8); + MTXReorder(sp128, spF8); if (((u8)omPauseChk() == 0) && (temp_r30->unkC)) { var_r23 = temp_r30->unkC; var_r23(arg0, temp_r30, arg1); @@ -2468,7 +2474,7 @@ void fn_1_9C04(ModelData *arg0, Mtx arg1) var_r29 = temp_r30->unk18; var_r31 = temp_r30->unk1C; var_r27 = temp_r30->unk20; - PSMTXROMultVecArray(spF8, &temp_r30->unk2C, (Vec *)&sp68[0], 4); + MTXROMultVecArray(spF8, &temp_r30->unk2C, (Vec *)&sp68[0], 4); for (var_r26 = 0; var_r26 < temp_r30->unk0; var_r26++, var_r29++, var_r27 += 4) { if (var_r29->unk62 == 0) { @@ -2504,9 +2510,9 @@ 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); - GXCallDisplayList(temp_r30->unk28, temp_r30->unk4); + DCFlushRangeNoSync(temp_r30->unk1C, temp_r30->unk0 * sizeof(Vec) * 4); + DCFlushRangeNoSync(temp_r30->unk20, temp_r30->unk0 * sizeof(Vec2f) * 4); + GXCallDisplayListNative(temp_r30->unk28, temp_r30->unk4); } void fn_1_A1B8(HsfVector2f *arg0, s16 arg1, s16 arg2, f32 arg8, f32 arg9) diff --git a/src/REL/m440Dll/object.c b/src/REL/m440Dll/object.c index 5eb6cb5c..5de16855 100644 --- a/src/REL/m440Dll/object.c +++ b/src/REL/m440Dll/object.c @@ -1,6 +1,7 @@ #include "REL/m440Dll.h" #include "ext_math.h" +#include "game/audio.h" #include "game/chrman.h" #include "game/flag.h" #include "game/gamework_data.h" @@ -10,10 +11,6 @@ #include "string.h" #include "version.h" -#ifdef __MWERKS__ -#include "game/audio.h" -#endif - // bss omObjData *lbl_1_bss_C0[4]; s16 lbl_1_bss_B8[4]; @@ -56,9 +53,9 @@ void fn_1_AEE4(omObjData *arg0) s16 var_r29; unkObjStruct *temp_r31; - arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x78, MEMORY_DEFAULT_NUM); + arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkObjStruct), MEMORY_DEFAULT_NUM); temp_r31 = (unkObjStruct *)arg0->data; - memset(temp_r31, 0, 0x78); + memset(temp_r31, 0, sizeof(unkObjStruct)); arg0->stat |= 0x100; temp_r31->unk4 = arg0->work[0]; temp_r31->unk6 = GWPlayerCfg[temp_r31->unk4].pad_idx; @@ -107,13 +104,9 @@ void fn_1_B180(omObjData *arg0) { s16 var_r29; s16 var_r31; - s32 var_r28; - u32 temp_r0; - u32 temp_r3; - u32 temp_r3_2; unkObjStruct *temp_r30; - var_r28 = GWSystem.player_curr; + s32 var_r28 = GWSystem.player_curr; if (var_r28 < 0) { var_r28 = 0; } @@ -236,9 +229,6 @@ void fn_1_B884(omObjData *arg0, unkObjStruct *arg1) f32 var_f28; f32 var_f31; f32 var_f30; - s16 temp_r0; - s16 temp_r0_2; - s16 temp_r3; s16 var_r30; switch (lbl_1_bss_74) { @@ -372,13 +362,8 @@ void fn_1_C1D4(omObjData *arg0, unkObjStruct *arg1) { s16 sp12[5]; s16 sp8[5]; - f32 var_f28; - f32 var_f29; f32 var_f30; f32 var_f31; - s16 temp_r0; - s16 temp_r0_2; - s16 temp_r3; s16 var_r29; s16 var_r28; s16 var_r30; @@ -490,7 +475,6 @@ void fn_1_C944(omObjData *arg0, unkObjStruct *arg1) f32 var_f29; f32 var_f30; f32 var_f31; - s16 var_r28; s16 var_r30; s16 var_r29; @@ -658,10 +642,8 @@ s16 fn_1_CFAC(unkObjStruct *arg0, u8 arg1) void fn_1_D24C(unkObjStruct *arg0, f32 arg1, f32 arg2) { - f32 var_f28; - f32 var_f29; - f32 var_f30; f32 var_f31; + f32 var_f28; var_f28 = REFRESH_RATE_F / 6.0f; arg0->unk6C = arg1; @@ -1129,14 +1111,8 @@ void fn_1_F168(void) void fn_1_F228(void) { omObjData *temp_r30; - s16 temp_r0; s16 var_r29; - s32 temp_r27; - s32 temp_r27_2; s32 var_r28; - u32 temp_r0_2; - u32 temp_r3; - u32 temp_r3_2; unkObjStruct *temp_r31; for (var_r29 = 0; var_r29 < 4; var_r29++) { diff --git a/src/REL/m441Dll/main.c b/src/REL/m441Dll/main.c index bc0d7e77..cda76fda 100644 --- a/src/REL/m441Dll/main.c +++ b/src/REL/m441Dll/main.c @@ -6,6 +6,7 @@ #include "game/objsub.h" #include "game/wipe.h" +#include "game/gamework.h" #include "game/gamework_data.h" #include "game/mapspace.h" @@ -23,6 +24,13 @@ #include "ext_math.h" #include "version.h" +#ifndef __MWERKS__ +#include +#include +#endif + +void HuSysVWaitSet(s16 vcount); + #undef ABS #define ABS(x) ((0 > (x)) ? -(x) : (x)) @@ -700,7 +708,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) { @@ -1772,9 +1782,6 @@ void fn_1_892C(s16 arg0, s16 arg1, Vec *arg2) { omObjData *object; Work713C *work; - float x; - float y; - float z; if (lbl_1_bss_1E >= 400) { OSReport("over!!\n"); return; diff --git a/src/REL/m442Dll/main.c b/src/REL/m442Dll/main.c index 53dd649a..9f45c7b0 100644 --- a/src/REL/m442Dll/main.c +++ b/src/REL/m442Dll/main.c @@ -16,6 +16,11 @@ #include "REL/m442Dll.h" +#ifndef __MWERKS__ +#include "game/esprite.h" +#include "game/frand.h" +#endif + typedef struct M442StructBss5C { /* 0x00 */ float unk_00; // probably Vec /* 0x04 */ float unk_04; @@ -243,7 +248,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); @@ -818,7 +823,6 @@ void fn_1_2254(omObjData *object) float var_f31; float var_f30; - double var_f29; float var_f28; float var_f27; float var_f26; @@ -1465,26 +1469,10 @@ void fn_1_485C(ModelData *model, Mtx mtx) Vec sp10; float var_f31; - float var_f30; - float var_f29; - float var_f28; - float var_f27; - float var_f26; - float var_f25; - float var_f24; - float var_f23; - float var_f22; - float var_f21; - float var_f20; - float var_f19; M442StructBss5C *var_r31; s32 var_r30; CameraData *var_r29; - u16 var_r28; - u16 var_r27; - u16 var_r26; - u16 var_r25; var_r29 = Hu3DCamera; C_MTXOrtho(sp100, 0.0f, 480.0f, 0.0f, 640.0f, 0.0f, 100.0f); @@ -1527,12 +1515,12 @@ 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; - PSMTXReorder(spA0, sp70); - PSMTXROMultVecArray(sp70, &lbl_1_data_1C0[0], &sp10, 4); + MTXReorder(spA0, sp70); + MTXROMultVecArray(sp70, &lbl_1_data_1C0[0], &sp10, 4); GXLoadPosMtxImm(mtx, 0); var_r31 = lbl_1_bss_5C; for (var_r30 = 0; var_r30 < 1024; var_r30++, var_r31++) { @@ -1630,6 +1618,9 @@ void fn_1_54C8(ModelData *model, Mtx mtx) GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); +#ifdef TARGET_PC + GXDestroyTexObj(&spC); +#endif } s16 fn_1_5918(Vec *arg0) @@ -1664,15 +1655,6 @@ s32 fn_1_59C0(Vec *arg0) void fn_1_5A48(ModelData *arg0, Mtx arg1) { - float var_f31; - float var_f30; - float var_f29; - float var_f28; - float var_f27; - float var_f26; - float var_f25; - float var_f24; - M442StructBssC9F8 *var_r31; s32 var_r30; @@ -1726,8 +1708,6 @@ GXColor lbl_1_data_218 = { 0xFF, 0xFF, 0xFF, 0x80 }; void fn_1_5EDC(ModelData *model, float (*mtx)[4]) { - float sp38; - float sp28; Mtx spC; M442MainWork *var_r31; @@ -2138,8 +2118,6 @@ void fn_1_7EBC(ModelData *model, ParticleData *particle, Mtx matrix) { s32 sp14; float sp10; - float spC; - float sp8; float var_f31; diff --git a/src/REL/m443Dll/main.c b/src/REL/m443Dll/main.c index acf8f914..f0ab0aa4 100644 --- a/src/REL/m443Dll/main.c +++ b/src/REL/m443Dll/main.c @@ -809,9 +809,6 @@ void fn_1_3770(omObjData *arg0) s32 var_r26; u32 var_r25; s32 var_r24; - s32 var_r23; - u32 var_r22; - u32 var_r21; var_r28 = arg0->data; { diff --git a/src/REL/m443Dll/player.c b/src/REL/m443Dll/player.c index 9ed45b12..2ee3729e 100644 --- a/src/REL/m443Dll/player.c +++ b/src/REL/m443Dll/player.c @@ -10,6 +10,7 @@ #ifndef __MWERKS__ #include "game/esprite.h" +#include "game/frand.h" #endif #include "REL/m443Dll.h" @@ -212,7 +213,6 @@ void fn_1_5680(omObjData *object) { f32 spC[4] = { 0.25f, 0.5f, 0.75f, 1.0f }; s32 sp8; - f32 temp_f0; s32 temp_r27; s32 temp_r3; s32 var_r29; @@ -220,7 +220,7 @@ void fn_1_5680(omObjData *object) M443DllWorkStruct *temp_r31; HsfanimStruct01 *var_r28; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x134, MEMORY_DEFAULT_NUM); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M443DllWorkStruct), MEMORY_DEFAULT_NUM); temp_r31 = object->data; memset(temp_r31, 0, 0x134); object->stat |= 0x100; @@ -403,7 +403,6 @@ void fn_1_6458(omObjData *object) f32 var_f31; s32 var_r29; M443DllWorkStruct *temp_r31; - void *temp_r4; temp_r31 = object->data; var_r29 = 0; @@ -444,7 +443,6 @@ void fn_1_6458(omObjData *object) void fn_1_6674(omObjData *object) { M443DllWorkStruct *temp_r31; - void *temp_r4; temp_r31 = object->data; temp_r31->unk10 = 0; @@ -567,9 +565,6 @@ void fn_1_6B90(omObjData *object) { 3, 2, 1, 0 }, }; f32 sp18[4] = { 0.0f, -700.0f, 600.0f, 1200.0f }; - s32 sp14; - s32 sp10; - s32 spC; s32 sp8[4] = { 2, 4, 8, 16 }; f32 var_f31; s32 var_r28; @@ -978,7 +973,6 @@ void fn_1_8508(omObjData *object) s32 var_r30; M443DllWorkStruct *temp_r28; M443DllUnkStruct *temp_r31; - f32 *temp_r4; temp_r28 = object->data; temp_r31 = &temp_r28->unk108s; diff --git a/src/REL/m444dll/main.c b/src/REL/m444dll/main.c index 27ef0821..52ede40d 100644 --- a/src/REL/m444dll/main.c +++ b/src/REL/m444dll/main.c @@ -1,3 +1,4 @@ +#include "game/hsfex.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/object.h" @@ -17,7 +18,6 @@ #include "REL/m444dll.h" #include "ext_math.h" -#include "math.h" typedef struct camera_view_params { Vec rot; diff --git a/src/REL/m444dll/pinball.c b/src/REL/m444dll/pinball.c index a455a9f4..e4ad2e19 100644 --- a/src/REL/m444dll/pinball.c +++ b/src/REL/m444dll/pinball.c @@ -10,19 +10,17 @@ #include "game/audio.h" #include "game/chrman.h" -#include "game/esprite.h" #include "game/window.h" -#include "game/wipe.h" -#include "game/board/ui.h" -#include "game/gamework.h" #include "game/gamework_data.h" #include "REL/m444dll.h" #include "ext_math.h" #include "version.h" -#include "math.h" +#ifndef __MWERKS__ +#include "game/frand.h" +#endif s16 lbl_1_bss_198F0[5][2]; Vec lbl_1_bss_D8F0[4096]; diff --git a/src/REL/m444dll/shadow.c b/src/REL/m444dll/shadow.c index 9351f3e6..604c5e85 100644 --- a/src/REL/m444dll/shadow.c +++ b/src/REL/m444dll/shadow.c @@ -1,8 +1,6 @@ #include "game/hsfman.h" #include "game/object.h" -#include "game/window.h" - #include "ext_math.h" void fn_1_D9F4(s16); @@ -23,7 +21,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/m445Dll/main.c b/src/REL/m445Dll/main.c index 831d1e69..b1251344 100755 --- a/src/REL/m445Dll/main.c +++ b/src/REL/m445Dll/main.c @@ -2,6 +2,7 @@ #include "game/audio.h" #include "game/chrman.h" #include "game/data.h" +#include "game/frand.h" #include "game/gamework_data.h" #include "game/hsfanim.h" #include "game/hsfman.h" @@ -16,7 +17,6 @@ #include "game/window.h" #include "game/wipe.h" -#include "dolphin.h" #include "ext_math.h" typedef struct { diff --git a/src/REL/m446Dll/camera.c b/src/REL/m446Dll/camera.c index 8a49a82f..2b353e3a 100644 --- a/src/REL/m446Dll/camera.c +++ b/src/REL/m446Dll/camera.c @@ -1,6 +1,5 @@ #include "REL/m446Dll.h" -#include "math.h" #include "ext_math.h" #include "game/hsfman.h" #include "game/printfunc.h" diff --git a/src/REL/m446Dll/card.c b/src/REL/m446Dll/card.c index fa45170f..0f187b20 100644 --- a/src/REL/m446Dll/card.c +++ b/src/REL/m446Dll/card.c @@ -15,7 +15,7 @@ unkStruct2 *fn_1_1C64(s32 arg0) { unkStruct2 *temp_r3; - temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC, MEMORY_DEFAULT_NUM); + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct2), MEMORY_DEFAULT_NUM); if (!temp_r3) { return NULL; } @@ -86,7 +86,7 @@ unkStruct3 *fn_1_1DF4(void *arg0) { unkStruct3 *temp_r3; - temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC, MEMORY_DEFAULT_NUM); + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct3), MEMORY_DEFAULT_NUM); if (!temp_r3) { return NULL; } @@ -211,9 +211,7 @@ void fn_1_207C(void) void fn_1_20D4(void) { - m446Func1 *temp_r4; f32 temp_f31; - s32 temp_r5; unkStruct4 *temp_r31; unkStruct3 *var_r30; @@ -275,7 +273,7 @@ unkStruct4 *m446CardCreate(s32 arg0) unkStruct4 *temp_r31; unkStruct3 *temp_r30; - temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x98, MEMORY_DEFAULT_NUM); + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct4), MEMORY_DEFAULT_NUM); if (!temp_r31) { OSReport("[!] m446CardCreate ERROR...\n"); return NULL; diff --git a/src/REL/m446Dll/cursor.c b/src/REL/m446Dll/cursor.c index c57da258..0fee3a5f 100644 --- a/src/REL/m446Dll/cursor.c +++ b/src/REL/m446Dll/cursor.c @@ -70,7 +70,7 @@ unkStruct7 *m446CursorCreate(s32 arg0) unkStruct7 *var_r31; unkStruct3 *var_r29; - var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x54, MEMORY_DEFAULT_NUM); + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct7), MEMORY_DEFAULT_NUM); if (!var_r31) { return NULL; } diff --git a/src/REL/m446Dll/deck.c b/src/REL/m446Dll/deck.c index 83e541ee..cf3ce64d 100644 --- a/src/REL/m446Dll/deck.c +++ b/src/REL/m446Dll/deck.c @@ -1,6 +1,6 @@ #include "REL/m446Dll.h" -#include "math.h" +#include "game/audio.h" #include "ext_math.h" // bss @@ -18,7 +18,7 @@ unkStruct5* fn_1_3064(void) { s32 var_r30; unkStruct5* temp_r3; - temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10, MEMORY_DEFAULT_NUM); + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct5), MEMORY_DEFAULT_NUM); if (!temp_r3) { return NULL; } diff --git a/src/REL/m446Dll/main.c b/src/REL/m446Dll/main.c index b73f19e3..91e62596 100644 --- a/src/REL/m446Dll/main.c +++ b/src/REL/m446Dll/main.c @@ -5,8 +5,8 @@ #include "game/frand.h" #include "game/gamework_data.h" #include "game/hsfman.h" -#include "game/jmp.h" #include "game/minigame_seq.h" +#include "game/objsub.h" #include "game/window.h" #include "game/wipe.h" @@ -94,7 +94,7 @@ unkStruct *m446FlowCreate(void) s32 var_r30; unkStruct *temp_r3; - temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x9C, MEMORY_DEFAULT_NUM); + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct), MEMORY_DEFAULT_NUM); if (temp_r3 == 0) { OSReport("[!] m446FlowCreate() ERROR...\n"); return NULL; @@ -288,9 +288,6 @@ void fn_1_53C(unkStruct *arg0) void fn_1_958(unkStruct *arg0) { - s32 temp_r3; - s32 temp_r3_2; - s32 temp_r3_3; s32 var_r30; switch (arg0->unk10) { @@ -681,7 +678,6 @@ void fn_1_19D4(void) { s16 temp_r3; s16 var_r30; - s32 temp_r0; s32 var_r29; u32 temp_r27; diff --git a/src/REL/m446Dll/player.c b/src/REL/m446Dll/player.c index ecf62fa9..57d002a4 100644 --- a/src/REL/m446Dll/player.c +++ b/src/REL/m446Dll/player.c @@ -1,5 +1,6 @@ #include "REL/m446Dll.h" +#include "game/audio.h" #include "game/chrman.h" #include "game/gamework_data.h" #include "game/hsfman.h" @@ -166,7 +167,7 @@ unkStruct8 *m446PlayerCreate(s32 arg0, unkStruct6 *arg1) s32 var_r30; unkStruct8 *var_r31; - var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xCC, MEMORY_DEFAULT_NUM); + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct8), MEMORY_DEFAULT_NUM); if (!var_r31) { return NULL; } @@ -338,7 +339,6 @@ s32 m446PlayerAppendCard(unkStruct8 *arg0, unkStruct4 *arg1, s32 arg2) { Vec sp18; Vec spC; - s32 temp_r0_2; s32 temp_r28; s32 temp_r27; s32 var_r29; @@ -859,7 +859,7 @@ void fn_1_64BC(unkStruct8 *arg0, s32 arg1, s32 arg2) } } -static inline unkStruct8UnkC8(unkStruct8 *arg0) +static inline s32 unkStruct8UnkC8(unkStruct8 *arg0) { if (arg0->unkC8 == 0) { return 0; diff --git a/src/REL/m446Dll/stage.c b/src/REL/m446Dll/stage.c index 19f9d91f..5248117e 100644 --- a/src/REL/m446Dll/stage.c +++ b/src/REL/m446Dll/stage.c @@ -101,7 +101,7 @@ unkStruct9 *m446StageCreate(void) unkStruct3 *temp_ret; unkStruct9 *var_r31; - var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x30, MEMORY_DEFAULT_NUM); + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct9), MEMORY_DEFAULT_NUM); if (!var_r31) { return NULL; } diff --git a/src/REL/m446Dll/table.c b/src/REL/m446Dll/table.c index ea79e3b9..e972842c 100644 --- a/src/REL/m446Dll/table.c +++ b/src/REL/m446Dll/table.c @@ -1,4 +1,5 @@ #include "REL/m446Dll.h" +#include "game/audio.h" #include "game/hsfman.h" #include "game/pad.h" @@ -46,7 +47,7 @@ unkStruct6 *fn_1_39D0(void) unkStruct3 *var_r29; unkStruct6 *var_r31; - var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x70, MEMORY_DEFAULT_NUM); + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct6), MEMORY_DEFAULT_NUM); if (!var_r31) { return NULL; } diff --git a/src/REL/m447dll/main.c b/src/REL/m447dll/main.c index eeb86fd4..dbba1ee1 100755 --- a/src/REL/m447dll/main.c +++ b/src/REL/m447dll/main.c @@ -13,6 +13,10 @@ #include "math.h" +#ifndef __MWERKS__ +#include "game/audio.h" +#endif + typedef struct { /* 0x00 */ s16 unk00; /* 0x02 */ char unk02[2]; @@ -463,7 +467,12 @@ void fn_1_1068(UnkM447Struct_00* arg0) { /* fallthrough */ case 1: // Bug: HuAudSeqFadeOut takes two arguments. +#ifdef TARGET_PC + // TODO PC + HuAudSeqFadeOut(arg0->unk70, 100); +#else HuAudSeqFadeOut(arg0->unk70); +#endif arg0->unk30 = MGSeqCreate(3, 1); arg0->unk1C = 2; /* fallthrough */ diff --git a/src/REL/m447dll/player.c b/src/REL/m447dll/player.c index a4744d53..d74c3a1c 100755 --- a/src/REL/m447dll/player.c +++ b/src/REL/m447dll/player.c @@ -4,6 +4,7 @@ #include "game/data.h" #include "game/esprite.h" #include "game/gamework_data.h" +#include "game/hsfex.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/memory.h" diff --git a/src/REL/m448Dll/main.c b/src/REL/m448Dll/main.c index 961f27be..0e7c6322 100755 --- a/src/REL/m448Dll/main.c +++ b/src/REL/m448Dll/main.c @@ -3,7 +3,6 @@ #include "game/chrman.h" #include "game/data.h" #include "game/esprite.h" -#include "game/flag.h" #include "game/gamework_data.h" #include "game/hsfanim.h" #include "game/hsfman.h" @@ -18,10 +17,11 @@ #include "game/window.h" #include "game/wipe.h" -#include "dolphin.h" #include "ext_math.h" #include "version.h" +s32 rand8(void); + typedef struct { /* 0x00 */ s32 unk00; /* 0x04 */ s32 unk04; @@ -301,6 +301,9 @@ void fn_1_4FC(ModelData *model, Mtx matrix) } } } +#ifdef TARGET_PC + GXDestroyTexObj(&lbl_1_bss_40); +#endif } const Vec lbl_1_rodata_100 = { 0.0f, 0.0f, 0.0f }; diff --git a/src/REL/m449Dll/main.c b/src/REL/m449Dll/main.c index 02d13d79..6a18dd8c 100644 --- a/src/REL/m449Dll/main.c +++ b/src/REL/m449Dll/main.c @@ -5,7 +5,6 @@ #include "game/audio.h" #include "game/chrman.h" #include "game/esprite.h" -#include "game/flag.h" #include "game/frand.h" #include "game/gamework_data.h" #include "game/hsfdraw.h" @@ -16,7 +15,6 @@ #include "game/object.h" #include "game/objsub.h" #include "game/pad.h" -#include "game/printfunc.h" #include "game/sprite.h" #include "game/window.h" #include "game/wipe.h" @@ -26,7 +24,7 @@ #include "game/hsfex.h" #endif -s32 rand8(void); +extern s32 rand8(void); typedef struct UnkCameraStruct { /* 0x00 */ float unk_00; @@ -1317,15 +1315,7 @@ float lbl_1_data_294 = -30.0f; void fn_1_6850(omObjData *object) { M449DllWork *sp20[2]; - s32 sp1C; - s32 sp18; - s32 sp14; - s32 sp10; - s32 spC; - s32 sp8; float var_f31; - float var_f30; - float var_f29; s32 var_r31; s32 var_r30; @@ -1450,8 +1440,6 @@ void fn_1_71A8(void) s16 var_r31; s32 var_r30; s16 var_r29; - s32 var_r28; - s32 var_r27; u32 var_r26; var_r29 = 0; diff --git a/src/REL/m450Dll/main.c b/src/REL/m450Dll/main.c index 4610c4b3..d1a76105 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]; @@ -1608,7 +1608,7 @@ void fn_1_56C4(ModelData *arg0, Mtx arg1) sp130[0][3] = 0.0f; sp130[1][3] = 0.0f; sp130[2][3] = 0.0f; - PSMTXReorder(sp130, sp100); + MTXReorder(sp130, sp100); if ((omPauseChk() == 0) && (var_r31->unk_00)) { spC = var_r31->unk_00; spC(arg0, var_r31, arg1); @@ -1616,7 +1616,7 @@ void fn_1_56C4(ModelData *arg0, Mtx arg1) var_r29 = var_r31->unk_10; var_r30 = var_r31->unk_14; var_r27 = var_r31->unk_18; - PSMTXROMultVecArray(sp100, &var_r31->unk_28, sp70, 4); + MTXROMultVecArray(sp100, &var_r31->unk_28, sp70, 4); for (var_r19 = 0; var_r19 < var_r31->unk_64; var_r19++, var_r29++, var_r27 += 4) { if (var_r29->unk_3E < 0) { var_r30->x = var_r30->y = var_r30->z = 0.0f; @@ -1651,9 +1651,9 @@ 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); - GXCallDisplayList(var_r31->unk_24, var_r31->unk_58); + DCFlushRangeNoSync(var_r31->unk_14, var_r31->unk_64 * sizeof(Vec) * 4); + DCFlushRangeNoSync(var_r31->unk_18, var_r31->unk_64 * sizeof(Vec2f) * 4); + GXCallDisplayListNative(var_r31->unk_24, var_r31->unk_58); } } @@ -1707,7 +1707,7 @@ s16 fn_1_5ED8(AnimData *arg0, Vec *arg1, float *arg2, s16 arg3, float arg8, s16 var_r31->unk_00 = 0; var_r31->unk_66 = arg3; var_r31->unk_6B = 0; - var_r31->unk_10 = HuMemDirectMallocNum(HEAP_DATA, arg3 * 0x40, var_r28->unk_48); + var_r31->unk_10 = HuMemDirectMallocNum(HEAP_DATA, arg3 * sizeof(UnkM450Struct2), var_r28->unk_48); for (var_r24 = var_r31->unk_10, var_r30 = 0; var_r30 < arg3; var_r30++, var_r24++) { var_r24->unk_3E = -1; var_r24->unk_3C = -1; @@ -1889,12 +1889,7 @@ void fn_1_6798(s16 arg0, s16 arg1, Vec *arg2, float arg8, float arg9, float argA s16 fn_1_69F8(Vec *arg0, float *arg1, s16 arg2) { - s16 var_r31; - void *var_r30; - ModelData *var_r29; - ModelData *var_r28; - - var_r31 = fn_1_5ED8(lbl_1_bss_14, arg0, arg1, arg2, 80.0f, 0x40, 0x40); + s16 var_r31 = fn_1_5ED8(lbl_1_bss_14, arg0, arg1, arg2, 80.0f, 0x40, 0x40); fn_1_6638(var_r31, fn_1_5148); fn_1_6670(var_r31, 1); Hu3DModelLayerSet(var_r31, 5); @@ -2295,8 +2290,6 @@ void fn_1_8120(void) float var_f29; s32 var_r31; - s32 var_r30; - s32 var_r29; float sp10[2] = { 0.0f, 0.0f }; s32 sp24[22] = { @@ -2358,12 +2351,6 @@ void fn_1_8120(void) void fn_1_8500(void) { - float sp28; - float sp20; - float sp18; - float sp10; - float sp8; - s32 var_r31; float sp30[2] = { 0.0f, 0.0f }; @@ -2407,8 +2394,6 @@ void fn_1_8500(void) void fn_1_8BDC(void) { - s32 var_r31; - lbl_1_bss_4 = 2; lbl_1_bss_0 = -1; fn_1_E1A8(1, 0xD, 8.0f, 0x40000001, -1, 0.0f); @@ -2841,7 +2826,6 @@ void fn_1_AD58(omObjData *object) float spC8; UnkM450Struct3 *var_r31; - Vec2f *var_r25; s32 var_r20; var_r20 = 0; @@ -3482,7 +3466,6 @@ void fn_1_E478(UnkM450Struct3 *arg0, omObjData *arg1) void fn_1_E604(UnkM450Struct3 *arg0, omObjData *arg1) { Vec spC; - float sp8; arg0->unk_D4 = ((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C; if (((arg0->unk_154 & 0x10) != 0) && ((arg0->unk_154 & 0x20) == 0)) { @@ -3538,10 +3521,6 @@ HsfanimStruct00 lbl_1_data_1504; void fn_1_EB6C(UnkM450Struct3 *arg0, omObjData *arg1) { - s32 var_r29; - s16 var_r28; - u32 var_r27; - fn_1_1D18(arg1->model[4], "g007i03-itemhook_M", &arg0->unk_00.unk_6C); Hu3DModelHookObjReset(arg1->model[4], "g007i03-itemhook_M"); Hu3DModelAttrSet(arg1->model[4], HU3D_ATTR_DISPOFF); @@ -4517,9 +4496,6 @@ void fn_1_12A1C(omObjData *object) void fn_1_12B80(omObjData *object) { - s32 var_r30; - s16 var_r29; - object->work[0] = frandmod(3 * REFRESH_RATE); omSetTra(object, 0.0f, 0.0f, 0.0f); omSetRot(object, 0.0f, 0.0f, 0.0f); @@ -4712,7 +4688,6 @@ void fn_1_13BC4(s32 arg0) { s32 var_r31; UnkData1380Struct *var_r30; - s16 var_r29; nMap = 0; lbl_1_bss_118 = arg0; @@ -5048,7 +5023,7 @@ void fn_1_15BAC(Vec *arg0, Vec *arg1, float arg8, s32 arg2, float *arg3, float * else if (0.0f > arg8) { arg8 += 360.0f; } - *arg3 = (atan2d(sp14.z, sp14.x)) - 90.0; + *arg3 = (atan2d(sp14.z, sp14.x))-90.0; *arg4 = atan2d(sp14.y, sqrtf((sp14.x * sp14.x) + (sp14.z * sp14.z))); if (arg2 == 0) { *arg3 *= -1.0f; @@ -5625,12 +5600,7 @@ void fn_1_17BBC(omObjData *object) void fn_1_18424(s32 arg0, Vec *arg1) { - UnkBss358Struct *var_r27; - UnkBss358Struct *var_r28; - UnkBss358Struct *var_r29; omObjData *var_r31; - s16 var_r24; - s16 var_r25; s16 var_r26; UnkM450Struct4 *var_r30; @@ -5905,12 +5875,9 @@ s32 fn_1_1964C(Vec *arg0, Vec *arg1) s32 fn_1_19798(void) { - float sp8; float var_f31; float var_f30; - float var_f29; float var_f28; - float var_f27; UnkM450Struct5 *var_r31 = lbl_1_bss_138->data; UnkM450Struct3 *var_r30 = lbl_1_bss_134->data; @@ -6098,7 +6065,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) { @@ -6413,8 +6382,6 @@ s32 fn_1_1C39C(UnkM450Struct5 *arg0) void fn_1_1C434(UnkM450Struct5 *arg0, omObjData *arg1) { - s32 var_r30; - arg0->unk_118++; lbl_1_bss_1A4->work[0] += 1; lbl_1_bss_128 = 0.0f; @@ -6752,8 +6719,6 @@ void fn_1_1E150(omObjData *var_r29) void fn_1_200BC(UnkM450Struct5 *arg0, omObjData *object) { - s32 var_r31; - arg0->unk_118++; arg0->unk_FC &= ~0x802; arg0->unk_FC &= ~0x70; diff --git a/src/REL/m451Dll/m451.c b/src/REL/m451Dll/m451.c index 4f55107a..29601f11 100644 --- a/src/REL/m451Dll/m451.c +++ b/src/REL/m451Dll/m451.c @@ -17,6 +17,10 @@ #include "game/gamework_data.h" +#ifndef __MWERKS__ +#include "game/hsfex.h" +#endif + typedef struct bss_348_data { s16 unk0[5]; s16 unkA; diff --git a/src/REL/m453Dll/main.c b/src/REL/m453Dll/main.c index 9db313c7..e49eecfa 100644 --- a/src/REL/m453Dll/main.c +++ b/src/REL/m453Dll/main.c @@ -1315,7 +1315,6 @@ void fn_1_3F38(ModelData *model, ParticleData *particle, Mtx matrix) float var_f31; float var_f30; float var_f29; - float var_f28; HsfanimStruct01 *var_r31; s32 var_r29; @@ -1464,18 +1463,8 @@ float fn_1_4B34(float arg8, float arg9, float argA, float argB) void fn_1_4BAC(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) { float spC[3]; - float sp8; - float var_f31; float var_f30; - float var_f28; float var_f29; - float var_f27; - float var_f26; - float var_f25; - float var_f24; - float var_f23; - float var_f22; - float var_f21; s32 var_r31; @@ -1615,13 +1604,6 @@ void fn_1_5670(float arg8, float *arg0, float *arg1, float (*arg2)[3], float (*a float sp48[16]; float sp8[16]; - float var_f31; - float var_f30; - float var_f29; - float var_f28; - float var_f27; - - s32 var_r31; s32 var_r30; s32 var_r29; diff --git a/src/REL/m453Dll/map.c b/src/REL/m453Dll/map.c index 6771a755..97cbe2ab 100644 --- a/src/REL/m453Dll/map.c +++ b/src/REL/m453Dll/map.c @@ -3,16 +3,12 @@ #include "game/chrman.h" #include "game/flag.h" #include "game/frand.h" -#include "game/gamework.h" #include "game/hsfanim.h" #include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/hsfmotion.h" -#include "game/minigame_seq.h" -#include "game/objsub.h" -#include "game/pad.h" +#include "game/memory.h" #include "game/sprite.h" -#include "game/wipe.h" #include "math.h" #include "string.h" @@ -464,7 +460,7 @@ void fn_1_6C74(omObjData *object) s32 var_r31; M453MapUnkStruct *var_r29; - var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x54, 0x10000000); + var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M453MapUnkStruct), MEMORY_DEFAULT_NUM); object->data = var_r29; memset(object->data, 0, 0x54); for (var_r31 = 0; var_r31 < 0xC; var_r31++) { diff --git a/src/REL/m453Dll/score.c b/src/REL/m453Dll/score.c index a588ca07..8f0decb6 100644 --- a/src/REL/m453Dll/score.c +++ b/src/REL/m453Dll/score.c @@ -1,19 +1,9 @@ -#include "ext_math.h" -#include "game/audio.h" -#include "game/chrman.h" #include "game/esprite.h" #include "game/flag.h" -#include "game/frand.h" -#include "game/gamework.h" -#include "game/hsfanim.h" -#include "game/hsfman.h" #include "game/memory.h" -#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/pad.h" #include "game/sprite.h" -#include "game/wipe.h" #include "REL/m453Dll.h" diff --git a/src/REL/m455Dll/main.c b/src/REL/m455Dll/main.c index 36c27f42..3b7af6c8 100644 --- a/src/REL/m455Dll/main.c +++ b/src/REL/m455Dll/main.c @@ -19,6 +19,7 @@ #ifndef __MWERKS__ #include "game/esprite.h" +#include "game/hsfex.h" #endif typedef struct camera_view_params { @@ -75,7 +76,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); @@ -743,7 +744,7 @@ void fn_1_27A0(Vec *arg0, Vec *arg1, float arg2) arg1->z = fn_1_26F8(arg2, arg0[0].z, arg0[1].z, arg0[2].z, arg0[3].z); } -float lbl_1_data_184[2] = {}; +float lbl_1_data_184[2] = {0.0f, 0.0f}; void fn_1_2AF4(s32 arg0, s32 arg1, float arg2); diff --git a/src/REL/m455Dll/stage.c b/src/REL/m455Dll/stage.c index ff708c84..cf1fbe4b 100644 --- a/src/REL/m455Dll/stage.c +++ b/src/REL/m455Dll/stage.c @@ -1,18 +1,13 @@ +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" #include "game/object.h" #include "game/objsub.h" -#include "game/hsfman.h" -#include "game/hsfdraw.h" -#include "game/hsfanim.h" + #include "game/hsfmotion.h" -#include "game/pad.h" -#include "game/wipe.h" #include "game/frand.h" -#include "game/audio.h" -#include "game/minigame_seq.h" -#include "game/gamework_data.h" -#include "game/chrman.h" #include "game/sprite.h" #include "REL/m455Dll.h" @@ -154,7 +149,7 @@ omObjData *fn_1_347C(void) s32 id; ModelData *modelP; s32 i; - + work->unkA40 = 0; work->unkA44 = 0; work->unkA48 = 0; @@ -162,7 +157,7 @@ omObjData *fn_1_347C(void) work->unkA50 = 0; work->unkA54 = 0; work->unkA58 = 0; - + object->model[0] = id = Hu3DHookFuncCreate(fn_1_4E64); Hu3DModelCameraSet(id, HU3D_CAM0); Hu3DModelLayerSet(id, 5); @@ -196,13 +191,13 @@ omObjData *fn_1_347C(void) GXPosition2f32(-0.5f, 0.5f); GXTexCoord2f32(0, 1); work2->unkA18 = GXEndDisplayList(); - for(i=0; i<26; i++) { + for (i = 0; i < 26; i++) { work2->unk874[i][0] = 0; work2->unk874[i][1] = 0; work2->unk944[i][0] = 0; work2->unk944[i][1] = 0; } - + object->model[3] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 5)); Hu3DModelPosSet(id, 0, 0, -5000); Hu3DModelScaleSet(id, 2, 2, 2); @@ -212,36 +207,36 @@ omObjData *fn_1_347C(void) Hu3DTexScrollPosMoveSet(id, -0.00009166667f, 0, 0); id = Hu3DTexScrollCreate(object->model[3], "pa_sk3"); Hu3DTexScrollPosMoveSet(id, -0.00020833335f, 0, 0); - + object->model[4] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 6)); Hu3DModelPosSet(id, 0, 0, -3000); Hu3DModelScaleSet(id, 1.2f, 1.2f, 1.2f); Hu3DModelCameraSet(id, HU3D_CAM0); Hu3DModelLayerSet(id, 1); - + object->model[8] = id = Hu3DHookFuncCreate(fn_1_49AC); Hu3DModelCameraSet(id, HU3D_CAM0); Hu3DModelLayerSet(id, 2); modelP = &Hu3DData[id]; modelP->unk_120 = work; - + object->model[10] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 0)); Hu3DModelPosSet(id, 0, 0, 0); Hu3DModelCameraSet(id, HU3D_CAM0); Hu3DModelLayerSet(id, 3); Hu3DModelShadowMapSet(object->model[10]); - for(i=0; i<4; i++) { - - object->model[i+11] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 1)); - Hu3DModelCameraSet(object->model[i+11], HU3D_CAM0); - Hu3DModelLayerSet(object->model[i+11], 3); - Hu3DModelPosSet(object->model[i+11], lbl_1_data_1D8[i].x, lbl_1_data_1D8[i].y, lbl_1_data_1D8[i].z); - Hu3DModelAttrSet(object->model[i+11], HU3D_MOTATTR_SHAPE_LOOP); - Hu3DMotionShapeTimeSet(object->model[i+11], (0.25*i)*Hu3DMotionShapeMaxTimeGet(object->model[i+11])); + for (i = 0; i < 4; i++) { + + object->model[i + 11] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 1)); + Hu3DModelCameraSet(object->model[i + 11], HU3D_CAM0); + Hu3DModelLayerSet(object->model[i + 11], 3); + Hu3DModelPosSet(object->model[i + 11], lbl_1_data_1D8[i].x, lbl_1_data_1D8[i].y, lbl_1_data_1D8[i].z); + Hu3DModelAttrSet(object->model[i + 11], HU3D_MOTATTR_SHAPE_LOOP); + Hu3DMotionShapeTimeSet(object->model[i + 11], (0.25 * i) * Hu3DMotionShapeMaxTimeGet(object->model[i + 11])); } modelP = &Hu3DData[object->model[0]]; workUnk4 = &work2->unk4[0]; - for(i=0; i<4; i++, workUnk4++) { + for (i = 0; i < 4; i++, workUnk4++) { workUnk4->unkC = lbl_1_data_20C[i].unk0; workUnk4->unk10 = lbl_1_data_20C[i].unk4; workUnk4->unk14 = lbl_1_data_20C[i].unk8; @@ -252,7 +247,7 @@ omObjData *fn_1_347C(void) memset(workUnk4->unk0, 0, workUnk4->unk4); DCFlushRange(workUnk4->unk0, workUnk4->unk4); } - for(i=0; i<64; i++, workUnk74++) { + for (i = 0; i < 64; i++, workUnk74++) { workUnk74->unk0.x = workUnk74->unk0.y = workUnk74->unk0.z = 0; workUnk74->unkC.x = 0; workUnk74->unkC.y = 0; @@ -271,21 +266,21 @@ void fn_1_3DDC(omObjData *object) Work347C *work = object->data; Work347C *work2 = work; s32 i; - if((work->unkA50 = work->unkA50+(0.007874016f*((s32)frand() & 0x7F)*3.0f)) > 360) { + if ((work->unkA50 = work->unkA50 + (0.007874016f * ((s32)frand() & 0x7F) * 3.0f)) > 360) { work->unkA50 -= 360; } - work->unkA44 = (25+work->unkA40)+(5.0*sind(work->unkA50)); + work->unkA44 = (25 + work->unkA40) + (5.0 * sind(work->unkA50)); Hu3DModelPosSet(object->model[10], 0, work->unkA44, 0); - for(i=0; i<4; i++) { - Hu3DModelPosSet(object->model[i+11], lbl_1_data_1D8[i].x, work->unkA44+lbl_1_data_1D8[i].y, lbl_1_data_1D8[i].z); + for (i = 0; i < 4; i++) { + Hu3DModelPosSet(object->model[i + 11], lbl_1_data_1D8[i].x, work->unkA44 + lbl_1_data_1D8[i].y, lbl_1_data_1D8[i].z); } work->unkA54 += 0.001f; work->unkA58 += 0.001f; work->unkA48++; work->unkA4C++; - if(work->unkA4C >= 60.0f && work->unkA4C <= 81.0f) { - float time = 1-((work->unkA4C-60.0f)/21.0f); - if(time < 0.0f) { + if (work->unkA4C >= 60.0f && work->unkA4C <= 81.0f) { + float time = 1 - ((work->unkA4C - 60.0f) / 21.0f); + if (time < 0.0f) { time = 0.0f; } fn_1_9CFC(time); @@ -309,147 +304,31 @@ void fn_1_4104(omObjData *object) GXColor lbl_1_data_26A = { 255, 255, 255, 32 }; GXColor lbl_1_data_26E = { 255, 255, 255, 10 }; GXColor lbl_1_data_272 = { 0, 126, 126, 255 }; -Vec lbl_1_data_278[4] = { - -1000, 50, 1000, - -1000, 50, -1000, - 1000, 50, -1000, - 1000, 50, 1000 -}; +Vec lbl_1_data_278[4] = { -1000, 50, 1000, -1000, 50, -1000, 1000, 50, -1000, 1000, 50, 1000 }; -Vec lbl_1_data_2A8[26] = { - -1500, 0, 1000, - -1400, 0, 1000, - 0, 0, 1000, - 1400, 0, 1000, - 1500, 0, 1000, - -1500, 0, -500, - -1400, 0, -500, - 0, 0, -500, - 1400, 0, -500, - 1500, 0, -500, - -1500, 0, -2000, - -1400, 0, -2000, - 0, 0, -2000, - 1400, 0, -2000, - 1500, 0, -2000, - -1500, 0, -5000, - -1400, 0, -5000, - 0, 0, -5000, - 1400, 0, -5000, - 1500, 0, -5000, - -2000, 0, -500, - -2500, 0, -2000, - -3000, 0, -5000, - 2000, 0, -500, - 2500, 0, -2000, - 3000, 0, -5000 -}; +Vec lbl_1_data_2A8[26] = { -1500, 0, 1000, -1400, 0, 1000, 0, 0, 1000, 1400, 0, 1000, 1500, 0, 1000, -1500, 0, -500, -1400, 0, -500, 0, 0, -500, 1400, + 0, -500, 1500, 0, -500, -1500, 0, -2000, -1400, 0, -2000, 0, 0, -2000, 1400, 0, -2000, 1500, 0, -2000, -1500, 0, -5000, -1400, 0, -5000, 0, 0, + -5000, 1400, 0, -5000, 1500, 0, -5000, -2000, 0, -500, -2500, 0, -2000, -3000, 0, -5000, 2000, 0, -500, 2500, 0, -2000, 3000, 0, -5000 }; -GXColor lbl_1_data_3E0[26] = { - { 96, 128, 255, 255 }, - { 128, 160, 255, 32 }, - { 128, 160, 255, 32 }, - { 128, 160, 255, 32 }, - { 96, 128, 255, 255 }, - { 24, 48, 255, 255 }, - { 96, 128, 255, 32 }, - { 128, 160, 255, 32 }, - { 96, 128, 255, 32 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 }, - { 96, 128, 255, 255 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 }, - { 8, 24, 143, 255 }, - { 8, 24, 143, 255 }, - { 8, 24, 143, 255 }, - { 8, 24, 143, 255 }, - { 8, 24, 143, 255 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 } -}; +GXColor lbl_1_data_3E0[26] = { { 96, 128, 255, 255 }, { 128, 160, 255, 32 }, { 128, 160, 255, 32 }, { 128, 160, 255, 32 }, { 96, 128, 255, 255 }, + { 24, 48, 255, 255 }, { 96, 128, 255, 32 }, { 128, 160, 255, 32 }, { 96, 128, 255, 32 }, { 24, 48, 255, 255 }, { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, { 96, 128, 255, 255 }, { 24, 48, 255, 255 }, { 24, 48, 255, 255 }, { 8, 24, 143, 255 }, { 8, 24, 143, 255 }, + { 8, 24, 143, 255 }, { 8, 24, 143, 255 }, { 8, 24, 143, 255 }, { 24, 48, 255, 255 }, { 24, 48, 255, 255 }, { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, { 24, 48, 255, 255 }, { 24, 48, 255, 255 } }; -float lbl_1_data_448[26][2] = { - 0, 1, - 0.033333335, 1, - 0.5, 1, - 0.96666664, 1, - 1, 1, - 0, 0.5, - 0.033333335, 0.5, - 0.5, 0.5, - 0.96666664, 0.5, - 1, 0.5, - 0, 0, - 0.033333335, 0, - 0.5, 0, - 0.96666664, 0, - 1, 0, - 0, 0, - 0.033333335, 0, - 0.5, 0, - 0.96666664, 0, - 1, 0, - -0.15, 0.5, - -0.33, 0, - -0.49, 0, - 1.15, 0.5, - 1.33, 0, - 1.49, 0 -}; +float lbl_1_data_448[26][2] + = { 0, 1, 0.033333335, 1, 0.5, 1, 0.96666664, 1, 1, 1, 0, 0.5, 0.033333335, 0.5, 0.5, 0.5, 0.96666664, 0.5, 1, 0.5, 0, 0, 0.033333335, 0, 0.5, 0, + 0.96666664, 0, 1, 0, 0, 0, 0.033333335, 0, 0.5, 0, 0.96666664, 0, 1, 0, -0.15, 0.5, -0.33, 0, -0.49, 0, 1.15, 0.5, 1.33, 0, 1.49, 0 }; -float lbl_1_data_518[26][2] = { - 0, 30, - 0.5, 30, - 7.5, 30, - 14.5, 30, - 15, 30, - 0, 15, - 0.5, 15, - 7.5, 15, - 14.5, 15, - 15, 15, - 0, 7.5, - 0.5, 7.5, - 7.5, 7.5, - 14.5, 7.5, - 15, 7.5, - 0, 0, - 0.5, 0, - 7.5, 0, - 14.5, 0, - 15, 0, - -2.25, 15, - -4.9500003, 7.5, - -7.3500004, 0, - 17.25, 15, - 19.95, 7.5, - 22.35, 0 -}; +float lbl_1_data_518[26][2] = { 0, 30, 0.5, 30, 7.5, 30, 14.5, 30, 15, 30, 0, 15, 0.5, 15, 7.5, 15, 14.5, 15, 15, 15, 0, 7.5, 0.5, 7.5, 7.5, 7.5, + 14.5, 7.5, 15, 7.5, 0, 0, 0.5, 0, 7.5, 0, 14.5, 0, 15, 0, -2.25, 15, -4.9500003, 7.5, -7.3500004, 0, 17.25, 15, 19.95, 7.5, 22.35, 0 }; -float lbl_1_data_5E8[2][3] = { - 0, 0, 0.5, - 0, 0.5, 0 -}; +float lbl_1_data_5E8[2][3] = { 0, 0, 0.5, 0, 0.5, 0 }; GXColor lbl_1_data_600 = { 80, 80, 80, 80 }; -Vec lbl_1_data_604[9] = { - -1500, 0, -5000, - 0, 0, -5000, - 1500, 0, -5000, - -1500, 0, -3000, - 0, 0, -3000, - 1500, 0, -3000, - -1500, 0, 1000, - 0, 0, 1000, - 1500, 0, 1000 -}; +Vec lbl_1_data_604[9] + = { -1500, 0, -5000, 0, 0, -5000, 1500, 0, -5000, -1500, 0, -3000, 0, 0, -3000, 1500, 0, -3000, -1500, 0, 1000, 0, 0, 1000, 1500, 0, 1000 }; GXColor lbl_1_data_670[9] = { { 255, 255, 255, 0 }, @@ -509,11 +388,11 @@ void fn_1_4180(ModelData *model, Mtx matrix) GXPosition2u16(0, 0); GXTexCoord2f32(work->unkA54, work->unkA58); GXPosition2u16(400, 0); - GXTexCoord2f32(work->unkA54+7, work->unkA58); + GXTexCoord2f32(work->unkA54 + 7, work->unkA58); GXPosition2u16(400, 400); - GXTexCoord2f32(work->unkA54+7, work->unkA58+7); + GXTexCoord2f32(work->unkA54 + 7, work->unkA58 + 7); GXPosition2u16(0, 400); - GXTexCoord2f32(work->unkA54, work->unkA58+7); + GXTexCoord2f32(work->unkA54, work->unkA58 + 7); GXEnd(); GXSetNumTexGens(1); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); @@ -532,22 +411,22 @@ void fn_1_4180(ModelData *model, Mtx matrix) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); workUnk74 = &work2->unk74[0]; - for(i=0; i<64; i++, workUnk74++) { + for (i = 0; i < 64; i++, workUnk74++) { float scale; float accel; - if(workUnk74->unk1E == 0) { + if (workUnk74->unk1E == 0) { continue; } - scale = 128*(workUnk74->unkC.x*(0.2f+cosd(workUnk74->unk1E*workUnk74->unk18*90.0f))); - accel = workUnk74->unk1E*workUnk74->unk18; - lbl_1_data_26A.a = workUnk74->unkC.z*sind((accel*accel)*90.0f)*255.0; + scale = 128 * (workUnk74->unkC.x * (0.2f + cosd(workUnk74->unk1E * workUnk74->unk18 * 90.0f))); + accel = workUnk74->unk1E * workUnk74->unk18; + lbl_1_data_26A.a = workUnk74->unkC.z * sind((accel * accel) * 90.0f) * 255.0; GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_26A); - MTXScale(modelview, 0.5f*scale, 0.5f*scale, 1.0f); + MTXScale(modelview, 0.5f * scale, 0.5f * scale, 1.0f); mtxRotCat(modelview, 0, 0, workUnk74->unkC.y); - mtxTransCat(modelview, 400*(workUnk74->unk0.x+1500)/3000, 400*(workUnk74->unk0.z - -2000)/3000, 0); + mtxTransCat(modelview, 400 * (workUnk74->unk0.x + 1500) / 3000, 400 * (workUnk74->unk0.z - -2000) / 3000, 0); GXLoadPosMtxImm(modelview, GX_PNMTX0); - GXCallDisplayList(work2->unkA14, work2->unkA18); - if(!omPauseChk()) { + GXCallDisplayListNative(work2->unkA14, work2->unkA18); + if (!omPauseChk()) { workUnk74->unk1E--; } } @@ -600,11 +479,11 @@ void fn_1_4B1C(ModelData *model, Mtx matrix) Mtx projCamera; s16 lightMask; s16 i; - + fn_1_6088(workUnk4, 0); GXLoadPosMtxImm(matrix, GX_PNMTX0); fov = cameraP->fov; - if(fov <= 0.0f) { + if (fov <= 0.0f) { fov = 45; } MTXLightPerspective(proj, fov, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); @@ -630,9 +509,9 @@ 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++) { + for (i = 0; i < 4; i++) { GXPosition1x16(i); } GXEnd(); @@ -641,7 +520,7 @@ void fn_1_4B1C(ModelData *model, Mtx matrix) workUnk4 = &work2->unk4[2]; fn_1_6594(0, workUnk4, 0, 0, 0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { GXPosition1x16(i); } GXEnd(); @@ -668,7 +547,7 @@ void fn_1_4E64(ModelData *model, Mtx matrix) MTXInvXpose(matrix, invXPose); GXLoadNrmMtxImm(invXPose, GX_PNMTX0); fov = cameraP->fov; - if(fov <= 0.0f) { + if (fov <= 0.0f) { fov = 45; } MTXLightPerspective(proj, fov, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); @@ -710,53 +589,55 @@ void fn_1_4E64(ModelData *model, Mtx matrix) GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_TRUE, GX_FALSE, GX_ITM_1); GXSetIndTexMtx(GX_ITM_1, lbl_1_data_5E8, -1); - for(i=0; i<26; i++) { - work2->unk944[i][0] -= 0.007874016f*((s32)frand() & 0x7F)*0.005f; - work2->unk944[i][1] += 0.007874016f*((s32)frand() & 0x7F)*0.005f; - work2->unk874[i][0] = work2->unk944[i][0]+lbl_1_data_518[i][0]; - work2->unk874[i][1] = work2->unk944[i][1]+lbl_1_data_518[i][1]; + for (i = 0; i < 26; i++) { + work2->unk944[i][0] -= 0.007874016f * ((s32)frand() & 0x7F) * 0.005f; + work2->unk944[i][1] += 0.007874016f * ((s32)frand() & 0x7F) * 0.005f; + work2->unk874[i][0] = work2->unk944[i][0] + lbl_1_data_518[i][0]; + work2->unk874[i][1] = work2->unk944[i][1] + lbl_1_data_518[i][1]; } DCFlushRange(&work2->unk874[0][0], sizeof(work2->unk874)); 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_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++) { + for (i = 0; i < 12; i++) { s16 index; - if(i == 4) { + if (i == 4) { index = 12; - } else if(i == 9) { + } + else if (i == 9) { index = 13; - } else { + } + else { index = i; } - GXPosition1x16(index+0); - GXColor1x16(index+0); - GXTexCoord1x16(index+0); - GXTexCoord1x16(index+0); - GXPosition1x16(index+5); - GXColor1x16(index+5); - GXTexCoord1x16(index+5); - GXTexCoord1x16(index+5); - GXPosition1x16(index+6); - GXColor1x16(index+6); - GXTexCoord1x16(index+6); - GXTexCoord1x16(index+6); - GXPosition1x16(index+1); - GXColor1x16(index+1); - GXTexCoord1x16(index+1); - GXTexCoord1x16(index+1); + GXPosition1x16(index + 0); + GXColor1x16(index + 0); + GXTexCoord1x16(index + 0); + GXTexCoord1x16(index + 0); + GXPosition1x16(index + 5); + GXColor1x16(index + 5); + GXTexCoord1x16(index + 5); + GXTexCoord1x16(index + 5); + GXPosition1x16(index + 6); + GXColor1x16(index + 6); + GXTexCoord1x16(index + 6); + GXTexCoord1x16(index + 6); + GXPosition1x16(index + 1); + GXColor1x16(index + 1); + GXTexCoord1x16(index + 1); + GXTexCoord1x16(index + 1); } GXEnd(); GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 8); @@ -853,18 +734,18 @@ void fn_1_59A0(ModelData *model, Mtx matrix) HuSprTexLoad(work->unkA1C[1], 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); GXSetNumTexGens(2); MTXRotDeg(final, 'X', 90.0f); - x = 0.004f*scale; + x = 0.004f * scale; MTXScale(temp, x, -0.004f, 0.004f); MTXConcat(final, temp, final); - MTXTrans(temp, (work->unkA48%1024)/(512.0f*x), 0, 1.2499999f*(work->unkA48%400)); + MTXTrans(temp, (work->unkA48 % 1024) / (512.0f * x), 0, 1.2499999f * (work->unkA48 % 400)); MTXConcat(final, temp, final); GXLoadTexMtxImm(final, GX_TEXMTX0, GX_MTX2x4); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX0); MTXRotDeg(final, 'X', 90.0f); - x = 0.004f*scale; + x = 0.004f * scale; MTXScale(temp, x, -0.004f, 0.004f); MTXConcat(final, temp, final); - MTXTrans(temp, (work->unkA48%300)/(150.0f*x), 0, 0); + MTXTrans(temp, (work->unkA48 % 300) / (150.0f * x), 0, 0); MTXConcat(final, temp, final); GXLoadTexMtxImm(final, GX_TEXMTX1, GX_MTX2x4); GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX1); @@ -886,8 +767,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); @@ -924,13 +805,12 @@ void fn_1_6088(Work347CUnk4 *arg0, s32 arg1) GXSetTexCopyDst(arg0->unk14, arg0->unk18, GX_TF_RGB565, arg0->unk8); GXSetCopyClear(lbl_1_data_69C, GX_MAX_Z24); GXCopyTex(arg0->unk0, arg1); - } void fn_1_6144(Work347CUnk4 *fbWork, float x1, float y1, float scale) { - float x2 = x1+(fbWork->unk14*scale); - float y2 = y1+(fbWork->unk18*scale); + float x2 = x1 + (fbWork->unk14 * scale); + float y2 = y1 + (fbWork->unk18 * scale); Mtx44 proj; Mtx modelview; GXTexObj texObj; @@ -968,18 +848,25 @@ void fn_1_6144(Work347CUnk4 *fbWork, float x1, float y1, float scale) GXPosition3f32(x1, y2, 0); GXTexCoord2f32(0, 1); GXEnd(); +#ifdef TARGET_PC + GXDestroyTexObj(&texObj); +#endif } void fn_1_6594(s16 arg0, Work347CUnk4 *arg1, GXTexWrapMode arg2, s32 arg3, BOOL arg4) { GXTexObj texObj; GXInitTexObj(&texObj, arg1->unk0, arg1->unk14, arg1->unk18, GX_TF_RGB565, arg2, arg2, FALSE); - if(arg4) { + if (arg4) { GXInitTexObjLOD(&texObj, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); - } else { + } + else { GXInitTexObjLOD(&texObj, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); } GXLoadTexObj(&texObj, arg0); +#ifdef TARGET_PC + GXDestroyTexObj(&texObj); +#endif } s32 fn_1_6698(Vec *arg0, float arg1, float arg2, s32 arg3) @@ -988,47 +875,51 @@ s32 fn_1_6698(Vec *arg0, float arg1, float arg2, s32 arg3) Work347C *work2; Work347CUnk74 *workUnk74; s32 i; - if(!lbl_1_bss_6C) { + if (!lbl_1_bss_6C) { return -1; } work = lbl_1_bss_6C->data; work2 = work; workUnk74 = &work->unk74[0]; - for(i=0; i<64; i++, workUnk74++) { - if(workUnk74->unk1E == 0) { + for (i = 0; i < 64; i++, workUnk74++) { + if (workUnk74->unk1E == 0) { break; } } - if(i >= 64) { + if (i >= 64) { return -1; } workUnk74->unk0 = *arg0; - if(arg1 < 0.0f) { + if (arg1 < 0.0f) { workUnk74->unkC.x = 1; - } else { + } + else { workUnk74->unkC.x = arg1; } - if(arg2 < 0.0f) { + if (arg2 < 0.0f) { workUnk74->unkC.z = 1; - } else { + } + else { workUnk74->unkC.z = arg2; } - if(arg3 < 0) { + if (arg3 < 0) { workUnk74->unk1C = 60; - } else { + } + else { workUnk74->unk1C = arg3; } - workUnk74->unkC.y = (s32)frand()%360; + workUnk74->unkC.y = (s32)frand() % 360; workUnk74->unk1E = workUnk74->unk1C; - workUnk74->unk18 = 1.0f/workUnk74->unk1C; + workUnk74->unk18 = 1.0f / workUnk74->unk1C; return i; } float fn_1_687C(void) { - if(!lbl_1_bss_6C) { + if (!lbl_1_bss_6C) { return 0; - } else { + } + else { Work347C *work = lbl_1_bss_6C->data; return work->unkA44; } @@ -1036,9 +927,10 @@ float fn_1_687C(void) float fn_1_68C8(void) { - if(!lbl_1_bss_6C) { + if (!lbl_1_bss_6C) { return 0; - } else { + } + else { Work347C *work = lbl_1_bss_6C->data; return work->unkA40; } @@ -1062,10 +954,10 @@ void fn_1_6914(omObjData *object) Work6914 *work; s32 i; AnimData *anim; - work = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work6914)*8, MEMORY_DEFAULT_NUM); - memset(work, 0, sizeof(Work6914)*8); + work = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work6914) * 8, MEMORY_DEFAULT_NUM); + memset(work, 0, sizeof(Work6914) * 8); anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 26), MEMORY_DEFAULT_NUM)); - for(i=0; i<8; i++, work++) { + for (i = 0; i < 8; i++, work++) { work->unk10 = anim; work->unk0 = i; work->unk4 = Hu3DParticleCreate(work->unk10, 32); @@ -1086,21 +978,22 @@ void fn_1_6A6C(omObjData *object) { Work6914 *work = object->data; s32 i; - for(i=0; i<8; i++, work++) { - if(work->unk8 == 0) { + for (i = 0; i < 8; i++, work++) { + if (work->unk8 == 0) { continue; } - if(work->unkC > 1) { + if (work->unkC > 1) { ModelData *modelP = &Hu3DData[work->unk4]; ParticleData *particleP = modelP->unk_120; HsfanimStruct01 *data = particleP->unk_48; s32 j; - for(j=0; junk_30; j++, data++) { - if(++data->unk00 > data->unk02) { - s32 alpha = data->unk40.a-1; - if(alpha < 0) { + for (j = 0; j < particleP->unk_30; j++, data++) { + if (++data->unk00 > data->unk02) { + s32 alpha = data->unk40.a - 1; + if (alpha < 0) { data->unk2C = 0; - } else { + } + else { data->unk40.a = alpha; } } @@ -1111,10 +1004,11 @@ void fn_1_6A6C(omObjData *object) data->unk08.y -= 0.3103333379576603; } } - if(++work->unkC > 90.0f) { + if (++work->unkC > 90.0f) { Hu3DModelAttrSet(work->unk4, HU3D_ATTR_DISPOFF); work->unk8 = 0; - } else { + } + else { Hu3DModelPosSet(work->unk4, work->unk14.x, work->unk14.y, work->unk14.z); Hu3DModelRotSet(work->unk4, work->unk20.x, work->unk20.y, work->unk20.z); Hu3DModelScaleSet(work->unk4, work->unk2C.x, work->unk2C.y, work->unk2C.z); @@ -1137,13 +1031,13 @@ s32 fn_1_6CB0(Vec *arg0, float arg1) ModelData *temp_r27; ParticleData *temp_r28; HsfanimStruct01 *temp_r30; - - for(i=0; i<8; i++, work++) { - if(work->unk8 == 0) { + + for (i = 0; i < 8; i++, work++) { + if (work->unk8 == 0) { break; } } - if(i >= 8) { + if (i >= 8) { return -1; } Hu3DModelAttrReset(work->unk4, HU3D_ATTR_DISPOFF); @@ -1153,29 +1047,29 @@ s32 fn_1_6CB0(Vec *arg0, float arg1) temp_r28 = temp_r27->unk_120; temp_r28->unk_2C = 1; temp_r30 = temp_r28->unk_48; - for(i=0; iunk_30; i++, temp_r30++) { - float temp_f30 = ((s32)frand()%20)+90; - float temp_f29 = (s32)frand()%360; + for (i = 0; i < temp_r28->unk_30; i++, temp_r30++) { + float temp_f30 = ((s32)frand() % 20) + 90; + float temp_f29 = (s32)frand() % 360; float temp_f26 = sind(temp_f30); float temp_f28 = cosd(temp_f30); - float temp_f25 = 0.75f+0.15f*(0.007874016f*((s32)frand() & 0x7F)); + float temp_f25 = 0.75f + 0.15f * (0.007874016f * ((s32)frand() & 0x7F)); float temp_f31 = 0.15f; - temp_r30->unk08.x = temp_f31*(0.65f*(50.0*(temp_f28*sind(temp_f29)))); - temp_r30->unk08.z = temp_f31*(0.65f*(50.0*(temp_f28*cosd(temp_f29)))); - temp_r30->unk08.y = temp_f31*(50*temp_f26*temp_f25); + temp_r30->unk08.x = temp_f31 * (0.65f * (50.0 * (temp_f28 * sind(temp_f29)))); + temp_r30->unk08.z = temp_f31 * (0.65f * (50.0 * (temp_f28 * cosd(temp_f29)))); + temp_r30->unk08.y = temp_f31 * (50 * temp_f26 * temp_f25); temp_r30->unk00 = 0; - temp_r30->unk02 = ((s32)frand()%16)+45; - temp_r30->unk30 = (s32)frand()%360; + temp_r30->unk02 = ((s32)frand() % 16) + 45; + temp_r30->unk30 = (s32)frand() % 360; temp_r30->unk2C = 145; - temp_r30->unk34.x = 0.05f*(((s32)frand() & 0x7F)-64); - temp_r30->unk34.y = 0.65f*(((s32)frand() & 0x7F)-64); - temp_r30->unk34.z = 0.05f*(((s32)frand() & 0x7F)-64); - temp_r30->unk40.r = ((s32)frand()%64)+192; - temp_r30->unk40.g = ((s32)frand()%64)+192; - temp_r30->unk40.b = ((s32)frand()%64)+192; + temp_r30->unk34.x = 0.05f * (((s32)frand() & 0x7F) - 64); + temp_r30->unk34.y = 0.65f * (((s32)frand() & 0x7F) - 64); + temp_r30->unk34.z = 0.05f * (((s32)frand() & 0x7F) - 64); + temp_r30->unk40.r = ((s32)frand() % 64) + 192; + temp_r30->unk40.g = ((s32)frand() % 64) + 192; + temp_r30->unk40.b = ((s32)frand() % 64) + 192; temp_r30->unk40.a = 64; } - if(arg1 < 0.0f) { + if (arg1 < 0.0f) { arg1 = 1.0f; } work->unk14 = *arg0; @@ -1192,16 +1086,16 @@ void fn_1_7368(omObjData *object); void fn_1_7280(omObjData *object) { s32 i; - for(i=0; imdlcnt; i++) { - if(i == 0) { + for (i = 0; i < object->mdlcnt; i++) { + if (i == 0) { object->model[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 9)); - } else { + } + else { object->model[i] = Hu3DModelLink(object->model[0]); } Hu3DModelCameraSet(object->model[i], HU3D_CAM0); Hu3DModelLayerSet(object->model[i], 6); Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); - } object->stat |= 0x100; object->func = fn_1_7368; @@ -1210,31 +1104,28 @@ void fn_1_7280(omObjData *object) void fn_1_7368(omObjData *object) { s32 i; - for(i=0; imdlcnt; i++) { + for (i = 0; i < object->mdlcnt; i++) { ModelData *modelP = &Hu3DData[object->model[i]]; - if(!(modelP->attr & HU3D_ATTR_DISPOFF)) { - if(Hu3DMotionTimeGet(object->model[i]) >= Hu3DMotionMaxTimeGet(object->model[i])) { - Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); - } + if (!(modelP->attr & HU3D_ATTR_DISPOFF)) { + if (Hu3DMotionTimeGet(object->model[i]) >= Hu3DMotionMaxTimeGet(object->model[i])) { + Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); + } } } } -void fn_1_7430(omObjData *object) -{ - -} +void fn_1_7430(omObjData *object) { } s32 fn_1_7434(Vec *pos, float scale) { s32 i; - for(i=0; imdlcnt; i++) { + for (i = 0; i < lbl_1_bss_64->mdlcnt; i++) { ModelData *modelP = &Hu3DData[lbl_1_bss_64->model[i]]; - if(modelP->attr & HU3D_ATTR_DISPOFF) { + if (modelP->attr & HU3D_ATTR_DISPOFF) { break; } } - if(i >= lbl_1_bss_64->mdlcnt) { + if (i >= lbl_1_bss_64->mdlcnt) { return -1; } Hu3DMotionTimeSet(lbl_1_bss_64->model[i], 0); @@ -1254,7 +1145,7 @@ void fn_1_75C0(omObjData *object) s32 i; ModelData *modelP; AnimData *anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 26), MEMORY_DEFAULT_NUM)); - + object->data = anim; object->model[0] = Hu3DParticleCreate(anim, 64); Hu3DModelCameraSet(object->model[0], HU3D_CAM0); @@ -1264,7 +1155,7 @@ void fn_1_75C0(omObjData *object) temp_r30 = modelP->unk_120; temp_r29 = temp_r30->unk_48; temp_r30->unk_2C = 1; - for(i=0; iunk_30; i++, temp_r29++) { + for (i = 0; i < temp_r30->unk_30; i++, temp_r29++) { temp_r29->unk2C = 0; } object->func = fn_1_76B0; @@ -1276,20 +1167,19 @@ void fn_1_76B0(omObjData *object) ParticleData *temp_r29 = modelP->unk_120; HsfanimStruct01 *temp_r30 = temp_r29->unk_48; s32 i; - for(i=0; iunk_30; i++, temp_r30++) { - if(temp_r30->unk2C <= 0.0f) { + for (i = 0; i < temp_r29->unk_30; i++, temp_r30++) { + if (temp_r30->unk2C <= 0.0f) { continue; } - if(++temp_r30->unk00 > 360) { + if (++temp_r30->unk00 > 360) { temp_r30->unk00 -= 360; } - temp_r30->unk34.x += temp_r30->unk08.x*sind(2.0f*temp_r30->unk00); + temp_r30->unk34.x += temp_r30->unk08.x * sind(2.0f * temp_r30->unk00); temp_r30->unk34.y += temp_r30->unk08.y; - if(temp_r30->unk34.y >= 0.0f) { - fn_1_6698(&temp_r30->unk34, 0.00625f*temp_r30->unk2C, 1, 15); + if (temp_r30->unk34.y >= 0.0f) { + fn_1_6698(&temp_r30->unk34, 0.00625f * temp_r30->unk2C, 1, 15); temp_r30->unk2C = 0; } - } } @@ -1307,27 +1197,26 @@ s32 fn_1_79C8(Vec *pos, float scale) ModelData *modelP = &Hu3DData[lbl_1_bss_60->model[0]]; ParticleData *temp_r30 = modelP->unk_120; HsfanimStruct01 *temp_r31 = temp_r30->unk_48; - for(i=0; iunk_30; i++, temp_r31++) { - if(temp_r31->unk2C <= 0.0f) { + for (i = 0; i < temp_r30->unk_30; i++, temp_r31++) { + if (temp_r31->unk2C <= 0.0f) { break; } } - if(i >= temp_r30->unk_30) { + if (i >= temp_r30->unk_30) { return -1; } - if(scale <= 0.0f) { + if (scale <= 0.0f) { scale = 1.0f; } temp_r31->unk34 = *pos; - temp_r31->unk08.x = (1.5f+(0.2f*(0.007874016f*((s32)frand() & 0x7F))))*0.5f; - temp_r31->unk08.z = (1.5f+(0.2f*(0.007874016f*((s32)frand() & 0x7F)))); - temp_r31->unk08.y = (1.5f+(0.2f*(0.007874016f*((s32)frand() & 0x7F))))*2.0f; - temp_r31->unk00 = (s32)frand()%360; - temp_r31->unk2C = 20*scale; + temp_r31->unk08.x = (1.5f + (0.2f * (0.007874016f * ((s32)frand() & 0x7F)))) * 0.5f; + temp_r31->unk08.z = (1.5f + (0.2f * (0.007874016f * ((s32)frand() & 0x7F)))); + temp_r31->unk08.y = (1.5f + (0.2f * (0.007874016f * ((s32)frand() & 0x7F)))) * 2.0f; + temp_r31->unk00 = (s32)frand() % 360; + temp_r31->unk2C = 20 * scale; return i; } - typedef struct work7C48 { s32 unk0; s32 unk4; @@ -1342,24 +1231,25 @@ void fn_1_8050(omObjData *object); void fn_1_7C48(omObjData *object) { - Work7C48 *workBase = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work7C48)*8, MEMORY_DEFAULT_NUM); + Work7C48 *workBase = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work7C48) * 8, MEMORY_DEFAULT_NUM); Work7C48 *workP = workBase; s32 i; - memset(workP, 0, 8*sizeof(Work7C48)); - for(i=0; i<8; i++, workP++) { - switch(i) { + memset(workP, 0, 8 * sizeof(Work7C48)); + for (i = 0; i < 8; i++, workP++) { + switch (i) { case 0: workP->unk0 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 10)); break; - + case 1: workP->unk0 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 10)); break; - + default: - if(i & 0x1) { + if (i & 0x1) { workP->unk0 = Hu3DModelLink(workBase[0].unk0); - } else { + } + else { workP->unk0 = Hu3DModelLink(workBase[1].unk0); } break; @@ -1371,11 +1261,11 @@ void fn_1_7C48(omObjData *object) workP->unk8 = 0; workP->unkC = 2; workP->unk10 = (s32)frand() % 360; - workP->unk14.x = 1500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); - workP->unk14.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); - workP->unk14.y = -250+(100*(0.3f*i)); - workP->unk20.x = 1500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); - workP->unk20.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk14.x = 1500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk14.z = 500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk14.y = -250 + (100 * (0.3f * i)); + workP->unk20.x = 1500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk20.z = 500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); workP->unk20.y = workP->unk14.y; Hu3DModelPosSet(workP->unk0, workP->unk14.x, workP->unk14.y, workP->unk14.z); Hu3DModelRotSet(workP->unk0, 0, workP->unk10, 0); @@ -1389,60 +1279,61 @@ void fn_1_8050(omObjData *object) { Work7C48 *workP = object->data; s32 i; - for(i=0; i<8; i++, workP++) { + for (i = 0; i < 8; i++, workP++) { float dx; float dz; float vel; float angle; - if(workP->unk4 == 0) { - vel = 1+(0.5*sind((workP->unk8*5)%180)); - } else { + if (workP->unk4 == 0) { + vel = 1 + (0.5 * sind((workP->unk8 * 5) % 180)); + } + else { vel = 3; } - workP->unk14.x += vel*(workP->unkC*sind(workP->unk10)); - workP->unk14.z += vel*(workP->unkC*cosd(workP->unk10)); - dx = workP->unk20.x-workP->unk14.x; - dz = workP->unk20.z-workP->unk14.z; + workP->unk14.x += vel * (workP->unkC * sind(workP->unk10)); + workP->unk14.z += vel * (workP->unkC * cosd(workP->unk10)); + dx = workP->unk20.x - workP->unk14.x; + dz = workP->unk20.z - workP->unk14.z; angle = atan2d(dx, dz); workP->unk10 = fn_1_9F18(angle, workP->unk10, 3.5f); - if((dx*dx)+(dz*dz) < 10000.0f) { - if(workP->unk4 == 0) { - workP->unk20.x = 2000*((0.007874016f*((s32)frand() & 0x7F))-0.5f); - workP->unk20.z = 700*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + if ((dx * dx) + (dz * dz) < 10000.0f) { + if (workP->unk4 == 0) { + workP->unk20.x = 2000 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk20.z = 700 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); workP->unk20.y = workP->unk14.y; - } else { - if(workP->unk14.x < 0.0f) { + } + else { + if (workP->unk14.x < 0.0f) { workP->unk20.x = -2500; - } else { + } + else { workP->unk20.x = 2500; } - workP->unk20.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.z = 500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); workP->unk20.y = workP->unk14.y; } } Hu3DModelPosSet(workP->unk0, workP->unk14.x, workP->unk14.y, workP->unk14.z); Hu3DModelRotSet(workP->unk0, 0, workP->unk10, 0); - workP->unk8 += frand()&0x3; + workP->unk8 += frand() & 0x3; } } -void fn_1_8474(omObjData *object) -{ - -} +void fn_1_8474(omObjData *object) { } void fn_1_8478(void) { Work7C48 *workP = lbl_1_bss_5C->data; s32 i; - for(i=0; i<8; i++, workP++) { + for (i = 0; i < 8; i++, workP++) { workP->unk4 = 1; - if(workP->unk14.x < 0.0f) { + if (workP->unk14.x < 0.0f) { workP->unk20.x = -2500; - } else { + } + else { workP->unk20.x = 2500; } - workP->unk20.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.z = 500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); workP->unk20.y = workP->unk14.y; } } @@ -1468,10 +1359,10 @@ void fn_1_8578(omObjData *object, Work891C *workP) s32 num = workP[0].unk6; float ofsZ = -2000; s32 i; - for(i=0; iunk0, workP->unk8.x, workP->unk8.y, workP->unk8.z+ofsZ); + Hu3DModelPosSet(workP->unk0, workP->unk8.x, workP->unk8.y, workP->unk8.z + ofsZ); modelMtx = &Hu3DData[workP->unk0].unk_F0; MTXRotDeg(*modelMtx, 'Y', workP->unk28); MTXRotDeg(rotZ, 'Z', workP->unk38); @@ -1487,20 +1378,19 @@ void fn_1_867C(omObjData *object) Work891C *workP = object->data; s32 num = workP[0].unk6; s32 i; - for(i=0; iunk14, &workP->unk8, &diff); workP->unk2C = atan2d(diff.x, diff.z); - workP->unk28 = fn_1_8D90(workP->unk28, workP->unk2C+workP->unk3C, 0.08f); - workP->unk24 += 0.05f*(600.0f-workP->unk24); - workP->unk20 += 0.2f*(workP->unk24-workP->unk20); - workP->unk8.x += (workP->unk20*0.016666668f)*sind(workP->unk28); - workP->unk8.z += (workP->unk20*0.016666668f)*cosd(workP->unk28); - workP->unk30 += workP->unk20*0.016666668f; + workP->unk28 = fn_1_8D90(workP->unk28, workP->unk2C + workP->unk3C, 0.08f); + workP->unk24 += 0.05f * (600.0f - workP->unk24); + workP->unk20 += 0.2f * (workP->unk24 - workP->unk20); + workP->unk8.x += (workP->unk20 * 0.016666668f) * sind(workP->unk28); + workP->unk8.z += (workP->unk20 * 0.016666668f) * cosd(workP->unk28); + workP->unk30 += workP->unk20 * 0.016666668f; } fn_1_8578(object, object->data); - } void fn_1_891C(omObjData *object) @@ -1513,31 +1403,31 @@ void fn_1_891C(omObjData *object) float angle; float ofsZ; s32 i; - object->data = workBase = HuMemDirectMallocNum(HEAP_SYSTEM, num*sizeof(Work891C), MEMORY_DEFAULT_NUM); - memset(workBase, 0, num*sizeof(Work891C)); + object->data = workBase = HuMemDirectMallocNum(HEAP_SYSTEM, num * sizeof(Work891C), MEMORY_DEFAULT_NUM); + memset(workBase, 0, num * sizeof(Work891C)); modelId = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 8)); ofsZ = 1500; work = workBase; - for(i=0; iunk0 = Hu3DModelLink(modelId); Hu3DModelLayerSet(work->unk0, 6); Hu3DModelCameraSet(work->unk0, 1); Hu3DModelScaleSet(work->unk0, 7, 7, 7); - work->unk14.x = ((s32)frandmod(1000)*4.0f)-2000; - work->unk14.z = ((s32)frandmod(1000))-500.0f; - work->unk14.y = ((s32)frandmod(1000)*0.8f)+300; + work->unk14.x = ((s32)frandmod(1000) * 4.0f) - 2000; + work->unk14.z = ((s32)frandmod(1000)) - 500.0f; + work->unk14.y = ((s32)frandmod(1000) * 0.8f) + 300; angle = (s32)frandmod(360); - radius = ((s32)frandmod(250))+200.0f; - work->unk8.x = radius*sind(angle); + radius = ((s32)frandmod(250)) + 200.0f; + work->unk8.x = radius * sind(angle); work->unk8.y = 0; - work->unk8.z = radius*cosd(angle); + work->unk8.z = radius * cosd(angle); VECAdd(&work->unk14, &work->unk8, &work->unk8); - work->unk38 = 60-((6.0f/55.0f)*radius); + work->unk38 = 60 - ((6.0f / 55.0f) * radius); work->unk28 = (s32)frandmod(360); - work->unk3C = ((s32)frandmod(1000) < 500) ? (-70.0f+((s32)frandmod(50)*0.1f)) : (70.0f-((s32)frandmod(50)*0.1f)); - if(work->unk3C < 0.0f) { + work->unk3C = ((s32)frandmod(1000) < 500) ? (-70.0f + ((s32)frandmod(50) * 0.1f)) : (70.0f - ((s32)frandmod(50) * 0.1f)); + if (work->unk3C < 0.0f) { work->unk38 = -work->unk38; } work->unk30 = 1; @@ -1551,15 +1441,15 @@ void fn_1_891C(omObjData *object) float fn_1_8D90(float start, float end, float weight) { - float angle = fmodf(end-start, 360); - if(angle < 0.0f) { + float angle = fmodf(end - start, 360); + if (angle < 0.0f) { angle += 360.0f; } - if(angle > 180.0f) { + if (angle > 180.0f) { angle -= 360.0f; } - angle = fmodf(start+(weight*angle), 360); - if(angle < 0.0f) { + angle = fmodf(start + (weight * angle), 360); + if (angle < 0.0f) { angle += 360.0f; } return angle; @@ -1587,8 +1477,8 @@ void fn_1_8EAC(void) particle = modelP->unk_120; particle->unk_2C = 1; particle->unk_54 = fn_1_91B8; - newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); - memset(newWork, 0, 4*sizeof(s16)); + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16) * 4, modelP->unk_48); + memset(newWork, 0, 4 * sizeof(s16)); newWork[1] = 0; workP->unk10[1] = modelId = Hu3DParticleCreate(workP->unk0[3], 10); Hu3DModelLayerSet(modelId, 6); @@ -1596,8 +1486,8 @@ void fn_1_8EAC(void) particle = modelP->unk_120; particle->unk_2C = 1; particle->unk_54 = fn_1_91B8; - newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); - memset(newWork, 0, 4*sizeof(s16)); + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16) * 4, modelP->unk_48); + memset(newWork, 0, 4 * sizeof(s16)); newWork[1] = 1; workP->unk10[2] = modelId = Hu3DParticleCreate(workP->unk0[2], 4); Hu3DModelLayerSet(modelId, 6); @@ -1605,8 +1495,8 @@ void fn_1_8EAC(void) particle = modelP->unk_120; particle->unk_2C = 1; particle->unk_54 = fn_1_91B8; - newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); - memset(newWork, 0, 4*sizeof(s16)); + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16) * 4, modelP->unk_48); + memset(newWork, 0, 4 * sizeof(s16)); newWork[1] = 2; workP->unk10[3] = modelId = Hu3DParticleCreate(workP->unk0[1], 6); Hu3DModelLayerSet(modelId, 6); @@ -1614,8 +1504,8 @@ void fn_1_8EAC(void) particle = modelP->unk_120; particle->unk_2C = 1; particle->unk_54 = fn_1_91B8; - newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); - memset(newWork, 0, 4*sizeof(s16)); + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16) * 4, modelP->unk_48); + memset(newWork, 0, 4 * sizeof(s16)); newWork[1] = 3; } @@ -1628,19 +1518,9 @@ void fn_1_9168(void) HuSprAnimKill(workP->unk0[3]); } -float lbl_1_data_6A0[4] = { - 1000, - 200, - 600, - 1200 -}; +float lbl_1_data_6A0[4] = { 1000, 200, 600, 1200 }; -float lbl_1_data_6B0[4] = { - 1, - 0.6, - 0.3, - 0.425 -}; +float lbl_1_data_6B0[4] = { 1, 0.6, 0.3, 0.425 }; void fn_1_91B8(ModelData *model, ParticleData *particle, Mtx matrix) { @@ -1661,34 +1541,37 @@ void fn_1_91B8(ModelData *model, ParticleData *particle, Mtx matrix) float temp_f29; float temp_f23; s32 i; - switch(newWorkP[2]) { + switch (newWorkP[2]) { case 0: temp_r31 = particle->unk_48; - if(newWorkP[1]) { + if (newWorkP[1]) { sp18.x = 2000; sp18.y = -300; sp18.z = 500; - temp_f29 = 1/VECMagPoint(sp18.x, sp18.y, sp18.z); + temp_f29 = 1 / VECMagPoint(sp18.x, sp18.y, sp18.z); sp18.x *= temp_f29; sp18.y *= temp_f29; sp18.z *= temp_f29; - temp_f23 = 3200.0f/particle->unk_30; - for(i=0; iunk_30; i++, temp_r31++) { - temp_f26 = 500.0+((temp_f23*i)+((0.25f*temp_f23)*((float)((s32)frand() & 0xFFFF)*0.0000152587890625))); - temp_f25 = temp_f26/3200; + temp_f23 = 3200.0f / particle->unk_30; + for (i = 0; i < particle->unk_30; i++, temp_r31++) { + temp_f26 = 500.0 + ((temp_f23 * i) + ((0.25f * temp_f23) * ((float)((s32)frand() & 0xFFFF) * 0.0000152587890625))); + temp_f25 = temp_f26 / 3200; temp_r31->unk14.x = temp_f26; - temp_r31->unk34.x = 1000+(temp_f26*sp18.x); - temp_r31->unk34.y = 4800+(temp_f26*sp18.y); - temp_r31->unk34.z = -3500+(temp_f26*sp18.z); - temp_r31->unk2C = ((0.7f*(temp_f25*temp_f25))+0.3f)*(lbl_1_data_6A0[newWorkP[1]]*(0.7f+(0.3f*((float)((s32)frand() & 0xFFFF)*0.0000152587890625)))); - temp_r31->unk40.r = (s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*160.0)+32; - temp_r31->unk40.g = (s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*96.0)+32; - temp_r31->unk40.b = (s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*128.0)+32; - temp_r31->unk40.a = (255*lbl_1_data_6B0[newWorkP[1]]*(1.0-(0.4*temp_f25)))-(s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*16.0); + temp_r31->unk34.x = 1000 + (temp_f26 * sp18.x); + temp_r31->unk34.y = 4800 + (temp_f26 * sp18.y); + temp_r31->unk34.z = -3500 + (temp_f26 * sp18.z); + temp_r31->unk2C = ((0.7f * (temp_f25 * temp_f25)) + 0.3f) + * (lbl_1_data_6A0[newWorkP[1]] * (0.7f + (0.3f * ((float)((s32)frand() & 0xFFFF) * 0.0000152587890625)))); + temp_r31->unk40.r = (s32)(((float)((s32)frand() & 0xFFFF) * 0.0000152587890625) * 160.0) + 32; + temp_r31->unk40.g = (s32)(((float)((s32)frand() & 0xFFFF) * 0.0000152587890625) * 96.0) + 32; + temp_r31->unk40.b = (s32)(((float)((s32)frand() & 0xFFFF) * 0.0000152587890625) * 128.0) + 32; + temp_r31->unk40.a = (255 * lbl_1_data_6B0[newWorkP[1]] * (1.0 - (0.4 * temp_f25))) + - (s32)(((float)((s32)frand() & 0xFFFF) * 0.0000152587890625) * 16.0); temp_r31->unk14.z = temp_r31->unk40.a; } newWorkP[2]++; - } else { + } + else { temp_r31->unk34.x = 1000; temp_r31->unk34.y = 4800; temp_r31->unk34.z = -3500; @@ -1697,46 +1580,46 @@ void fn_1_91B8(ModelData *model, ParticleData *particle, Mtx matrix) break; case 1: - sp3C.x = sind(rot.y)*cosd(rot.x); + sp3C.x = sind(rot.y) * cosd(rot.x); sp3C.y = -sind(rot.x); - sp3C.z = cosd(rot.y)*cosd(rot.x); - sp30.x = 1000-(pos.x+(1.25f*(sp3C.x*zoom))); - sp30.y = 4800-(pos.y+(sp3C.y*zoom)); - sp30.z = -3500-(pos.z+(1.25f*(sp3C.z*zoom))); - temp_f29 = 1/VECMagPoint(sp30.x, sp30.y, sp30.z); + sp3C.z = cosd(rot.y) * cosd(rot.x); + sp30.x = 1000 - (pos.x + (1.25f * (sp3C.x * zoom))); + sp30.y = 4800 - (pos.y + (sp3C.y * zoom)); + sp30.z = -3500 - (pos.z + (1.25f * (sp3C.z * zoom))); + temp_f29 = 1 / VECMagPoint(sp30.x, sp30.y, sp30.z); sp30.x *= temp_f29; sp30.y *= temp_f29; sp30.z *= temp_f29; - temp_f29 = -((-sp30.x*-sp3C.x)+(-sp30.y*-sp3C.y)+(-sp30.z*-sp3C.z)); - sp24.x = -sp3C.x+((-2.0f*sp30.x)*temp_f29); - sp24.y = -sp3C.y+((-2.0f*sp30.y)*temp_f29); - sp24.z = -sp3C.z+((-2.0f*sp30.z)*temp_f29); + temp_f29 = -((-sp30.x * -sp3C.x) + (-sp30.y * -sp3C.y) + (-sp30.z * -sp3C.z)); + sp24.x = -sp3C.x + ((-2.0f * sp30.x) * temp_f29); + sp24.y = -sp3C.y + ((-2.0f * sp30.y) * temp_f29); + sp24.z = -sp3C.z + ((-2.0f * sp30.z) * temp_f29); temp_r31 = particle->unk_48; - for(i=0; iunk_30; i++, temp_r31++) { - temp_r31->unk34.x = 1000+(sp24.x*temp_r31->unk14.x); - temp_r31->unk34.y = 4800+(sp24.y*temp_r31->unk14.x); - temp_r31->unk34.z = -3500+(sp24.z*temp_r31->unk14.x); - temp_r31->unk40.a = temp_r31->unk14.z*workP->unk20.y; + for (i = 0; i < particle->unk_30; i++, temp_r31++) { + temp_r31->unk34.x = 1000 + (sp24.x * temp_r31->unk14.x); + temp_r31->unk34.y = 4800 + (sp24.y * temp_r31->unk14.x); + temp_r31->unk34.z = -3500 + (sp24.z * temp_r31->unk14.x); + temp_r31->unk40.a = temp_r31->unk14.z * workP->unk20.y; } break; } - DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); - + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); } void fn_1_9CFC(float arg0) { StructBss48 *workP = lbl_1_bss_48; workP->unk20.y = arg0; - if(workP->unk20.y > 1.0f) { + if (workP->unk20.y > 1.0f) { workP->unk20.y = 1.0f; } - if(workP->unk20.y <= 0.0f) { + if (workP->unk20.y <= 0.0f) { Hu3DModelAttrSet(workP->unk10[0], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(workP->unk10[1], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(workP->unk10[2], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(workP->unk10[3], HU3D_ATTR_DISPOFF); - } else { + } + else { Hu3DModelAttrReset(workP->unk10[0], HU3D_ATTR_DISPOFF); Hu3DModelAttrReset(workP->unk10[1], HU3D_ATTR_DISPOFF); Hu3DModelAttrReset(workP->unk10[2], HU3D_ATTR_DISPOFF); @@ -1747,20 +1630,23 @@ void fn_1_9CFC(float arg0) float fn_1_9E00(float start, float end) { float angleDiff; - if(start >= 360.0f) { + if (start >= 360.0f) { start -= 360.0f; - } else if(start < 0.0f) { + } + else if (start < 0.0f) { start += 360.0f; } - if(end >= 360.0f) { + if (end >= 360.0f) { end -= 360.0f; - } else if(end < 0.0f) { + } + else if (end < 0.0f) { end += 360.0f; } - angleDiff = start-end; - if(angleDiff <= -180.0f) { + angleDiff = start - end; + if (angleDiff <= -180.0f) { angleDiff += 360.0f; - } else if(angleDiff >= 180.0f) { + } + else if (angleDiff >= 180.0f) { angleDiff -= 360.0f; } return angleDiff; @@ -1770,38 +1656,44 @@ float fn_1_9F18(float start, float end, float max) { float angle; float diff; - - if(start >= 360.0) { + + if (start >= 360.0) { start -= 360.0; - } else if(start < 0.0) { + } + else if (start < 0.0) { start += 360.0; } - if(end >= 360.0) { + if (end >= 360.0) { end -= 360.0; - } else if(end < 0.0) { + } + else if (end < 0.0) { end += 360.0; } - diff = 360.0+(start-end); - if(fabs(diff) >= 360.0) { + diff = 360.0 + (start - end); + if (fabs(diff) >= 360.0) { diff = fmod(diff, 360.0); } - if(diff < 180.0) { - if(diff <= max) { + if (diff < 180.0) { + if (diff <= max) { angle = diff; - } else { + } + else { angle = max; } - } else if(360.0-diff <= max) { - angle = -(360.0-diff); - } else { + } + else if (360.0 - diff <= max) { + angle = -(360.0 - diff); + } + else { angle = -max; } angle += end; - if(angle >= 360.0) { + if (angle >= 360.0) { angle -= 360.0; - } else if(angle < 0.0) { + } + else if (angle < 0.0) { angle += 360.0; } - + return angle; } 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 8e13a6cf..94824810 100644 --- a/src/REL/m456Dll/stage.c +++ b/src/REL/m456Dll/stage.c @@ -1,23 +1,15 @@ #include "game/hsfanim.h" #include "game/hsfdraw.h" #include "game/hsfman.h" +#include "game/hsfmotion.h" #include "game/object.h" #include "game/objsub.h" - -#include "game/hsfmotion.h" -#include "game/pad.h" - -#include "game/audio.h" -#include "game/chrman.h" -#include "game/gamework_data.h" -#include "game/minigame_seq.h" #include "game/sprite.h" -#include "game/wipe.h" + #include "REL/m456Dll.h" #include "ext_math.h" -#include "math.h" #include "version.h" #if !VERSION_PAL @@ -434,7 +426,7 @@ void fn_1_3CB0(ModelData *model, Mtx matrix) mtxRotCat(modelview, 0, 0, workUnk74->unkC.y); mtxTransCat(modelview, 400 * (workUnk74->unk0.x + 1500) / 3000, 400 * (workUnk74->unk0.z - -2000) / 3000, 0); GXLoadPosMtxImm(modelview, GX_PNMTX0); - GXCallDisplayList(work2->unkA14, work2->unkA18); + GXCallDisplayListNative(work2->unkA14, work2->unkA18); if (!omPauseChk()) { workUnk74->unk1E--; } @@ -518,7 +510,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 +601,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 +768,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); @@ -857,6 +849,9 @@ void fn_1_5C74(Work2FACUnk4 *fbWork, float x1, float y1, float scale) GXPosition3f32(x1, y2, 0); GXTexCoord2f32(0, 1); GXEnd(); +#ifdef TARGET_PC + GXDestroyTexObj(&texObj); +#endif } void fn_1_60C4(s16 arg0, Work2FACUnk4 *arg1, GXTexWrapMode arg2, s32 arg3, BOOL arg4) @@ -870,6 +865,9 @@ void fn_1_60C4(s16 arg0, Work2FACUnk4 *arg1, GXTexWrapMode arg2, s32 arg3, BOOL GXInitTexObjLOD(&texObj, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); } GXLoadTexObj(&texObj, arg0); +#ifdef TARGET_PC + GXDestroyTexObj(&texObj); +#endif } s32 fn_1_61C8(Vec *arg0, float arg1, float arg2, s32 arg3) 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/m458Dll/main.c b/src/REL/m458Dll/main.c index 3b261cd0..9e037ee3 100644 --- a/src/REL/m458Dll/main.c +++ b/src/REL/m458Dll/main.c @@ -17,8 +17,6 @@ #include "game/wipe.h" #include "string.h" -#include "game/frand.h" - extern s32 rand8(void); typedef struct UnkCameraStruct { diff --git a/src/REL/m459dll/main.c b/src/REL/m459dll/main.c index c8c96218..b8764c6a 100644 --- a/src/REL/m459dll/main.c +++ b/src/REL/m459dll/main.c @@ -12,9 +12,7 @@ #include "game/printfunc.h" #include "game/wipe.h" -// #ifndef __MWERKS__ #include "game/frand.h" -// #endif typedef struct M459DllBss18Struct { /* 0x00 */ s32 unk_00; @@ -526,7 +524,6 @@ void fn_1_73C(void) void fn_1_E78(void) { - float sp8; float var_f31; M459DllBss61CStruct *var_r31; @@ -1154,10 +1151,6 @@ loop_1: void fn_1_338C(M459DllBssCCStruct *arg0, float arg8) { - float spC; - float var_f31; - float var_f30; - float var_f29; s16 var_r30; var_r30 = 0; diff --git a/src/REL/m460Dll/main.c b/src/REL/m460Dll/main.c index 52ca989b..2cc504ee 100644 --- a/src/REL/m460Dll/main.c +++ b/src/REL/m460Dll/main.c @@ -945,8 +945,6 @@ u32 fn_1_4370(void) void fn_1_4388(Vec *sp8, Vec *var_r31) { Vec sp10; - float var_f30; - float var_f29; VECSubtract(var_r31, sp8, &sp10); Center = *var_r31; diff --git a/src/REL/m460Dll/map.c b/src/REL/m460Dll/map.c index 15fa7f53..6e7f2622 100644 --- a/src/REL/m460Dll/map.c +++ b/src/REL/m460Dll/map.c @@ -10,7 +10,6 @@ #include "game/hsfmotion.h" #include "game/memory.h" #include "game/object.h" -#include "game/pad.h" #include "game/sprite.h" #include "string.h" @@ -398,6 +397,9 @@ void fn_1_7790(ModelData *model, Mtx mtx) GXPosition3f32(var_f31, var_f30, -var_f29); GXPosition3f32(var_f31, -var_f30, -var_f29); GXPosition3f32(-var_f31, -var_f30, -var_f29); +#ifdef TARGET_PC + GXDestroyTexObj(&spC); +#endif } void fn_1_7B94(s32 arg0) diff --git a/src/REL/m460Dll/score.c b/src/REL/m460Dll/score.c index 357c2d8c..d1a62652 100644 --- a/src/REL/m460Dll/score.c +++ b/src/REL/m460Dll/score.c @@ -77,9 +77,6 @@ void fn_1_8F38(void) void fn_1_8FAC(s32 arg0) { - s32 sp8; - s32 var_r3; - switch (arg0) { case 0: fn_1_9020(1); 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/m463Dll/main.c b/src/REL/m463Dll/main.c index 159940f0..7f873677 100755 --- a/src/REL/m463Dll/main.c +++ b/src/REL/m463Dll/main.c @@ -20,6 +20,8 @@ #include "ext_math.h" +extern s32 rand8(void); + typedef struct { /* 0x00 */ s32 unk00; /* 0x04 */ s32 unk04; 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/mentDll/main.c b/src/REL/mentDll/main.c index db8375f3..789030fc 100644 --- a/src/REL/mentDll/main.c +++ b/src/REL/mentDll/main.c @@ -4,6 +4,7 @@ #include "game/armem.h" #include "game/chrman.h" #include "game/hsfdraw.h" +#include "game/hsfex.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/minigame_seq.h" @@ -15,6 +16,11 @@ #include "game/window.h" #include "game/wipe.h" +#ifndef __MWERKS__ +extern s32 rand8(void); +#include "game/audio.h" +#endif + typedef struct MentDllUnkBssE4Struct { /* 0x00 */ s32 unk_00; /* 0x04 */ s32 unk_04; diff --git a/src/REL/messDll/main.c b/src/REL/messDll/main.c index f7b32576..1d91e94c 100755 --- a/src/REL/messDll/main.c +++ b/src/REL/messDll/main.c @@ -7,7 +7,6 @@ #include "game/window.h" #include "game/wipe.h" -#include "dolphin.h" #include "ext_math.h" extern s32 sprintf(char *, const char *, s32); diff --git a/src/REL/mgmodedll/battle.c b/src/REL/mgmodedll/battle.c index c5088576..9c2538d9 100644 --- a/src/REL/mgmodedll/battle.c +++ b/src/REL/mgmodedll/battle.c @@ -1,16 +1,17 @@ #include "REL/mgmodedll.h" -#include "game/gamework.h" #include "game/audio.h" #include "game/chrman.h" -#include "game/esprite.h" #include "game/gamework_data.h" #include "game/minigame_seq.h" -#include "game/saveload.h" #include "game/wipe.h" #include "ext_math.h" +#ifndef __MWERKS__ +#include "game/frand.h" +#endif + s16 lbl_1_bss_3A4; s32 lbl_1_bss_3A0; s16 lbl_1_bss_396[4]; diff --git a/src/REL/mgmodedll/free_play.c b/src/REL/mgmodedll/free_play.c index 58ffe85e..ab29a7d8 100644 --- a/src/REL/mgmodedll/free_play.c +++ b/src/REL/mgmodedll/free_play.c @@ -4,7 +4,6 @@ #include "game/audio.h" #include "game/esprite.h" #include "game/gamework_data.h" -#include "game/saveload.h" #include "game/wipe.h" #include "ext_math.h" 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/main.c b/src/REL/modeltestDll/main.c index cb1c254b..1e3778aa 100644 --- a/src/REL/modeltestDll/main.c +++ b/src/REL/modeltestDll/main.c @@ -859,6 +859,9 @@ void fn_1_2B68(ModelData *mdl, Mtx arg1) GXSetNumIndStages(0U); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); +#ifdef TARGET_PC + GXDestroyTexObj(&sp30); +#endif } // -------------------------------------------------------------------------- // 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/modeseldll/modesel.c b/src/REL/modeseldll/modesel.c index ff96fbbc..1501d249 100644 --- a/src/REL/modeseldll/modesel.c +++ b/src/REL/modeseldll/modesel.c @@ -31,8 +31,6 @@ s16 lbl_1_bss_80; void fn_1_3668(void); -// Scratch is at https://decomp.me/scratch/iirXp -// Register allocation issues at line 180 with load of 1.0 double constant s32 fn_1_2490(void) { float sp10[2]; @@ -173,10 +171,13 @@ s32 fn_1_2490(void) HuWinExAnimOut(lbl_1_bss_82); HuAudFXStop(temp_r25); temp_r27 = HuSprGrpCreate(1); +#ifdef __MWERKS__ + // TODO PC temp_r21 = HuTHPSprCreateVol("movie/opmov_c00.thp", 0, 3000, 90.0); HuSprGrpMemberSet(temp_r27, 0, temp_r21); HuSprPosSet(temp_r27, 0, 288.0f, 240.0f); HuSprDrawNoSet(temp_r27, 0, 127); +#endif HuPrcSleep(2); espAttrSet(lbl_1_bss_152[9], HUSPR_ATTR_DISPOFF); for (temp_r31 = 0; temp_r31 <= 10; temp_r31++) { 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 b6304228..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); @@ -577,7 +562,7 @@ void fn_1_13A0(void) s32 i; for(i=1; i<4; i++) { GWPlayerCfg[i].character = GWPlayerCfg[i-1].character+1; - if(GWPlayerCfg[i].character > CHARNO_MAX ) { + if(GWPlayerCfg[i].character > GW_CHARACTER_MAX) { GWPlayerCfg[i].character = 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/resultDll/battle.c b/src/REL/resultDll/battle.c index f9a58cba..84d962fa 100644 --- a/src/REL/resultDll/battle.c +++ b/src/REL/resultDll/battle.c @@ -676,4 +676,7 @@ static void ResultShadowDraw(struct model_data *model, Mtx matrix) GXPosition3f32(500.0f, 0, 500.0f); GXPosition3f32(-500.0f, 0, 500.0f); GXEnd(); +#ifdef TARGET_PC + GXDestroyTexObj(&tex); +#endif } diff --git a/src/REL/selmenuDll/main.c b/src/REL/selmenuDll/main.c index ad413ed8..4cab5e56 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 @@ -130,7 +133,7 @@ static u16 keyDStkDown; static u16 btnDownAll[4]; static u16 keyDStkAll[4]; static u16 keyDStkAllDown[4]; -static u16 keyDStkAllPrev[4] = {}; +static u16 keyDStkAllPrev[4] = {0, 0, 0, 0}; static void SMInit(omObjData *object); static void SMRand8Tick(omObjData *object); @@ -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/condor.c b/src/REL/w03Dll/condor.c index c42f53b3..630569bb 100644 --- a/src/REL/w03Dll/condor.c +++ b/src/REL/w03Dll/condor.c @@ -660,7 +660,7 @@ void fn_1_48EC(s32 arg0) temp_r31->unkbit_04 = 0; temp_r31->unk_02 = -1; temp_r31->unkbit_01 = arg0; - temp_r31->unk_08 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xA00, MEMORY_DEFAULT_NUM); + temp_r31->unk_08 = HuMemDirectMallocNum(HEAP_SYSTEM, 80 * sizeof(w03StructUnk3), MEMORY_DEFAULT_NUM); Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[2]), "coin", &spC); temp_r31->model = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W03, 0x07), NULL, 0); BoardModelVisibilitySet(temp_r31->model, 0); diff --git a/src/REL/w03Dll/mg_coin.c b/src/REL/w03Dll/mg_coin.c index dc05b755..dba306f1 100644 --- a/src/REL/w03Dll/mg_coin.c +++ b/src/REL/w03Dll/mg_coin.c @@ -761,7 +761,7 @@ void fn_1_97F8(s32 arg0) temp_r30 = OM_GET_WORK_PTR(temp_r3, unkTemp2); temp_r30->unk00_bit0 = 0; temp_r30->unk4 = arg0; - temp_r30->unk_0C = HuMemDirectMallocNum(0, 0x190, MEMORY_DEFAULT_NUM); + temp_r30->unk_0C = HuMemDirectMallocNum(0, 20 * sizeof(unkTemp), MEMORY_DEFAULT_NUM); BoardPlayerPosGet(arg0, &sp8); temp_r30->unk8 = (80.0f + sp8.y); memset(temp_r30->unk_0C, 0, 0x190); 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/w05Dll/mg_coin.c b/src/REL/w05Dll/mg_coin.c index c2f8d938..a5388cd8 100644 --- a/src/REL/w05Dll/mg_coin.c +++ b/src/REL/w05Dll/mg_coin.c @@ -157,7 +157,7 @@ void fn_1_9D0C(omObjData *arg0) s32 var_r30; dataCopy2 *temp_r31; - arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x34, MEMORY_DEFAULT_NUM); + arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(dataCopy2), MEMORY_DEFAULT_NUM); temp_r31 = arg0->data; temp_r31->unk_02 = 5; temp_r31->unk_04 = 0x3C; @@ -318,7 +318,7 @@ void fn_1_A5B0(omObjData *arg0) BoardModelVisibilitySet(lbl_1_bss_D4, 1); BoardModelMotionTimeSet(lbl_1_bss_D4, 110.0f); lbl_1_bss_C8 = temp_r29 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_B3C4); - temp_r29->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC, MEMORY_DEFAULT_NUM); + temp_r29->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Vec), MEMORY_DEFAULT_NUM); temp_r31 = temp_r29->data; lbl_1_bss_C8->work[1] = 1; Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[1]), "fish", &sp14); diff --git a/src/REL/w05Dll/mg_item.c b/src/REL/w05Dll/mg_item.c index 0e942bef..4ea226d7 100644 --- a/src/REL/w05Dll/mg_item.c +++ b/src/REL/w05Dll/mg_item.c @@ -114,7 +114,7 @@ void fn_1_6B7C(void) lbl_1_bss_94 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_7284); lbl_1_bss_8C = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_78A0); lbl_1_bss_90 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, NULL); - lbl_1_bss_90->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x14, MEMORY_DEFAULT_NUM); + lbl_1_bss_90->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(dataCopy), MEMORY_DEFAULT_NUM); if (lbl_1_bss_78 == NULL) { lbl_1_bss_78 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 0x00)); HuSprAnimLock(lbl_1_bss_78); 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/REL/ztardll/main.c b/src/REL/ztardll/main.c index 0d20bade..8138a5f4 100644 --- a/src/REL/ztardll/main.c +++ b/src/REL/ztardll/main.c @@ -1538,4 +1538,7 @@ void fn_1_7414(ModelData *model, Mtx matrix) GXPosition3f32(500.0f, 0.0f, -500.0f); GXPosition3f32(500.0f, 0.0f, 500.0f); GXPosition3f32(-500.0f, 0.0f, 500.0f); +#ifdef TARGET_PC + GXDestroyTexObj(&spC); +#endif } 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/demo/DEMOPuts.c b/src/dolphin/demo/DEMOPuts.c index 618152e5..c5af26fc 100644 --- a/src/dolphin/demo/DEMOPuts.c +++ b/src/dolphin/demo/DEMOPuts.c @@ -53,6 +53,9 @@ void DEMOLoadFont(enum _GXTexMapID texMap, enum _GXTexMtx texMtx, DMTexFlt texFl GXLoadTexMtxImm(fontTMtx, texMtx, 1); GXSetNumTexGens(1); GXSetTexCoordGen(0, 1, 4, texMtx); +#ifdef TARGET_PC + GXDestroyTexObj(&fontTexObj); +#endif } void DEMOSetupScrnSpc(long width, long height, float depth) diff --git a/src/dolphin/mtx/mtx.c b/src/dolphin/mtx/mtx.c index 558d4d03..6b71edb5 100644 --- a/src/dolphin/mtx/mtx.c +++ b/src/dolphin/mtx/mtx.c @@ -1,4 +1,5 @@ #include "dolphin/mtx.h" +#include "dolphin/gx/GXPriv.h" static f32 Unit01[] = { 0.0f, 1.0f }; @@ -6,17 +7,21 @@ extern f32 sinf(f32); extern f32 cosf(f32); extern f32 tanf(f32); -void C_MTXIdentity(Mtx mtx) +void C_MTXIdentity(Mtx m) { - mtx[0][0] = 1.0f; - mtx[0][1] = 0.0f; - mtx[0][2] = 0.0f; - mtx[1][0] = 0.0f; - mtx[1][1] = 1.0f; - mtx[1][2] = 0.0f; - mtx[2][0] = 0.0f; - mtx[2][1] = 0.0f; - mtx[2][2] = 1.0f; + ASSERTMSGLINE(189, m, "MtxIdentity(): NULL Mtx 'm' "); + m[0][0] = 1; + m[0][1] = 0; + m[0][2] = 0; + m[0][3] = 0; + m[1][0] = 0; + m[1][1] = 1; + m[1][2] = 0; + m[1][3] = 0; + m[2][0] = 0; + m[2][1] = 0; + m[2][2] = 1; + m[2][3] = 0; } #ifdef GEKKO @@ -41,27 +46,23 @@ void PSMTXIdentity(register Mtx m) } #endif -void C_MTXCopy(const Mtx src, Mtx dst) -{ - - if (src == dst) { - return; +void C_MTXCopy(const Mtx src, Mtx dst) { + ASSERTMSGLINE(250, src, "MTXCopy(): NULL MtxPtr 'src' "); + ASSERTMSGLINE(251, dst, "MTXCopy(): NULL MtxPtr 'dst' "); + if (src != dst) { + dst[0][0] = src[0][0]; + dst[0][1] = src[0][1]; + dst[0][2] = src[0][2]; + dst[0][3] = src[0][3]; + dst[1][0] = src[1][0]; + dst[1][1] = src[1][1]; + dst[1][2] = src[1][2]; + dst[1][3] = src[1][3]; + dst[2][0] = src[2][0]; + dst[2][1] = src[2][1]; + dst[2][2] = src[2][2]; + dst[2][3] = src[2][3]; } - - dst[0][0] = src[0][0]; - dst[0][1] = src[0][1]; - dst[0][2] = src[0][2]; - dst[0][3] = src[0][3]; - - dst[1][0] = src[1][0]; - dst[1][1] = src[1][1]; - dst[1][2] = src[1][2]; - dst[1][3] = src[1][3]; - - dst[2][0] = src[2][0]; - dst[2][1] = src[2][1]; - dst[2][2] = src[2][2]; - dst[2][3] = src[2][3]; } #ifdef GEKKO @@ -88,33 +89,34 @@ asm void PSMTXCopy(const register Mtx src, register Mtx dst) } #endif -void C_MTXConcat(const Mtx a, const Mtx b, Mtx ab) -{ +void C_MTXConcat(const Mtx a, const Mtx b, Mtx ab) { Mtx mTmp; MtxPtr m; - if ((ab == a) || (ab == b)) { - m = mTmp; - } + ASSERTMSGLINE(324, a, "MTXConcat(): NULL MtxPtr 'a' "); + ASSERTMSGLINE(325, b, "MTXConcat(): NULL MtxPtr 'b' "); + ASSERTMSGLINE(326, ab, "MTXConcat(): NULL MtxPtr 'ab' "); - else { + if (ab == a || ab == b) { + m = mTmp; + } else { m = ab; } - m[0][0] = a[0][0] * b[0][0] + a[0][1] * b[1][0] + a[0][2] * b[2][0]; - m[0][1] = a[0][0] * b[0][1] + a[0][1] * b[1][1] + a[0][2] * b[2][1]; - m[0][2] = a[0][0] * b[0][2] + a[0][1] * b[1][2] + a[0][2] * b[2][2]; - m[0][3] = a[0][0] * b[0][3] + a[0][1] * b[1][3] + a[0][2] * b[2][3] + a[0][3]; + m[0][0] = 0 + a[0][2] * b[2][0] + ((a[0][0] * b[0][0]) + (a[0][1] * b[1][0])); + m[0][1] = 0 + a[0][2] * b[2][1] + ((a[0][0] * b[0][1]) + (a[0][1] * b[1][1])); + m[0][2] = 0 + a[0][2] * b[2][2] + ((a[0][0] * b[0][2]) + (a[0][1] * b[1][2])); + m[0][3] = a[0][3] + (a[0][2] * b[2][3] + (a[0][0] * b[0][3] + (a[0][1] * b[1][3]))); - m[1][0] = a[1][0] * b[0][0] + a[1][1] * b[1][0] + a[1][2] * b[2][0]; - m[1][1] = a[1][0] * b[0][1] + a[1][1] * b[1][1] + a[1][2] * b[2][1]; - m[1][2] = a[1][0] * b[0][2] + a[1][1] * b[1][2] + a[1][2] * b[2][2]; - m[1][3] = a[1][0] * b[0][3] + a[1][1] * b[1][3] + a[1][2] * b[2][3] + a[1][3]; + m[1][0] = 0 + a[1][2] * b[2][0] + ((a[1][0] * b[0][0]) + (a[1][1] * b[1][0])); + m[1][1] = 0 + a[1][2] * b[2][1] + ((a[1][0] * b[0][1]) + (a[1][1] * b[1][1])); + m[1][2] = 0 + a[1][2] * b[2][2] + ((a[1][0] * b[0][2]) + (a[1][1] * b[1][2])); + m[1][3] = a[1][3] + (a[1][2] * b[2][3] + (a[1][0] * b[0][3] + (a[1][1] * b[1][3]))); - m[2][0] = a[2][0] * b[0][0] + a[2][1] * b[1][0] + a[2][2] * b[2][0]; - m[2][1] = a[2][0] * b[0][1] + a[2][1] * b[1][1] + a[2][2] * b[2][1]; - m[2][2] = a[2][0] * b[0][2] + a[2][1] * b[1][2] + a[2][2] * b[2][2]; - m[2][3] = a[2][0] * b[0][3] + a[2][1] * b[1][3] + a[2][2] * b[2][3] + a[2][3]; + m[2][0] = 0 + a[2][2] * b[2][0] + ((a[2][0] * b[0][0]) + (a[2][1] * b[1][0])); + m[2][1] = 0 + a[2][2] * b[2][1] + ((a[2][0] * b[0][1]) + (a[2][1] * b[1][1])); + m[2][2] = 0 + a[2][2] * b[2][2] + ((a[2][0] * b[0][2]) + (a[2][1] * b[1][2])); + m[2][3] = a[2][3] + (a[2][2] * b[2][3] + (a[2][0] * b[0][3] + (a[2][1] * b[1][3]))); if (m == mTmp) { C_MTXCopy(mTmp, ab); @@ -222,12 +224,16 @@ asm void PSMTXConcat(const register Mtx mA, const register Mtx mB, register Mtx } #endif -void C_MTXConcatArray(const Mtx a, const Mtx *srcBase, Mtx *dstBase, u32 count) -{ +void C_MTXConcatArray(const Mtx a, const Mtx* srcBase, Mtx* dstBase, u32 count) { u32 i; + + ASSERTMSGLINE(580, a != 0, "MTXConcatArray(): NULL MtxPtr 'a' "); + ASSERTMSGLINE(581, srcBase != 0, "MTXConcatArray(): NULL MtxPtr 'srcBase' "); + ASSERTMSGLINE(582, dstBase != 0, "MTXConcatArray(): NULL MtxPtr 'dstBase' "); + ASSERTMSGLINE(583, count > 1, "MTXConcatArray(): count must be greater than 1."); + for (i = 0; i < count; i++) { C_MTXConcat(a, *srcBase, *dstBase); - srcBase++; dstBase++; } @@ -351,31 +357,31 @@ _loop: #endif -void C_MTXTranspose(const Mtx src, Mtx xPose) -{ +void C_MTXTranspose(const Mtx src, Mtx xPose) { Mtx mTmp; MtxPtr m; + ASSERTMSGLINE(851, src, "MTXTranspose(): NULL MtxPtr 'src' "); + ASSERTMSGLINE(852, xPose, "MTXTranspose(): NULL MtxPtr 'xPose' "); + if (src == xPose) { m = mTmp; - } - else { + } else { m = xPose; } m[0][0] = src[0][0]; m[0][1] = src[1][0]; m[0][2] = src[2][0]; - m[0][3] = 0.0f; + m[0][3] = 0; m[1][0] = src[0][1]; m[1][1] = src[1][1]; m[1][2] = src[2][1]; - m[1][3] = 0.0f; + m[1][3] = 0; m[2][0] = src[0][2]; m[2][1] = src[1][2]; m[2][2] = src[2][2]; - m[2][3] = 0.0f; - + m[2][3] = 0; if (m == mTmp) { C_MTXCopy(mTmp, xPose); } @@ -413,48 +419,48 @@ void PSMTXTranspose(const register Mtx src, register Mtx xPose) } #endif -u32 C_MTXInverse(const Mtx src, Mtx inv) -{ +u32 C_MTXInverse(const Mtx src, Mtx inv) { Mtx mTmp; MtxPtr m; f32 det; + ASSERTMSGLINE(950, src, "MTXInverse(): NULL MtxPtr 'src' "); + ASSERTMSGLINE(951, inv, "MTXInverse(): NULL MtxPtr 'inv' "); + if (src == inv) { m = mTmp; - } - else { + } else { m = inv; } - - det = src[0][0] * src[1][1] * src[2][2] + src[0][1] * src[1][2] * src[2][0] + src[0][2] * src[1][0] * src[2][1] - - src[2][0] * src[1][1] * src[0][2] - src[1][0] * src[0][1] * src[2][2] - src[0][0] * src[2][1] * src[1][2]; - - if (det == 0.0f) { + det = ((((src[2][1] * (src[0][2] * src[1][0])) + + ((src[2][2] * (src[0][0] * src[1][1])) + + (src[2][0] * (src[0][1] * src[1][2])))) + - (src[0][2] * (src[2][0] * src[1][1]))) + - (src[2][2] * (src[1][0] * src[0][1]))) + - (src[1][2] * (src[0][0] * src[2][1])); + if (0 == det) { return 0; } + det = 1 / det; + m[0][0] = (det * +((src[1][1] * src[2][2]) - (src[2][1] * src[1][2]))); + m[0][1] = (det * -((src[0][1] * src[2][2]) - (src[2][1] * src[0][2]))); + m[0][2] = (det * +((src[0][1] * src[1][2]) - (src[1][1] * src[0][2]))); - det = 1.0f / det; + m[1][0] = (det * -((src[1][0] * src[2][2]) - (src[2][0] * src[1][2]))); + m[1][1] = (det * +((src[0][0] * src[2][2]) - (src[2][0] * src[0][2]))); + m[1][2] = (det * -((src[0][0] * src[1][2]) - (src[1][0] * src[0][2]))); - m[0][0] = (src[1][1] * src[2][2] - src[2][1] * src[1][2]) * det; - m[0][1] = -(src[0][1] * src[2][2] - src[2][1] * src[0][2]) * det; - m[0][2] = (src[0][1] * src[1][2] - src[1][1] * src[0][2]) * det; + m[2][0] = (det * +((src[1][0] * src[2][1]) - (src[2][0] * src[1][1]))); + m[2][1] = (det * -((src[0][0] * src[2][1]) - (src[2][0] * src[0][1]))); + m[2][2] = (det * +((src[0][0] * src[1][1]) - (src[1][0] * src[0][1]))); - m[1][0] = -(src[1][0] * src[2][2] - src[2][0] * src[1][2]) * det; - m[1][1] = (src[0][0] * src[2][2] - src[2][0] * src[0][2]) * det; - m[1][2] = -(src[0][0] * src[1][2] - src[1][0] * src[0][2]) * det; - - m[2][0] = (src[1][0] * src[2][1] - src[2][0] * src[1][1]) * det; - m[2][1] = -(src[0][0] * src[2][1] - src[2][0] * src[0][1]) * det; - m[2][2] = (src[0][0] * src[1][1] - src[1][0] * src[0][1]) * det; - - m[0][3] = -m[0][0] * src[0][3] - m[0][1] * src[1][3] - m[0][2] * src[2][3]; - m[1][3] = -m[1][0] * src[0][3] - m[1][1] * src[1][3] - m[1][2] * src[2][3]; - m[2][3] = -m[2][0] * src[0][3] - m[2][1] * src[1][3] - m[2][2] * src[2][3]; + m[0][3] = ((-m[0][0] * src[0][3]) - (m[0][1] * src[1][3])) - (m[0][2] * src[2][3]); + m[1][3] = ((-m[1][0] * src[0][3]) - (m[1][1] * src[1][3])) - (m[1][2] * src[2][3]); + m[2][3] = ((-m[2][0] * src[0][3]) - (m[2][1] * src[1][3])) - (m[2][2] * src[2][3]); if (m == mTmp) { C_MTXCopy(mTmp, inv); } - return 1; } @@ -531,48 +537,48 @@ _regular: } #endif -u32 C_MTXInvXpose(const Mtx src, Mtx invX) -{ +u32 C_MTXInvXpose(const Mtx src, Mtx invX) { Mtx mTmp; MtxPtr m; f32 det; + ASSERTMSGLINE(1185, src, "MTXInvXpose(): NULL MtxPtr 'src' "); + ASSERTMSGLINE(1186, invX, "MTXInvXpose(): NULL MtxPtr 'invX' "); + if (src == invX) { m = mTmp; - } - else { + } else { m = invX; } - - det = src[0][0] * src[1][1] * src[2][2] + src[0][1] * src[1][2] * src[2][0] + src[0][2] * src[1][0] * src[2][1] - - src[2][0] * src[1][1] * src[0][2] - src[1][0] * src[0][1] * src[2][2] - src[0][0] * src[2][1] * src[1][2]; - - if (det == 0.0f) { + det = ((((src[2][1] * (src[0][2] * src[1][0])) + + ((src[2][2] * (src[0][0] * src[1][1])) + + (src[2][0] * (src[0][1] * src[1][2])))) + - (src[0][2] * (src[2][0] * src[1][1]))) + - (src[2][2] * (src[1][0] * src[0][1]))) + - (src[1][2] * (src[0][0] * src[2][1])); + if (0 == det) { return 0; } + det = 1 / det; + m[0][0] = (det * +((src[1][1] * src[2][2]) - (src[2][1] * src[1][2]))); + m[0][1] = (det * -((src[1][0] * src[2][2]) - (src[2][0] * src[1][2]))); + m[0][2] = (det * +((src[1][0] * src[2][1]) - (src[2][0] * src[1][1]))); - det = 1.0f / det; + m[1][0] = (det * -((src[0][1] * src[2][2]) - (src[2][1] * src[0][2]))); + m[1][1] = (det * +((src[0][0] * src[2][2]) - (src[2][0] * src[0][2]))); + m[1][2] = (det * -((src[0][0] * src[2][1]) - (src[2][0] * src[0][1]))); - m[0][0] = (src[1][1] * src[2][2] - src[2][1] * src[1][2]) * det; - m[0][1] = -(src[1][0] * src[2][2] - src[2][0] * src[1][2]) * det; - m[0][2] = (src[1][0] * src[2][1] - src[2][0] * src[1][1]) * det; + m[2][0] = (det * +((src[0][1] * src[1][2]) - (src[1][1] * src[0][2]))); + m[2][1] = (det * -((src[0][0] * src[1][2]) - (src[1][0] * src[0][2]))); + m[2][2] = (det * +((src[0][0] * src[1][1]) - (src[1][0] * src[0][1]))); - m[1][0] = -(src[0][1] * src[2][2] - src[2][1] * src[0][2]) * det; - m[1][1] = (src[0][0] * src[2][2] - src[2][0] * src[0][2]) * det; - m[1][2] = -(src[0][0] * src[2][1] - src[2][0] * src[0][1]) * det; - - m[2][0] = (src[0][1] * src[1][2] - src[1][1] * src[0][2]) * det; - m[2][1] = -(src[0][0] * src[1][2] - src[1][0] * src[0][2]) * det; - m[2][2] = (src[0][0] * src[1][1] - src[1][0] * src[0][1]) * det; - - m[0][3] = 0.0F; - m[1][3] = 0.0F; - m[2][3] = 0.0F; + m[0][3] = 0; + m[1][3] = 0; + m[2][3] = 0; if (m == mTmp) { C_MTXCopy(mTmp, invX); } - return 1; } @@ -638,10 +644,11 @@ _regular: } #endif -void C_MTXRotRad(Mtx m, char axis, f32 rad) -{ +void C_MTXRotRad(Mtx m, char axis, f32 rad) { + f32 sinA; + f32 cosA; - f32 sinA, cosA; + ASSERTMSGLINE(1447, m, "MTXRotRad(): NULL MtxPtr 'm' "); sinA = sinf(rad); cosA = cosf(rad); C_MTXRotTrig(m, axis, sinA, cosA); @@ -659,60 +666,57 @@ void PSMTXRotRad(Mtx m, char axis, f32 rad) } #endif -void C_MTXRotTrig(Mtx m, char axis, f32 sinA, f32 cosA) -{ - switch (axis) { - - case 'x': - case 'X': - m[0][0] = 1.0f; - m[0][1] = 0.0f; - m[0][2] = 0.0f; - m[0][3] = 0.0f; - m[1][0] = 0.0f; - m[1][1] = cosA; - m[1][2] = -sinA; - m[1][3] = 0.0f; - m[2][0] = 0.0f; - m[2][1] = sinA; - m[2][2] = cosA; - m[2][3] = 0.0f; - break; - - case 'y': - case 'Y': - m[0][0] = cosA; - m[0][1] = 0.0f; - m[0][2] = sinA; - m[0][3] = 0.0f; - m[1][0] = 0.0f; - m[1][1] = 1.0f; - m[1][2] = 0.0f; - m[1][3] = 0.0f; - m[2][0] = -sinA; - m[2][1] = 0.0f; - m[2][2] = cosA; - m[2][3] = 0.0f; - break; - - case 'z': - case 'Z': - m[0][0] = cosA; - m[0][1] = -sinA; - m[0][2] = 0.0f; - m[0][3] = 0.0f; - m[1][0] = sinA; - m[1][1] = cosA; - m[1][2] = 0.0f; - m[1][3] = 0.0f; - m[2][0] = 0.0f; - m[2][1] = 0.0f; - m[2][2] = 1.0f; - m[2][3] = 0.0f; - break; - - default: - break; +void C_MTXRotTrig(Mtx m, char axis, f32 sinA, f32 cosA) { + ASSERTMSGLINE(1502, m, "MTXRotTrig(): NULL MtxPtr 'm' "); + switch(axis) { + case 'x': + case 'X': + m[0][0] = 1; + m[0][1] = 0; + m[0][2] = 0; + m[0][3] = 0; + m[1][0] = 0; + m[1][1] = cosA; + m[1][2] = -sinA; + m[1][3] = 0; + m[2][0] = 0; + m[2][1] = sinA; + m[2][2] = cosA; + m[2][3] = 0; + break; + case 'y': + case 'Y': + m[0][0] = cosA; + m[0][1] = 0; + m[0][2] = sinA; + m[0][3] = 0; + m[1][0] = 0; + m[1][1] = 1; + m[1][2] = 0; + m[1][3] = 0; + m[2][0] = -sinA; + m[2][1] = 0; + m[2][2] = cosA; + m[2][3] = 0; + break; + case 'z': + case 'Z': + m[0][0] = cosA; + m[0][1] = -sinA; + m[0][2] = 0; + m[0][3] = 0; + m[1][0] = sinA; + m[1][1] = cosA; + m[1][2] = 0; + m[1][3] = 0; + m[2][0] = 0; + m[2][1] = 0; + m[2][2] = 1; + m[2][3] = 0; + break; + default: + ASSERTMSGLINE(1529, FALSE, "MTXRotTrig(): invalid 'axis' value "); + break; } } @@ -780,42 +784,43 @@ _end: #endif -void C_MTXRotAxisRad(Mtx m, const Vec *axis, f32 rad) -{ +void C_MTXRotAxisRad(Mtx m, const Vec* axis, f32 rad) { Vec vN; - f32 s, c; + f32 s; + f32 c; f32 t; - f32 x, y, z; - f32 xSq, ySq, zSq; + f32 x; + f32 y; + f32 z; + f32 xSq; + f32 ySq; + f32 zSq; + + ASSERTMSGLINE(1677, m, "MTXRotAxisRad(): NULL MtxPtr 'm' "); + ASSERTMSGLINE(1678, axis, "MTXRotAxisRad(): NULL VecPtr 'axis' "); s = sinf(rad); c = cosf(rad); - t = 1.0f - c; - + t = 1 - c; C_VECNormalize(axis, &vN); - x = vN.x; y = vN.y; z = vN.z; - - xSq = x * x; - ySq = y * y; - zSq = z * z; - - m[0][0] = (t * xSq) + (c); - m[0][1] = (t * x * y) - (s * z); - m[0][2] = (t * x * z) + (s * y); - m[0][3] = 0.0f; - - m[1][0] = (t * x * y) + (s * z); - m[1][1] = (t * ySq) + (c); - m[1][2] = (t * y * z) - (s * x); - m[1][3] = 0.0f; - - m[2][0] = (t * x * z) - (s * y); - m[2][1] = (t * y * z) + (s * x); - m[2][2] = (t * zSq) + (c); - m[2][3] = 0.0f; + xSq = (x * x); + ySq = (y * y); + zSq = (z * z); + m[0][0] = (c + (t * xSq)); + m[0][1] = (y * (t * x)) - (s * z); + m[0][2] = (z * (t * x)) + (s * y); + m[0][3] = 0; + m[1][0] = ((y * (t * x)) + (s * z)); + m[1][1] = (c + (t * ySq)); + m[1][2] = ((z * (t * y)) - (s * x)); + m[1][3] = 0; + m[2][0] = ((z * (t * x)) - (s * y)); + m[2][1] = ((z * (t * y)) + (s * x)); + m[2][2] = (c + (t * zSq)); + m[2][3] = 0; } #ifdef GEKKO @@ -875,19 +880,19 @@ void PSMTXRotAxisRad(register Mtx m, const Vec *axis, register f32 rad) #endif -void C_MTXTrans(Mtx m, f32 xT, f32 yT, f32 zT) -{ - m[0][0] = 1.0f; - m[0][1] = 0.0f; - m[0][2] = 0.0f; +void C_MTXTrans(Mtx m, f32 xT, f32 yT, f32 zT) { + ASSERTMSGLINE(1866, m, "MTXTrans(): NULL MtxPtr 'm' "); + m[0][0] = 1; + m[0][1] = 0; + m[0][2] = 0; m[0][3] = xT; - m[1][0] = 0.0f; - m[1][1] = 1.0f; - m[1][2] = 0.0f; + m[1][0] = 0; + m[1][1] = 1; + m[1][2] = 0; m[1][3] = yT; - m[2][0] = 0.0f; - m[2][1] = 0.0f; - m[2][2] = 1.0f; + m[2][0] = 0; + m[2][1] = 0; + m[2][2] = 1; m[2][3] = zT; } @@ -914,8 +919,10 @@ void PSMTXTrans(register Mtx m, register f32 xT, register f32 yT, register f32 z } #endif -void C_MTXTransApply(const Mtx src, Mtx dst, f32 xT, f32 yT, f32 zT) -{ +void C_MTXTransApply(const Mtx src, Mtx dst, f32 xT, f32 yT, f32 zT) { + ASSERTMSGLINE(1933, src, "MTXTransApply(): NULL MtxPtr 'src' "); + ASSERTMSGLINE(1934, dst, "MTXTransApply(): NULL MtxPtr 'src' "); //! wrong assert string + if (src != dst) { dst[0][0] = src[0][0]; dst[0][1] = src[0][1]; @@ -928,9 +935,9 @@ void C_MTXTransApply(const Mtx src, Mtx dst, f32 xT, f32 yT, f32 zT) dst[2][2] = src[2][2]; } - dst[0][3] = src[0][3] + xT; - dst[1][3] = src[1][3] + yT; - dst[2][3] = src[2][3] + zT; + dst[0][3] = (src[0][3] + xT); + dst[1][3] = (src[1][3] + yT); + dst[2][3] = (src[2][3] + zT); } #ifdef GEKKO @@ -961,20 +968,20 @@ asm void PSMTXTransApply(const register Mtx src, register Mtx dst, register f32 } #endif -void C_MTXScale(Mtx m, f32 xS, f32 yS, f32 zS) -{ +void C_MTXScale(Mtx m, f32 xS, f32 yS, f32 zS) { + ASSERTMSGLINE(2008, m, "MTXScale(): NULL MtxPtr 'm' "); m[0][0] = xS; - m[0][1] = 0.0f; - m[0][2] = 0.0f; - m[0][3] = 0.0f; - m[1][0] = 0.0f; + m[0][1] = 0; + m[0][2] = 0; + m[0][3] = 0; + m[1][0] = 0; m[1][1] = yS; - m[1][2] = 0.0f; - m[1][3] = 0.0f; - m[2][0] = 0.0f; - m[2][1] = 0.0f; + m[1][2] = 0; + m[1][3] = 0; + m[2][0] = 0; + m[2][1] = 0; m[2][2] = zS; - m[2][3] = 0.0f; + m[2][3] = 0; } #ifdef GEKKO @@ -997,22 +1004,21 @@ void PSMTXScale(register Mtx m, register f32 xS, register f32 yS, register f32 z } #endif -void C_MTXScaleApply(const Mtx src, Mtx dst, f32 xS, f32 yS, f32 zS) -{ - dst[0][0] = src[0][0] * xS; - dst[0][1] = src[0][1] * xS; - dst[0][2] = src[0][2] * xS; - dst[0][3] = src[0][3] * xS; - - dst[1][0] = src[1][0] * yS; - dst[1][1] = src[1][1] * yS; - dst[1][2] = src[1][2] * yS; - dst[1][3] = src[1][3] * yS; - - dst[2][0] = src[2][0] * zS; - dst[2][1] = src[2][1] * zS; - dst[2][2] = src[2][2] * zS; - dst[2][3] = src[2][3] * zS; +void C_MTXScaleApply(const Mtx src, Mtx dst, f32 xS, f32 yS, f32 zS) { + ASSERTMSGLINE(2070, src, "MTXScaleApply(): NULL MtxPtr 'src' "); + ASSERTMSGLINE(2071, dst, "MTXScaleApply(): NULL MtxPtr 'dst' "); + dst[0][0] = (src[0][0] * xS); + dst[0][1] = (src[0][1] * xS); + dst[0][2] = (src[0][2] * xS); + dst[0][3] = (src[0][3] * xS); + dst[1][0] = (src[1][0] * yS); + dst[1][1] = (src[1][1] * yS); + dst[1][2] = (src[1][2] * yS); + dst[1][3] = (src[1][3] * yS); + dst[2][0] = (src[2][0] * zS); + dst[2][1] = (src[2][1] * zS); + dst[2][2] = (src[2][2] * zS); + dst[2][3] = (src[2][3] * zS); } #ifdef GEKKO @@ -1046,12 +1052,25 @@ asm void PSMTXScaleApply(const register Mtx src, register Mtx dst, register f32 } #endif -void C_MTXQuat(Mtx m, const Quaternion *q) -{ - - f32 s, xs, ys, zs, wx, wy, wz, xx, xy, xz, yy, yz, zz; - s = 2.0f / ((q->x * q->x) + (q->y * q->y) + (q->z * q->z) + (q->w * q->w)); +void C_MTXQuat(Mtx m, const Quaternion* q) { + f32 s; + f32 xs; + f32 ys; + f32 zs; + f32 wx; + f32 wy; + f32 wz; + f32 xx; + f32 xy; + f32 xz; + f32 yy; + f32 yz; + f32 zz; + ASSERTMSGLINE(2145, m, "MTXQuat(): NULL MtxPtr 'm' "); + ASSERTMSGLINE(2146, q, "MTXQuat(): NULL QuaternionPtr 'q' "); + ASSERTMSGLINE(2147, q->x || q->y || q->z || q->w, "MTXQuat(): zero-value quaternion "); + s = 2 / ((q->w * q->w) + ((q->z * q->z) + ((q->x * q->x) + (q->y * q->y)))); xs = q->x * s; ys = q->y * s; zs = q->z * s; @@ -1064,21 +1083,18 @@ void C_MTXQuat(Mtx m, const Quaternion *q) yy = q->y * ys; yz = q->y * zs; zz = q->z * zs; - - m[0][0] = 1.0f - (yy + zz); - m[0][1] = xy - wz; - m[0][2] = xz + wy; - m[0][3] = 0.0f; - - m[1][0] = xy + wz; - m[1][1] = 1.0f - (xx + zz); - m[1][2] = yz - wx; - m[1][3] = 0.0f; - - m[2][0] = xz - wy; - m[2][1] = yz + wx; - m[2][2] = 1.0f - (xx + yy); - m[2][3] = 0.0f; + m[0][0] = (1 - (yy + zz)); + m[0][1] = (xy - wz); + m[0][2] = (xz + wy); + m[0][3] = 0; + m[1][0] = (xy + wz); + m[1][1] = (1 - (xx + zz)); + m[1][2] = (yz - wx); + m[1][3] = 0; + m[2][0] = (xz - wy); + m[2][1] = (yz + wx); + m[2][2] = (1 - (xx + yy)); + m[2][3] = 0; } #ifdef GEKKO @@ -1136,29 +1152,28 @@ void PSMTXQuat(register Mtx m, const register Quaternion *q) } #endif -void C_MTXReflect(Mtx m, const Vec *p, const Vec *n) -{ - f32 vxy, vxz, vyz, pdotn; +void C_MTXReflect(Mtx m, const Vec* p, const Vec* n) { + f32 vxy; + f32 vxz; + f32 vyz; + f32 pdotn; - vxy = -2.0f * n->x * n->y; - vxz = -2.0f * n->x * n->z; - vyz = -2.0f * n->y * n->z; - pdotn = 2.0f * C_VECDotProduct(p, n); - - m[0][0] = 1.0f - 2.0f * n->x * n->x; + vxy = -2 * n->x * n->y; + vxz = -2 * n->x * n->z; + vyz = -2 * n->y * n->z; + pdotn = 2 * C_VECDotProduct(p, n); + m[0][0] = (1 - (2 * n->x * n->x)); m[0][1] = vxy; m[0][2] = vxz; - m[0][3] = pdotn * n->x; - + m[0][3] = (pdotn * n->x); m[1][0] = vxy; - m[1][1] = 1.0f - 2.0f * n->y * n->y; + m[1][1] = (1 - (2 * n->y * n->y)); m[1][2] = vyz; - m[1][3] = pdotn * n->y; - + m[1][3] = (pdotn * n->y); m[2][0] = vxz; m[2][1] = vyz; - m[2][2] = 1.0f - 2.0f * n->z * n->z; - m[2][3] = pdotn * n->z; + m[2][2] = (1 - (2 * n->z * n->z)); + m[2][3] = (pdotn * n->z); } #ifdef GEKKO @@ -1202,9 +1217,15 @@ void PSMTXReflect(register Mtx m, const register Vec *p, const register Vec *n) } #endif -void C_MTXLookAt(Mtx m, const Vec *camPos, const Vec *camUp, const Vec *target) -{ - Vec vLook, vRight, vUp; +void C_MTXLookAt(Mtx m, const Point3d* camPos, const Vec* camUp, const Point3d* target) { + Vec vLook; + Vec vRight; + Vec vUp; + + ASSERTMSGLINE(2438, m, "MTXLookAt(): NULL MtxPtr 'm' "); + ASSERTMSGLINE(2439, camPos, "MTXLookAt(): NULL VecPtr 'camPos' "); + ASSERTMSGLINE(2440, camUp, "MTXLookAt(): NULL VecPtr 'camUp' "); + ASSERTMSGLINE(2441, target, "MTXLookAt(): NULL Point3dPtr 'target' "); vLook.x = camPos->x - target->x; vLook.y = camPos->y - target->y; @@ -1213,88 +1234,163 @@ void C_MTXLookAt(Mtx m, const Vec *camPos, const Vec *camUp, const Vec *target) VECCrossProduct(camUp, &vLook, &vRight); VECNormalize(&vRight, &vRight); VECCrossProduct(&vLook, &vRight, &vUp); - m[0][0] = vRight.x; m[0][1] = vRight.y; m[0][2] = vRight.z; - m[0][3] = -(camPos->x * vRight.x + camPos->y * vRight.y + camPos->z * vRight.z); - + m[0][3] = -((camPos->z * vRight.z) + ((camPos->x * vRight.x) + (camPos->y * vRight.y))); m[1][0] = vUp.x; m[1][1] = vUp.y; m[1][2] = vUp.z; - m[1][3] = -(camPos->x * vUp.x + camPos->y * vUp.y + camPos->z * vUp.z); - + m[1][3] = -((camPos->z * vUp.z) + ((camPos->x * vUp.x) + (camPos->y * vUp.y))); m[2][0] = vLook.x; m[2][1] = vLook.y; m[2][2] = vLook.z; - m[2][3] = -(camPos->x * vLook.x + camPos->y * vLook.y + camPos->z * vLook.z); + m[2][3] = -((camPos->z * vLook.z) + ((camPos->x * vLook.x) + (camPos->y * vLook.y))); } -void C_MTXLightFrustum(Mtx m, float t, float b, float l, float r, float n, float scaleS, float scaleT, float transS, float transT) -{ +void C_MTXLightFrustum(Mtx m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 scaleS, f32 scaleT, f32 transS, f32 transT) { f32 tmp; - tmp = 1.0f / (r - l); - m[0][0] = ((2 * n) * tmp) * scaleS; - m[0][1] = 0.0f; - m[0][2] = (((r + l) * tmp) * scaleS) - transS; - m[0][3] = 0.0f; + ASSERTMSGLINE(2541, m, "MTXLightFrustum(): NULL MtxPtr 'm' "); + ASSERTMSGLINE(2542, (t != b), "MTXLightFrustum(): 't' and 'b' clipping planes are equal "); + ASSERTMSGLINE(2543, (l != r), "MTXLightFrustum(): 'l' and 'r' clipping planes are equal "); - tmp = 1.0f / (t - b); - m[1][0] = 0.0f; - m[1][1] = ((2 * n) * tmp) * scaleT; - m[1][2] = (((t + b) * tmp) * scaleT) - transT; - m[1][3] = 0.0f; - - m[2][0] = 0.0f; - m[2][1] = 0.0f; - m[2][2] = -1.0f; - m[2][3] = 0.0f; + tmp = 1 / (r - l); + m[0][0] = (scaleS * (2 * n * tmp)); + m[0][1] = 0; + m[0][2] = (scaleS * (tmp * (r + l))) - transS; + m[0][3] = 0; + tmp = 1 / (t - b); + m[1][0] = 0; + m[1][1] = (scaleT * (2 * n * tmp)); + m[1][2] = (scaleT * (tmp * (t + b))) - transT; + m[1][3] = 0; + m[2][0] = 0; + m[2][1] = 0; + m[2][2] = -1; + m[2][3] = 0; } -void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, float scaleS, float scaleT, float transS, float transT) -{ +void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, f32 scaleS, f32 scaleT, f32 transS, f32 transT) { f32 angle; f32 cot; - angle = fovY * 0.5f; + ASSERTMSGLINE(2605, m, "MTXLightPerspective(): NULL MtxPtr 'm' "); + ASSERTMSGLINE(2606, (fovY > 0.0) && (fovY < 180.0), "MTXLightPerspective(): 'fovY' out of range "); + ASSERTMSGLINE(2607, 0 != aspect, "MTXLightPerspective(): 'aspect' is 0 "); + + angle = (0.5f * fovY); angle = MTXDegToRad(angle); - - cot = 1.0f / tanf(angle); - - m[0][0] = (cot / aspect) * scaleS; - m[0][1] = 0.0f; + cot = 1 / tanf(angle); + m[0][0] = (scaleS * (cot / aspect)); + m[0][1] = 0; m[0][2] = -transS; - m[0][3] = 0.0f; - - m[1][0] = 0.0f; - m[1][1] = cot * scaleT; + m[0][3] = 0; + m[1][0] = 0; + m[1][1] = (cot * scaleT); m[1][2] = -transT; - m[1][3] = 0.0f; - - m[2][0] = 0.0f; - m[2][1] = 0.0f; - m[2][2] = -1.0f; - m[2][3] = 0.0f; + m[1][3] = 0; + m[2][0] = 0; + m[2][1] = 0; + m[2][2] = -1; + m[2][3] = 0; } -void C_MTXLightOrtho(Mtx m, f32 t, f32 b, f32 l, f32 r, float scaleS, float scaleT, float transS, float transT) -{ +void C_MTXLightOrtho(Mtx m, f32 t, f32 b, f32 l, f32 r, f32 scaleS, f32 scaleT, f32 transS, f32 transT) { f32 tmp; - tmp = 1.0f / (r - l); - m[0][0] = (2.0f * tmp * scaleS); - m[0][1] = 0.0f; - m[0][2] = 0.0f; - m[0][3] = ((-(r + l) * tmp) * scaleS) + transS; - tmp = 1.0f / (t - b); - m[1][0] = 0.0f; - m[1][1] = (2.0f * tmp) * scaleT; - m[1][2] = 0.0f; - m[1][3] = ((-(t + b) * tmp) * scaleT) + transT; - - m[2][0] = 0.0f; - m[2][1] = 0.0f; - m[2][2] = 0.0f; - m[2][3] = 1.0f; + ASSERTMSGLINE(2673, m, "MTXLightOrtho(): NULL MtxPtr 'm' "); + ASSERTMSGLINE(2674, (t != b), "MTXLightOrtho(): 't' and 'b' clipping planes are equal "); + ASSERTMSGLINE(2675, (l != r), "MTXLightOrtho(): 'l' and 'r' clipping planes are equal "); + tmp = 1 / (r - l); + m[0][0] = (2 * tmp * scaleS); + m[0][1] = 0; + m[0][2] = 0; + m[0][3] = (transS + (scaleS * (tmp * -(r + l)))); + tmp = 1/ (t - b); + m[1][0] = 0; + m[1][1] = (2 * tmp * scaleT); + m[1][2] = 0; + m[1][3] = (transT + (scaleT * (tmp * -(t + b)))); + m[2][0] = 0; + m[2][1] = 0; + m[2][2] = 0; + m[2][3] = 1; } + +#ifdef TARGET_PC +void C_MTXReorder(const Mtx src, ROMtx dest) +{ + u32 i, j; + for (i = 0; i < 3; i++) { + for (j = 0; j < 4; j++) { + dest[j][i] = src[i][j]; + } + } +} + +void C_MTXMultVec(const Mtx m, const Vec* src, Vec* dst) { + Vec vTmp; + + ASSERTMSGLINE(66, m, "MTXMultVec(): NULL MtxPtr 'm' "); + ASSERTMSGLINE(67, src, "MTXMultVec(): NULL VecPtr 'src' "); + ASSERTMSGLINE(68, dst, "MTXMultVec(): NULL VecPtr 'dst' "); + + vTmp.x = m[0][3] + ((m[0][2] * src->z) + ((m[0][0] * src->x) + (m[0][1] * src->y))); + vTmp.y = m[1][3] + ((m[1][2] * src->z) + ((m[1][0] * src->x) + (m[1][1] * src->y))); + vTmp.z = m[2][3] + ((m[2][2] * src->z) + ((m[2][0] * src->x) + (m[2][1] * src->y))); + dst->x = vTmp.x; + dst->y = vTmp.y; + dst->z = vTmp.z; +} + +void C_MTXMultVecArray(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count) { + u32 i; + Vec vTmp; + + ASSERTMSGLINE(168, m, "MTXMultVecArray(): NULL MtxPtr 'm' "); + ASSERTMSGLINE(169, srcBase, "MTXMultVecArray(): NULL VecPtr 'srcBase' "); + ASSERTMSGLINE(170, dstBase, "MTXMultVecArray(): NULL VecPtr 'dstBase' "); + ASSERTMSGLINE(171, count > 1, "MTXMultVecArray(): count must be greater than 1."); + + for(i = 0; i < count; i++) { + vTmp.x = m[0][3] + ((m[0][2] * srcBase->z) + ((m[0][0] * srcBase->x) + (m[0][1] * srcBase->y))); + vTmp.y = m[1][3] + ((m[1][2] * srcBase->z) + ((m[1][0] * srcBase->x) + (m[1][1] * srcBase->y))); + vTmp.z = m[2][3] + ((m[2][2] * srcBase->z) + ((m[2][0] * srcBase->x) + (m[2][1] * srcBase->y))); + dstBase->x = vTmp.x; + dstBase->y = vTmp.y; + dstBase->z = vTmp.z; + srcBase++; + dstBase++; + } +} + +void C_MTXROMultVecArray(const ROMtx m, const Vec *srcBase, Vec *dstBase, u32 count) +{ + for (u32 i = 0; i < count; ++i) { + Vec* src = &srcBase[i]; + Vec* dst = &dstBase[i]; + + // Perform matrix-vector multiplication: ROMtx * Vec -> Vec + dst->x = m[0][0] * src->x + m[0][1] * src->y + m[0][2] * src->z; + dst->y = m[1][0] * src->x + m[1][1] * src->y + m[1][2] * src->z; + dst->z = m[2][0] * src->x + m[2][1] * src->y + m[2][2] * src->z; + } +} + +void C_MTXMultVecSR(const Mtx m, const Vec* src, Vec* dst) { + Vec vTmp; + + ASSERTMSGLINE(313, m, "MTXMultVecSR(): NULL MtxPtr 'm' "); + ASSERTMSGLINE(314, src, "MTXMultVecSR(): NULL VecPtr 'src' "); + ASSERTMSGLINE(315, dst, "MTXMultVecSR(): NULL VecPtr 'dst' "); + + vTmp.x = (m[0][2] * src->z) + ((m[0][0] * src->x) + (m[0][1] * src->y)); + vTmp.y = (m[1][2] * src->z) + ((m[1][0] * src->x) + (m[1][1] * src->y)); + vTmp.z = (m[2][2] * src->z) + ((m[2][0] * src->x) + (m[2][1] * src->y)); + dst->x = vTmp.x; + dst->y = vTmp.y; + dst->z = vTmp.z; +} + +#endif diff --git a/src/dolphin/mtx/mtx44.c b/src/dolphin/mtx/mtx44.c index a6c2faa9..39ddff22 100644 --- a/src/dolphin/mtx/mtx44.c +++ b/src/dolphin/mtx/mtx44.c @@ -1,82 +1,98 @@ #include "dolphin/mtx.h" +#include "dolphin/gx/GXPriv.h" #include "math.h" -void C_MTXFrustum(Mtx44 m, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6) -{ - f32 tmp = 1.0f / (arg4 - arg3); - m[0][0] = (2 * arg5) * tmp; - m[0][1] = 0.0f; - m[0][2] = (arg4 + arg3) * tmp; - m[0][3] = 0.0f; - tmp = 1.0f / (arg1 - arg2); - m[1][0] = 0.0f; - m[1][1] = (2 * arg5) * tmp; - m[1][2] = (arg1 + arg2) * tmp; - m[1][3] = 0.0f; - m[2][0] = 0.0f; - m[2][1] = 0.0f; - tmp = 1.0f / (arg6 - arg5); - m[2][2] = -(arg5)*tmp; - m[2][3] = -(arg6 * arg5) * tmp; - m[3][0] = 0.0f; - m[3][1] = 0.0f; - m[3][2] = -1.0f; - m[3][3] = 0.0f; +void C_MTXFrustum(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f) { + f32 tmp; + + ASSERTMSGLINE(105, m, "MTXFrustum(): NULL Mtx44Ptr 'm' "); + ASSERTMSGLINE(106, t != b, "MTXFrustum(): 't' and 'b' clipping planes are equal "); + ASSERTMSGLINE(107, l != r, "MTXFrustum(): 'l' and 'r' clipping planes are equal "); + ASSERTMSGLINE(108, n != f, "MTXFrustum(): 'n' and 'f' clipping planes are equal "); + tmp = 1 / (r - l); + m[0][0] = (2 * n * tmp); + m[0][1] = 0; + m[0][2] = (tmp * (r + l)); + m[0][3] = 0; + tmp = 1 / (t - b); + m[1][0] = 0; + m[1][1] = (2 * n * tmp); + m[1][2] = (tmp * (t + b)); + m[1][3] = 0; + m[2][0] = 0; + m[2][1] = 0; + tmp = 1 / (f - n); + m[2][2] = (-n * tmp); + m[2][3] = (tmp * -(f * n)); + m[3][0] = 0; + m[3][1] = 0; + m[3][2] = -1; + m[3][3] = 0; } -// Functions match but has issues with float constants -void C_MTXPerspective(Mtx44 m, f32 fovY, f32 aspect, f32 n, f32 f) -{ - f32 angle = fovY * 0.5f; +void C_MTXPerspective(Mtx44 m, f32 fovY, f32 aspect, f32 n, f32 f) { + f32 angle; f32 cot; f32 tmp; + + ASSERTMSGLINE(179, m, "MTXPerspective(): NULL Mtx44Ptr 'm' "); + ASSERTMSGLINE(180, (fovY > 0.0) && (fovY < 180.0), "MTXPerspective(): 'fovY' out of range "); + ASSERTMSGLINE(181, 0.0f != aspect, "MTXPerspective(): 'aspect' is 0 "); + + angle = (0.5f * fovY); angle = MTXDegToRad(angle); - cot = 1.0f / tanf(angle); - m[0][0] = cot / aspect; - m[0][1] = 0.0f; - m[0][2] = 0.0f; - m[0][3] = 0.0f; - m[1][0] = 0.0f; - m[1][1] = cot; - m[1][2] = 0.0f; - m[1][3] = 0.0f; - m[2][0] = 0.0f; - m[2][1] = 0.0f; - tmp = 1.0f / (f - n); - m[2][2] = -(n)*tmp; - m[2][3] = -(f * n) * tmp; - m[3][0] = 0.0f; - m[3][1] = 0.0f; - m[3][2] = -1.0f; - m[3][3] = 0.0f; + cot = 1 / tanf(angle); + m[0][0] = (cot / aspect); + m[0][1] = 0; + m[0][2] = 0; + m[0][3] = 0; + m[1][0] = 0; + m[1][1] = (cot); + m[1][2] = 0; + m[1][3] = 0; + m[2][0] = 0; + m[2][1] = 0; + tmp = 1 / (f - n); + m[2][2] = (-n * tmp); + m[2][3] = (tmp * -(f * n)); + m[3][0] = 0; + m[3][1] = 0; + m[3][2] = -1; + m[3][3] = 0; } -void C_MTXOrtho(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f) -{ - f32 tmp = 1.0f / (r - l); - m[0][0] = 2.0f * tmp; - m[0][1] = 0.0f; - m[0][2] = 0.0f; - m[0][3] = -(r + l) * tmp; - tmp = 1.0f / (t - b); - m[1][0] = 0.0f; - m[1][1] = 2.0f * tmp; - m[1][2] = 0.0f; - m[1][3] = -(t + b) * tmp; - m[2][0] = 0.0f; - m[2][1] = 0.0f; - tmp = 1.0f / (f - n); - m[2][2] = -(1.0f) * tmp; - m[2][3] = -(f)*tmp; - m[3][0] = 0.0f; - m[3][1] = 0.0f; - m[3][2] = 0.0f; - m[3][3] = 1.0f; +void C_MTXOrtho(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f) { + f32 tmp; + + ASSERTMSGLINE(254, m, "MTXOrtho(): NULL Mtx44Ptr 'm' "); + ASSERTMSGLINE(255, t != b, "MTXOrtho(): 't' and 'b' clipping planes are equal "); + ASSERTMSGLINE(256, l != r, "MTXOrtho(): 'l' and 'r' clipping planes are equal "); + ASSERTMSGLINE(257, n != f, "MTXOrtho(): 'n' and 'f' clipping planes are equal "); + tmp = 1 / (r - l); + m[0][0] = 2 * tmp; + m[0][1] = 0; + m[0][2] = 0; + m[0][3] = (tmp * -(r + l)); + tmp = 1 / (t - b); + m[1][0] = 0; + m[1][1] = 2 * tmp; + m[1][2] = 0; + m[1][3] = (tmp * -(t + b)); + m[2][0] = 0; + m[2][1] = 0; + tmp = 1 / (f - n); + m[2][2] = (-1 * tmp); + m[2][3] = (-f * tmp); + m[3][0] = 0; + m[3][1] = 0; + m[3][2] = 0; + m[3][3] = 1; } +#ifdef GEKKO asm void PSMTX44Copy(register Mtx44 src, register Mtx44 dest) { -#ifdef __MWERKS__ // clang-format off +// clang-format off nofralloc; psq_l fp1, 0(src), 0, 0; psq_st fp1, 0(dest), 0, 0; @@ -95,5 +111,6 @@ asm void PSMTX44Copy(register Mtx44 src, register Mtx44 dest) psq_l fp1, 0x38(src), 0, 0; psq_st fp1, 0x38(dest), 0, 0; blr; -#endif // clang-format on +// clang-format on } +#endif 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/mtx/vec.c b/src/dolphin/mtx/vec.c index de5ad450..cd04e4be 100644 --- a/src/dolphin/mtx/vec.c +++ b/src/dolphin/mtx/vec.c @@ -1,4 +1,5 @@ #include "dolphin/mtx.h" +#include "dolphin/gx/GXPriv.h" #include "math.h" #define R_RET fp1 @@ -15,9 +16,19 @@ #define FP12 fp12 #define FP13 fp13 +void C_VECAdd(const Vec *a, const Vec *b, Vec *c) { + ASSERTMSGLINE(0x57, a, "VECAdd(): NULL VecPtr 'a' "); + ASSERTMSGLINE(0x58, b, "VECAdd(): NULL VecPtr 'b' "); + ASSERTMSGLINE(0x59, c, "VECAdd(): NULL VecPtr 'ab' "); + c->x = a->x + b->x; + c->y = a->y + b->y; + c->z = a->z + b->z; +} + +#ifdef GEKKO asm void PSVECAdd(const register Vec *vec1, const register Vec *vec2, register Vec *ret) { -#ifdef __MWERKS__ // clang-format off + // clang-format off nofralloc; psq_l FP2, 0(vec1), 0, 0; psq_l FP4, 0(vec2), 0, 0; @@ -28,12 +39,23 @@ asm void PSVECAdd(const register Vec *vec1, const register Vec *vec2, register V ps_add FP7, FP3, FP5; psq_st FP7, 8(ret), 1, 0; blr -#endif // clang-format on + // clang-format on +} +#endif + +void C_VECSubtract(const Vec *a, const Vec *b, Vec *c) { + ASSERTMSGLINE(0x9C, a, "VECSubtract(): NULL VecPtr 'a' "); + ASSERTMSGLINE(0x9D, b, "VECSubtract(): NULL VecPtr 'b' "); + ASSERTMSGLINE(0x9E, c, "VECSubtract(): NULL VecPtr 'a_b' "); + c->x = a->x - b->x; + c->y = a->y - b->y; + c->z = a->z - b->z; } +#ifdef GEKKO asm void PSVECSubtract(const register Vec *vec1, const register Vec *vec2, register Vec *ret) { -#ifdef __MWERKS__ // clang-format off + // clang-format off nofralloc; psq_l FP2, 0(vec1), 0, 0; psq_l FP4, 0(vec2), 0, 0; @@ -44,22 +66,9 @@ asm void PSVECSubtract(const register Vec *vec1, const register Vec *vec2, regis ps_sub FP7, FP3, FP5; psq_st FP7, 8(ret), 1, 0; blr -#endif // clang-format on -} - -asm void PSVECScale(register const Vec *src, register Vec *dst, register f32 scale) -{ -#ifdef __MWERKS__ // clang-format off - nofralloc - psq_l f0, 0(src), 0, 0 - psq_l f2, 8(src), 1, 0 - ps_muls0 f0, f0, f1 - psq_st f0, 0(dst), 0, 0 - ps_muls0 f0, f2, f1 - psq_st f0, 8(dst), 1, 0 - blr -#endif // clang-format on + // clang-format on } +#endif void C_VECScale(const Vec *src, Vec *dst, f32 scale) { @@ -71,9 +80,39 @@ void C_VECScale(const Vec *src, Vec *dst, f32 scale) dst->z = src->z * s; } +#ifdef GEKKO +asm void PSVECScale(register const Vec *src, register Vec *dst, register f32 scale) +{ +#// clang-format off + nofralloc + psq_l f0, 0(src), 0, 0 + psq_l f2, 8(src), 1, 0 + ps_muls0 f0, f0, f1 + psq_st f0, 0(dst), 0, 0 + ps_muls0 f0, f2, f1 + psq_st f0, 8(dst), 1, 0 + blr + // clang-format on +} +#endif + +void C_VECNormalize(const Vec *src, Vec *unit) { + f32 mag; + + ASSERTMSGLINE(0x127, src, "VECNormalize(): NULL VecPtr 'src' "); + ASSERTMSGLINE(0x128, unit, "VECNormalize(): NULL VecPtr 'unit' "); + mag = (src->z * src->z) + ((src->x * src->x) + (src->y * src->y)); + ASSERTMSGLINE(0x12D, 0.0f != mag, "VECNormalize(): zero magnitude vector "); + mag = 1.0f/ sqrtf(mag); + unit->x = src->x * mag; + unit->y = src->y * mag; + unit->z = src->z * mag; +} + +#ifdef GEKKO void PSVECNormalize(const register Vec *vec1, register Vec *ret) { -#ifdef __MWERKS__ // clang-format off + // clang-format off register f32 half = 0.5f; register f32 three = 3.0f; register f32 xx_zz, xx_yy; @@ -96,43 +135,60 @@ void PSVECNormalize(const register Vec *vec1, register Vec *ret) ps_muls0 FP3, FP3, ret_sqrt; psq_st FP3, 8(ret), 1, 0; } -#endif // clang-format on + // clang-format on +} +#endif + +f32 C_VECSquareMag(const Vec *v) { + f32 sqmag; + + ASSERTMSGLINE(0x182, v, "VECMag(): NULL VecPtr 'v' "); + + sqmag = v->z * v->z + ((v->x * v->x) + (v->y * v->y)); + return sqmag; } +#ifdef GEKKO asm f32 PSVECSquareMag(register const Vec *v) { -#ifdef __MWERKS__ // clang-format off + // clang-format off nofralloc psq_l f0, 0(v), 0, 0 ps_mul f0, f0, f0 lfs f1, 8(v) ps_madd f1, f1, f1, f0 ps_sum0 f1, f1, f0, f0 - blr -#endif // clang-format on + blr + // clang-format on +} +#endif + +f32 C_VECMag(const Vec *v) { + return sqrtf(C_VECSquareMag(v)); } +#ifdef GEKKO f32 PSVECMag(const register Vec *v) { register f32 v_xy, v_zz, square_mag; register f32 ret_mag, n_0, n_1; register f32 three, half, zero; -#ifdef __MWERKS__ // clang-format off + // clang-format off asm { psq_l v_xy, 0(v), 0, 0 ps_mul v_xy, v_xy, v_xy lfs v_zz, 8(v) ps_madd square_mag, v_zz, v_zz, v_xy } -#endif // clang-format on + // clang-format on half = 0.5f; -#ifdef __MWERKS__ // clang-format off + // clang-format off asm { ps_sum0 square_mag, square_mag, v_xy, v_xy frsqrte ret_mag, square_mag } -#endif // clang-format on + // clang-format on three = 3.0f; -#ifdef __MWERKS__ // clang-format off + // clang-format off asm { fmuls n_0, ret_mag, ret_mag fmuls n_1, ret_mag, half @@ -141,13 +197,24 @@ asm { fsel ret_mag, ret_mag, ret_mag, square_mag fmuls square_mag, square_mag, ret_mag } -#endif // clang-format on + // clang-format on return square_mag; } +#endif +f32 C_VECDotProduct(const Vec *a, const Vec *b) { + f32 dot; + + ASSERTMSGLINE(0x1D1, a, "VECDotProduct(): NULL VecPtr 'a' "); + ASSERTMSGLINE(0x1D2, b, "VECDotProduct(): NULL VecPtr 'b' "); + dot = (a->z * b->z) + ((a->x * b->x) + (a->y * b->y)); + return dot; +} + +#ifdef GEKKO asm f32 PSVECDotProduct(const register Vec *vec1, const register Vec *vec2) { -#ifdef __MWERKS__ // clang-format off + // clang-format off nofralloc; psq_l f2, 4(r3), 0, 0 /* qr0 */ psq_l f3, 4(r4), 0, 0 /* qr0 */ @@ -156,13 +223,30 @@ asm f32 PSVECDotProduct(const register Vec *vec1, const register Vec *vec2) psq_l f4, 0(r4), 0, 0 /* qr0 */ ps_madd f3, f5, f4, f2 ps_sum0 f1, f3, f2, f2 - blr -#endif // clang-format on + blr + // clang-format on +} +#endif + +void C_VECCrossProduct(const Vec *a, const Vec *b, Vec *axb) { + Vec vTmp; + + ASSERTMSGLINE(0x20F, a, "VECCrossProduct(): NULL VecPtr 'a' "); + ASSERTMSGLINE(0x210, b, "VECCrossProduct(): NULL VecPtr 'b' "); + ASSERTMSGLINE(0x211, axb, "VECCrossProduct(): NULL VecPtr 'axb' "); + + vTmp.x = (a->y * b->z) - (a->z * b->y); + vTmp.y = (a->z * b->x) - (a->x * b->z); + vTmp.z = (a->x * b->y) - (a->y * b->x); + axb->x = vTmp.x; + axb->y = vTmp.y; + axb->z = vTmp.z; } +#ifdef GEKKO asm void PSVECCrossProduct(register const Vec *a, register const Vec *b, register Vec *axb) { -#ifdef __MWERKS__ // clang-format off + // clang-format off nofralloc psq_l f1, 0(b), 0, 0 lfs f2, 8(a) @@ -178,9 +262,10 @@ asm void PSVECCrossProduct(register const Vec *a, register const Vec *b, registe psq_st f9, 0(axb), 1, 0 ps_neg f10, f10 psq_st f10, 4(axb), 0, 0 - blr -#endif // clang-format on + blr + // clang-format on } +#endif void C_VECHalfAngle(const Vec *a, const Vec *b, Vec *half) { @@ -229,8 +314,18 @@ void C_VECReflect(const Vec *src, const Vec *normal, Vec *dst) VECNormalize(dst, dst); } +f32 C_VECSquareDistance(const Vec *a, const Vec *b) { + Vec diff; + + diff.x = a->x - b->x; + diff.y = a->y - b->y; + diff.z = a->z - b->z; + return (diff.z * diff.z) + ((diff.x * diff.x) + (diff.y * diff.y)); +} + +#ifdef GEKKO asm f32 PSVECSquareDistance(register const Vec *a, register const Vec *b) { -#ifdef __MWERKS__ // clang-format off + // clang-format off nofralloc psq_l f0, 4(a), 0, 0 psq_l f1, 4(b), 0, 0 @@ -241,10 +336,16 @@ asm f32 PSVECSquareDistance(register const Vec *a, register const Vec *b) { ps_sub f0, f0, f1 ps_madd f1, f0, f0, f2 ps_sum0 f1, f1, f2, f2 - blr -#endif // clang-format on + blr + // clang-format on +} +#endif + +f32 C_VECDistance(const Vec *a, const Vec *b) { + return sqrtf(C_VECSquareDistance(a, b)); } +#ifdef GEKKO f32 PSVECDistance(register const Vec *a, register const Vec *b) { @@ -252,7 +353,7 @@ f32 PSVECDistance(register const Vec *a, register const Vec *b) register f32 three_c; register f32 dist; -#ifdef __MWERKS__ // clang-format off + // clang-format off asm { psq_l f0, 4(a), 0, 0 /* qr0 */ psq_l f1, 4(b), 0, 0 /* qr0 */ @@ -283,5 +384,6 @@ f32 PSVECDistance(register const Vec *a, register const Vec *b) } return dist; -#endif // clang-format on + // clang-format on } +#endif diff --git a/src/dolphin/os/OS.c b/src/dolphin/os/OS.c index 69843d73..72a66a95 100644 --- a/src/dolphin/os/OS.c +++ b/src/dolphin/os/OS.c @@ -19,14 +19,22 @@ extern char _db_stack_end[]; extern char *__OSResetSWInterruptHandler[]; +#ifdef TARGET_PC +vu16 __OSDeviceCode; +#else vu16 __OSDeviceCode : (OS_BASE_CACHED | 0x30E6); +#endif static DVDDriveInfo DriveInfo ATTRIBUTE_ALIGN(32); static DVDCommandBlock DriveBlock; static OSBootInfo *BootInfo; static u32 *BI2DebugFlag; static u32 *BI2DebugFlagHolder; +#ifdef _MSC_VER +BOOL __OSIsGcam = FALSE; +#else __declspec(weak) BOOL __OSIsGcam = FALSE; +#endif static f64 ZeroF; static f32 ZeroPS[2]; static BOOL AreWeInitialized = FALSE; @@ -56,6 +64,7 @@ void OSDefaultExceptionHandler(__OSException exception, OSContext *context); extern BOOL __DBIsExceptionMarked(__OSException); static void OSExceptionInit(void); +#ifdef __MWERKS__ /* clang-format off */ asm void __OSFPRInit(void) { @@ -143,6 +152,7 @@ SkipPairedSingles: blr } /* clang-format on */ +#endif u32 OSGetConsoleType() { @@ -155,8 +165,8 @@ u32 OSGetConsoleType() void *__OSSavedRegionStart; void *__OSSavedRegionEnd; -extern u32 BOOT_REGION_START : 0x812FDFF0; //(*(u32 *)0x812fdff0) -extern u32 BOOT_REGION_END : 0x812FDFEC; //(*(u32 *)0x812fdfec) +extern u32 BOOT_REGION_START AT_ADDRESS(0x812FDFF0); //(*(u32 *)0x812fdff0) +extern u32 BOOT_REGION_END AT_ADDRESS(0x812FDFEC); //(*(u32 *)0x812fdfec) void ClearArena(void) { @@ -477,6 +487,7 @@ static void OSExceptionInit(void) DBPrintf("Exceptions initialized...\n"); } +#ifdef __MWERKS__ static asm void __OSDBIntegrator(void) { /* clang-format off */ @@ -505,6 +516,7 @@ entry __OSDBJUMPEND /* clang-format on */ } +#endif __OSExceptionHandler __OSSetExceptionHandler(__OSException exception, __OSExceptionHandler handler) { @@ -519,6 +531,7 @@ __OSExceptionHandler __OSGetExceptionHandler(__OSException exception) return OSExceptionTable[exception]; } +#ifdef __MWERKS__ static asm void OSExceptionVector(void) { /* clang-format off */ @@ -603,8 +616,10 @@ entry __OSEVEnd nop /* clang-format on */ } +#endif void __OSUnhandledException(__OSException exception, OSContext *context, u32 dsisr, u32 dar); +#ifdef __MWERKS__ asm void OSDefaultExceptionHandler(register __OSException exception, register OSContext *context) { /* clang-format off */ @@ -631,6 +646,7 @@ void __OSPSInit(void) } // clang-format on } +#endif #define DI_CONFIG_IDX 0x9 #define DI_CONFIG_CONFIG_MASK 0xFF diff --git a/src/dolphin/os/OSAlloc.c b/src/dolphin/os/OSAlloc.c index 32515afd..86a7e015 100644 --- a/src/dolphin/os/OSAlloc.c +++ b/src/dolphin/os/OSAlloc.c @@ -1,6 +1,7 @@ #include #include #include +#include #define ALIGNMENT 32 @@ -137,6 +138,9 @@ static long DLSize(struct Cell *list) void *OSAllocFromHeap(int heap, unsigned long size) { +#ifdef TARGET_PC + return malloc(size); +#endif struct HeapDesc *hd; struct Cell *cell; struct Cell *newCell; @@ -151,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) { @@ -163,7 +167,6 @@ void *OSAllocFromHeap(int heap, unsigned long size) return NULL; } ASSERTMSG1(0x168, !((s32)cell & 0x1F), "OSAllocFromHeap(): heap is broken."); - ASSERTMSG1(0x169, cell->hd == NULL, "OSAllocFromHeap(): heap is broken."); leftoverSize = cell->size - size; if (leftoverSize < 0x40U) { @@ -201,12 +204,12 @@ void *OSAllocFixed(void **rstart, void **rend) void *end; void *cellEnd; - start = (void *)((*(u32 *)rstart) & ~((32) - 1)); - end = (void *)((*(u32 *)rend + 0x1FU) & ~((32) - 1)); + start = (void *)((*(uintptr_t *)rstart) & ~((32) - 1)); + end = (void *)((*(uintptr_t *)rend + 0x1FU) & ~((32) - 1)); ASSERTMSG1(0x1B0, HeapArray, "OSAllocFixed(): heap is not initialized."); - ASSERTMSG1(0x1B1, (u32)start < (u32)end, "OSAllocFixed(): invalid range."); - ASSERTMSG1(0x1B3, ((u32)ArenaStart <= (u32)start) && ((u32)end <= (u32)ArenaEnd), "OSAllocFixed(): invalid range."); + ASSERTMSG1(0x1B1, (uintptr_t)start < (uintptr_t)end, "OSAllocFixed(): invalid range."); + ASSERTMSG1(0x1B3, ((uintptr_t)ArenaStart <= (uintptr_t)start) && ((uintptr_t)start <= (uintptr_t)ArenaEnd), "OSAllocFixed(): invalid range."); for (i = 0; i < NumHeaps; i++) { hd = &HeapArray[i]; @@ -243,7 +246,7 @@ void *OSAllocFixed(void **rstart, void **rend) ASSERTMSG(0x1F3, MINOBJSIZE <= (char *)cellEnd - (char *)end); newCell = (struct Cell *)end; - newCell->size = (s32)((char *)cellEnd - (char *)end); + newCell->size = (uintptr_t)((char *)cellEnd - (char *)end); newCell->next = cell->next; if (newCell->next) { newCell->next->prev = newCell; @@ -290,13 +293,16 @@ void *OSAllocFixed(void **rstart, void **rend) ASSERTMSG(0x225, OFFSET(start, ALIGNMENT) == 0); ASSERTMSG(0x226, OFFSET(end, ALIGNMENT) == 0); ASSERTMSG(0x227, start < end); - *(u32 *)rstart = (u32)start; - *(u32 *)rend = (u32)end; - return (void *)*(u32 *)rstart; + *(uintptr_t *)rstart = (uintptr_t)start; + *(uintptr_t *)rend = (uintptr_t)end; + return (void *)*(uintptr_t *)rstart; } void OSFreeToHeap(int heap, void *ptr) { +#ifdef TARGET_PC + free(ptr); +#else struct HeapDesc *hd; struct Cell *cell; @@ -306,10 +312,10 @@ void OSFreeToHeap(int heap, void *ptr) ASSERTMSG1(0x241, HeapArray[heap].size >= 0, "OSFreeToHeap(): invalid heap handle."); cell = (void *)((u32)ptr - 0x20); hd = &HeapArray[heap]; - ASSERTMSG1(0x246, cell->hd == hd, "OSFreeToHeap(): invalid pointer."); ASSERTMSG1(0x247, DLLookup(hd->allocated, cell), "OSFreeToHeap(): invalid pointer."); hd->allocated = DLExtract(hd->allocated, cell); hd->free = DLInsert(hd->free, cell); +#endif } int OSSetCurrentHeap(int heap) @@ -331,8 +337,8 @@ void *OSInitAlloc(void *arenaStart, void *arenaEnd, int maxHeaps) struct HeapDesc *hd; ASSERTMSG1(0x283, maxHeaps > 0, "OSInitAlloc(): invalid number of heaps."); - ASSERTMSG1(0x285, (u32)arenaStart < (u32)arenaEnd, "OSInitAlloc(): invalid range."); - ASSERTMSG1(0x288, maxHeaps <= (((u32)arenaEnd - (u32)arenaStart) / 24U), "OSInitAlloc(): too small range."); + ASSERTMSG1(0x285, (uintptr_t)arenaStart < (uintptr_t)arenaEnd, "OSInitAlloc(): invalid range."); + ASSERTMSG1(0x288, maxHeaps <= (((uintptr_t)arenaEnd - (uintptr_t)arenaStart) / 24U), "OSInitAlloc(): too small range."); arraySize = maxHeaps * sizeof(struct HeapDesc); HeapArray = arenaStart; NumHeaps = maxHeaps; @@ -343,34 +349,34 @@ void *OSInitAlloc(void *arenaStart, void *arenaEnd, int maxHeaps) hd->free = hd->allocated = 0; } __OSCurrHeap = -1; - arenaStart = (void *)((u32)((char *)HeapArray + arraySize)); - arenaStart = (void *)(((u32)arenaStart + 0x1F) & 0xFFFFFFE0); + arenaStart = (void *)((uintptr_t)((char *)HeapArray + arraySize)); + arenaStart = (void *)(((uintptr_t)arenaStart + 0x1F) & ~0x1F); ArenaStart = arenaStart; - ArenaEnd = (void *)((u32)arenaEnd & 0xFFFFFFE0); - ASSERTMSG1(0x2A4, ((u32)ArenaEnd - (u32)ArenaStart) >= 0x40U, "OSInitAlloc(): too small range."); + ArenaEnd = (void *)((uintptr_t)arenaEnd & ~0x1F); + ASSERTMSG1(0x2A4, ((uintptr_t)ArenaEnd - (uintptr_t)ArenaStart) >= 0x40U, "OSInitAlloc(): too small range."); return arenaStart; } -int OSCreateHeap(void *start, void *end) +uintptr_t OSCreateHeap(void *start, void *end) { - int heap; + s32 heap; struct HeapDesc *hd; struct Cell *cell; ASSERTMSG1(0x2BD, HeapArray, "OSCreateHeap(): heap is not initialized."); - ASSERTMSG1(0x2BE, (u32)start < (u32)end, "OSCreateHeap(): invalid range."); + ASSERTMSG1(0x2BE, start < end, "OSCreateHeap(): invalid range."); - start = (void *)(((u32)start + 0x1FU) & ~((32) - 1)); - end = (void *)(((u32)end) & ~((32) - 1)); + start = (void *)(((uintptr_t)start + 0x1FU) & ~((32) - 1)); + end = (void *)(((uintptr_t)end) & ~((32) - 1)); - ASSERTMSG1(0x2C1, (u32)start < (u32)end, "OSCreateHeap(): invalid range."); - ASSERTMSG1(0x2C3, (u32)ArenaStart <= (u32)start && (u32)end <= (u32)ArenaEnd, "OSCreateHeap(): invalid range."); - ASSERTMSG1(0x2C5, ((u32)end - (u32)start) >= 0x40U, "OSCreateHeap(): too small range."); + ASSERTMSG1(0x2C1, (uintptr_t)start < (uintptr_t)end, "OSCreateHeap(): invalid range."); + ASSERTMSG1(0x2C3, (uintptr_t)ArenaStart <= (uintptr_t)start && (uintptr_t)end <= (uintptr_t)ArenaEnd, "OSCreateHeap(): invalid range."); + ASSERTMSG1(0x2C5, ((uintptr_t)end - (uintptr_t)start) >= 0x40U, "OSCreateHeap(): too small range."); for (heap = 0; heap < NumHeaps; heap++) { hd = &HeapArray[heap]; if (hd->size < 0) { - hd->size = (u32)end - (u32)start; + hd->size = (uintptr_t)end - (uintptr_t)start; cell = start; cell->prev = 0; cell->next = 0; @@ -481,12 +487,6 @@ unsigned long OSReferentSize(void *ptr) ASSERTMSG1(0x3BD, InRange(ptr, ArenaStart + HEADERSIZE, ArenaEnd), "OSReferentSize(): invalid pointer."); ASSERTMSG1(0x3BE, !OFFSET(ptr, 32), "OSReferentSize(): invalid pointer."); cell = (void *)((u32)ptr - HEADERSIZE); - ASSERTMSG1(0x3C2, cell->hd, "OSReferentSize(): invalid pointer."); - ASSERTMSG1(0x3C4, !(((u32)cell->hd - (u32)HeapArray) % 24), "OSReferentSize(): invalid pointer."); - ASSERTMSG1(0x3C6, ((u32)HeapArray <= (u32)cell->hd) && ((u32)cell->hd < (u32)((u32)HeapArray + (NumHeaps * 0x18))), - "OSReferentSize(): invalid pointer."); - ASSERTMSG1(0x3C7, cell->hd->size >= 0, "OSReferentSize(): invalid pointer."); - ASSERTMSG1(0x3C9, DLLookup(cell->hd->allocated, cell), "OSReferentSize(): invalid pointer."); return (long)((u32)cell->size - HEADERSIZE); } 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/dolphin/si/SIBios.c b/src/dolphin/si/SIBios.c index 0d34277a..005ca545 100644 --- a/src/dolphin/si/SIBios.c +++ b/src/dolphin/si/SIBios.c @@ -3,8 +3,8 @@ #include #include - extern OSTime __OSGetSystemTime(); +extern u32 VIGetCurrentLine(void); typedef struct SIControl { s32 chan; diff --git a/src/game/ClusterExec.c b/src/game/ClusterExec.c index 7a25f91d..e06e7eaa 100644 --- a/src/game/ClusterExec.c +++ b/src/game/ClusterExec.c @@ -3,7 +3,8 @@ #include "game/hsfmotion.h" #include "game/sprite.h" -float GetClusterCurve(HsfTrack *arg0, float arg1) { +float GetClusterCurve(HsfTrack *arg0, float arg1) +{ float *var_r30; switch (arg0->curveType) { @@ -18,7 +19,8 @@ float GetClusterCurve(HsfTrack *arg0, float arg1) { return 0.0f; } -float GetClusterWeightCurve(HsfTrack *arg0, float arg1) { +float GetClusterWeightCurve(HsfTrack *arg0, float arg1) +{ float *var_r30; switch (arg0->curveType) { @@ -33,7 +35,8 @@ float GetClusterWeightCurve(HsfTrack *arg0, float arg1) { return 0.0f; } -void SetClusterMain(HsfCluster *arg0) { +void SetClusterMain(HsfCluster *arg0) +{ float var_f30; float var_f31; s32 temp_r24; @@ -53,51 +56,53 @@ void SetClusterMain(HsfCluster *arg0) { temp_r30 = *arg0->vertex; var_f30 = 0.0f; for (i = 0; i < arg0->vertexCnt; i++) { - var_f30 += arg0->unk14[i]; + var_f30 += arg0->weight[i]; } for (i = 0; i < temp_r27->count; i++, var_r28++) { temp_r29 = *var_r28; - Vertextop[temp_r29].x = ((Vec*) temp_r30->data)[i].x; - Vertextop[temp_r29].y = ((Vec*) temp_r30->data)[i].y; - Vertextop[temp_r29].z = ((Vec*) temp_r30->data)[i].z; + Vertextop[temp_r29].x = ((Vec *)temp_r30->data)[i].x; + Vertextop[temp_r29].y = ((Vec *)temp_r30->data)[i].y; + Vertextop[temp_r29].z = ((Vec *)temp_r30->data)[i].z; } for (i = 1; i < arg0->vertexCnt; i++) { temp_r30 = arg0->vertex[i]; var_r28 = temp_r27->vertex; - var_f31 = arg0->unk14[i]; + var_f31 = arg0->weight[i]; if (var_f31 < 0.0f) { var_f31 = 0.0f; - } else if (var_f30 > 1.0f) { + } + else if (var_f30 > 1.0f) { var_f31 /= var_f30; } for (j = 0; j < temp_r27->count; j++, var_r28++) { temp_r29 = *var_r28; - Vertextop[temp_r29].x += var_f31 * (((Vec*) temp_r30->data)[j].x - Vertextop[temp_r29].x); - Vertextop[temp_r29].y += var_f31 * (((Vec*) temp_r30->data)[j].y - Vertextop[temp_r29].y); - Vertextop[temp_r29].z += var_f31 * (((Vec*) temp_r30->data)[j].z - Vertextop[temp_r29].z); + Vertextop[temp_r29].x += var_f31 * (((Vec *)temp_r30->data)[j].x - Vertextop[temp_r29].x); + Vertextop[temp_r29].y += var_f31 * (((Vec *)temp_r30->data)[j].y - Vertextop[temp_r29].y); + Vertextop[temp_r29].z += var_f31 * (((Vec *)temp_r30->data)[j].z - Vertextop[temp_r29].z); } } return; } - temp_r24 = arg0->unk10; + temp_r24 = arg0->index; var_r23 = temp_r24 + 1; if (var_r23 >= arg0->vertexCnt) { var_r23 = temp_r24; } - var_f31 = arg0->unk10 - temp_r24; + var_f31 = arg0->index - temp_r24; temp_r30 = arg0->vertex[temp_r24]; temp_r25 = arg0->vertex[var_r23]; var_r28 = temp_r27->vertex; for (i = 0; i < temp_r27->count; i++, var_r28++) { temp_r29 = *var_r28; - Vertextop[temp_r29].x = ((Vec*) temp_r30->data)[i].x + var_f31 * (((Vec*) temp_r25->data)[i].x - ((Vec*) temp_r30->data)[i].x); - Vertextop[temp_r29].y = ((Vec*) temp_r30->data)[i].y + var_f31 * (((Vec*) temp_r25->data)[i].y - ((Vec*) temp_r30->data)[i].y); - Vertextop[temp_r29].z = ((Vec*) temp_r30->data)[i].z + var_f31 * (((Vec*) temp_r25->data)[i].z - ((Vec*) temp_r30->data)[i].z); + Vertextop[temp_r29].x = ((Vec *)temp_r30->data)[i].x + var_f31 * (((Vec *)temp_r25->data)[i].x - ((Vec *)temp_r30->data)[i].x); + Vertextop[temp_r29].y = ((Vec *)temp_r30->data)[i].y + var_f31 * (((Vec *)temp_r25->data)[i].y - ((Vec *)temp_r30->data)[i].y); + Vertextop[temp_r29].z = ((Vec *)temp_r30->data)[i].z + var_f31 * (((Vec *)temp_r25->data)[i].z - ((Vec *)temp_r30->data)[i].z); } } } -void ClusterProc(ModelData *arg0) { +void ClusterProc(ModelData *arg0) +{ s32 temp_r24; s32 i; s32 j; @@ -112,7 +117,7 @@ void ClusterProc(ModelData *arg0) { temp_r24 = arg0->unk_10[i]; if (temp_r24 != -1) { temp_r22 = &Hu3DMotion[temp_r24]; - temp_r27 = temp_r22->unk_04; + temp_r27 = temp_r22->hsfData; temp_r23 = arg0->hsfData; var_r29 = temp_r27->cluster; for (j = 0; j < temp_r27->clusterCnt; j++, var_r29++) { @@ -122,9 +127,9 @@ void ClusterProc(ModelData *arg0) { Vertextop = temp_r31->data.vertex->data; if (temp_r31->data.cenvCnt) { for (k = 0; k < temp_r31->data.vertex->count; k++) { - Vertextop[k].x = ((Vec*) temp_r31->data.file[0])[k].x; - Vertextop[k].y = ((Vec*) temp_r31->data.file[0])[k].y; - Vertextop[k].z = ((Vec*) temp_r31->data.file[0])[k].z; + Vertextop[k].x = ((Vec *)temp_r31->data.vtxtop)[k].x; + Vertextop[k].y = ((Vec *)temp_r31->data.vtxtop)[k].y; + Vertextop[k].z = ((Vec *)temp_r31->data.vtxtop)[k].z; } } SetClusterMain(var_r29); @@ -136,7 +141,8 @@ void ClusterProc(ModelData *arg0) { } } -void ClusterMotionExec(ModelData *arg0) { +void ClusterMotionExec(ModelData *arg0) +{ float temp_f31; s32 i; s32 j; @@ -148,12 +154,14 @@ void ClusterMotionExec(ModelData *arg0) { HsfTrack *var_r30; MotionData *var_r23; +#ifndef NON_MATCHING var_r31 = temp_r27->track; +#endif for (i = 0; i < 4; i++) { if (arg0->unk_10[i] != -1) { var_r20 = arg0->unk_10[i]; var_r23 = &Hu3DMotion[var_r20]; - temp_r28 = var_r23->unk_04; + temp_r28 = var_r23->hsfData; temp_r27 = temp_r28->motion; var_r31 = temp_r27->track; temp_f31 = arg0->unk_A4[i]; @@ -161,12 +169,12 @@ void ClusterMotionExec(ModelData *arg0) { switch (var_r31->type) { case 5: temp_r26 = &temp_r28->cluster[var_r31->target_s16]; - temp_r26->unk10 = GetClusterCurve(var_r31, temp_f31); + temp_r26->index = GetClusterCurve(var_r31, temp_f31); break; case 6: var_r30 = var_r31; temp_r26 = &temp_r28->cluster[var_r30->target_s16]; - temp_r26->unk14[var_r30->unk04] = GetClusterCurve(var_r30, temp_f31); + temp_r26->weight[var_r30->unk04] = GetClusterCurve(var_r30, temp_f31); break; } } diff --git a/src/game/EnvelopeExec.c b/src/game/EnvelopeExec.c index 53a9d990..2a890986 100644 --- a/src/game/EnvelopeExec.c +++ b/src/game/EnvelopeExec.c @@ -36,7 +36,7 @@ void InitEnvelope(HsfData *arg0) { var_r31 = arg0->object; for (Meshcnt = i = 0; i < arg0->objectCnt; i++, var_r31++) { if (var_r31->type == 2) { - if (var_r31->data.file[0]) { + if (var_r31->data.vtxtop) { spC = var_r31->data.vertex; sp8 = var_r31->data.normal; Meshcnt++; @@ -76,7 +76,7 @@ void InitEnvelope(HsfData *arg0) { nObj = temp_r28->count; nMesh = temp_r28->base_idx; } - PSMTXIdentity(sp10); + MTXIdentity(sp10); SetMtx(arg0->root, sp10); SetRevMtx(); } @@ -89,19 +89,19 @@ static void SetEnvelopMtx(HsfObject *arg0, HsfObject *arg1, Mtx arg2) { s32 var_r29; s32 i; - PSMTXTrans(spC, arg1->data.curr.pos.x, arg1->data.curr.pos.y, arg1->data.curr.pos.z); - PSMTXConcat(arg2, spC, sp3C); + MTXTrans(spC, arg1->data.curr.pos.x, arg1->data.curr.pos.y, arg1->data.curr.pos.z); + MTXConcat(arg2, spC, sp3C); if (arg1->data.curr.rot.z) { - PSMTXRotRad(sp6C, 'z', MTXDegToRad(arg1->data.curr.rot.z)); - PSMTXConcat(sp3C, sp6C, sp3C); + MTXRotRad(sp6C, 'z', MTXDegToRad(arg1->data.curr.rot.z)); + MTXConcat(sp3C, sp6C, sp3C); } if (arg1->data.curr.rot.y) { - PSMTXRotRad(sp6C, 'y', MTXDegToRad(arg1->data.curr.rot.y)); - PSMTXConcat(sp3C, sp6C, sp3C); + MTXRotRad(sp6C, 'y', MTXDegToRad(arg1->data.curr.rot.y)); + MTXConcat(sp3C, sp6C, sp3C); } if (arg1->data.curr.rot.x) { - PSMTXRotRad(sp6C, 'x', MTXDegToRad(arg1->data.curr.rot.x)); - PSMTXConcat(sp3C, sp6C, sp3C); + MTXRotRad(sp6C, 'x', MTXDegToRad(arg1->data.curr.rot.x)); + MTXConcat(sp3C, sp6C, sp3C); } if (arg1->data.curr.scale.x != 1.0f) { sp3C[0][0] *= arg1->data.curr.scale.x; @@ -119,7 +119,7 @@ static void SetEnvelopMtx(HsfObject *arg0, HsfObject *arg1, Mtx arg2) { sp3C[2][2] *= arg1->data.curr.scale.z; } var_r29 = arg1 - arg0; - PSMTXCopy(sp3C, MtxTop[nMesh + var_r29]); + MTXCopy(sp3C, MtxTop[nMesh + var_r29]); for (i = 0; i < arg1->data.childrenCount; i++) { SetEnvelopMtx(arg0, arg1->data.children[i], sp3C); } @@ -136,7 +136,7 @@ void EnvelopeProc(HsfData *arg0) { nObj = temp_r31->count; nMesh = temp_r31->base_idx; temp_r29 = arg0->root; - PSMTXIdentity(sp8); + MTXIdentity(sp8); SetEnvelopMtx(arg0->object, temp_r29, sp8); SetEnvelopMain(arg0); } @@ -167,23 +167,23 @@ static void SetEnvelopMain(HsfData *arg0) { var_r31 = arg0->object; for (Meshno = i = 0; i < arg0->objectCnt; i++, var_r31++) { if (var_r31->type == 2) { - PSMTXInverse(MtxTop[&var_r31[nMesh] - arg0->object], MtxTop[Meshno]); + MTXInverse(MtxTop[&var_r31[nMesh] - arg0->object], MtxTop[Meshno]); temp_r30 = var_r31->data.vertex; temp_r28 = var_r31->data.normal; if (var_r31->data.unk120[0] != 0) { Vertextop = temp_r30->data; } else { - Vertextop = var_r31->data.file[0]; + Vertextop = (Vec*)var_r31->data.vtxtop; } vtxenv = temp_r30->data; - normtop = var_r31->data.file[1]; + normtop = (Vec*)var_r31->data.normtop; normenv = temp_r28->data; var_r25 = var_r31->data.cenv; for (j = 0; j < var_r31->data.cenvCnt; j++, var_r25++) { SetEnvelop(var_r25); } sp10 = temp_r30->data; - spC = var_r31->data.file[0]; + spC = var_r31->data.vtxtop; sp8 = temp_r30->data; DCStoreRangeNoSync(normenv, temp_r28->count * sizeof(Vec)); DCStoreRangeNoSync(vtxenv, temp_r30->count * sizeof(Vec)); @@ -233,37 +233,37 @@ static void SetEnvelop(HsfCenv *arg0) { temp_r31 = &Vertextop[temp_r21]; temp_r22 = &normenv[temp_r18]; temp_r26 = &normtop[temp_r18]; - PSMTXConcat(MtxTop[nMesh + var_r27->target], MtxTop[nMesh + nObj + nObj * Meshno + var_r27->target], sp140); - PSMTXConcat(MtxTop[Meshno], sp140, sp1A0); + MTXConcat(MtxTop[nMesh + var_r27->target], MtxTop[nMesh + nObj + nObj * Meshno + var_r27->target], sp140); + MTXConcat(MtxTop[Meshno], sp140, sp1A0); Hu3DMtxScaleGet(&sp1A0[0], &sp14); if (sp14.x != 1.0f || sp14.y != 1.0f || sp14.z != 1.0f) { - PSMTXScale(spE0, 1.0 / sp14.x, 1.0 / sp14.y, 1.0 / sp14.z); - PSMTXConcat(spE0, sp1A0, sp170); - PSMTXInvXpose(sp170, sp170); + MTXScale(spE0, 1.0 / sp14.x, 1.0 / sp14.y, 1.0 / sp14.z); + MTXConcat(spE0, sp1A0, sp170); + MTXInvXpose(sp170, sp170); } else { - PSMTXInvXpose(sp1A0, sp170); + MTXInvXpose(sp1A0, sp170); } if (var_r27->posCnt == 1) { - PSMTXMultVec(sp1A0, temp_r31, temp_r28); - PSMTXMultVec(sp170, temp_r26, temp_r22); + MTXMultVec(sp1A0, temp_r31, temp_r28); + MTXMultVec(sp170, temp_r26, temp_r22); } else if (var_r27->posCnt <= 6) { - PSMTXMultVecArray(sp1A0, temp_r31, temp_r28, var_r27->posCnt); - PSMTXMultVecArray(sp170, temp_r26, temp_r22, var_r27->normalCnt); + MTXMultVecArray(sp1A0, temp_r31, temp_r28, var_r27->posCnt); + MTXMultVecArray(sp170, temp_r26, temp_r22, var_r27->normalCnt); } else { - PSMTXReorder(sp1A0, (ROMtxPtr) sp140); - PSMTXReorder(sp170, (ROMtxPtr) sp110); - PSMTXROMultVecArray((ROMtxPtr) sp140, temp_r31, temp_r28, var_r27->posCnt); - PSMTXROMultVecArray((ROMtxPtr) sp110, temp_r26, temp_r22, var_r27->normalCnt); + MTXReorder(sp1A0, (ROMtxPtr) sp140); + MTXReorder(sp170, (ROMtxPtr) sp110); + MTXROMultVecArray((ROMtxPtr) sp140, temp_r31, temp_r28, var_r27->posCnt); + MTXROMultVecArray((ROMtxPtr) sp110, temp_r26, temp_r22, var_r27->normalCnt); } } var_r20 = arg0->dualData; for (i = 0; i < arg0->dualCount; i++, var_r20++) { spC = var_r20->target1; sp8 = var_r20->target2; - PSMTXConcat(MtxTop[nMesh + spC], MtxTop[nMesh + nObj + nObj * Meshno + spC], sp140); - PSMTXConcat(MtxTop[Meshno], sp140, sp1A0); - PSMTXConcat(MtxTop[nMesh + sp8], MtxTop[nMesh + nObj + nObj * Meshno + sp8], sp140); - PSMTXConcat(MtxTop[Meshno], sp140, (float (*)[4]) &spB0[0]); + MTXConcat(MtxTop[nMesh + spC], MtxTop[nMesh + nObj + nObj * Meshno + spC], sp140); + MTXConcat(MtxTop[Meshno], sp140, sp1A0); + MTXConcat(MtxTop[nMesh + sp8], MtxTop[nMesh + nObj + nObj * Meshno + sp8], sp140); + MTXConcat(MtxTop[Meshno], sp140, (float (*)[4]) &spB0[0]); var_r30 = var_r20->weight; for (j = 0; j < var_r20->weightCnt; j++, var_r30++) { temp_r18 = var_r30->normal; @@ -316,32 +316,32 @@ static void SetEnvelop(HsfCenv *arg0) { var_r29[2][2] = sp110[2][2] + sp140[2][2]; var_r29[2][3] = sp110[2][3] + sp140[2][3]; if (var_r29 == sp50) { - PSMTXCopy(sp50, sp80); + MTXCopy(sp50, sp80); } Hu3DMtxScaleGet(&sp80[0], &sp14); if (sp14.x != 1.0f || sp14.y != 1.0f || sp14.z != 1.0f) { - PSMTXScale(spE0, 1.0 / sp14.x, 1.0 / sp14.y, 1.0 / sp14.z); - PSMTXConcat(spE0, sp80, sp110); - PSMTXInvXpose(sp110, sp110); + MTXScale(spE0, 1.0 / sp14.x, 1.0 / sp14.y, 1.0 / sp14.z); + MTXConcat(spE0, sp80, sp110); + MTXInvXpose(sp110, sp110); } else { - PSMTXInvXpose(sp80, sp110); + MTXInvXpose(sp80, sp110); } if (var_r30->posCnt == 1) { - PSMTXMultVec(sp80, temp_r31, temp_r28); + MTXMultVec(sp80, temp_r31, temp_r28); } else if (var_r30->posCnt <= 6) { - PSMTXMultVecArray(sp80, temp_r31, temp_r28, var_r30->posCnt); + MTXMultVecArray(sp80, temp_r31, temp_r28, var_r30->posCnt); } else { - PSMTXReorder(sp80, (ROMtxPtr) sp140); - PSMTXROMultVecArray((ROMtxPtr) sp140, temp_r31, temp_r28, var_r30->posCnt); + MTXReorder(sp80, (ROMtxPtr) sp140); + MTXROMultVecArray((ROMtxPtr) sp140, temp_r31, temp_r28, var_r30->posCnt); } if (var_r30->normalCnt != 0) { if (var_r30->normalCnt == 1) { - PSMTXMultVec(sp110, temp_r26, temp_r22); + MTXMultVec(sp110, temp_r26, temp_r22); } else if (var_r30->normalCnt <= 6) { - PSMTXMultVecArray(sp110, temp_r26, temp_r22, var_r30->normalCnt); + MTXMultVecArray(sp110, temp_r26, temp_r22, var_r30->normalCnt); } else { - PSMTXReorder(sp110, (ROMtxPtr) sp140); - PSMTXROMultVecArray((ROMtxPtr) sp140, temp_r26, temp_r22, var_r30->normalCnt); + MTXReorder(sp110, (ROMtxPtr) sp140); + MTXROMultVecArray((ROMtxPtr) sp140, temp_r26, temp_r22, var_r30->normalCnt); } } } @@ -359,11 +359,11 @@ static void SetEnvelop(HsfCenv *arg0) { sp20.x = sp20.y = sp20.z = 0.0f; sp10 = 0; for (j = 0; j < var_r19->weightCnt; j++, var_r25++) { - PSMTXConcat(MtxTop[nMesh + var_r25->target], MtxTop[nMesh + nObj + nObj * Meshno + var_r25->target], sp1A0); - PSMTXConcat(MtxTop[Meshno], sp1A0, sp1A0); - PSMTXInvXpose(sp1A0, sp170); - PSMTXMultVec(sp1A0, temp_r31, &sp44); - PSMTXMultVec(sp170, temp_r26, &sp2C); + MTXConcat(MtxTop[nMesh + var_r25->target], MtxTop[nMesh + nObj + nObj * Meshno + var_r25->target], sp1A0); + MTXConcat(MtxTop[Meshno], sp1A0, sp1A0); + MTXInvXpose(sp1A0, sp170); + MTXMultVec(sp1A0, temp_r31, &sp44); + MTXMultVec(sp170, temp_r26, &sp2C); sp44.x = var_r25->value * (sp44.x - temp_r31->x); sp44.y = var_r25->value * (sp44.y - temp_r31->y); sp44.z = var_r25->value * (sp44.z - temp_r31->z); @@ -410,18 +410,18 @@ static void SetMtx(HsfObject *arg0, Mtx arg1) { arg0->data.base.scale.y = temp_r3->transform.scale.y; arg0->data.base.scale.z = temp_r3->transform.scale.z; } - PSMTXTrans(spFC, arg0->data.base.pos.x, arg0->data.base.pos.y, arg0->data.base.pos.z); - PSMTXScale(spCC, arg0->data.base.scale.x, arg0->data.base.scale.y, arg0->data.base.scale.z); - PSMTXConcat(arg1, spFC, spFC); - PSMTXRotRad(sp9C, 'z', MTXDegToRad(arg0->data.base.rot.z)); - PSMTXConcat(spFC, sp9C, spFC); - PSMTXRotRad(sp9C, 'y', MTXDegToRad(arg0->data.base.rot.y)); - PSMTXConcat(spFC, sp9C, spFC); - PSMTXRotRad(sp9C, 'x', MTXDegToRad(arg0->data.base.rot.x)); - PSMTXConcat(spFC, sp9C, spFC); - PSMTXConcat(spFC, spCC, spFC); + MTXTrans(spFC, arg0->data.base.pos.x, arg0->data.base.pos.y, arg0->data.base.pos.z); + MTXScale(spCC, arg0->data.base.scale.x, arg0->data.base.scale.y, arg0->data.base.scale.z); + MTXConcat(arg1, spFC, spFC); + MTXRotRad(sp9C, 'z', MTXDegToRad(arg0->data.base.rot.z)); + MTXConcat(spFC, sp9C, spFC); + MTXRotRad(sp9C, 'y', MTXDegToRad(arg0->data.base.rot.y)); + MTXConcat(spFC, sp9C, spFC); + MTXRotRad(sp9C, 'x', MTXDegToRad(arg0->data.base.rot.x)); + MTXConcat(spFC, sp9C, spFC); + MTXConcat(spFC, spCC, spFC); temp_r25 = arg0 - objtop; - PSMTXCopy(spFC, MtxTop[nMesh + temp_r25]); + MTXCopy(spFC, MtxTop[nMesh + temp_r25]); for (i = 0; i < arg0->data.childrenCount; i++) { SetMtx(arg0->data.children[i], spFC); } @@ -438,12 +438,12 @@ static void SetRevMtx(void) { var_r29 = CurHsf->object; for (var_r28 = i = 0; i < CurHsf->objectCnt; i++, var_r29++) { if (var_r29->type == 2) { - PSMTXCopy(MtxTop[nMesh + i], sp8); + MTXCopy(MtxTop[nMesh + i], sp8); for (var_r30 = 0; var_r30 < CurHsf->objectCnt; var_r30++) { - PSMTXInverse(MtxTop[nMesh + var_r30], sp38); - PSMTXConcat(sp38, sp8, MtxTop[nMesh + nObj + nObj * var_r28 + var_r30]); + MTXInverse(MtxTop[nMesh + var_r30], sp38); + MTXConcat(sp38, sp8, MtxTop[nMesh + nObj + nObj * var_r28 + var_r30]); } - PSMTXInverse(MtxTop[nMesh + i], sp8); + MTXInverse(MtxTop[nMesh + i], sp8); var_r28++; } } diff --git a/src/game/THPDraw.c b/src/game/THPDraw.c index 8290c4ee..6a9c2d26 100755 --- a/src/game/THPDraw.c +++ b/src/game/THPDraw.c @@ -106,4 +106,9 @@ void THPGXYuv2RgbDraw(u32 *yImage, u32 *uImage, u32 *vImage, s16 x, s16 y, s16 t GXPosition3s16(x, y + polyHeight, 0); GXTexCoord2s16(0, 1); GXEnd(); +#ifdef TARGET_PC + GXDestroyTexObj(&sp54); + GXDestroyTexObj(&sp34); + GXDestroyTexObj(&sp14); +#endif } diff --git a/src/game/armem.c b/src/game/armem.c index 66142f66..e051375a 100644 --- a/src/game/armem.c +++ b/src/game/armem.c @@ -1,6 +1,8 @@ #include "game/armem.h" #include "game/data.h" +#include + typedef struct armem_block { /* 0x00 */ u8 flag; /* 0x02 */ u16 dir; @@ -39,8 +41,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; @@ -209,7 +216,7 @@ u32 HuAR_DVDtoARAM(u32 dir) { block = HuARInfoGet(amemptr); block->dir = (dir >> 16); arqCnt++; - ARQPostRequest(&arqReq, 0x1234, 0, 0, (u32) stat->dir, amemptr, DirDataSize, ArqCallBack); + ARQPostRequest(&arqReq, 0x1234, 0, 0, (uintptr_t) stat->dir, amemptr, DirDataSize, ArqCallBack); OSReport("ARAM Trans %x\n", amemptr); while (HuARDMACheck()); HuDataDirClose(dir); @@ -260,7 +267,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,13 +283,13 @@ 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; } -static void ArqCallBackAM(u32 pointerToARQRequest) { +static void ArqCallBackAM(uintptr_t pointerToARQRequest) { ARQueReq *req_ptr = (ARQueReq*) pointerToARQRequest; arqCnt--; @@ -318,6 +329,12 @@ void HuARDirFree(u32 dir) { } } +#ifdef TARGET_PC +#define DIR_DATA (dir_data_pc) +#else +#define DIR_DATA (dir_data) +#endif + void *HuAR_ARAMtoMRAMFileRead(u32 dir, u32 num, HeapID heap) { s32 *dir_data; void *dst; @@ -326,6 +343,10 @@ void *HuAR_ARAMtoMRAMFileRead(u32 dir, u32 num, HeapID heap) { s32 count; s32 size; u32 amemptr; +#ifdef TARGET_PC + s32 dir_data_pc[2]; + s32 i; +#endif if ((amemptr = HuARDirCheck(dir)) == 0) { OSReport("Error: data none on ARAM %0x\n", dir); @@ -333,19 +354,25 @@ void *HuAR_ARAMtoMRAMFileRead(u32 dir, u32 num, HeapID heap) { return 0; } DCInvalidateRange(&preLoadBuf, sizeof(preLoadBuf)); - amem_src = amemptr + (u32)((u32)(((u16)dir + 1) * 4) & 0xFFFFFFFE0); + amem_src = amemptr + (u32)((((dir & 0xFFFF) + 1) * 4) & 0xFFFFFFFE0); arqCnt++; - ARQPostRequest(&ARQueBuf[arqIdx].req, 0x1234, 1, 0, amem_src, (u32) &preLoadBuf, sizeof(preLoadBuf), ArqCallBackAMFileRead); + ARQPostRequest(&ARQueBuf[arqIdx].req, 0x1234, 1, 0, amem_src, (uintptr_t) &preLoadBuf, sizeof(preLoadBuf), ArqCallBackAMFileRead); arqIdx++; arqIdx &= 0xF; while (HuARDMACheck()); dir_data = &preLoadBuf[(dir + 1) & 7]; - count = dir_data[0]; +#ifdef TARGET_PC + for (i = 0; i < 2; i++) { + dir_data_pc[i] = dir_data[i]; + byteswap_s32(&dir_data_pc[i]); + } +#endif + count = DIR_DATA[0]; amem_src = amemptr + (u32)(count & 0xFFFFFFFE0); - if (dir_data[1] - count < 0) { + if (DIR_DATA[1] - count < 0) { size = (HuARSizeGet(amemptr) - count + 0x3F) & 0xFFFFFFFE0; } else { - size = (dir_data[1] - count + 0x3F) & 0xFFFFFFFE0; + size = (DIR_DATA[1] - count + 0x3F) & 0xFFFFFFFE0; } dvd_data = HuMemDirectMalloc(HEAP_DVD, size); if (!dvd_data) { @@ -354,20 +381,28 @@ void *HuAR_ARAMtoMRAMFileRead(u32 dir, u32 num, HeapID heap) { DCFlushRangeNoSync(dvd_data, size); arqCnt++; PPCSync(); - ARQPostRequest(&ARQueBuf[arqIdx].req, 0x1234, 1, 0, amem_src, (u32) dvd_data, (u32) size, ArqCallBackAMFileRead); + ARQPostRequest(&ARQueBuf[arqIdx].req, 0x1234, 1, 0, amem_src, (uintptr_t) dvd_data, (u32) size, ArqCallBackAMFileRead); arqIdx++; arqIdx &= 0xF; while (HuARDMACheck()); dir_data = (s32*) ((u8*) dvd_data + (count & 0x1F)); - dst = HuMemDirectMallocNum(heap, (dir_data[0] + 1) & ~1, num); +#ifdef TARGET_PC + for (i = 0; i < 2; i++) { + dir_data_pc[i] = dir_data[i]; + byteswap_s32(&dir_data_pc[i]); + } +#endif + dst = HuMemDirectMallocNum(heap, (DIR_DATA[0] + 1) & ~1, num); if (!dst) { return 0; } - HuDecodeData(&dir_data[2], dst, dir_data[0], dir_data[1]); + HuDecodeData(&dir_data[2], dst, DIR_DATA[0], DIR_DATA[1]); HuMemDirectFree(dvd_data); return dst; } +#undef DIR_DATA + static void ArqCallBackAMFileRead(u32 pointerToARQRequest) { arqCnt--; (void)pointerToARQRequest; // required to match (return?) 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 2ba67445..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; @@ -478,7 +480,7 @@ static void UpdateExplode(omObjData *arg0) { break; case 2: BoardCameraRotGet(&sp8); - PSMTXRotRad(sp20, 'x', MTXDegToRad(sp8.x + 10.0f)); + MTXRotRad(sp20, 'x', MTXDegToRad(sp8.x + 10.0f)); BoardModelMtxSet(temp_r30->unk02, &sp20); BoardModelRotSet(temp_r30->unk02, 0.0f, 0.0f, 0.0f); sp14.x = arg0->scale.x; 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 60ef9620..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); @@ -47,7 +49,7 @@ static s8 itemUse = -1; #define BOARD_ITEM_ITEM_BAG 13 #define BOARD_ITEMS_END BOARD_ITEM_ITEM_BAG -static s8 comItemPreferTbl[CHARNO_MAX ][SHOP_ITEMS_END] = { +static s8 comItemPreferTbl[GW_CHARACTER_MAX][SHOP_ITEMS_END] = { { //Mario BOARD_ITEM_MAGIC_LAMP, BOARD_ITEM_BOOS_CRYSTAL_BALL, 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 d2341c9c..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; @@ -1035,7 +1042,7 @@ static void ExecItemSwap(void) } BoardModelRotGet(suitMdl, &sp3C); Hu3DCameraSet(0, sp108); - PSMTXInverse(sp108, spD8); + MTXInverse(sp108, spD8); Hu3DMtxRotGet(spD8, &sp48); sp3C.x = sp48.x; for (var_r31 = 0; var_r31 < var_r28 / 2; var_r31++) { 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 f64992f4..7698cdea 100755 --- a/src/game/board/lottery.c +++ b/src/game/board/lottery.c @@ -1,5 +1,14 @@ #include "game/board/lottery.h" #include "game/audio.h" +#include "game/board/audio.h" +#include "game/board/com.h" +#include "game/board/main.h" +#include "game/board/model.h" +#include "game/board/player.h" +#include "game/board/space.h" +#include "game/board/tutorial.h" +#include "game/board/ui.h" +#include "game/board/window.h" #include "game/chrman.h" #include "game/data.h" #include "game/esprite.h" @@ -11,19 +20,14 @@ #include "game/pad.h" #include "game/process.h" #include "game/sprite.h" -#include "game/board/audio.h" -#include "game/board/com.h" -#include "game/board/main.h" -#include "game/board/model.h" -#include "game/board/player.h" -#include "game/board/space.h" -#include "game/board/tutorial.h" -#include "game/board/ui.h" -#include "game/board/window.h" #include "ext_math.h" #include "stdlib.h" +#ifndef __MWERKS__ +#include +#endif + typedef struct { struct { u8 unk00_field0 : 1; @@ -109,104 +113,58 @@ static s16 ballMdl[4] = { -1, -1, -1, -1 }; static s16 loseMot = -1; static s16 ticketSprGrp = -1; -static s8 comInputDraw1[][2] = { - { 0x0B, 0xF8 }, { 0x2B, 0xDD }, { 0x2A, 0xDC }, { 0x2B, 0xDC }, - { 0x2B, 0xDC }, { 0x29, 0xDB }, { 0x24, 0xD6 }, { 0x02, 0xE8 }, - { 0x00, 0x00 }, { 0xFC, 0x02 }, { 0xD8, 0x27 }, { 0xD8, 0x28 }, - { 0xD8, 0x28 }, { 0xD8, 0x27 }, { 0xDA, 0x29 }, { 0xDE, 0x2C }, - { 0xE4, 0x31 }, { 0xF0, 0x3A }, { 0x00, 0x3C }, { 0x06, 0x3A }, - { 0x1B, 0x32 }, { 0x23, 0x2B }, { 0x24, 0x2A }, { 0x25, 0x29 }, - { 0x26, 0x29 }, { 0x28, 0x27 }, { 0x28, 0x27 }, { 0x28, 0x26 }, - { 0x28, 0x26 }, { 0x2E, 0x20 }, { 0x39, 0x11 }, { 0x48, 0x00 }, - { 0x48, 0x00 }, { 0x35, 0xEA }, { 0x29, 0xDB }, { 0x24, 0xD5 }, - { 0x17, 0xCB }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, - { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0xEB, 0xCA }, { 0xD6, 0xDB }, - { 0xD6, 0xDB }, { 0xD4, 0xDE }, { 0xD1, 0xE2 }, { 0xC4, 0xF2 }, - { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, - { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xC1, 0x0B }, - { 0xC6, 0x10 }, { 0xC9, 0x14 }, { 0xCB, 0x16 }, { 0xCB, 0x17 }, - { 0xCE, 0x1A }, { 0xD1, 0x1E }, { 0xD5, 0x23 }, { 0xD4, 0x22 }, - { 0xDB, 0x29 }, { 0xF5, 0x3E }, { 0x00, 0x48 }, { 0x00, 0x42 }, - { 0x0D, 0x3D }, { 0x24, 0x2A }, { 0x29, 0x26 }, { 0x29, 0x26 }, - { 0x29, 0x25 }, { 0x2D, 0x21 }, { 0x34, 0x18 }, { 0x40, 0x09 }, - { 0x48, 0x00 }, { 0x48, 0x00 }, { 0x43, 0xFA }, { 0x33, 0xE6 }, - { 0x29, 0xDB }, { 0x1B, 0xCF }, { 0x05, 0xBD }, { 0x00, 0xB8 }, - { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0xFB, 0xBD }, { 0xDD, 0xD5 }, - { 0xD6, 0xDC }, { 0xD6, 0xDC }, { 0xD4, 0xDE }, { 0xCB, 0xE9 }, - { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xC5, 0x0F }, - { 0xD0, 0x1D }, { 0xD5, 0x23 }, { 0xDC, 0x2A }, { 0xF0, 0x3B }, - { 0x00, 0x3D }, { 0x08, 0x3F }, { 0x15, 0x36 }, { 0x24, 0x2A }, - { 0x29, 0x26 }, { 0x2A, 0x24 }, { 0x30, 0x1C }, { 0x3B, 0x0F }, - { 0x48, 0x00 }, { 0x48, 0x00 }, { 0x3E, 0xF4 }, { 0x2D, 0xE0 }, - { 0x22, 0xD4 }, { 0x02, 0xBB }, { 0x00, 0xB8 }, { 0xFB, 0xBD }, - { 0xD9, 0xD8 }, { 0xD4, 0xDE }, { 0x7F, 0x7F } -}; +static s8 comInputDraw1[][2] = { { 0x0B, 0xF8 }, { 0x2B, 0xDD }, { 0x2A, 0xDC }, { 0x2B, 0xDC }, { 0x2B, 0xDC }, { 0x29, 0xDB }, { 0x24, 0xD6 }, + { 0x02, 0xE8 }, { 0x00, 0x00 }, { 0xFC, 0x02 }, { 0xD8, 0x27 }, { 0xD8, 0x28 }, { 0xD8, 0x28 }, { 0xD8, 0x27 }, { 0xDA, 0x29 }, { 0xDE, 0x2C }, + { 0xE4, 0x31 }, { 0xF0, 0x3A }, { 0x00, 0x3C }, { 0x06, 0x3A }, { 0x1B, 0x32 }, { 0x23, 0x2B }, { 0x24, 0x2A }, { 0x25, 0x29 }, { 0x26, 0x29 }, + { 0x28, 0x27 }, { 0x28, 0x27 }, { 0x28, 0x26 }, { 0x28, 0x26 }, { 0x2E, 0x20 }, { 0x39, 0x11 }, { 0x48, 0x00 }, { 0x48, 0x00 }, { 0x35, 0xEA }, + { 0x29, 0xDB }, { 0x24, 0xD5 }, { 0x17, 0xCB }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0xEB, 0xCA }, + { 0xD6, 0xDB }, { 0xD6, 0xDB }, { 0xD4, 0xDE }, { 0xD1, 0xE2 }, { 0xC4, 0xF2 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, + { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xC1, 0x0B }, { 0xC6, 0x10 }, { 0xC9, 0x14 }, { 0xCB, 0x16 }, { 0xCB, 0x17 }, { 0xCE, 0x1A }, + { 0xD1, 0x1E }, { 0xD5, 0x23 }, { 0xD4, 0x22 }, { 0xDB, 0x29 }, { 0xF5, 0x3E }, { 0x00, 0x48 }, { 0x00, 0x42 }, { 0x0D, 0x3D }, { 0x24, 0x2A }, + { 0x29, 0x26 }, { 0x29, 0x26 }, { 0x29, 0x25 }, { 0x2D, 0x21 }, { 0x34, 0x18 }, { 0x40, 0x09 }, { 0x48, 0x00 }, { 0x48, 0x00 }, { 0x43, 0xFA }, + { 0x33, 0xE6 }, { 0x29, 0xDB }, { 0x1B, 0xCF }, { 0x05, 0xBD }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0xFB, 0xBD }, { 0xDD, 0xD5 }, + { 0xD6, 0xDC }, { 0xD6, 0xDC }, { 0xD4, 0xDE }, { 0xCB, 0xE9 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xC5, 0x0F }, { 0xD0, 0x1D }, + { 0xD5, 0x23 }, { 0xDC, 0x2A }, { 0xF0, 0x3B }, { 0x00, 0x3D }, { 0x08, 0x3F }, { 0x15, 0x36 }, { 0x24, 0x2A }, { 0x29, 0x26 }, { 0x2A, 0x24 }, + { 0x30, 0x1C }, { 0x3B, 0x0F }, { 0x48, 0x00 }, { 0x48, 0x00 }, { 0x3E, 0xF4 }, { 0x2D, 0xE0 }, { 0x22, 0xD4 }, { 0x02, 0xBB }, { 0x00, 0xB8 }, + { 0xFB, 0xBD }, { 0xD9, 0xD8 }, { 0xD4, 0xDE }, { 0x7F, 0x7F } }; -static s8 comInputDraw2[][2] = { - { 0x07, 0x00 }, { 0x1F, 0x00 }, { 0x3A, 0x00 }, { 0x48, 0x00 }, - { 0x48, 0x00 }, { 0x48, 0x00 }, { 0x48, 0x00 }, { 0x48, 0x00 }, - { 0x43, 0xFA }, { 0x35, 0xEA }, { 0x2A, 0xDB }, { 0x1A, 0xCE }, - { 0x00, 0xB9 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, - { 0x00, 0xBA }, { 0xE9, 0xCC }, { 0xD5, 0xDD }, { 0xD4, 0xDE }, - { 0xD4, 0xDE }, { 0xD0, 0xE3 }, { 0xBD, 0xFB }, { 0xB8, 0x00 }, - { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, - { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xBC, 0x03 }, { 0xC2, 0x0C }, - { 0xCB, 0x17 }, { 0xD5, 0x23 }, { 0xD8, 0x27 }, { 0xF0, 0x3A }, - { 0x00, 0x43 }, { 0x18, 0x34 }, { 0x29, 0x26 }, { 0x29, 0x26 }, - { 0x29, 0x26 }, { 0x29, 0x25 }, { 0x29, 0x26 }, { 0x29, 0x25 }, - { 0x29, 0x25 }, { 0x2C, 0x22 }, { 0x31, 0x1B }, { 0x39, 0x12 }, - { 0x47, 0x00 }, { 0x48, 0x00 }, { 0x48, 0x00 }, { 0x37, 0xEC }, - { 0x26, 0xD7 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, - { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0xFB, 0xBD }, - { 0xE5, 0xCE }, { 0xD6, 0xDC }, { 0xD6, 0xDC }, { 0xD6, 0xDC }, - { 0xD5, 0xDD }, { 0xD2, 0xE0 }, { 0xCC, 0xE8 }, { 0xC4, 0xF2 }, - { 0xBE, 0xFA }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, - { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, - { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, - { 0xC7, 0x12 }, { 0xD8, 0x27 }, { 0xF6, 0x3E }, { 0x00, 0x47 }, - { 0x00, 0x44 }, { 0x05, 0x42 }, { 0x16, 0x35 }, { 0x28, 0x27 }, - { 0x29, 0x26 }, { 0x29, 0x26 }, { 0x29, 0x26 }, { 0x29, 0x26 }, - { 0x7F, 0x7F } -}; +static s8 comInputDraw2[][2] = { { 0x07, 0x00 }, { 0x1F, 0x00 }, { 0x3A, 0x00 }, { 0x48, 0x00 }, { 0x48, 0x00 }, { 0x48, 0x00 }, { 0x48, 0x00 }, + { 0x48, 0x00 }, { 0x43, 0xFA }, { 0x35, 0xEA }, { 0x2A, 0xDB }, { 0x1A, 0xCE }, { 0x00, 0xB9 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, + { 0x00, 0xBA }, { 0xE9, 0xCC }, { 0xD5, 0xDD }, { 0xD4, 0xDE }, { 0xD4, 0xDE }, { 0xD0, 0xE3 }, { 0xBD, 0xFB }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, + { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xBC, 0x03 }, { 0xC2, 0x0C }, { 0xCB, 0x17 }, { 0xD5, 0x23 }, + { 0xD8, 0x27 }, { 0xF0, 0x3A }, { 0x00, 0x43 }, { 0x18, 0x34 }, { 0x29, 0x26 }, { 0x29, 0x26 }, { 0x29, 0x26 }, { 0x29, 0x25 }, { 0x29, 0x26 }, + { 0x29, 0x25 }, { 0x29, 0x25 }, { 0x2C, 0x22 }, { 0x31, 0x1B }, { 0x39, 0x12 }, { 0x47, 0x00 }, { 0x48, 0x00 }, { 0x48, 0x00 }, { 0x37, 0xEC }, + { 0x26, 0xD7 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0xFB, 0xBD }, { 0xE5, 0xCE }, + { 0xD6, 0xDC }, { 0xD6, 0xDC }, { 0xD6, 0xDC }, { 0xD5, 0xDD }, { 0xD2, 0xE0 }, { 0xCC, 0xE8 }, { 0xC4, 0xF2 }, { 0xBE, 0xFA }, { 0xB8, 0x00 }, + { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, + { 0xB8, 0x00 }, { 0xC7, 0x12 }, { 0xD8, 0x27 }, { 0xF6, 0x3E }, { 0x00, 0x47 }, { 0x00, 0x44 }, { 0x05, 0x42 }, { 0x16, 0x35 }, { 0x28, 0x27 }, + { 0x29, 0x26 }, { 0x29, 0x26 }, { 0x29, 0x26 }, { 0x29, 0x26 }, { 0x7F, 0x7F } }; -static s8 comInputBall[][2] = { - { 0xE5, 0x00 }, { 0xC0, 0x03 }, { 0xBC, 0x04 }, { 0xBC, 0x03 }, - { 0xBF, 0x07 }, { 0xC3, 0x0C }, { 0xCB, 0x17 }, { 0xD5, 0x24 }, - { 0xDE, 0x2C }, { 0xF9, 0x3E }, { 0x00, 0x48 }, { 0x00, 0x45 }, - { 0x06, 0x40 }, { 0x21, 0x2C }, { 0x28, 0x27 }, { 0x28, 0x26 }, - { 0x29, 0x25 }, { 0x30, 0x1D }, { 0x43, 0x05 }, { 0x48, 0x00 }, - { 0x33, 0xE7 }, { 0x24, 0xD6 }, { 0x07, 0xBF }, { 0x00, 0xB8 }, - { 0x00, 0xB8 }, { 0xE4, 0xCF }, { 0xD4, 0xDE }, { 0xC6, 0xF0 }, - { 0xB8, 0x00 }, { 0xC7, 0x11 }, { 0xD2, 0x20 }, { 0xD5, 0x24 }, - { 0xD6, 0x25 }, { 0xD8, 0x27 }, { 0xE1, 0x2E }, { 0x00, 0x43 }, - { 0x00, 0x48 }, { 0x00, 0x44 }, { 0x1D, 0x30 }, { 0x28, 0x27 }, - { 0x28, 0x27 }, { 0x2C, 0x22 }, { 0x39, 0x12 }, { 0x48, 0x00 }, - { 0x34, 0xE8 }, { 0x23, 0xD5 }, { 0x0A, 0xC1 }, { 0x00, 0xB8 }, - { 0x00, 0xB8 }, { 0xF4, 0xC3 }, { 0xD4, 0xDE }, { 0xC3, 0xF4 }, - { 0xB8, 0x00 }, { 0xC6, 0x10 }, { 0xD3, 0x21 }, { 0xD6, 0x25 }, - { 0xD8, 0x27 }, { 0xDF, 0x2D }, { 0xEA, 0x36 }, { 0x00, 0x48 }, - { 0x00, 0x48 }, { 0x00, 0x48 }, { 0x17, 0x35 }, { 0x28, 0x27 }, - { 0x29, 0x25 }, { 0x33, 0x19 }, { 0x48, 0x00 }, { 0x48, 0x00 }, - { 0x34, 0xE8 }, { 0x23, 0xD5 }, { 0x00, 0xB9 }, { 0x00, 0xB8 }, - { 0x00, 0xB8 }, { 0xFA, 0xBE }, { 0xD4, 0xDE }, { 0xC8, 0xED }, - { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xC0, 0x09 }, { 0xD0, 0x1C }, - { 0xD6, 0x24 }, { 0xDC, 0x2A }, { 0xED, 0x38 }, { 0x00, 0x48 }, - { 0x00, 0x48 }, { 0x00, 0x48 }, { 0x1B, 0x31 }, { 0x28, 0x27 }, - { 0x29, 0x26 }, { 0x2D, 0x21 }, { 0x3D, 0x0C }, { 0x48, 0x00 }, - { 0x33, 0xE7 }, { 0x20, 0xD3 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, - { 0x00, 0xBB }, { 0xDB, 0xD7 }, { 0xD4, 0xDE }, { 0xD3, 0xDF }, - { 0xBB, 0xFD }, { 0xB8, 0x00 }, { 0x7F, 0x7F } -}; +static s8 comInputBall[][2] = { { 0xE5, 0x00 }, { 0xC0, 0x03 }, { 0xBC, 0x04 }, { 0xBC, 0x03 }, { 0xBF, 0x07 }, { 0xC3, 0x0C }, { 0xCB, 0x17 }, + { 0xD5, 0x24 }, { 0xDE, 0x2C }, { 0xF9, 0x3E }, { 0x00, 0x48 }, { 0x00, 0x45 }, { 0x06, 0x40 }, { 0x21, 0x2C }, { 0x28, 0x27 }, { 0x28, 0x26 }, + { 0x29, 0x25 }, { 0x30, 0x1D }, { 0x43, 0x05 }, { 0x48, 0x00 }, { 0x33, 0xE7 }, { 0x24, 0xD6 }, { 0x07, 0xBF }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, + { 0xE4, 0xCF }, { 0xD4, 0xDE }, { 0xC6, 0xF0 }, { 0xB8, 0x00 }, { 0xC7, 0x11 }, { 0xD2, 0x20 }, { 0xD5, 0x24 }, { 0xD6, 0x25 }, { 0xD8, 0x27 }, + { 0xE1, 0x2E }, { 0x00, 0x43 }, { 0x00, 0x48 }, { 0x00, 0x44 }, { 0x1D, 0x30 }, { 0x28, 0x27 }, { 0x28, 0x27 }, { 0x2C, 0x22 }, { 0x39, 0x12 }, + { 0x48, 0x00 }, { 0x34, 0xE8 }, { 0x23, 0xD5 }, { 0x0A, 0xC1 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0xF4, 0xC3 }, { 0xD4, 0xDE }, { 0xC3, 0xF4 }, + { 0xB8, 0x00 }, { 0xC6, 0x10 }, { 0xD3, 0x21 }, { 0xD6, 0x25 }, { 0xD8, 0x27 }, { 0xDF, 0x2D }, { 0xEA, 0x36 }, { 0x00, 0x48 }, { 0x00, 0x48 }, + { 0x00, 0x48 }, { 0x17, 0x35 }, { 0x28, 0x27 }, { 0x29, 0x25 }, { 0x33, 0x19 }, { 0x48, 0x00 }, { 0x48, 0x00 }, { 0x34, 0xE8 }, { 0x23, 0xD5 }, + { 0x00, 0xB9 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0xFA, 0xBE }, { 0xD4, 0xDE }, { 0xC8, 0xED }, { 0xB8, 0x00 }, { 0xB8, 0x00 }, { 0xC0, 0x09 }, + { 0xD0, 0x1C }, { 0xD6, 0x24 }, { 0xDC, 0x2A }, { 0xED, 0x38 }, { 0x00, 0x48 }, { 0x00, 0x48 }, { 0x00, 0x48 }, { 0x1B, 0x31 }, { 0x28, 0x27 }, + { 0x29, 0x26 }, { 0x2D, 0x21 }, { 0x3D, 0x0C }, { 0x48, 0x00 }, { 0x33, 0xE7 }, { 0x20, 0xD3 }, { 0x00, 0xB8 }, { 0x00, 0xB8 }, { 0x00, 0xBB }, + { 0xDB, 0xD7 }, { 0xD4, 0xDE }, { 0xD3, 0xDF }, { 0xBB, 0xFD }, { 0xB8, 0x00 }, { 0x7F, 0x7F } }; -void BoardLotteryHostSet(s16 arg0) { +void BoardLotteryHostSet(s16 arg0) +{ hostMdl = arg0; } -s16 BoardLotteryHostGet(void) { +s16 BoardLotteryHostGet(void) +{ return hostMdl; } -void BoardLotteryExec(void) { +void BoardLotteryExec(void) +{ if (BoardPlayerSizeGet(GWSystem.player_curr) == 2) { return; } @@ -219,7 +177,8 @@ void BoardLotteryExec(void) { BoardRollDispSet(1); } -void BoardLotteryInit(void) { +void BoardLotteryInit(void) +{ Vec sp14; Vec sp8; s32 i; @@ -247,73 +206,28 @@ void BoardLotteryInit(void) { } } -static void CreateModel(void) { +static void CreateModel(void) +{ s32 i; - s32 sp10[4] = { - DATA_MAKE_NUM(DATADIR_BKUJIYA, 5), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 6), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 7), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 8) - }; - s32 sp8[2] = { - DATA_MAKE_NUM(DATADIR_BKUJIYA, 3), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 4) - }; + s32 sp10[4] = { DATA_MAKE_NUM(DATADIR_BKUJIYA, 5), DATA_MAKE_NUM(DATADIR_BKUJIYA, 6), DATA_MAKE_NUM(DATADIR_BKUJIYA, 7), + DATA_MAKE_NUM(DATADIR_BKUJIYA, 8) }; + s32 sp8[2] = { DATA_MAKE_NUM(DATADIR_BKUJIYA, 3), DATA_MAKE_NUM(DATADIR_BKUJIYA, 4) }; s32 sp20[9][4] = { - { - DATA_MAKE_NUM(DATADIR_BGUEST, 1), - DATA_MAKE_NUM(DATADIR_BGUEST, 2), - DATA_MAKE_NUM(DATADIR_BGUEST, 3), - DATA_MAKE_NUM(DATADIR_BGUEST, 4) - }, - { - DATA_MAKE_NUM(DATADIR_BGUEST, 9), - DATA_MAKE_NUM(DATADIR_BGUEST, 10), - DATA_MAKE_NUM(DATADIR_BGUEST, 11), - DATA_MAKE_NUM(DATADIR_BGUEST, 12) - }, - { - DATA_MAKE_NUM(DATADIR_BGUEST, 14), - DATA_MAKE_NUM(DATADIR_BGUEST, 15), - DATA_MAKE_NUM(DATADIR_BGUEST, 16), - DATA_MAKE_NUM(DATADIR_BGUEST, 17) - }, - { - DATA_MAKE_NUM(DATADIR_BGUEST, 24), - DATA_MAKE_NUM(DATADIR_BGUEST, 25), - DATA_MAKE_NUM(DATADIR_BGUEST, 26), - DATA_MAKE_NUM(DATADIR_BGUEST, 27) - }, - { - DATA_MAKE_NUM(DATADIR_BGUEST, 29), - DATA_MAKE_NUM(DATADIR_BGUEST, 30), - DATA_MAKE_NUM(DATADIR_BGUEST, 31), - DATA_MAKE_NUM(DATADIR_BGUEST, 32) - }, - { - DATA_MAKE_NUM(DATADIR_BGUEST, 34), - DATA_MAKE_NUM(DATADIR_BGUEST, 35), - DATA_MAKE_NUM(DATADIR_BGUEST, 36), - DATA_MAKE_NUM(DATADIR_BGUEST, 37) - }, - { - DATA_MAKE_NUM(DATADIR_BGUEST, 14), - DATA_MAKE_NUM(DATADIR_BGUEST, 15), - DATA_MAKE_NUM(DATADIR_BGUEST, 16), - DATA_MAKE_NUM(DATADIR_BGUEST, 17) - }, - { - DATA_MAKE_NUM(DATADIR_BGUEST, 42), - DATA_MAKE_NUM(DATADIR_BGUEST, 43), - DATA_MAKE_NUM(DATADIR_BGUEST, 44), - DATA_MAKE_NUM(DATADIR_BGUEST, 45) - }, - { - DATA_MAKE_NUM(DATADIR_BGUEST, 42), - DATA_MAKE_NUM(DATADIR_BGUEST, 43), - DATA_MAKE_NUM(DATADIR_BGUEST, 44), - DATA_MAKE_NUM(DATADIR_BGUEST, 45) - } + { DATA_MAKE_NUM(DATADIR_BGUEST, 1), DATA_MAKE_NUM(DATADIR_BGUEST, 2), DATA_MAKE_NUM(DATADIR_BGUEST, 3), DATA_MAKE_NUM(DATADIR_BGUEST, 4) }, + { DATA_MAKE_NUM(DATADIR_BGUEST, 9), DATA_MAKE_NUM(DATADIR_BGUEST, 10), DATA_MAKE_NUM(DATADIR_BGUEST, 11), DATA_MAKE_NUM(DATADIR_BGUEST, 12) }, + { DATA_MAKE_NUM(DATADIR_BGUEST, 14), DATA_MAKE_NUM(DATADIR_BGUEST, 15), DATA_MAKE_NUM(DATADIR_BGUEST, 16), + DATA_MAKE_NUM(DATADIR_BGUEST, 17) }, + { DATA_MAKE_NUM(DATADIR_BGUEST, 24), DATA_MAKE_NUM(DATADIR_BGUEST, 25), DATA_MAKE_NUM(DATADIR_BGUEST, 26), + DATA_MAKE_NUM(DATADIR_BGUEST, 27) }, + { DATA_MAKE_NUM(DATADIR_BGUEST, 29), DATA_MAKE_NUM(DATADIR_BGUEST, 30), DATA_MAKE_NUM(DATADIR_BGUEST, 31), + DATA_MAKE_NUM(DATADIR_BGUEST, 32) }, + { DATA_MAKE_NUM(DATADIR_BGUEST, 34), DATA_MAKE_NUM(DATADIR_BGUEST, 35), DATA_MAKE_NUM(DATADIR_BGUEST, 36), + DATA_MAKE_NUM(DATADIR_BGUEST, 37) }, + { DATA_MAKE_NUM(DATADIR_BGUEST, 14), DATA_MAKE_NUM(DATADIR_BGUEST, 15), DATA_MAKE_NUM(DATADIR_BGUEST, 16), + DATA_MAKE_NUM(DATADIR_BGUEST, 17) }, + { DATA_MAKE_NUM(DATADIR_BGUEST, 42), DATA_MAKE_NUM(DATADIR_BGUEST, 43), DATA_MAKE_NUM(DATADIR_BGUEST, 44), + DATA_MAKE_NUM(DATADIR_BGUEST, 45) }, + { DATA_MAKE_NUM(DATADIR_BGUEST, 42), DATA_MAKE_NUM(DATADIR_BGUEST, 43), DATA_MAKE_NUM(DATADIR_BGUEST, 44), DATA_MAKE_NUM(DATADIR_BGUEST, 45) } }; lotteryMdl[1] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BKUJIYA, 1), NULL, 0); @@ -352,7 +266,8 @@ static void CreateModel(void) { BoardModelHookSet(lotteryMdl[1], "toto_grip1", gripMdl[1]); } -static void KillModel(void) { +static void KillModel(void) +{ s32 i; if (lotteryMdl[1] != -1) { @@ -390,7 +305,8 @@ static void KillModel(void) { BoardModelVisibilitySet(BoardLotteryHostGet(), 0); } -void BoardLotteryKill(void) { +void BoardLotteryKill(void) +{ if (lotteryProc) { HuPrcKill(lotteryProc); } @@ -400,7 +316,8 @@ void BoardLotteryKill(void) { } } -static void DestroyLottery(void) { +static void DestroyLottery(void) +{ s32 i; for (i = 0; i < 4; i++) { @@ -421,7 +338,8 @@ static void DestroyLottery(void) { lotteryProc = NULL; } -static void ExecLottery(void) { +static void ExecLottery(void) +{ Vec sp38; Vec sp2C; Vec sp20; @@ -472,7 +390,8 @@ static void ExecLottery(void) { if (GWPlayer[temp_r31].com) { if (BoardPlayerCoinsGet(temp_r31) >= 5) { BoardComKeySetLeft(); - } else { + } + else { BoardComKeySetRight(); } } @@ -512,7 +431,8 @@ static void ExecLottery(void) { if (BoardPlayerSizeGet(temp_r31) == 1) { BoardModelVisibilitySet(gripMdl[0], 0); BoardModelVisibilitySet(gripMdl[1], 1); - } else { + } + else { BoardModelVisibilitySet(gripMdl[0], 1); BoardModelVisibilitySet(gripMdl[1], 0); } @@ -561,7 +481,8 @@ static void ExecLottery(void) { SetupTicket(temp_r31); ShowTicket(); var_r27 = 1; - } else { + } + else { var_r27 = 0; } if (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { @@ -571,7 +492,8 @@ static void ExecLottery(void) { var_r25 = BoardRandMod(100) & 0xFF; if (var_r25 < 50) { ExecBallGame(); - } else { + } + else { ExecScratch(); } ExecPrize(); @@ -601,7 +523,8 @@ static void ExecLottery(void) { HuPrcEnd(); } -static void DoMiniJumpUp(s32 arg0) { +static void DoMiniJumpUp(s32 arg0) +{ Mtx sp34; Vec sp28; Vec sp1C; @@ -629,7 +552,8 @@ static void DoMiniJumpUp(s32 arg0) { OSs16tof32(&i, &temp_f30); if (i < 4) { var_f27 = 5.0f; - } else { + } + else { var_f27 = 0.0f; } sp1C.x += sp10.x; @@ -643,7 +567,8 @@ static void DoMiniJumpUp(s32 arg0) { BoardPlayerIdleSet(arg0); } -static void DoMiniJumpDown(s32 arg0) { +static void DoMiniJumpDown(s32 arg0) +{ Vec sp24; Vec sp18; Vec spC; @@ -661,7 +586,8 @@ static void DoMiniJumpDown(s32 arg0) { OSs16tof32(&i, &temp_f31); if (i < 3) { var_f29 = 10.0f; - } else { + } + else { var_f29 = 0.0f; } sp18.x += spC.x; @@ -681,7 +607,8 @@ static void DoMiniJumpDown(s32 arg0) { } } -static void PayEnterFee(s32 arg0) { +static void PayEnterFee(s32 arg0) +{ s32 var_r29; s32 temp_r31; s32 i; @@ -691,7 +618,8 @@ static void PayEnterFee(s32 arg0) { BoardStatusShowSet(temp_r31, 1); if (arg0 != 0) { var_r29 = lotteryMessBase + 12; - } else { + } + else { var_r29 = lotteryMessBase; } BoardWinCreate(2, var_r29, BoardWinPortraitGet()); @@ -709,7 +637,8 @@ static void PayEnterFee(s32 arg0) { BoardStatusShowSet(temp_r31, 0); } -static void ShowTicket(void) { +static void ShowTicket(void) +{ s16 sp10; s16 spE; s16 spC; @@ -720,22 +649,15 @@ static void ShowTicket(void) { s32 var_r29; s32 i; u8 *var_r28; - s32 sp14[] = { - DATA_MAKE_NUM(DATADIR_BKUJIYA, 21), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 22), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 23), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 24), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 25), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 26), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 27), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 28) - }; + s32 sp14[] = { DATA_MAKE_NUM(DATADIR_BKUJIYA, 21), DATA_MAKE_NUM(DATADIR_BKUJIYA, 22), DATA_MAKE_NUM(DATADIR_BKUJIYA, 23), + DATA_MAKE_NUM(DATADIR_BKUJIYA, 24), DATA_MAKE_NUM(DATADIR_BKUJIYA, 25), DATA_MAKE_NUM(DATADIR_BKUJIYA, 26), + DATA_MAKE_NUM(DATADIR_BKUJIYA, 27), DATA_MAKE_NUM(DATADIR_BKUJIYA, 28) }; if (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { return; } sp8 = GWPlayer[GWSystem.player_curr].ticket_player; - var_r28 = (u8*) &sp8; + var_r28 = (u8 *)&sp8; temp_r31 = HuSprGrpCreate(4); BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BKUJIYA, 20), 30001, 0, &spA); HuSprGrpMemberSet(temp_r31, 0, spA); @@ -784,10 +706,11 @@ static void ShowTicket(void) { HuPrcVSleep(); } HuSprGrpKill(temp_r31); - (void) var_r29; // Required to match + (void)var_r29; // Required to match } -static void SetupTicket(s32 arg0) { +static void SetupTicket(s32 arg0) +{ u8 sp8[4]; u8 var_r29; s32 var_r28; @@ -816,11 +739,9 @@ static void SetupTicket(s32 arg0) { GWPlayer[arg0].draw_ticket = 1; } -static void LotteryInlineFunc00(s32 arg0, s32 arg1) { - s32 sp20[2] = { - DATA_MAKE_NUM(DATADIR_BKUJIYA, 18), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 19) - }; +static void LotteryInlineFunc00(s32 arg0, s32 arg1) +{ + s32 sp20[2] = { DATA_MAKE_NUM(DATADIR_BKUJIYA, 18), DATA_MAKE_NUM(DATADIR_BKUJIYA, 19) }; s16 sp10[2] = { 152, 120 }; s16 sp14[2] = { 120, 120 }; Vec sp34; @@ -835,7 +756,8 @@ static void LotteryInlineFunc00(s32 arg0, s32 arg1) { lotterySpr = espEntry(sp20[arg0], 30001, 0); espAttrSet(lotterySpr, HUSPR_ATTR_NOANIM); } - } else { + } + else { sp34.y = (sp10[arg0] / 2) + 40; temp_f30 = -4.0f; } @@ -850,7 +772,8 @@ static void LotteryInlineFunc00(s32 arg0, s32 arg1) { } } -static void ExecBallGame(void) { +static void ExecBallGame(void) +{ Vec sp4C; float temp_f24; float var_f23; @@ -871,16 +794,9 @@ static void ExecBallGame(void) { s8 spA; s8 sp9; s8 *temp_r23; - s32 sp58[] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 29), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 29), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 29), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 29), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 29), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 29), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 29), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 29) - }; + s32 sp58[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 29), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 29), DATA_MAKE_NUM(DATADIR_PEACHMOT, 29), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 29), DATA_MAKE_NUM(DATADIR_WARIOMOT, 29), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 29), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 29), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 29) }; temp_r27 = GWSystem.player_curr; currPrize = -1; @@ -949,24 +865,28 @@ static void ExecBallGame(void) { temp_r25 = GWPlayer[temp_r27].port; spB = HuPadStkX[temp_r25]; spA = HuPadStkY[temp_r25]; - } else { + } + else { temp_r23 = comInputBall[comInputPos++]; spB = temp_r23[0]; spA = temp_r23[1]; } - } else { + } + else { spB = spA = 0; } if (spB == 0x7F || spA == 0x7F) { var_r20 = 1; - } else { + } + else { if ((abs(spB) < 57.600002f && abs(spA) < 57.600002f) || (var_r17 == spB && sp9 == spA) || (spB == 0 && spA == 0)) { var_f28 *= 0.93f; var_f27 *= 0.8f; if (var_f27 < 0.01f && var_r26 != 0) { var_r26--; } - } else { + } + else { OSs8tof32(&spB, &var_f26); OSs8tof32(&spA, &var_f19); var_f25 = atan2d(var_f26, var_f19); @@ -984,7 +904,8 @@ static void ExecBallGame(void) { var_f27 += 0.01f * var_f26; if (var_f28 + var_f27 < 2.0f) { var_f28 += var_f27; - } else { + } + else { var_f28 = 2.0f; } } @@ -996,7 +917,8 @@ static void ExecBallGame(void) { LotteryInlineFunc00(0, 1); } -static void SetBallPrize(void) { +static void SetBallPrize(void) +{ Process *sp8; s32 temp_r31; @@ -1004,11 +926,14 @@ static void SetBallPrize(void) { temp_r31 = BoardRandMod(100); if (temp_r31 > 97) { currPrize = 0; - } else if (temp_r31 > 87) { + } + else if (temp_r31 > 87) { currPrize = 1; - } else if (temp_r31 > 67) { + } + else if (temp_r31 > 67) { currPrize = 2; - } else { + } + else { currPrize = 3; } if (GWSystem.max_turn - GWSystem.turn != 0 || currPrize != 2) { @@ -1018,7 +943,8 @@ static void SetBallPrize(void) { sp8 = HuPrcChildCreate(ExecBallPrize, 0x2004, 0x3800, 0, lotteryProc); } -static void ExecBallPrize(void) { +static void ExecBallPrize(void) +{ Vec sp30; Vec sp24; Vec sp18; @@ -1042,19 +968,19 @@ static void ExecBallPrize(void) { temp_r29 = ballMdl[currPrize & 3]; BoardModelPosGet(lotteryMdl[0], &sp30); BoardModelRotGet(lotteryMdl[0], &sp18); - PSMTXRotRad(sp6C, 'Y', MTXDegToRad(sp18.y)); + MTXRotRad(sp6C, 'Y', MTXDegToRad(sp18.y)); var_r27 = BoardModelIDGet(lotteryMdl[0]); temp_r3 = Hu3DModelObjPtrGet(var_r27, "toto_gara"); temp_f28 = sp30.y + temp_r3->data.curr.pos.y + 100.0f; - PSMTXTrans(sp3C, temp_r3->data.curr.pos.x, temp_r3->data.curr.pos.y + 210.0f, temp_r3->data.curr.pos.z + -40.0f); - PSMTXConcat(sp6C, sp3C, sp3C); + MTXTrans(sp3C, temp_r3->data.curr.pos.x, temp_r3->data.curr.pos.y + 210.0f, temp_r3->data.curr.pos.z + -40.0f); + MTXConcat(sp6C, sp3C, sp3C); Hu3DMtxTransGet(sp3C, &spC); VECAdd(&spC, &sp30, &sp30); BoardModelVisibilitySet(temp_r29, 1); sp24.x = 10.5f; sp24.y = -3.0f; sp24.z = 0.0f; - PSMTXMultVec(sp6C, &sp24, &sp24); + MTXMultVec(sp6C, &sp24, &sp24); var_f29 = 0.0f; var_f30 = 1.8f; temp_f27 = 0.016666668f; @@ -1084,62 +1010,29 @@ static void ExecBallPrize(void) { } } -static const s32 pickSpr[] = { - DATA_MAKE_NUM(DATADIR_BOARD, 30), - DATA_MAKE_NUM(DATADIR_BOARD, 31), - DATA_MAKE_NUM(DATADIR_BOARD, 32), - DATA_MAKE_NUM(DATADIR_BOARD, 33), - DATA_MAKE_NUM(DATADIR_BOARD, 34), - DATA_MAKE_NUM(DATADIR_BOARD, 35), - DATA_MAKE_NUM(DATADIR_BOARD, 36), - DATA_MAKE_NUM(DATADIR_BOARD, 37) -}; +static const s32 pickSpr[] + = { DATA_MAKE_NUM(DATADIR_BOARD, 30), DATA_MAKE_NUM(DATADIR_BOARD, 31), DATA_MAKE_NUM(DATADIR_BOARD, 32), DATA_MAKE_NUM(DATADIR_BOARD, 33), + DATA_MAKE_NUM(DATADIR_BOARD, 34), DATA_MAKE_NUM(DATADIR_BOARD, 35), DATA_MAKE_NUM(DATADIR_BOARD, 36), DATA_MAKE_NUM(DATADIR_BOARD, 37) }; -static const s32 handMdl[] = { - DATA_MAKE_NUM(DATADIR_BKUJIYA, 9), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 10), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 11), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 12), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 13), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 14), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 15), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 16) -}; +static const s32 handMdl[] = { DATA_MAKE_NUM(DATADIR_BKUJIYA, 9), DATA_MAKE_NUM(DATADIR_BKUJIYA, 10), DATA_MAKE_NUM(DATADIR_BKUJIYA, 11), + DATA_MAKE_NUM(DATADIR_BKUJIYA, 12), DATA_MAKE_NUM(DATADIR_BKUJIYA, 13), DATA_MAKE_NUM(DATADIR_BKUJIYA, 14), DATA_MAKE_NUM(DATADIR_BKUJIYA, 15), + DATA_MAKE_NUM(DATADIR_BKUJIYA, 16) }; -static const s32 ticketSpr[] = { - DATA_MAKE_NUM(DATADIR_BKUJIYA, 29), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 30), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 31), - DATA_MAKE_NUM(DATADIR_BKUJIYA, 32) -}; +static const s32 ticketSpr[] = { DATA_MAKE_NUM(DATADIR_BKUJIYA, 29), DATA_MAKE_NUM(DATADIR_BKUJIYA, 30), DATA_MAKE_NUM(DATADIR_BKUJIYA, 31), + DATA_MAKE_NUM(DATADIR_BKUJIYA, 32) }; static omObjData *ticketObj[12] = { NULL }; static s8 ticketPrize[12] = { 0 }; static Vec handLastPos = { 0.0f, 0.0f, 0.0f }; -static s32 loseSoundTbl[] = { - 0x0000012E, - 0x0000016E, - 0x000001AE, - 0x000001EE, - 0x0000022E, - 0x0000026E, - 0x000002AE, - 0x000002EE -}; +static s32 loseSoundTbl[] = { 0x0000012E, 0x0000016E, 0x000001AE, 0x000001EE, 0x0000022E, 0x0000026E, 0x000002AE, 0x000002EE }; -static s32 loseMotTbl[] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 51), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 51), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 51), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 51), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 51), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 51), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 51), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 51) -}; +static s32 loseMotTbl[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 51), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 51), DATA_MAKE_NUM(DATADIR_PEACHMOT, 51), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 51), DATA_MAKE_NUM(DATADIR_WARIOMOT, 51), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 51), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 51), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 51) }; -static void ExecScratchTicket(s32 arg0) { +static void ExecScratchTicket(s32 arg0) +{ Vec sp24; Vec sp18; Vec spC; @@ -1178,7 +1071,8 @@ static void ExecScratchTicket(s32 arg0) { comInputPos = 0; if (BoardRandMod(100) < 50) { comInputDrawP = comInputDraw1; - } else { + } + else { comInputDrawP = comInputDraw2; } temp_r27 = HuAudFXPlay(0x335); @@ -1217,7 +1111,8 @@ static void ExecScratchTicket(s32 arg0) { lotteryMdl[4] = -1; } -static void ExecScratch(void) { +static void ExecScratch(void) +{ TicketWork *temp_r28; float var_f31; s32 temp_curr; @@ -1259,7 +1154,8 @@ static void ExecScratch(void) { BoardFilterFadeOut(30); } -static void KillScratch(void) { +static void KillScratch(void) +{ if (ticketSprGrp != -1) { HuSprGrpKill(ticketSprGrp); ticketSprGrp = -1; @@ -1270,7 +1166,8 @@ static void KillScratch(void) { memset(ticketObj, 0, sizeof(ticketObj)); } -static void ExecScratchSpr(omObjData *arg0) { +static void ExecScratchSpr(omObjData *arg0) +{ Vec sp20; Vec sp14; Vec sp8; @@ -1298,7 +1195,8 @@ static void ExecScratchSpr(omObjData *arg0) { if (ABS(sp8.x) < 1.0f && ABS(sp8.y) < 1.0f) { sp8 = sp14; temp_r30->unk00_field1 = 1; - } else { + } + else { VECScale(&sp8, &sp8, 0.2f); VECAdd(&sp20, &sp8, &sp8); temp_r30->unk00_field1 = 0; @@ -1309,7 +1207,8 @@ static void ExecScratchSpr(omObjData *arg0) { arg0->rot.y = sp8.y; } -static void HideScratchSpr(void) { +static void HideScratchSpr(void) +{ s32 i; for (i = 0; i < 12; i++) { @@ -1319,7 +1218,8 @@ static void HideScratchSpr(void) { } } -static void InitScratchSpr(void) { +static void InitScratchSpr(void) +{ Vec sp18; Vec spC; omObjData *temp_r31; @@ -1361,7 +1261,8 @@ static void InitScratchSpr(void) { HuSprGrpDrawNoSet(temp_r28, 0x40); } -static inline u32 ExecStratchPickInlineFunc(LotteryTicketPickWork *temp_r29) { +static inline u32 ExecStratchPickInlineFunc(LotteryTicketPickWork *temp_r29) +{ s32 var_r21; s32 temp_r23; u32 var_r26; @@ -1371,17 +1272,21 @@ static inline u32 ExecStratchPickInlineFunc(LotteryTicketPickWork *temp_r29) { if (!GWPlayer[var_r21].com) { temp_r23 = GWPlayer[GWSystem.player_curr].port; var_r26 = HuPadDStkRep[temp_r23] | HuPadBtnDown[temp_r23]; - } else if (comLotteryType != temp_r29->unk02) { + } + else if (comLotteryType != temp_r29->unk02) { var_r26 = 2; - } else if (comLotteryWinType != temp_r29->unk03) { + } + else if (comLotteryWinType != temp_r29->unk03) { var_r26 = 4; - } else if (comLotteryType == temp_r29->unk02 && comLotteryWinType == temp_r29->unk03) { + } + else if (comLotteryType == temp_r29->unk02 && comLotteryWinType == temp_r29->unk03) { var_r26 = 0x100; } return var_r26; } -static void ExecScratchPick(omObjData *arg0) { +static void ExecScratchPick(omObjData *arg0) +{ float var_f29; float var_f28; s8 var_r28; @@ -1434,14 +1339,16 @@ static void ExecScratchPick(omObjData *arg0) { if (temp_r29->unk02 < 0) { temp_r29->unk02 = 0; var_r28 = 0; - } else if (temp_r29->unk03 < 0) { + } + else if (temp_r29->unk03 < 0) { temp_r29->unk03 = 0; var_r28 = 0; } if (temp_r29->unk02 >= 4) { temp_r29->unk02 = 3; var_r28 = 0; - } else if (temp_r29->unk03 >= 3) { + } + else if (temp_r29->unk03 >= 3) { temp_r29->unk03 = 2; var_r28 = 0; } @@ -1455,7 +1362,8 @@ static void ExecScratchPick(omObjData *arg0) { HuSprPosSet(temp_r29->unk08, 0, var_f29, var_f28); } -static void InitScratchPick(void) { +static void InitScratchPick(void) +{ float temp_f31 = 91.0f; float temp_f30 = 106.0f; omObjData *temp_r30; @@ -1476,7 +1384,8 @@ static void InitScratchPick(void) { HuSprGrpDrawNoSet(var_r31->unk08, 0x40); } -static void InitTicketPrizes(void) { +static void InitTicketPrizes(void) +{ s32 temp_r31; s32 i; @@ -1492,7 +1401,8 @@ static void InitTicketPrizes(void) { } } -static void ExecTicketFocus(s32 arg0) { +static void ExecTicketFocus(s32 arg0) +{ float var_f31; float temp_f30; omObjData *var_r30; @@ -1516,7 +1426,8 @@ static void ExecTicketFocus(s32 arg0) { } } -static BOOL ScratchTicketCheckDone(AnimBmpData *arg0) { +static BOOL ScratchTicketCheckDone(AnimBmpData *arg0) +{ s32 var_r29; s32 var_r31; s32 var_r30; @@ -1532,12 +1443,14 @@ static BOOL ScratchTicketCheckDone(AnimBmpData *arg0) { } if (var_r29 >= arg0->sizeX * arg0->sizeY - 300) { return TRUE; - } else { + } + else { return FALSE; } } -static u16 TicketGetPixel(u16 arg0, u16 arg1, u16 arg2) { +static u16 TicketGetPixel(u16 arg0, u16 arg1, u16 arg2) +{ u16 var_r31; u16 var_r30; u16 var_r29; @@ -1550,7 +1463,8 @@ static u16 TicketGetPixel(u16 arg0, u16 arg1, u16 arg2) { return var_r29 + (var_r28 << 2) + ((var_r31 + var_r30 * (arg0 >> 2)) << 4); } -static s32 TicketUpdate(AnimBmpData *arg0, Vec *arg1, s32 arg2) { +static s32 TicketUpdate(AnimBmpData *arg0, Vec *arg1, s32 arg2) +{ Vec sp48; Vec sp3C; float temp_f25; @@ -1574,7 +1488,8 @@ static s32 TicketUpdate(AnimBmpData *arg0, Vec *arg1, s32 arg2) { } OSs8tof32(&temp_r19[0], &sp48.x); OSs8tof32(&temp_r19[1], &sp48.y); - } else { + } + else { sp34 = GWPlayer[GWSystem.player_curr].port; sp48.x = HuPadStkX[sp34]; sp48.y = HuPadStkY[sp34]; @@ -1643,12 +1558,13 @@ static s32 TicketUpdate(AnimBmpData *arg0, Vec *arg1, s32 arg2) { } } } - DCFlushRange(arg0->data, (u32) (arg0->sizeX * arg0->sizeY * 2) >> 3); + DCFlushRange(arg0->data, (u32)(arg0->sizeX * arg0->sizeY * 2) >> 3); handLastPos = *arg1; return 0; } -static s32 ExecCoinPrizeInlineFunc(void) { +static s32 ExecCoinPrizeInlineFunc(void) +{ s32 i; for (i = 0; i < 10; i++) { @@ -1659,7 +1575,8 @@ static s32 ExecCoinPrizeInlineFunc(void) { return -1; } -static void ExecCoinPrize(void) { +static void ExecCoinPrize(void) +{ Vec sp64[10]; Vec sp8; float sp3C[10]; @@ -1674,7 +1591,8 @@ static void ExecCoinPrize(void) { temp_r27 = GWSystem.player_curr; if (currPrize == 0) { var_r28 = 100; - } else { + } + else { var_r28 = 30; } memset(coinMdl, 0, sizeof(coinMdl)); @@ -1703,7 +1621,8 @@ static void ExecCoinPrize(void) { BoardModelScaleSet(coinMdl[var_r30], 0.5f, 0.5f, 0.5f); var_r28--; } - } else { + } + else { var_r26 = 0; for (i = 0; i < 10; i++) { if (coinF[i] != 0) { @@ -1725,7 +1644,8 @@ static void ExecCoinPrize(void) { BoardPlayerCoinsAdd(temp_r27, 1); HuAudFXPlay(7); omVibrate(temp_r27, 12, 6, 6); - } else { + } + else { BoardModelPosSetV(coinMdl[i], &sp64[i]); BoardModelRotSet(coinMdl[i], 0.0f, sp3C[i], 0.0f); sp3C[i] = BoardDAngleCalc(45.0f + sp3C[i]); @@ -1736,7 +1656,8 @@ static void ExecCoinPrize(void) { } } -static void ExecItemPrize(void) { +static void ExecItemPrize(void) +{ Vec sp20; Vec sp14; float temp_f29; @@ -1748,10 +1669,7 @@ static void ExecItemPrize(void) { s32 temp_r29; s16 *var_r31; s16 i; - s32 spC[2] = { - DATA_MAKE_NUM(DATADIR_BOARD, 111), - DATA_MAKE_NUM(DATADIR_BOARD, 112) - }; + s32 spC[2] = { DATA_MAKE_NUM(DATADIR_BOARD, 111), DATA_MAKE_NUM(DATADIR_BOARD, 112) }; s8 sp8[2] = { 2, 3 }; temp_r29 = GWSystem.player_curr; @@ -1779,7 +1697,8 @@ static void ExecItemPrize(void) { BoardPlayerPosGet(temp_r29, &sp20); if (BoardPlayerSizeGet(temp_r29) == 0) { sp20.y += 100.0f; - } else { + } + else { sp20.y += 30.000002f; } temp_f29 = (sp20.y - sp14.y) / 30.0f; @@ -1805,7 +1724,8 @@ static void ExecItemPrize(void) { omVibrate(GWSystem.player_curr, 12, 6, 6); } -static void KillCoin(void) { +static void KillCoin(void) +{ s32 i; for (i = 0; i < 10; i++) { @@ -1814,7 +1734,8 @@ static void KillCoin(void) { } } -static void ExecPrize(void) { +static void ExecPrize(void) +{ Vec sp14; Vec sp8; s16 var_r29; @@ -1865,7 +1786,8 @@ static void ExecPrize(void) { if (var_r24 < 3) { var_r29 = 7; var_r26 = 80; - } else { + } + else { var_r29 = 8; } break; @@ -1890,11 +1812,12 @@ static void ExecPrize(void) { HuPrcSleep(0x14); if (var_r31 == 0) { var_r27 = HuAudSStreamPlay(0xA); - } else { + } + else { var_r27 = HuAudSStreamPlay(9); } } - var_r23 = (s32) BoardPlayerRotYGet(temp_r30) + 180; + var_r23 = (s32)BoardPlayerRotYGet(temp_r30) + 180; BoardPlayerMotBlendSet(temp_r30, var_r23, 0xF); while (!BoardPlayerMotBlendCheck(temp_r30)) { HuPrcVSleep(); @@ -1912,7 +1835,8 @@ static void ExecPrize(void) { if (var_r24 == 3) { BoardWinCreate(2, lotteryMessBase + 6, BoardWinPortraitGet()); BoardWinWait(); - } else { + } + else { BoardAudSeqPause(1, 1, 1000); HuPrcSleep(0x30); var_r27 = HuAudSStreamPlay(2); @@ -1931,7 +1855,8 @@ static void ExecPrize(void) { case 2: if (var_r24 < 3) { ExecItemPrize(); - } else { + } + else { var_r31 = 3; } break; @@ -1948,7 +1873,8 @@ static void ExecPrize(void) { } if (var_r31 != 3) { var_r28 = lotteryMessBase + 3; - } else { + } + else { var_r28 = lotteryMessBase + 8; } BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[2], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); @@ -1963,7 +1889,8 @@ static void ExecPrize(void) { } } -static void ExecLose(s32 arg0) { +static void ExecLose(s32 arg0) +{ s32 temp_r30; temp_r30 = GWPlayer[arg0].character; @@ -1975,7 +1902,8 @@ static void ExecLose(s32 arg0) { } } -static void CreateLotteryWin(s32 arg0) { +static void CreateLotteryWin(s32 arg0) +{ float sp8[2]; float temp_f30; float var_f31; @@ -1985,10 +1913,12 @@ static void CreateLotteryWin(s32 arg0) { if (arg0 == 0) { var_r31 = MAKE_MESSID(6, 80); var_f31 = 352.0f; - } else if (arg0 == 1) { + } + else if (arg0 == 1) { var_f31 = 352.0f; var_r31 = MAKE_MESSID(6, 81); - } else { + } + else { var_f31 = 364.0f; var_r31 = MAKE_MESSID(32, 22); } @@ -1999,14 +1929,16 @@ static void CreateLotteryWin(s32 arg0) { HuWinMesSet(lotteryInstWin, var_r31); } -static void KillLotteryWin(void) { +static void KillLotteryWin(void) +{ if (lotteryInstWin != -1) { HuWinKill(lotteryInstWin); lotteryInstWin = -1; } } -void BoardLotteryTutorialExec(void) { +void BoardLotteryTutorialExec(void) +{ Vec sp38; Vec sp2C; Vec sp20; 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/model.c b/src/game/board/model.c index 599f05e2..5162b2fe 100644 --- a/src/game/board/model.c +++ b/src/game/board/model.c @@ -747,7 +747,7 @@ float BoardModelMotionShapeMaxTimeGet(s16 model) return 0; } motion = &Hu3DMotion[hsf_model->unk_0E]; - motion_hsf = motion->unk_04->motion; + motion_hsf = motion->hsfData->motion; return motion_hsf->len; } } diff --git a/src/game/board/mushroom.c b/src/game/board/mushroom.c index 1b0c57b6..90e9efaa 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(); @@ -22,7 +27,7 @@ static void MarkKillBox(void); static void InitBox(s32 arg0); static const float boxOfs[2] = {-150.0f, 150.0f}; -static omObjData *boxObj[2] = {}; +static omObjData *boxObj[2] = {NULL, NULL}; static s16 itemMdl = -1; static s8 itemResult; static u8 pickerChoice; @@ -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 3ca8058a..1b331d56 100755 --- a/src/game/board/pause.c +++ b/src/game/board/pause.c @@ -1,5 +1,11 @@ #include "game/board/pause.h" #include "game/audio.h" +#include "game/board/main.h" +#include "game/board/model.h" +#include "game/board/player.h" +#include "game/board/roll.h" +#include "game/board/star.h" +#include "game/board/ui.h" #include "game/data.h" #include "game/flag.h" #include "game/gamework_data.h" @@ -11,12 +17,9 @@ #include "game/sprite.h" #include "game/window.h" #include "game/wipe.h" -#include "game/board/main.h" -#include "game/board/model.h" -#include "game/board/player.h" -#include "game/board/roll.h" -#include "game/board/star.h" -#include "game/board/ui.h" + +#include +#include typedef struct { struct { @@ -39,7 +42,6 @@ typedef struct { u32 unk0C; } ConfigWork; - static void PauseExit(void); static void PauseProcess(void); static void CreatePauseScreen(void); @@ -91,56 +93,25 @@ static s16 controlWin = -1; static s16 quitWin = -1; static s16 settingsWin = -1; -static s16 boxModelID[8] = { - -1, -1, -1, -1, -1, -1, -1, -1 -}; +static s16 boxModelID[8] = { -1, -1, -1, -1, -1, -1, -1, -1 }; -static float boxPosTbl[8][2] = { - { 120.0f, 120.0f }, - { 232.0f, 120.0f }, - { 344.0f, 120.0f }, - { 456.0f, 120.0f }, - { 120.0f, 232.0f }, - { 232.0f, 232.0f }, - { 344.0f, 232.0f }, - { 456.0f, 232.0f } -}; +static float boxPosTbl[8][2] = { { 120.0f, 120.0f }, { 232.0f, 120.0f }, { 344.0f, 120.0f }, { 456.0f, 120.0f }, { 120.0f, 232.0f }, + { 232.0f, 232.0f }, { 344.0f, 232.0f }, { 456.0f, 232.0f } }; -static float padConfigPosTbl[4][2] = { - { 170.0f, 160.0f }, - { 266.0f, 160.0f }, - { 362.0f, 160.0f }, - { 458.0f, 160.0f } -}; +static float padConfigPosTbl[4][2] = { { 170.0f, 160.0f }, { 266.0f, 160.0f }, { 362.0f, 160.0f }, { 458.0f, 160.0f } }; -static s32 boardLogoTbl[] = { - DATA_MAKE_NUM(DATADIR_BOARD, 87), - DATA_MAKE_NUM(DATADIR_BOARD, 88), - DATA_MAKE_NUM(DATADIR_BOARD, 89), - DATA_MAKE_NUM(DATADIR_BOARD, 90), - DATA_MAKE_NUM(DATADIR_BOARD, 91), - DATA_MAKE_NUM(DATADIR_BOARD, 92), - DATA_MAKE_NUM(DATADIR_BOARD, 87), - DATA_MAKE_NUM(DATADIR_BOARD, 93), - DATA_MAKE_NUM(DATADIR_BOARD, 94) -}; +static s32 boardLogoTbl[] = { DATA_MAKE_NUM(DATADIR_BOARD, 87), DATA_MAKE_NUM(DATADIR_BOARD, 88), DATA_MAKE_NUM(DATADIR_BOARD, 89), + DATA_MAKE_NUM(DATADIR_BOARD, 90), DATA_MAKE_NUM(DATADIR_BOARD, 91), DATA_MAKE_NUM(DATADIR_BOARD, 92), DATA_MAKE_NUM(DATADIR_BOARD, 87), + DATA_MAKE_NUM(DATADIR_BOARD, 93), DATA_MAKE_NUM(DATADIR_BOARD, 94) }; -static float turnDigitPosTbl[] = { - 145.0f, 188.0f, 285.0f, 328.0f -}; +static float turnDigitPosTbl[] = { 145.0f, 188.0f, 285.0f, 328.0f }; -static s32 boxMdlTbl[] = { - DATA_MAKE_NUM(DATADIR_BPAUSE, 8), - DATA_MAKE_NUM(DATADIR_BPAUSE, 9), - DATA_MAKE_NUM(DATADIR_BPAUSE, 10), - DATA_MAKE_NUM(DATADIR_BPAUSE, 11), - DATA_MAKE_NUM(DATADIR_BPAUSE, 12), - DATA_MAKE_NUM(DATADIR_BPAUSE, 13), - DATA_MAKE_NUM(DATADIR_BPAUSE, 14), - DATA_MAKE_NUM(DATADIR_BPAUSE, 15) -}; +static s32 boxMdlTbl[] = { DATA_MAKE_NUM(DATADIR_BPAUSE, 8), DATA_MAKE_NUM(DATADIR_BPAUSE, 9), DATA_MAKE_NUM(DATADIR_BPAUSE, 10), + DATA_MAKE_NUM(DATADIR_BPAUSE, 11), DATA_MAKE_NUM(DATADIR_BPAUSE, 12), DATA_MAKE_NUM(DATADIR_BPAUSE, 13), DATA_MAKE_NUM(DATADIR_BPAUSE, 14), + DATA_MAKE_NUM(DATADIR_BPAUSE, 15) }; -void BoardPauseStart(void) { +void BoardPauseStart(void) +{ mainProcess = HuPrcChildCreate(PauseProcess, 0x2001, 0x3800, 0, boardMainProc); hostMdl = BoardStarHostMdlGet(); BoardModelMotionStart(hostMdl, 1, 0x40000001); @@ -151,7 +122,8 @@ void BoardPauseStart(void) { HuPrcDestructorSet2(mainProcess, PauseExit); } -static void PauseExit(void) { +static void PauseExit(void) +{ if (pauseQuitF == 0) { BoardRollWinDispSet(1); BoardRollDispSet(1); @@ -160,7 +132,8 @@ static void PauseExit(void) { BoardLast5GfxShowSet(1); HuAudFXPauseAll(0); HuAudSeqPauseAll(0); - } else { + } + else { BoardConfettiKill(); BoardAudSeqFadeOutAll(); HuAudAllStop(); @@ -173,7 +146,8 @@ static void PauseExit(void) { omSysPauseCtrl(0); if (GWMGExplainGet()) { _SetFlag(FLAG_ID_MAKE(0, 11)); - } else { + } + else { _ClearFlag(FLAG_ID_MAKE(0, 11)); } if (GWPartyGet() == 0) { @@ -182,7 +156,8 @@ static void PauseExit(void) { GWGameStat.story_pause.mg_list = GWMGListGet(); GWGameStat.story_pause.mess_speed = GWMessSpeedGet(); GWGameStat.story_pause.save_mode = GWSaveModeGet(); - } else { + } + else { GWGameStat.party_pause.explain_mg = GWMGExplainGet(); GWGameStat.party_pause.show_com_mg = GWMGShowComGet(); GWGameStat.party_pause.mg_list = GWMGListGet(); @@ -192,7 +167,8 @@ static void PauseExit(void) { mainProcess = NULL; } -static void PauseProcess(void) { +static void PauseProcess(void) +{ s32 temp_r31; pauseQuitF = 0; @@ -222,14 +198,16 @@ static void PauseProcess(void) { HuPrcSleep(20); WipeColorSet(0, 0, 0); BoardKill(); - } else { + } + else { BoardFilterFadeOut(30); HuPrcSleep(30); } HuPrcEnd(); } -void CreatePauseScreen(void) { +void CreatePauseScreen(void) +{ Mtx sp30; Vec sp24; Vec sp18; @@ -294,10 +272,12 @@ void CreatePauseScreen(void) { if (GWPartyGet() == 1) { if (GWTeamGet()) { HuSprBankSet(pauseSprGrp, 2, 2); - } else { + } + else { HuSprBankSet(pauseSprGrp, 2, 0); } - } else { + } + else { HuSprBankSet(pauseSprGrp, 2, 1); } for (i = 0; i < 4; i++) { @@ -334,7 +314,8 @@ void CreatePauseScreen(void) { sp24.x = 68.0f; if (GWBoardGet() == 3) { sp24.y = 464.0f; - } else { + } + else { sp24.y = 434.0f; } sp24.z = 1100.0f; @@ -436,7 +417,8 @@ void CreatePauseScreen(void) { SetBoxVisible(0); } -static void DeletePauseScreen(void) { +static void DeletePauseScreen(void) +{ ConfigWork *temp_r30; Mtx sp8; s32 i; @@ -461,7 +443,7 @@ static void DeletePauseScreen(void) { HuSprGrpKill(pauseCursorPos); pauseCursorPos = -1; } - PSMTXIdentity(sp8); + MTXIdentity(sp8); BoardModelLayerSet(hostMdl, hostOldLayer); BoardModelVisibilitySet(hostMdl, 1); BoardModelMtxSet(hostMdl, &sp8); @@ -471,7 +453,8 @@ static void DeletePauseScreen(void) { } } -static void SetBoxVisible(s32 arg0) { +static void SetBoxVisible(s32 arg0) +{ s32 i; for (i = 0; i < 8; i++) { @@ -479,7 +462,8 @@ static void SetBoxVisible(s32 arg0) { } } -static void PauseConfigObjFunc(omObjData *arg0) { +static void PauseConfigObjFunc(omObjData *arg0) +{ ConfigWork *temp_r31; s16 temp_r28; s32 var_r29; @@ -578,7 +562,8 @@ static void PauseConfigObjFunc(omObjData *arg0) { InitPauseQuit(arg0, temp_r31); break; } - } else { + } + else { cursorPos = ExecPauseConfig(arg0, temp_r31); if (temp_r28 != cursorPos) { arg0->trans.x = -40.0f + boxPosTbl[cursorPos][0]; @@ -590,7 +575,8 @@ static void PauseConfigObjFunc(omObjData *arg0) { } } -static void UpdatePauseText(s32 arg0) { +static void UpdatePauseText(s32 arg0) +{ s32 var_r28; s32 j; s32 i; @@ -603,7 +589,8 @@ static void UpdatePauseText(s32 arg0) { if (i == GWPlayer[j].port) { if (GWPlayer[j].com) { var_r28 = MAKE_MESSID(16, 30); - } else { + } + else { var_r28 = MAKE_MESSID(16, 29); } HuWinInsertMesSet(settingsWin, var_r28, i); @@ -615,14 +602,16 @@ static void UpdatePauseText(s32 arg0) { case 1: if (boxState[arg0] != 0) { HuWinMesSet(settingsWin, MAKE_MESSID(16, 33)); - } else { + } + else { HuWinMesSet(settingsWin, MAKE_MESSID(16, 34)); } break; case 2: if (boxState[arg0] != 0) { HuWinMesSet(settingsWin, MAKE_MESSID(16, 35)); - } else { + } + else { HuWinMesSet(settingsWin, MAKE_MESSID(16, 36)); } break; @@ -642,7 +631,8 @@ static void UpdatePauseText(s32 arg0) { case 4: if (boxState[arg0] != 0) { HuWinMesSet(settingsWin, MAKE_MESSID(16, 40)); - } else { + } + else { HuWinMesSet(settingsWin, MAKE_MESSID(16, 41)); } break; @@ -678,7 +668,8 @@ static void UpdatePauseText(s32 arg0) { } } -static void InitPauseQuit(omObjData *arg0, ConfigWork *arg1) { +static void InitPauseQuit(omObjData *arg0, ConfigWork *arg1) +{ float var_f31; switch (arg1->unk01) { @@ -696,7 +687,8 @@ static void InitPauseQuit(omObjData *arg0, ConfigWork *arg1) { if (quitWin != -1 && HuWinStatGet(quitWin) == 3) { if (HuWinChoiceNowGet(quitWin) != 0) { HuWinMesSet(settingsWin, MAKE_MESSID(16, 51)); - } else { + } + else { HuWinMesSet(settingsWin, MAKE_MESSID(16, 50)); } } @@ -725,7 +717,8 @@ static void InitPauseQuit(omObjData *arg0, ConfigWork *arg1) { } } -static void PauseQuitProcess(void) { +static void PauseQuitProcess(void) +{ WindowData *temp_r31; float sp10[2]; float sp8[2]; @@ -748,7 +741,8 @@ static void PauseQuitProcess(void) { HuPrcEnd(); } -static void DeletePauseQuit(void) { +static void DeletePauseQuit(void) +{ if (quitWin != -1) { HuWinExCleanup(quitWin); quitWin = -1; @@ -757,7 +751,8 @@ static void DeletePauseQuit(void) { quitProcess = NULL; } -static s32 UpdatePadConfig(omObjData *arg0, ConfigWork *arg1) { +static s32 UpdatePadConfig(omObjData *arg0, ConfigWork *arg1) +{ switch (arg1->unk01) { case 0: CreatePadConfig(arg0, arg1); @@ -777,12 +772,14 @@ static s32 UpdatePadConfig(omObjData *arg0, ConfigWork *arg1) { } if (arg1->unk00_field1 != 0) { return 0; - } else { + } + else { return 1; } } -static void CreatePadConfig(omObjData *arg0, ConfigWork *arg1) { +static void CreatePadConfig(omObjData *arg0, ConfigWork *arg1) +{ Vec sp14; Vec sp8; s32 i; @@ -817,7 +814,8 @@ static void CreatePadConfig(omObjData *arg0, ConfigWork *arg1) { arg1->unk01 = 1; } -static void ScrollInPadConfig(omObjData *arg0, ConfigWork *arg1) { +static void ScrollInPadConfig(omObjData *arg0, ConfigWork *arg1) +{ Vec sp8; s32 i; @@ -834,7 +832,8 @@ static void ScrollInPadConfig(omObjData *arg0, ConfigWork *arg1) { arg1->unk04 = 0; arg1->unk05 = 0; arg1->unk01 = 0; - } else { + } + else { arg1->unk01 = 2; } return; @@ -848,7 +847,8 @@ static void ScrollInPadConfig(omObjData *arg0, ConfigWork *arg1) { arg1->unk07--; } -static void CursorMovePadConfig(omObjData *arg0, ConfigWork *arg1) { +static void CursorMovePadConfig(omObjData *arg0, ConfigWork *arg1) +{ float sp8[4]; s32 temp_r29; u32 temp_r30; @@ -861,16 +861,19 @@ static void CursorMovePadConfig(omObjData *arg0, ConfigWork *arg1) { if (GWPlayer[temp_r29].com) { arg1->unk00_field3 = GWPlayer[temp_r29].diff + 1; arg1->unk05 = GWPlayer[temp_r29].diff + 1; - } else { + } + else { arg1->unk00_field3 = 0; arg1->unk05 = 0; } HuSprBankSet(padConfigSprGrp, arg1->unk04 + 8, 1); HuAudFXPlay(2); - } else if (temp_r30 == 0x200) { + } + else if (temp_r30 == 0x200) { HuAudFXPlay(3); arg1->unk01 = 4; - } else { + } + else { if (temp_r30 == 1) { arg1->unk04--; } @@ -879,9 +882,11 @@ static void CursorMovePadConfig(omObjData *arg0, ConfigWork *arg1) { } if (arg1->unk04 < 0) { arg1->unk04 = 0; - } else if (arg1->unk04 >= 4) { + } + else if (arg1->unk04 >= 4) { arg1->unk04 = 3; - } else if (temp_r30 == 1 || temp_r30 == 2) { + } + else if (temp_r30 == 1 || temp_r30 == 2) { HuAudFXPlay(0); arg1->unk06 = 4; } @@ -891,7 +896,8 @@ static void CursorMovePadConfig(omObjData *arg0, ConfigWork *arg1) { } } -static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) { +static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) +{ s32 temp_r29; s32 var_r28; s32 var_r26; @@ -901,13 +907,15 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) { var_r30 = 0; if (HuPadStkX[pausePad] < -20) { var_r30 |= 1; - } else if (HuPadStkX[pausePad] > 20) { + } + else if (HuPadStkX[pausePad] > 20) { var_r30 |= 2; } temp_r29 = CheckPort(arg1->unk04); if (GWGameStat.veryHardUnlock != 0) { var_r27 = 4; - } else { + } + else { var_r27 = 3; } HuWinMesSet(settingsWin, MAKE_MESSID(16, 32)); @@ -916,13 +924,15 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) { if (arg1->unk09++ < 10) { return; } - } else { + } + else { if (arg1->unk09++ < 2) { return; } arg1->unk0C = var_r30; } - } else { + } + else { arg1->unk0C = 0; } arg1->unk09 = 0; @@ -936,7 +946,8 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) { if (var_r28 != 0) { HuAudFXPlay(0); arg1->unk06 = 4; - } else { + } + else { if (HuPadBtnDown[pausePad] == 0x100) { arg1->unk01 = 2; if (arg1->unk05 != 0) { @@ -944,7 +955,8 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) { GWPlayerCfg[temp_r29].iscom = 1; GWPlayer[temp_r29].diff = arg1->unk05 - 1; GWPlayerCfg[temp_r29].diff = arg1->unk05 - 1; - } else { + } + else { GWPlayer[temp_r29].com = 0; GWPlayerCfg[temp_r29].iscom = 0; } @@ -967,18 +979,21 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) { } if (arg1->unk05 > var_r27) { arg1->unk05 = 0; - } else if (arg1->unk05 < 0) { + } + else if (arg1->unk05 < 0) { arg1->unk05 = var_r27; } if (arg1->unk05 != 0) { var_r26 = arg1->unk05 + 3; - } else { + } + else { var_r26 = arg1->unk04; } HuSprBankSet(padConfigSprGrp, arg1->unk04 + 4, var_r26); } -static void ScrollOutPadConfig(omObjData *arg0, ConfigWork *arg1) { +static void ScrollOutPadConfig(omObjData *arg0, ConfigWork *arg1) +{ Vec sp14; Vec sp8; @@ -1003,7 +1018,8 @@ static void ScrollOutPadConfig(omObjData *arg0, ConfigWork *arg1) { arg1->unk00_field2 = 1; } -static s32 UpdatePauseBox(omObjData *arg0, ConfigWork *arg1, s32 arg2) { +static s32 UpdatePauseBox(omObjData *arg0, ConfigWork *arg1, s32 arg2) +{ float var_f31; float var_f30; float var_f29; @@ -1031,21 +1047,26 @@ static s32 UpdatePauseBox(omObjData *arg0, ConfigWork *arg1, s32 arg2) { } if (arg1->unk04 < 0) { arg1->unk04 = 0; - } else if (arg1->unk04 > 1) { + } + else if (arg1->unk04 > 1) { arg1->unk04 = 1; - } else if (temp_r28 == 1 || temp_r28 == 2) { + } + else if (temp_r28 == 1 || temp_r28 == 2) { HuAudFXPlay(0); } if (temp_r28 == 0x100) { arg1->unk01 = 3; HuAudFXPlay(2); - } else if (temp_r28 == 0x200) { + } + else if (temp_r28 == 0x200) { arg1->unk01 = 4; HuAudFXPlay(3); - } else if (temp_r27 != arg1->unk04) { + } + else if (temp_r27 != arg1->unk04) { if (arg1->unk04 != 0) { var_f30 = 0.0f; - } else { + } + else { var_f30 = -90.0f; } var_f29 = arg0->rot.x; @@ -1058,7 +1079,8 @@ static s32 UpdatePauseBox(omObjData *arg0, ConfigWork *arg1, s32 arg2) { if (arg1->unk07 != 0) { arg0->rot.x += arg0->rot.y; arg1->unk07--; - } else { + } + else { arg1->unk01 = 1; } break; @@ -1091,7 +1113,8 @@ static s32 UpdatePauseBox(omObjData *arg0, ConfigWork *arg1, s32 arg2) { return 0; } -static s32 UpdatePauseBoxExt(omObjData *arg0, ConfigWork *arg1, s32 arg2) { +static s32 UpdatePauseBoxExt(omObjData *arg0, ConfigWork *arg1, s32 arg2) +{ float var_f31; float var_f30; float var_f29; @@ -1102,7 +1125,8 @@ static s32 UpdatePauseBoxExt(omObjData *arg0, ConfigWork *arg1, s32 arg2) { if (arg2 == 3 && GWGameStat.customPackEnable == 0) { var_r27 = 1; - } else { + } + else { var_r27 = 2; } switch (arg1->unk01) { @@ -1125,18 +1149,22 @@ static s32 UpdatePauseBoxExt(omObjData *arg0, ConfigWork *arg1, s32 arg2) { } if (arg1->unk04 < 0) { arg1->unk04 = 0; - } else if (arg1->unk04 > var_r27) { + } + else if (arg1->unk04 > var_r27) { arg1->unk04 = var_r27; - } else if (temp_r28 == 1 || temp_r28 == 2) { + } + else if (temp_r28 == 1 || temp_r28 == 2) { HuAudFXPlay(0); } if (temp_r28 == 0x100) { arg1->unk01 = 3; HuAudFXPlay(2); - } else if (temp_r28 == 0x200) { + } + else if (temp_r28 == 0x200) { arg1->unk01 = 4; HuAudFXPlay(3); - } else if (temp_r26 != arg1->unk04) { + } + else if (temp_r26 != arg1->unk04) { switch (arg1->unk04) { case 0: var_f30 = 90.0f; @@ -1158,7 +1186,8 @@ static s32 UpdatePauseBoxExt(omObjData *arg0, ConfigWork *arg1, s32 arg2) { if (arg1->unk07 != 0) { arg0->rot.x += arg0->rot.y; arg1->unk07--; - } else { + } + else { arg1->unk01 = 1; } break; @@ -1191,7 +1220,8 @@ static s32 UpdatePauseBoxExt(omObjData *arg0, ConfigWork *arg1, s32 arg2) { return 0; } -static s32 ExecPauseConfig(omObjData *arg0, ConfigWork *arg1) { +static s32 ExecPauseConfig(omObjData *arg0, ConfigWork *arg1) +{ s32 var_r27; s32 var_r26; s32 var_r29; @@ -1218,17 +1248,21 @@ static s32 ExecPauseConfig(omObjData *arg0, ConfigWork *arg1) { arg1->unk03 += var_r28; if (arg1->unk03 < 0) { arg1->unk03 = 0; - } else if (arg1->unk03 >= 2) { + } + else if (arg1->unk03 >= 2) { arg1->unk03 = 1; - } else if (var_r28 != 0) { + } + else if (var_r28 != 0) { HuAudFXPlay(0); arg1->unk06 = 4; } if (arg1->unk02 < 0) { arg1->unk02 = 0; - } else if (arg1->unk02 >= 4) { + } + else if (arg1->unk02 >= 4) { arg1->unk02 = 3; - } else if (var_r29 != 0) { + } + else if (var_r29 != 0) { HuAudFXPlay(0); arg1->unk06 = 4; } @@ -1251,7 +1285,8 @@ static s32 ExecPauseConfig(omObjData *arg0, ConfigWork *arg1) { } if (var_r26 != 0) { HuAudFXPlay(4); - } else if (var_r27 != 0) { + } + else if (var_r27 != 0) { HuAudFXPlay(2); arg1->unk00_field1 = 1; } @@ -1263,7 +1298,8 @@ static s32 ExecPauseConfig(omObjData *arg0, ConfigWork *arg1) { return arg1->unk02 + arg1->unk03 * 4; } -static void CreatePauseControlWin(void) { +static void CreatePauseControlWin(void) +{ float sp8[2]; float var_f31; float var_f30; @@ -1280,7 +1316,8 @@ static void CreatePauseControlWin(void) { HuWinDispOff(settingsControlWin); if (GWBoardGet() == 7 || GWBoardGet() == 8) { var_r31 = MAKE_MESSID(16, 73); - } else { + } + else { var_r31 = MAKE_MESSID(16, 52); } HuWinMesMaxSizeGet(1, sp8, var_r31); @@ -1304,7 +1341,8 @@ static void CreatePauseControlWin(void) { sp8[1] = 128.0f; } -static void DeletePauseControlWin(void) { +static void DeletePauseControlWin(void) +{ if (settingsControlWin != -1) { HuWinKill(settingsControlWin); settingsControlWin = -1; @@ -1319,7 +1357,8 @@ static void DeletePauseControlWin(void) { } } -static s32 WaitPauseInput(void) { +static s32 WaitPauseInput(void) +{ s32 var_r28; s32 var_r31; u32 temp_r30; @@ -1327,7 +1366,8 @@ static s32 WaitPauseInput(void) { mainScreenF = 1; if (GWBoardGet() == 7 || GWBoardGet() == 8) { var_r28 = 1; - } else { + } + else { var_r28 = 0; } HuWinDispOn(controlWin); @@ -1344,13 +1384,15 @@ static s32 WaitPauseInput(void) { var_r31 = 0; HuAudFXPlay(0x1C); break; - } else if (var_r28 == 0) { + } + else if (var_r28 == 0) { if (temp_r30 == 0x100) { var_r31 = 1; HuAudFXPlay(1); break; } - } else if (temp_r30 == 0x10) { + } + else if (temp_r30 == 0x10) { pauseQuitF = 1; var_r31 = 2; mgQuitExtraF = 1; @@ -1368,7 +1410,8 @@ static s32 WaitPauseInput(void) { return var_r31; } -static void ShowPauseConfig(void) { +static void ShowPauseConfig(void) +{ float var_f31; float var_f30; @@ -1383,7 +1426,8 @@ static void ShowPauseConfig(void) { var_f30 = boxPosTbl[0][1]; HuSprPosSet(pauseCursorPos, 1, var_f31, var_f30); HuSprAttrReset(pauseCursorPos, 1, HUSPR_ATTR_DISPOFF); - } else { + } + else { HuSprAttrSet(pauseCursorPos, 1, HUSPR_ATTR_DISPOFF); } while (configObj) { @@ -1391,7 +1435,8 @@ static void ShowPauseConfig(void) { } } -static void CreatePadConfigSprite(void) { +static void CreatePadConfigSprite(void) +{ float temp_f31; float temp_f30; s32 var_r29; @@ -1415,7 +1460,8 @@ static void CreatePadConfigSprite(void) { HuSprBankSet(padConfigSprGrp, i, temp_r28); if (temp_r26 != 0) { var_r29 = temp_r27 + 4; - } else { + } + else { var_r29 = i; } HuSprBankSet(padConfigSprGrp, i + 4, var_r29); @@ -1427,7 +1473,8 @@ static void CreatePadConfigSprite(void) { HuSprGrpPosSet(padConfigSprGrp, 0.0f, 0.0f); } -static void ShowPadConfigSprite(s32 arg0) { +static void ShowPadConfigSprite(s32 arg0) +{ s32 temp_r31; s32 i; @@ -1437,7 +1484,8 @@ static void ShowPadConfigSprite(s32 arg0) { HuSprAttrReset(padConfigSprGrp, temp_r31, HUSPR_ATTR_DISPOFF); HuSprAttrReset(padConfigSprGrp, temp_r31 + 4, HUSPR_ATTR_DISPOFF); HuSprAttrReset(padConfigSprGrp, temp_r31 + 8, HUSPR_ATTR_DISPOFF); - } else { + } + else { HuSprAttrSet(padConfigSprGrp, temp_r31, HUSPR_ATTR_DISPOFF); HuSprAttrSet(padConfigSprGrp, temp_r31 + 4, HUSPR_ATTR_DISPOFF); HuSprAttrSet(padConfigSprGrp, temp_r31 + 8, HUSPR_ATTR_DISPOFF); @@ -1445,12 +1493,14 @@ static void ShowPadConfigSprite(s32 arg0) { } if (arg0 != 0) { HuSprAttrReset(padConfigSprGrp, 12, HUSPR_ATTR_DISPOFF); - } else { + } + else { HuSprAttrSet(padConfigSprGrp, 12, HUSPR_ATTR_DISPOFF); } } -static void PauseCreateNumber(s32 arg0, s8 arg1) { +static void PauseCreateNumber(s32 arg0, s8 arg1) +{ s32 var_r31; s32 temp_r30; s32 temp_r29; @@ -1459,22 +1509,26 @@ static void PauseCreateNumber(s32 arg0, s8 arg1) { temp_r30 = arg1 / 10; if (arg0 == 0) { var_r31 = 3; - } else { + } + else { var_r31 = 5; } if (temp_r30 != 0) { HuSprBankSet(pauseSprGrp, var_r31, temp_r30); - } else { + } + else { HuSprAttrSet(pauseSprGrp, var_r31, 4); } HuSprBankSet(pauseSprGrp, var_r31 + 1, temp_r29); } -BOOL BoardPauseActiveCheck(void) { +BOOL BoardPauseActiveCheck(void) +{ return (mainProcess != NULL) ? TRUE : FALSE; } -BOOL BoardPauseReqCheck(void) { +BOOL BoardPauseReqCheck(void) +{ s32 temp_r30; s32 i; @@ -1495,7 +1549,8 @@ BOOL BoardPauseReqCheck(void) { return FALSE; } -static s32 CheckPort(s32 arg0) { +static s32 CheckPort(s32 arg0) +{ s32 i; for (i = 0; i < 4; i++) { @@ -1506,7 +1561,8 @@ static s32 CheckPort(s32 arg0) { return i; } -static void RotateBox(float arg0, float arg1, Mtx arg2) { +static void RotateBox(float arg0, float arg1, Mtx arg2) +{ Vec sp14; Mtx spB0; Mtx sp80; @@ -1514,11 +1570,11 @@ static void RotateBox(float arg0, float arg1, Mtx arg2) { Mtx sp20; BoardCameraRotGet(&sp14); - PSMTXRotRad(spB0, 'x', MTXDegToRad(sp14.x)); - PSMTXRotRad(sp80, 'y', MTXDegToRad(sp14.y)); - PSMTXRotRad(sp50, 'x', MTXDegToRad(arg0)); - PSMTXRotRad(sp20, 'y', MTXDegToRad(arg1)); - PSMTXConcat(sp80, spB0, sp80); - PSMTXConcat(sp50, sp20, sp20); - PSMTXConcat(sp80, sp20, arg2); + MTXRotRad(spB0, 'x', MTXDegToRad(sp14.x)); + MTXRotRad(sp80, 'y', MTXDegToRad(sp14.y)); + MTXRotRad(sp50, 'x', MTXDegToRad(arg0)); + MTXRotRad(sp20, 'y', MTXDegToRad(arg1)); + MTXConcat(sp80, spB0, sp80); + MTXConcat(sp50, sp20, sp20); + MTXConcat(sp80, sp20, arg2); } diff --git a/src/game/board/player.c b/src/game/board/player.c index 046aafea..f791cbc2 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]; @@ -183,7 +185,7 @@ static s32 boardSparkSfxTblAlt[] = { 0x2E3, }; -static omObjData *megaSquishObj[4] = {}; +static omObjData *megaSquishObj[4] = {NULL, NULL, NULL, NULL}; static s32 megaSquishSfxTbl[] = { 0x128, @@ -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 47b332c3..f790efb1 100755 --- a/src/game/board/shop.c +++ b/src/game/board/shop.c @@ -1,13 +1,5 @@ #include "game/board/shop.h" #include "game/audio.h" -#include "game/gamework.h" -#include "game/gamework_data.h" -#include "game/object.h" -#include "game/objsub.h" -#include "game/disp.h" -#include "game/pad.h" -#include "game/process.h" -#include "game/sprite.h" #include "game/board/audio.h" #include "game/board/com.h" #include "game/board/com_path.h" @@ -20,10 +12,20 @@ #include "game/board/ui.h" #include "game/board/view.h" #include "game/board/window.h" +#include "game/disp.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/sprite.h" #include "dolphin.h" #include "ext_math.h" +#include + typedef struct { struct { u8 unk00_field0 : 1; @@ -103,39 +105,20 @@ static Process *shopProc; static s16 itemMdl = -1; static s8 itemChoice = -1; -static BoardModelParam shopMdlParam[1] = { - { 0x00070094, { 0, 1, 0, 0, 0 }, -1 } -}; +static BoardModelParam shopMdlParam[1] = { { 0x00070094, { 0, 1, 0, 0, 0 }, -1 } }; static s16 hostMdl = -1; static s16 shopMot[3] = { -1, -1, -1 }; static s8 itemCurChoice = -1; -static s8 defaultItemTbl[5] = { - 0x05, 0x07, 0x02, 0x03, 0x00 -}; +static s8 defaultItemTbl[5] = { 0x05, 0x07, 0x02, 0x03, 0x00 }; -static s32 hostMessTbl[] = { - MAKE_MESSID(0x0F, 0x04), - MAKE_MESSID(0x0F, 0x07), - MAKE_MESSID(0x0F, 0x0A), - MAKE_MESSID(0x0F, 0x0D), - MAKE_MESSID(0x0F, 0x10), - MAKE_MESSID(0x0F, 0x13), - MAKE_MESSID(0x0F, 0x04), - MAKE_MESSID(0x0F, 0x24), - MAKE_MESSID(0x0F, 0x24) -}; +static s32 hostMessTbl[] = { MAKE_MESSID(0x0F, 0x04), MAKE_MESSID(0x0F, 0x07), MAKE_MESSID(0x0F, 0x0A), MAKE_MESSID(0x0F, 0x0D), + MAKE_MESSID(0x0F, 0x10), MAKE_MESSID(0x0F, 0x13), MAKE_MESSID(0x0F, 0x04), MAKE_MESSID(0x0F, 0x24), MAKE_MESSID(0x0F, 0x24) }; -static s8 itemPriceTbl[] = { - 5, 5, 15, 15, - 10, 10, 15, 15, - 15, 15, 0, 25, - 30, 30, 0, 0 -}; +static s8 itemPriceTbl[] = { 5, 5, 15, 15, 10, 10, 15, 15, 15, 15, 0, 25, 30, 30, 0, 0 }; -static s32 shopMotTbl[9][3] = { - { DATA_MAKE_NUM(DATADIR_BGUEST, 0x01), DATA_MAKE_NUM(DATADIR_BGUEST, 0x03), DATA_MAKE_NUM(DATADIR_BGUEST, 0x04) }, +static s32 shopMotTbl[9][3] = { { DATA_MAKE_NUM(DATADIR_BGUEST, 0x01), DATA_MAKE_NUM(DATADIR_BGUEST, 0x03), DATA_MAKE_NUM(DATADIR_BGUEST, 0x04) }, { DATA_MAKE_NUM(DATADIR_BGUEST, 0x09), DATA_MAKE_NUM(DATADIR_BGUEST, 0x0B), DATA_MAKE_NUM(DATADIR_BGUEST, 0x0C) }, { DATA_MAKE_NUM(DATADIR_BGUEST, 0x0E), DATA_MAKE_NUM(DATADIR_BGUEST, 0x10), DATA_MAKE_NUM(DATADIR_BGUEST, 0x11) }, { DATA_MAKE_NUM(DATADIR_BGUEST, 0x18), DATA_MAKE_NUM(DATADIR_BGUEST, 0x1A), DATA_MAKE_NUM(DATADIR_BGUEST, 0x1B) }, @@ -143,27 +126,26 @@ static s32 shopMotTbl[9][3] = { { DATA_MAKE_NUM(DATADIR_BGUEST, 0x22), DATA_MAKE_NUM(DATADIR_BGUEST, 0x24), DATA_MAKE_NUM(DATADIR_BGUEST, 0x25) }, { DATA_MAKE_NUM(DATADIR_BGUEST, 0x09), DATA_MAKE_NUM(DATADIR_BGUEST, 0x0B), DATA_MAKE_NUM(DATADIR_BGUEST, 0x0C) }, { DATA_MAKE_NUM(DATADIR_BGUEST, 0x2A), DATA_MAKE_NUM(DATADIR_BGUEST, 0x2C), DATA_MAKE_NUM(DATADIR_BGUEST, 0x2D) }, - { DATA_MAKE_NUM(DATADIR_BGUEST, 0x2A), DATA_MAKE_NUM(DATADIR_BGUEST, 0x2C), DATA_MAKE_NUM(DATADIR_BGUEST, 0x2D) } -}; + { DATA_MAKE_NUM(DATADIR_BGUEST, 0x2A), DATA_MAKE_NUM(DATADIR_BGUEST, 0x2C), DATA_MAKE_NUM(DATADIR_BGUEST, 0x2D) } }; -void BoardShopHostSet(s16 arg0) { +void BoardShopHostSet(s16 arg0) +{ hostMdl = arg0; } -s16 BoardShopHostGet(void) { +s16 BoardShopHostGet(void) +{ return hostMdl; } -void BoardShopInit(void) { +void BoardShopInit(void) +{ BoardModelParam *var_r29; Vec sp1C; Vec sp10; s32 j; s32 i; - s32 sp8[2] = { - 0x00080000, - 0x00100000 - }; + s32 sp8[2] = { 0x00080000, 0x00100000 }; for (i = 0; i < 2; i++) { BoardSpaceLinkTransformGet(sp8[i], &sp1C, &sp10, 0); @@ -176,7 +158,8 @@ void BoardShopInit(void) { BoardModelVisibilitySet(hostMdl, 0); } -void BoardShopKill(void) { +void BoardShopKill(void) +{ s32 i; s32 j; @@ -190,7 +173,8 @@ void BoardShopKill(void) { } } -void BoardShopExec(s32 player, s32 space) { +void BoardShopExec(s32 player, s32 space) +{ if (BoardPlayerSizeGet(GWSystem.player_curr) == 2) { return; } @@ -204,7 +188,8 @@ void BoardShopExec(s32 player, s32 space) { BoardRollDispSet(1); } -static void ExecShop(void) { +static void ExecShop(void) +{ Vec sp38; Vec sp2C; Vec sp20; @@ -229,7 +214,8 @@ static void ExecShop(void) { temp_r28 = GWPlayer[shopPlayer].space_curr; if (BoardSpaceFlagGet(0, temp_r28) & 0x80000) { shopMdlPtr = shopMdlIdx[0]; - } else { + } + else { shopMdlPtr = shopMdlIdx[1]; } BoardPlayerIdleSet(shopPlayer); @@ -315,7 +301,8 @@ static void ExecShop(void) { if (var_r29 > BoardPlayerCoinsGet(shopPlayer)) { BoardWinChoiceDisable(i); choiceEnableTbl[i] = 0; - } else { + } + else { choiceEnableTbl[i] = 1; } } @@ -332,7 +319,8 @@ static void ExecShop(void) { HuPrcSleep(0xF); if (itemCurChoice == -1 || itemCurChoice == 5 || itemCurChoice == 0x7F) { PauseShopWin(); - } else { + } + else { PauseShopWin(); while (!BoardStatusStopCheck(shopPlayer)) { HuPrcVSleep(); @@ -346,7 +334,8 @@ static void ExecShop(void) { temp_r24 = itemPriceTbl[activeItemTbl[itemCurChoice]]; if (temp_r24 >= 20) { var_r23 = 3; - } else { + } + else { var_r23 = 6; } var_f30 = BoardDAngleCalc(180.0f + BoardPlayerRotYGet(shopPlayer)); @@ -391,7 +380,8 @@ static void ExecShop(void) { HuPrcEnd(); } -static void DestroyShop(void) { +static void DestroyShop(void) +{ s16 temp_r30; s32 i; @@ -413,7 +403,8 @@ static void DestroyShop(void) { shopProc = NULL; } -static void PopupShop(void) { +static void PopupShop(void) +{ s32 i; for (i = 0; i < 2; i++) { @@ -443,7 +434,8 @@ static void PopupShop(void) { } } -static void CloseShop(void) { +static void CloseShop(void) +{ BoardModelMotionStart(shopMdlPtr[0], 0, 0x40000004); while (BoardModelMotionTimeGet(shopMdlPtr[0]) > 28.0f) { HuPrcVSleep(); @@ -458,7 +450,8 @@ static void CloseShop(void) { BoardModelVisibilitySet(BoardShopHostGet(), 0); } -static void CreateShopWin(void) { +static void CreateShopWin(void) +{ Vec sp8; omObjData *var_r31; ShopWinWork *var_r30; @@ -473,12 +466,12 @@ static void CreateShopWin(void) { var_r30->unk01 = 0xC; var_r30->unk04 = 0; shopWinObj = var_r31; - var_r30->unk06 = HuWinCreate(36.0f, HU_DISP_HEIGHT-136, 0x1F8, 0x60, 0); + var_r30->unk06 = HuWinCreate(36.0f, HU_DISP_HEIGHT - 136, 0x1F8, 0x60, 0); HuWinMesSpeedSet(var_r30->unk06, 0); HuWinDrawNoSet(var_r30->unk06, 0x40); HuWinExAnimIn(var_r30->unk06); sp8.x = 84.0f; - sp8.y = HU_DISP_HEIGHT-88; + sp8.y = HU_DISP_HEIGHT - 88; sp8.z = 400.0f; var_r31->scale.x = var_r31->scale.y = var_r31->scale.z = 0.25f; Hu3D2Dto3D(&sp8, 1, &sp8); @@ -488,7 +481,8 @@ static void CreateShopWin(void) { var_r31->scale.x = var_r31->scale.y = var_r31->scale.z = 1.0f; } -static void UpdateShopWin(omObjData *arg0) { +static void UpdateShopWin(omObjData *arg0) +{ Vec spC; float var_f29; float var_f28; @@ -517,7 +511,8 @@ static void UpdateShopWin(omObjData *arg0) { if (temp_r28->unk00_field0 == 0) { BoardModelVisibilitySet(itemMdl, 0); } - } else { + } + else { HuWinDispOn(temp_r28->unk06); SetShopWinItem(temp_r28, arg0); BoardModelVisibilitySet(itemMdl, 1); @@ -543,9 +538,9 @@ static void UpdateShopWin(omObjData *arg0) { } arg0->rot.y = BoardDAngleCalc(arg0->rot.y + 2.0f); BoardCameraRotGet(&spC); - PSMTXRotRad(sp48, 'y', MTXDegToRad(arg0->rot.y)); - PSMTXRotRad(sp18, 'x', MTXDegToRad(spC.x + 10.0f)); - PSMTXConcat(sp18, sp48, sp48); + MTXRotRad(sp48, 'y', MTXDegToRad(arg0->rot.y)); + MTXRotRad(sp18, 'x', MTXDegToRad(spC.x + 10.0f)); + MTXConcat(sp18, sp48, sp48); BoardModelMtxSet(itemMdl, &sp48); BoardModelRotSet(itemMdl, 0.0f, 0.0f, 0.0f); BoardModelPosSet(itemMdl, arg0->trans.x, arg0->trans.y + var_f29, arg0->trans.z); @@ -554,7 +549,8 @@ static void UpdateShopWin(omObjData *arg0) { } } -static void SetShopWinItem(ShopWinWork *arg0, omObjData *arg1) { +static void SetShopWinItem(ShopWinWork *arg0, omObjData *arg1) +{ Vec spC; s32 var_r26; s8 temp_r28; @@ -581,14 +577,16 @@ static void SetShopWinItem(ShopWinWork *arg0, omObjData *arg1) { } } -static void PauseShopWin(void) { +static void PauseShopWin(void) +{ if (shopWinObj) { OM_GET_WORK_PTR(shopWinObj, ShopWinWork)->unk00_field0 = 1; shopWinObj = NULL; } } -void StartItemGive(void) { +void StartItemGive(void) +{ Vec sp14; Vec sp8; omObjData *temp_r30; @@ -605,7 +603,7 @@ void StartItemGive(void) { BoardModelMotionStart(itemMdl, 0, 0); BoardModelMotionSpeedSet(itemMdl, 0.0f); BoardModelPosGet(itemMdl, &sp14); - PSMTXIdentity(sp20); + MTXIdentity(sp20); BoardModelMtxSet(itemMdl, &sp20); OSs16tof32(&angleVal, &temp_r30->scale.z); temp_r30->scale.z = -temp_r30->scale.z / 40.0f; @@ -621,7 +619,8 @@ void StartItemGive(void) { itemGiveObj = temp_r30; } -static void ExecItemGive(omObjData *arg0) { +static void ExecItemGive(omObjData *arg0) +{ ItemGiveWork *temp_r29; float var_f30; @@ -653,7 +652,8 @@ static void ExecItemGive(omObjData *arg0) { BoardModelRotYSet(itemMdl, var_f30); } -static void MoveItemGive(omObjData *arg0, ItemGiveWork *arg1) { +static void MoveItemGive(omObjData *arg0, ItemGiveWork *arg1) +{ Vec sp1C; Vec sp10; float temp_f27; @@ -665,13 +665,15 @@ static void MoveItemGive(omObjData *arg0, ItemGiveWork *arg1) { arg1->unk00_field1 = 2; BoardMakeRandomItem(); BoardItemStart(GWSystem.player_curr, 0xD); - } else { + } + else { arg1->unk00_field1 = 1; arg1->unk04 = 0xF; BoardPlayerPosGet(shopPlayer, &sp1C); if (BoardPlayerSizeGet(shopPlayer) == 1) { arg0->rot.x = (sp1C.y + 30.0f - arg0->trans.y) / 22.5f; - } else { + } + else { arg0->rot.x = (sp1C.y + 70.0f - arg0->trans.y) / 22.5f; } arg0->trans.y = arg0->rot.y; @@ -692,7 +694,8 @@ static void MoveItemGive(omObjData *arg0, ItemGiveWork *arg1) { BoardCameraDirGet(&sp10); var_f26 = BoardDAngleCalc(atan2d(-sp10.x, -sp10.z)); OSf32tos16(&var_f26, &angleVal); - } else { + } + else { arg0->scale.x += arg0->scale.y; arg0->trans.x += arg0->rot.x; arg0->trans.z += arg0->rot.z; @@ -706,7 +709,8 @@ static void MoveItemGive(omObjData *arg0, ItemGiveWork *arg1) { arg1->unk02++; } -static void ShrinkItemGive(omObjData *arg0, ItemGiveWork *arg1) { +static void ShrinkItemGive(omObjData *arg0, ItemGiveWork *arg1) +{ float var_f30; if (arg1->unk02 == 0) { @@ -733,10 +737,12 @@ static void ShrinkItemGive(omObjData *arg0, ItemGiveWork *arg1) { arg1->unk02 += 4; } -static void WaitItemGive(omObjData *arg0, ItemGiveWork *arg1) { +static void WaitItemGive(omObjData *arg0, ItemGiveWork *arg1) +{ if (arg1->unk02 > 20) { BoardModelVisibilitySet(itemMdl, 0); - } else { + } + else { arg1->unk02++; } if (BoardItemDoneCheck()) { @@ -744,44 +750,25 @@ static void WaitItemGive(omObjData *arg0, ItemGiveWork *arg1) { } } -static s8 itemPrioTbl[2][5][14] = { - { - { 0x14, 0x14, 0x0F, 0x0F, 0x05, 0x07, 0x05, 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, 0x00 }, - { 0x0F, 0x0F, 0x0D, 0x0A, 0x0A, 0x0A, 0x0A, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x00 }, - { 0x07, 0x07, 0x0E, 0x0C, 0x0A, 0x0A, 0x0A, 0x08, 0x05, 0x09, 0x00, 0x08, 0x00, 0x00 }, - { 0x0A, 0x0A, 0x0D, 0x0C, 0x0A, 0x0A, 0x07, 0x0A, 0x05, 0x05, 0x00, 0x08, 0x00, 0x00 }, - { 0x07, 0x07, 0x0D, 0x0A, 0x0D, 0x07, 0x0A, 0x0A, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00 } - }, - { - { 0x0F, 0x0F, 0x12, 0x0F, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x02, 0x05, 0x05 }, +static s8 itemPrioTbl[2][5][14] = { { { 0x14, 0x14, 0x0F, 0x0F, 0x05, 0x07, 0x05, 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, 0x00 }, + { 0x0F, 0x0F, 0x0D, 0x0A, 0x0A, 0x0A, 0x0A, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x00 }, + { 0x07, 0x07, 0x0E, 0x0C, 0x0A, 0x0A, 0x0A, 0x08, 0x05, 0x09, 0x00, 0x08, 0x00, 0x00 }, + { 0x0A, 0x0A, 0x0D, 0x0C, 0x0A, 0x0A, 0x07, 0x0A, 0x05, 0x05, 0x00, 0x08, 0x00, 0x00 }, + { 0x07, 0x07, 0x0D, 0x0A, 0x0D, 0x07, 0x0A, 0x0A, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00 } }, + { { 0x0F, 0x0F, 0x12, 0x0F, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x02, 0x05, 0x05 }, { 0x0F, 0x0F, 0x0D, 0x0A, 0x07, 0x0A, 0x07, 0x03, 0x00, 0x07, 0x00, 0x00, 0x05, 0x08 }, { 0x05, 0x04, 0x0D, 0x0C, 0x0A, 0x05, 0x0A, 0x08, 0x05, 0x05, 0x00, 0x05, 0x08, 0x0A }, { 0x07, 0x04, 0x0D, 0x0C, 0x08, 0x08, 0x07, 0x0A, 0x05, 0x05, 0x00, 0x05, 0x08, 0x08 }, - { 0x03, 0x02, 0x0D, 0x0A, 0x0D, 0x03, 0x08, 0x08, 0x07, 0x07, 0x00, 0x08, 0x08, 0x0A } - } -}; + { 0x03, 0x02, 0x0D, 0x0A, 0x0D, 0x03, 0x08, 0x08, 0x07, 0x07, 0x00, 0x08, 0x08, 0x0A } } }; -static s8 rankItemGroupTbl[2][4][3] = { - { - { 0x00, 0x01, 0x03 }, { 0x00, 0x02, 0x04 }, - { 0x00, 0x02, 0x04 }, { 0x00, 0x02, 0x04 } - }, - { - { 0x00, 0x01, 0x03 }, { 0x00, 0x02, 0x04 }, - { 0x00, 0x02, 0x04 }, { 0x00, 0x02, 0x04 } - } -}; +static s8 rankItemGroupTbl[2][4][3] = { { { 0x00, 0x01, 0x03 }, { 0x00, 0x02, 0x04 }, { 0x00, 0x02, 0x04 }, { 0x00, 0x02, 0x04 } }, + { { 0x00, 0x01, 0x03 }, { 0x00, 0x02, 0x04 }, { 0x00, 0x02, 0x04 }, { 0x00, 0x02, 0x04 } } }; -static float cursorPosTbl[6][2] = { - { 190.0f, 182.0f }, - { 190.0f, 208.0f }, - { 190.0f, 234.0f }, - { 190.0f, 260.0f }, - { 190.0f, 286.0f }, - { 190.0f, 312.0f } -}; +static float cursorPosTbl[6][2] + = { { 190.0f, 182.0f }, { 190.0f, 208.0f }, { 190.0f, 234.0f }, { 190.0f, 260.0f }, { 190.0f, 286.0f }, { 190.0f, 312.0f } }; -static void GetShopItems(s32 arg0) { +static void GetShopItems(s32 arg0) +{ s32 temp_r25; s32 temp_r20; s32 temp_r19; @@ -795,10 +782,11 @@ static void GetShopItems(s32 arg0) { s32 var_r29; s32 var_r30; - temp_r22 = 3.0f * ((float) GWSystem.turn / GWSystem.max_turn); + temp_r22 = 3.0f * ((float)GWSystem.turn / GWSystem.max_turn); if (BoardPlayerCoinsGet(arg0) < 30) { var_r27 = 0; - } else { + } + else { var_r27 = 1; } temp_r19 = rankItemGroupTbl[var_r27][GWPlayer[arg0].rank][temp_r22]; @@ -839,7 +827,8 @@ static void GetShopItems(s32 arg0) { } } -static void GetDefaultShopItems(s32 arg0) { +static void GetDefaultShopItems(s32 arg0) +{ s32 temp_r29; s32 var_r31; s32 var_r30; @@ -847,9 +836,11 @@ static void GetDefaultShopItems(s32 arg0) { temp_r29 = BoardRandMod(100); if (temp_r29 > 90) { var_r30 = 3; - } else if (temp_r29 > 40) { + } + else if (temp_r29 > 40) { var_r30 = BoardRandMod(2) + 1; - } else { + } + else { var_r30 = 0; } for (var_r31 = 0; var_r31 < 5; var_r31++) { @@ -857,7 +848,8 @@ static void GetDefaultShopItems(s32 arg0) { } } -static void SortShopItems(void) { +static void SortShopItems(void) +{ s32 sp8[5]; s32 var_r29; s32 i; @@ -880,7 +872,8 @@ static void SortShopItems(void) { } } -static void DecideComEnter(s32 arg0) { +static void DecideComEnter(s32 arg0) +{ s32 temp_r27; s32 temp_r30; s32 temp_r29; @@ -910,14 +903,13 @@ static void DecideComEnter(s32 arg0) { BoardComKeySetRight(); return; } - } else { + } + else { temp_r27 = GWPlayer[arg0].space_curr; temp_r30 = BoardComPathShortcutLenGet(temp_r27, 8, 0); temp_r29 = BoardComPathShortcutLenGet(temp_r27, 8, 1); - if ((temp_r30 != 0 || temp_r29 != 0) - && (BoardPlayerCoinsGet(arg0) >= 17 || (temp_r29 >= temp_r26 && temp_r30 >= temp_r26)) - && BoardPlayerCoinsGet(arg0) < 40 - && ((temp_r30 < 20 && temp_r30 > 0) || (temp_r29 < 10 && temp_r29 > 0)) + if ((temp_r30 != 0 || temp_r29 != 0) && (BoardPlayerCoinsGet(arg0) >= 17 || (temp_r29 >= temp_r26 && temp_r30 >= temp_r26)) + && BoardPlayerCoinsGet(arg0) < 40 && ((temp_r30 < 20 && temp_r30 > 0) || (temp_r29 < 10 && temp_r29 > 0)) && BoardRandMod(100) > var_r28) { BoardComKeySetRight(); return; @@ -926,18 +918,21 @@ static void DecideComEnter(s32 arg0) { BoardComKeySetLeft(); } -static void DecideComBuy(s32 arg0) { +static void DecideComBuy(s32 arg0) +{ if (!GWPlayer[arg0].com) { return; } if (comF != 0) { BoardComKeySetDown(); - } else { + } + else { BoardComKeySetUp(); } } -static s32 GetComItemChoice(s32 arg0) { +static s32 GetComItemChoice(s32 arg0) +{ s16 sp8; s32 temp_r26; s32 var_r28 = 0; @@ -954,7 +949,8 @@ static s32 GetComItemChoice(s32 arg0) { for (var_r27 = i = 0; i < 5; i++) { if (temp_r26 >= itemPriceTbl[activeItemTbl[i]]) { var_r30 = BoardComItemWeightGet(arg0, activeItemTbl[i]); - } else { + } + else { var_r30 = 0; } if (BoardPlayerItemFind(arg0, activeItemTbl[i]) != -1) { @@ -968,28 +964,31 @@ static s32 GetComItemChoice(s32 arg0) { if (var_r27 == 0) { comF = 1; var_r28 = 5; - } else { + } + else { var_r28 = var_r25; } return var_r28; } -static void WaitItemChoice(void) { +static void WaitItemChoice(void) +{ while (itemChoiceObj) { HuPrcVSleep(); } } -static void CreateShopItemChoice(s32 arg0, s32 arg1) { +static void CreateShopItemChoice(s32 arg0, s32 arg1) +{ omObjData *temp_r30; ItemChoiceWork *var_r31; s16 spC; +#if VERSION_PAL s16 i; - #if VERSION_PAL - for(i=0; i<6; i++) { + for (i = 0; i < 6; i++) { cursorPosTbl[i][0] = 190; } - #endif +#endif temp_r30 = omAddObjEx(boardObjMan, 0x7E01, 0, 0, -1, UpdateShopItemChoice); itemChoiceObj = temp_r30; itemChoice = -1; @@ -1001,29 +1000,30 @@ static void CreateShopItemChoice(s32 arg0, s32 arg1) { var_r31->unk02 = 0; var_r31->unk03 = arg1; var_r31->unk06 = HuSprGrpCreate(1); - #if VERSION_PAL +#if VERSION_PAL if (GWLanguageGet() != 0) { s16 winId = BoardWinIDGet(); - if(winId != -1) { + if (winId != -1) { WindowData *winP = &winData[winId]; - for(i=0; i<6; i++) { - cursorPosTbl[i][0] = winP->pos_x+96; + for (i = 0; i < 6; i++) { + cursorPosTbl[i][0] = winP->pos_x + 96; } - } else { - for(i=0; i<6; i++) { + } + else { + for (i = 0; i < 6; i++) { cursorPosTbl[i][0] = 166; } } } temp_r30->trans.x = cursorPosTbl[0][0]; temp_r30->trans.y = cursorPosTbl[0][1]; - #else +#else temp_r30->trans.x = cursorPosTbl[0][0]; temp_r30->trans.y = cursorPosTbl[0][1]; if (GWLanguageGet() != 0) { temp_r30->trans.x -= 24.0f; } - #endif +#endif if (GWPlayer[arg0].com) { var_r31->unk01 = GWMessDelayGet(); } @@ -1033,11 +1033,13 @@ static void CreateShopItemChoice(s32 arg0, s32 arg1) { HuSprPosSet(var_r31->unk06, 0, temp_r30->trans.x, temp_r30->trans.y); } -static s32 GetShopItemChoice(void) { +static s32 GetShopItemChoice(void) +{ return itemChoice; } -static s32 GetShopItemWinChoice(void) { +static s32 GetShopItemWinChoice(void) +{ ItemChoiceWork *var_r31; if (!itemChoiceObj) { @@ -1047,7 +1049,8 @@ static s32 GetShopItemWinChoice(void) { return var_r31->unk02; } -static void MoveShopItemChoice(omObjData *arg0, ItemChoiceWork *arg1) { +static void MoveShopItemChoice(omObjData *arg0, ItemChoiceWork *arg1) +{ u32 sp8; s32 temp_r28; s32 temp_r29; @@ -1055,14 +1058,15 @@ static void MoveShopItemChoice(omObjData *arg0, ItemChoiceWork *arg1) { temp_r28 = arg1->unk02; arg0->trans.x = cursorPosTbl[arg1->unk02][0]; arg0->trans.y = cursorPosTbl[arg1->unk02][1]; - #if VERSION_NTSC +#if VERSION_NTSC if (GWLanguageGet() != 0) { arg0->trans.x -= 24.0f; } - #endif +#endif if (GWPlayer[arg1->unk00_field1].com) { GetShopItemChoiceInput(arg1, arg0, &sp8); - } else { + } + else { temp_r29 = GWPlayer[arg1->unk00_field1].port; sp8 = HuPadDStkRep[temp_r29] | HuPadBtnDown[temp_r29]; } @@ -1077,7 +1081,8 @@ static void MoveShopItemChoice(omObjData *arg0, ItemChoiceWork *arg1) { HuAudFXPlay(2); if (GWPlayer[arg1->unk00_field1].com) { arg1->unk05 = 0x32; - } else { + } + else { arg1->unk05 = 5; } return; @@ -1105,7 +1110,8 @@ static void MoveShopItemChoice(omObjData *arg0, ItemChoiceWork *arg1) { } } -static void UpdateShopItemChoice(omObjData *arg0) { +static void UpdateShopItemChoice(omObjData *arg0) +{ ItemChoiceWork *temp_r31; temp_r31 = OM_GET_WORK_PTR(arg0, ItemChoiceWork); @@ -1120,25 +1126,31 @@ static void UpdateShopItemChoice(omObjData *arg0) { if (temp_r31->unk05 == 0) { temp_r31->unk00_field0 = 1; } - } else if (temp_r31->unk01 != 0) { + } + else if (temp_r31->unk01 != 0) { temp_r31->unk01--; - } else if (temp_r31->unk04 != 0) { + } + else if (temp_r31->unk04 != 0) { temp_r31->unk04--; - } else { + } + else { MoveShopItemChoice(arg0, temp_r31); } HuSprPosSet(temp_r31->unk06, 0, arg0->trans.x, arg0->trans.y); } -static void GetShopItemChoiceInput(ItemChoiceWork *arg0, omObjData *arg1, u32 *arg2) { +static void GetShopItemChoiceInput(ItemChoiceWork *arg0, omObjData *arg1, u32 *arg2) +{ if (arg0->unk02 == arg0->unk03) { *arg2 = 0x100; - } else { + } + else { *arg2 = 4; } } -void BoardShopTutorialExec(s32 arg0) { +void BoardShopTutorialExec(s32 arg0) +{ Vec sp48; Vec sp3C; Vec sp30; @@ -1155,7 +1167,8 @@ void BoardShopTutorialExec(s32 arg0) { sp10 = BoardWinPortraitGet(); if (BoardSpaceFlagGet(0, arg0) & 0x80000) { shopMdlPtr = shopMdlIdx[0]; - } else { + } + else { shopMdlPtr = shopMdlIdx[1]; } temp_r27 = BoardSpaceLinkFlagSearch(0, arg0, 0x02000000); diff --git a/src/game/board/space.c b/src/game/board/space.c index d092af1e..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); @@ -1111,4 +1118,8 @@ void BoardSpaceDestroy(void) HuMemDirectFree(spaceTexData); spaceTexData = NULL; } +#ifdef TARGET_PC + GXDestroyTexObj(&spaceHiliteTex); + GXDestroyTexObj(&spaceTex); +#endif } diff --git a/src/game/board/star.c b/src/game/board/star.c index 3f2a0ba5..1de6d249 100755 --- a/src/game/board/star.c +++ b/src/game/board/star.c @@ -3,15 +3,6 @@ #include "game/data.h" #include "game/disp.h" -#include "game/flag.h" -#include "game/gamework.h" -#include "game/gamework_data.h" -#include "game/hsfanim.h" -#include "game/hsfman.h" -#include "game/msm.h" -#include "game/objsub.h" -#include "game/window.h" -#include "game/wipe.h" #include "game/board/audio.h" #include "game/board/com.h" #include "game/board/main.h" @@ -21,9 +12,23 @@ #include "game/board/tutorial.h" #include "game/board/ui.h" #include "game/board/window.h" +#include "game/flag.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/msm.h" +#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; @@ -74,77 +79,28 @@ static Process *starProc; static s16 starParman = -1; static s16 hostMdl = -1; -static const s32 starMesTbl1[9] = { - MAKE_MESSID(12, 0), - MAKE_MESSID(12, 9), - MAKE_MESSID(12, 18), - MAKE_MESSID(12, 27), - MAKE_MESSID(12, 36), - MAKE_MESSID(12, 45), - MAKE_MESSID(12, 0), - MAKE_MESSID(12, 0), - MAKE_MESSID(12, 0) -}; +static const s32 starMesTbl1[9] = { MAKE_MESSID(12, 0), MAKE_MESSID(12, 9), MAKE_MESSID(12, 18), MAKE_MESSID(12, 27), MAKE_MESSID(12, 36), + MAKE_MESSID(12, 45), MAKE_MESSID(12, 0), MAKE_MESSID(12, 0), MAKE_MESSID(12, 0) }; -static const s32 starMesTbl2[9][2] = { - { MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) }, - { MAKE_MESSID(21, 35), MAKE_MESSID(21, 41) }, - { MAKE_MESSID(21, 36), MAKE_MESSID(21, 42) }, - { MAKE_MESSID(21, 37), MAKE_MESSID(21, 43) }, - { MAKE_MESSID(21, 38), MAKE_MESSID(21, 44) }, - { MAKE_MESSID(21, 39), MAKE_MESSID(21, 45) }, - { MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) }, - { MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) }, - { MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) } -}; +static const s32 starMesTbl2[9][2] + = { { MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) }, { MAKE_MESSID(21, 35), MAKE_MESSID(21, 41) }, { MAKE_MESSID(21, 36), MAKE_MESSID(21, 42) }, + { MAKE_MESSID(21, 37), MAKE_MESSID(21, 43) }, { MAKE_MESSID(21, 38), MAKE_MESSID(21, 44) }, { MAKE_MESSID(21, 39), MAKE_MESSID(21, 45) }, + { MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) }, { MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) }, { MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) } }; -s32 boardStarSndTbl[] = { - 0x00000120, - 0x00000160, - 0x000001A0, - 0x000001E0, - 0x00000220, - 0x00000260, - 0x000002A0, - 0x000002E0 -}; +s32 boardStarSndTbl[] = { 0x00000120, 0x00000160, 0x000001A0, 0x000001E0, 0x00000220, 0x00000260, 0x000002A0, 0x000002E0 }; -static s32 hostMotTbl[9][2] = { - { DATA_MAKE_NUM(DATADIR_W01, 33), DATA_MAKE_NUM(DATADIR_BOARD, 157) }, - { DATA_MAKE_NUM(DATADIR_W02, 7), DATA_MAKE_NUM(DATADIR_BOARD, 158) }, - { DATA_MAKE_NUM(DATADIR_W03, 31), DATA_MAKE_NUM(DATADIR_BOARD, 159) }, - { DATA_MAKE_NUM(DATADIR_W04, 11), DATA_MAKE_NUM(DATADIR_BOARD, 160) }, - { DATA_MAKE_NUM(DATADIR_W05, 9), DATA_MAKE_NUM(DATADIR_BOARD, 161) }, - { DATA_MAKE_NUM(DATADIR_W06, 21), DATA_MAKE_NUM(DATADIR_BOARD, 162) } -}; +static s32 hostMotTbl[9][2] = { { DATA_MAKE_NUM(DATADIR_W01, 33), DATA_MAKE_NUM(DATADIR_BOARD, 157) }, + { DATA_MAKE_NUM(DATADIR_W02, 7), DATA_MAKE_NUM(DATADIR_BOARD, 158) }, { DATA_MAKE_NUM(DATADIR_W03, 31), DATA_MAKE_NUM(DATADIR_BOARD, 159) }, + { DATA_MAKE_NUM(DATADIR_W04, 11), DATA_MAKE_NUM(DATADIR_BOARD, 160) }, { DATA_MAKE_NUM(DATADIR_W05, 9), DATA_MAKE_NUM(DATADIR_BOARD, 161) }, + { DATA_MAKE_NUM(DATADIR_W06, 21), DATA_MAKE_NUM(DATADIR_BOARD, 162) } }; -static HsfanimStruct00 starEffParam = { - 0x001E, - { 0x00, 0x00 }, // padding? - 3.3f, - 70.0f, - 7.0f, - { 0.0f, -0.05f, 0.0f }, - 2.0f, - 1.0f, - 20.0f, - 0.98f, - 0x0002, - { - 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x40, 0xFF, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 - }, - { - 0xFF, 0x80, 0x80, 0x00, - 0xFF, 0x40, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 - } -}; +static HsfanimStruct00 starEffParam = { 0x001E, { 0x00, 0x00 }, // padding? + 3.3f, 70.0f, 7.0f, { 0.0f, -0.05f, 0.0f }, 2.0f, 1.0f, 20.0f, 0.98f, 0x0002, + { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xFF, 0x80, 0x80, 0x00, 0xFF, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }; -void BoardStarHostSet(s16 arg0) { +void BoardStarHostSet(s16 arg0) +{ hostMdl = arg0; if (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { return; @@ -154,11 +110,13 @@ void BoardStarHostSet(s16 arg0) { } } -s16 BoardStarHostMdlGet(void) { +s16 BoardStarHostMdlGet(void) +{ return hostMdl; } -void BoardStarExec(s32 arg0, s32 arg1) { +void BoardStarExec(s32 arg0, s32 arg1) +{ if (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { return; } @@ -173,7 +131,8 @@ void BoardStarExec(s32 arg0, s32 arg1) { } } -static void ExecStar(void) { +static void ExecStar(void) +{ Vec sp24; Vec sp18; Vec spC; @@ -215,22 +174,23 @@ static void ExecStar(void) { BoardPlayerIdleSet(temp_r31); if (BoardDAngleCalc(temp_f30 - temp_f29) < 0.0f) { var_f28 = -BoardDAngleCalc(temp_f30 - temp_f29); - } else { + } + else { var_f28 = BoardDAngleCalc(temp_f30 - temp_f29); } if (var_f28 > 90.0f) { var_r25 = 30; - } else { + } + else { var_r25 = 15; } BoardPlayerMotBlendSet(temp_r31, temp_f30, var_r25); temp_f27 = BoardModelRotYGet(temp_r30); var_f31 = BoardDAngleCalc(temp_f30 + 180.0f) - temp_f27; - if ((var_f31 <= 4.0f && var_f31 >= 0.0f) - || (var_f31 <= 360.0f && var_f31 >= 355.0f) - || (var_f31 <= 0.0f && var_f31 >= -4.0f)) { + if ((var_f31 <= 4.0f && var_f31 >= 0.0f) || (var_f31 <= 360.0f && var_f31 >= 355.0f) || (var_f31 <= 0.0f && var_f31 >= -4.0f)) { var_r26 = 0; - } else { + } + else { var_r26 = 1; } if (var_r26 != 0) { @@ -253,12 +213,14 @@ static void ExecStar(void) { BoardWinCreate(0, temp_r29, BoardWinPortraitGetStar()); BoardWinWait(); BoardWinKill(); - } else if (BoardPlayerCoinsGet(temp_r31) < 20 && GWSystem.last5_effect != 4) { + } + else if (BoardPlayerCoinsGet(temp_r31) < 20 && GWSystem.last5_effect != 4) { temp_r29 = starMesTbl1[temp_r27] + 2; BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar()); BoardWinWait(); BoardWinKill(); - } else { + } + else { BoardStatusShowSetAll(0); while (!BoardStatusStopCheck(0) || !BoardStatusStopCheck(1) || !BoardStatusStopCheck(2) || !BoardStatusStopCheck(3)) { HuPrcVSleep(); @@ -286,7 +248,8 @@ static void ExecStar(void) { if (GWPlayer[temp_r31].com) { if (BoardPlayerCoinsGet(temp_r31) >= 20) { BoardComKeySetUp(); - } else { + } + else { BoardComKeySetDown(); } } @@ -325,7 +288,7 @@ static void ExecStar(void) { break; } } -block_A: + block_A: temp_r29 = starMesTbl1[temp_r27] + 3; BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar()); BoardWinWait(); @@ -381,7 +344,8 @@ block_B: HuPrcEnd(); } -static void DestroyStar(void) { +static void DestroyStar(void) +{ s32 i; _ClearFlag(0x10017); @@ -394,7 +358,8 @@ static void DestroyStar(void) { starProc = NULL; } -static void GiveStarMain(omObjData *arg0) { +static void GiveStarMain(omObjData *arg0) +{ GiveStarWork *temp_r30; temp_r30 = OM_GET_WORK_PTR(arg0, GiveStarWork); @@ -407,7 +372,8 @@ static void GiveStarMain(omObjData *arg0) { } if (temp_r30->unk04 != 0) { temp_r30->unk04--; - } else { + } + else { switch (temp_r30->unk01) { case 4: break; @@ -431,7 +397,8 @@ static void GiveStarMain(omObjData *arg0) { } } -static void UpdateStarAngle(GiveStarWork *arg0, omObjData *arg1) { +static void UpdateStarAngle(GiveStarWork *arg0, omObjData *arg1) +{ float var_f31; if (arg0->unk00_field1 != 0) { @@ -446,7 +413,8 @@ static void UpdateStarAngle(GiveStarWork *arg0, omObjData *arg1) { } } -static void InitGiveStar(GiveStarWork *arg0, omObjData *arg1) { +static void InitGiveStar(GiveStarWork *arg0, omObjData *arg1) +{ Vec sp8; BoardPlayerPosGet(arg0->unk00_field3, &sp8); @@ -465,7 +433,8 @@ static void InitGiveStar(GiveStarWork *arg0, omObjData *arg1) { InitGiveStarEffect(); } -static void MoveGiveStar(GiveStarWork *arg0, omObjData *arg1) { +static void MoveGiveStar(GiveStarWork *arg0, omObjData *arg1) +{ Vec sp8; float temp_f31; @@ -482,7 +451,8 @@ static void MoveGiveStar(GiveStarWork *arg0, omObjData *arg1) { arg1->trans.z += arg1->rot.z; arg1->trans.y += -0.08166667f * temp_f31 * temp_f31 * 0.97f + 50.0f; arg0->unk0A++; - } else { + } + else { arg1->trans.y += -4.0f; if (arg1->trans.y <= sp8.y + 300.0f) { arg1->trans.y = sp8.y + 300.0f; @@ -491,7 +461,8 @@ static void MoveGiveStar(GiveStarWork *arg0, omObjData *arg1) { } } -static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1) { +static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1) +{ Vec sp8; float var_f30; @@ -505,7 +476,8 @@ static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1) { if (arg0->unk08 < 90) { if (BoardPlayerSizeGet(arg0->unk00_field3) != 1) { arg0->unk08 += 2; - } else { + } + else { arg0->unk08 += 1.4f; } if (arg0->unk08 > 90) { @@ -519,7 +491,8 @@ static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1) { } arg1->scale.y = arg1->scale.x; arg1->scale.z = arg1->scale.x; - } else { + } + else { omVibrate(arg0->unk00_field3, 12, 0xC, 0); arg0->unk00_field0 = 1; arg0->unk01 = 4; @@ -529,7 +502,8 @@ static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1) { } } -static void StopGiveStar(void) { +static void StopGiveStar(void) +{ GiveStarWork *temp_r31; if (giveStarObj) { @@ -538,7 +512,8 @@ static void StopGiveStar(void) { } } -static void InitGiveStarEffect(void) { +static void InitGiveStarEffect(void) +{ s16 temp_r3; void *var_r30; @@ -553,7 +528,8 @@ static void InitGiveStarEffect(void) { HuDataDirClose(DATADIR_EFFECT); } -static void KillGiveStarEffect(void) { +static void KillGiveStarEffect(void) +{ if (starParman != -1) { Hu3DParManKill(starParman); starParman = -1; @@ -561,13 +537,15 @@ static void KillGiveStarEffect(void) { } } -static inline void StarInlineFunc00(void) { +static inline void StarInlineFunc00(void) +{ GiveStarWork *temp_r28 = OM_GET_WORK_PTR(giveStarObj, GiveStarWork); temp_r28->unk01 = 0; } -static inline void StarInlineFunc01(void) { +static inline void StarInlineFunc01(void) +{ GiveStarWork *temp_r27 = OM_GET_WORK_PTR(giveStarObj, GiveStarWork); while (temp_r27->unk01 != 4) { @@ -575,7 +553,8 @@ static inline void StarInlineFunc01(void) { } } -static inline void StarInlineFunc02(void) { +static inline void StarInlineFunc02(void) +{ GiveStarWork *temp_r29 = OM_GET_WORK_PTR(giveStarObj, GiveStarWork); temp_r29->unk00_field1 = 1; @@ -584,7 +563,8 @@ static inline void StarInlineFunc02(void) { temp_r29->unk01 = 2; } -void BoardStarGive(s32 arg0, Vec *arg1) { +void BoardStarGive(s32 arg0, Vec *arg1) +{ Vec sp8; s32 temp_r25; GiveStarWork *temp_r31; @@ -631,7 +611,8 @@ void BoardStarGive(s32 arg0, Vec *arg1) { HuPrcSleep(10); if (_CheckFlag(FLAG_ID_MAKE(1, 11))) { BoardPlayerMotionEndWait(arg0); - } else { + } + else { temp_r25 = HuAudSStreamPlay(6); BoardPlayerMotionEndWait(arg0); while (msmStreamGetStatus(temp_r25) != 0) { @@ -641,7 +622,8 @@ void BoardStarGive(s32 arg0, Vec *arg1) { BoardPlayerVoiceEnableSet(arg0, 7, 1); } -void BoardStarShowNext(s32 arg0) { +void BoardStarShowNext(s32 arg0) +{ Mtx spBC; Mtx sp8C; Mtx sp5C; @@ -669,7 +651,8 @@ void BoardStarShowNext(s32 arg0) { while (WipeStatGet() != 0) { HuPrcVSleep(); } - } else { + } + else { HuPrcSleep(18); } BoardStatusItemSet(0); @@ -703,14 +686,16 @@ void BoardStarShowNext(s32 arg0) { temp_f31 = VECMag(&sp20); if (temp_f31 > 3000.0f) { var_r27 = 0xF0; - } else if (temp_f31 > 1500.0f) { + } + else if (temp_f31 > 1500.0f) { var_r27 = 0x78; - } else { + } + else { var_r27 = 0x78; } BoardViewMoveStart(&sp38, &sp50, var_r27); showNextObj->trans.x = 68.0f; - showNextObj->trans.y = HU_DISP_HEIGHT-50; + showNextObj->trans.y = HU_DISP_HEIGHT - 50; showNextObj->trans.z = 100.0f; sp44.x = showNextObj->trans.x; sp44.y = showNextObj->trans.y; @@ -718,9 +703,9 @@ void BoardStarShowNext(s32 arg0) { Hu3D2Dto3D(&sp44, 1, &sp44); BoardModelPosSetV(BoardStarHostMdlGet(), &sp44); BoardCameraRotGet(&sp2C); - PSMTXRotRad(sp5C, 'y', MTXDegToRad(10.0f)); - PSMTXRotRad(sp8C, 'x', MTXDegToRad(sp2C.x)); - PSMTXConcat(sp8C, sp5C, spBC); + MTXRotRad(sp5C, 'y', MTXDegToRad(10.0f)); + MTXRotRad(sp8C, 'x', MTXDegToRad(sp2C.x)); + MTXConcat(sp8C, sp5C, spBC); BoardModelMtxSet(BoardStarHostMdlGet(), &spBC); BoardModelRotSet(BoardStarHostMdlGet(), 0.0f, 0.0f, 0.0f); BoardModelScaleSet(BoardStarHostMdlGet(), 0.09f, 0.09f, 0.09f); @@ -735,7 +720,8 @@ void BoardStarShowNext(s32 arg0) { } if (var_r28 == 0) { var_r30 = starMesTbl1[GWBoardGet()] + 6; - } else { + } + else { var_r30 = starMesTbl2[GWBoardGet()][0]; } BoardWinCreate(3, var_r30, -1); @@ -749,7 +735,8 @@ void BoardStarShowNext(s32 arg0) { HuPrcSleep(3); if (var_r28 == 0) { var_r30 = starMesTbl1[GWBoardGet()] + 7; - } else { + } + else { var_r30 = starMesTbl2[GWBoardGet()][1]; } BoardWinCreate(3, var_r30, -1); @@ -765,7 +752,7 @@ void BoardStarShowNext(s32 arg0) { HuPrcVSleep(); } BoardViewWait(); - PSMTXIdentity(spBC); + MTXIdentity(spBC); BoardModelMtxSet(BoardStarHostMdlGet(), &spBC); HideNextHost(1); while (showNextObj) { @@ -786,7 +773,8 @@ void BoardStarShowNext(s32 arg0) { _ClearFlag(FLAG_ID_MAKE(1, 28)); } -static void ShowNextUpdate(omObjData *arg0) { +static void ShowNextUpdate(omObjData *arg0) +{ ShowNextWork *temp_r30 = OM_GET_WORK_PTR(arg0, ShowNextWork); Vec sp8; @@ -815,7 +803,8 @@ static void ShowNextUpdate(omObjData *arg0) { BoardModelPosSetV(BoardStarHostMdlGet(), &sp8); } -static void HideNextHost(s32 arg0) { +static void HideNextHost(s32 arg0) +{ ShowNextWork *temp_r31 = OM_GET_WORK_PTR(showNextObj, ShowNextWork); temp_r31->unk01 = arg0; 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/ui.c b/src/game/board/ui.c index ff2a9066..f0ff4717 100755 --- a/src/game/board/ui.c +++ b/src/game/board/ui.c @@ -1,7 +1,14 @@ #include "game/board/ui.h" #include "game/audio.h" +#include "game/board/com.h" +#include "game/board/item.h" +#include "game/board/main.h" +#include "game/board/model.h" +#include "game/board/player.h" +#include "game/board/tutorial.h" #include "game/chrman.h" #include "game/data.h" +#include "game/disp.h" #include "game/gamework.h" #include "game/gamework_data.h" #include "game/hsfex.h" @@ -11,13 +18,6 @@ #include "game/process.h" #include "game/sprite.h" #include "game/window.h" -#include "game/board/com.h" -#include "game/board/item.h" -#include "game/board/main.h" -#include "game/board/model.h" -#include "game/board/player.h" -#include "game/board/tutorial.h" -#include "game/disp.h" #include "ext_math.h" @@ -164,147 +164,66 @@ static s16 yourTurnSprGrp = -1; static UnkUiStatusStruct uiStatus[4] = { 0 }; -static s32 statusSprTbl[11] = { - DATA_MAKE_NUM(DATADIR_BOARD, 0x27), - DATA_MAKE_NUM(DATADIR_BOARD, 0x26), - DATA_MAKE_NUM(DATADIR_BOARD, 0x29), - DATA_MAKE_NUM(DATADIR_BOARD, 0x28), - DATA_MAKE_NUM(DATADIR_BOARD, 0x28), - DATA_MAKE_NUM(DATADIR_BOARD, 0x28), - DATA_MAKE_NUM(DATADIR_BOARD, 0x2D), - DATA_MAKE_NUM(DATADIR_BOARD, 0x28), - DATA_MAKE_NUM(DATADIR_BOARD, 0x28), - DATA_MAKE_NUM(DATADIR_BOARD, 0x28), - DATA_MAKE_NUM(DATADIR_BOARD, 0x2C) -}; +static s32 statusSprTbl[11] = { DATA_MAKE_NUM(DATADIR_BOARD, 0x27), DATA_MAKE_NUM(DATADIR_BOARD, 0x26), DATA_MAKE_NUM(DATADIR_BOARD, 0x29), + DATA_MAKE_NUM(DATADIR_BOARD, 0x28), DATA_MAKE_NUM(DATADIR_BOARD, 0x28), DATA_MAKE_NUM(DATADIR_BOARD, 0x28), DATA_MAKE_NUM(DATADIR_BOARD, 0x2D), + DATA_MAKE_NUM(DATADIR_BOARD, 0x28), DATA_MAKE_NUM(DATADIR_BOARD, 0x28), DATA_MAKE_NUM(DATADIR_BOARD, 0x28), DATA_MAKE_NUM(DATADIR_BOARD, 0x2C) }; -static s16 statusSprPrioTbl[12] = { - 0x05F0, 0x05E6, 0x05DC, 0x05D2, - 0x05DC, 0x05DC, 0x05DC, 0x05DC, - 0x05DC, 0x05DC, 0x05DC, 0x05DC -}; +static s16 statusSprPrioTbl[12] = { 0x05F0, 0x05E6, 0x05DC, 0x05D2, 0x05DC, 0x05DC, 0x05DC, 0x05DC, 0x05DC, 0x05DC, 0x05DC, 0x05DC }; -static float statusHideOfsTbl[4] = { - -230.0f, 230.0f, -230.0f, 230.0f -}; +static float statusHideOfsTbl[4] = { -230.0f, 230.0f, -230.0f, 230.0f }; -static float statusPosTbl[4][2] = { - { 114.0f, 84.0f }, - { HU_DISP_WIDTH-114, 84.0f }, - { 114.0f, HU_DISP_HEIGHT-84 }, - { HU_DISP_WIDTH-114, HU_DISP_HEIGHT-84 } -}; +static float statusPosTbl[4][2] + = { { 114.0f, 84.0f }, { HU_DISP_WIDTH - 114, 84.0f }, { 114.0f, HU_DISP_HEIGHT - 84 }, { HU_DISP_WIDTH - 114, HU_DISP_HEIGHT - 84 } }; -static u8 statusColTbl[4][4] = { - { 0x80, 0x80, 0x80, 0x00 }, - { 0x1A, 0x84, 0xFF, 0x00 }, - { 0xFF, 0x1A, 0x2D, 0x00 }, - { 0x0A, 0xB4, 0x3C, 0x00 } -}; +static u8 statusColTbl[4][4] = { { 0x80, 0x80, 0x80, 0x00 }, { 0x1A, 0x84, 0xFF, 0x00 }, { 0xFF, 0x1A, 0x2D, 0x00 }, { 0x0A, 0xB4, 0x3C, 0x00 } }; -static float statusSprPosTbl[17][2] = { - { 0.0f, 0.0f }, - { 0.0f, 0.0f }, - { -68.0f, 0.0f }, - { 80.0f, 14.0f }, - { 64.0f, 14.0f }, - { 48.0f, 14.0f }, - { 26.0f, 14.0f }, - { 80.0f, -12.0f }, - { 64.0f, -12.0f }, - { 48.0f, -12.0f }, - { 26.0f, -12.0f }, - { -16.0f, 0.0f }, - { -18.0f, 32.0f }, - { 24.0f, -34.0f }, - { 48.0f, -34.0f }, - { 72.0f, -34.0f }, - { -32.0f, -16.0f } -}; +static float statusSprPosTbl[17][2] = { { 0.0f, 0.0f }, { 0.0f, 0.0f }, { -68.0f, 0.0f }, { 80.0f, 14.0f }, { 64.0f, 14.0f }, { 48.0f, 14.0f }, + { 26.0f, 14.0f }, { 80.0f, -12.0f }, { 64.0f, -12.0f }, { 48.0f, -12.0f }, { 26.0f, -12.0f }, { -16.0f, 0.0f }, { -18.0f, 32.0f }, + { 24.0f, -34.0f }, { 48.0f, -34.0f }, { 72.0f, -34.0f }, { -32.0f, -16.0f } }; -static float statusItemPosTbl[6][2] = { - { -56.0f, 0.0f }, - { -58.0f, 32.0f }, - { -2.0f, 4.0f }, - { 34.0f, -8.0f }, - { 70.0f, 4.0f }, - { -56.0f, -16.0f } -}; +static float statusItemPosTbl[6][2] = { { -56.0f, 0.0f }, { -58.0f, 32.0f }, { -2.0f, 4.0f }, { 34.0f, -8.0f }, { 70.0f, 4.0f }, { -56.0f, -16.0f } }; -static s32 itemMdlTbl[14] = { - DATA_MAKE_NUM(DATADIR_BOARD, 0x83), - DATA_MAKE_NUM(DATADIR_BOARD, 0x84), - DATA_MAKE_NUM(DATADIR_BOARD, 0x85), - DATA_MAKE_NUM(DATADIR_BOARD, 0x86), - DATA_MAKE_NUM(DATADIR_BOARD, 0x87), - DATA_MAKE_NUM(DATADIR_BOARD, 0x88), - DATA_MAKE_NUM(DATADIR_BOARD, 0x89), - DATA_MAKE_NUM(DATADIR_BOARD, 0x8A), - DATA_MAKE_NUM(DATADIR_BOARD, 0x8B), - DATA_MAKE_NUM(DATADIR_BOARD, 0x8C), - DATA_MAKE_NUM(DATADIR_BOARD, 0x8D), - DATA_MAKE_NUM(DATADIR_BOARD, 0x8E), - DATA_MAKE_NUM(DATADIR_BOARD, 0x8F), - DATA_MAKE_NUM(DATADIR_BOARD, 0x90) -}; +static s32 itemMdlTbl[14] = { DATA_MAKE_NUM(DATADIR_BOARD, 0x83), DATA_MAKE_NUM(DATADIR_BOARD, 0x84), DATA_MAKE_NUM(DATADIR_BOARD, 0x85), + DATA_MAKE_NUM(DATADIR_BOARD, 0x86), DATA_MAKE_NUM(DATADIR_BOARD, 0x87), DATA_MAKE_NUM(DATADIR_BOARD, 0x88), DATA_MAKE_NUM(DATADIR_BOARD, 0x89), + DATA_MAKE_NUM(DATADIR_BOARD, 0x8A), DATA_MAKE_NUM(DATADIR_BOARD, 0x8B), DATA_MAKE_NUM(DATADIR_BOARD, 0x8C), DATA_MAKE_NUM(DATADIR_BOARD, 0x8D), + DATA_MAKE_NUM(DATADIR_BOARD, 0x8E), DATA_MAKE_NUM(DATADIR_BOARD, 0x8F), DATA_MAKE_NUM(DATADIR_BOARD, 0x90) }; -static Vec teamItemStatusPosTbl[2] = { - { HU_DISP_CENTERX-98, 116.0f, 0.0f }, - { HU_DISP_CENTERX+98, 116.0f, 0.0f } -}; +static Vec teamItemStatusPosTbl[2] = { { HU_DISP_CENTERX - 98, 116.0f, 0.0f }, { HU_DISP_CENTERX + 98, 116.0f, 0.0f } }; -s32 BoardItemModelGet(s32 arg0) { - s32 sp8[14] = { - DATA_MAKE_NUM(DATADIR_BOARD, 0x6D), - DATA_MAKE_NUM(DATADIR_BOARD, 0x6E), - DATA_MAKE_NUM(DATADIR_BOARD, 0x6F), - DATA_MAKE_NUM(DATADIR_BOARD, 0x70), - DATA_MAKE_NUM(DATADIR_BOARD, 0x71), - DATA_MAKE_NUM(DATADIR_BOARD, 0x72), - DATA_MAKE_NUM(DATADIR_BOARD, 0x73), - DATA_MAKE_NUM(DATADIR_BOARD, 0x74), - DATA_MAKE_NUM(DATADIR_BOARD, 0x76), - DATA_MAKE_NUM(DATADIR_BOARD, 0x77), - DATA_MAKE_NUM(DATADIR_BOARD, 0x78), - DATA_MAKE_NUM(DATADIR_BOARD, 0x79), - DATA_MAKE_NUM(DATADIR_BOARD, 0x7A), - DATA_MAKE_NUM(DATADIR_BOARD, 0x7B) - }; +s32 BoardItemModelGet(s32 arg0) +{ + s32 sp8[14] = { DATA_MAKE_NUM(DATADIR_BOARD, 0x6D), DATA_MAKE_NUM(DATADIR_BOARD, 0x6E), DATA_MAKE_NUM(DATADIR_BOARD, 0x6F), + DATA_MAKE_NUM(DATADIR_BOARD, 0x70), DATA_MAKE_NUM(DATADIR_BOARD, 0x71), DATA_MAKE_NUM(DATADIR_BOARD, 0x72), + DATA_MAKE_NUM(DATADIR_BOARD, 0x73), DATA_MAKE_NUM(DATADIR_BOARD, 0x74), DATA_MAKE_NUM(DATADIR_BOARD, 0x76), + DATA_MAKE_NUM(DATADIR_BOARD, 0x77), DATA_MAKE_NUM(DATADIR_BOARD, 0x78), DATA_MAKE_NUM(DATADIR_BOARD, 0x79), + DATA_MAKE_NUM(DATADIR_BOARD, 0x7A), DATA_MAKE_NUM(DATADIR_BOARD, 0x7B) }; return sp8[arg0]; } -s32 BoardItemNameGet(s32 arg0) { - s32 sp8[15] = { - DATA_MAKE_NUM(DATADIR_EFFECT, 0x00), - DATA_MAKE_NUM(DATADIR_EFFECT, 0x01), - DATA_MAKE_NUM(DATADIR_EFFECT, 0x02), - DATA_MAKE_NUM(DATADIR_EFFECT, 0x03), - DATA_MAKE_NUM(DATADIR_EFFECT, 0x04), - DATA_MAKE_NUM(DATADIR_EFFECT, 0x05), - DATA_MAKE_NUM(DATADIR_EFFECT, 0x06), - DATA_MAKE_NUM(DATADIR_EFFECT, 0x07), - DATA_MAKE_NUM(DATADIR_EFFECT, 0x08), - DATA_MAKE_NUM(DATADIR_EFFECT, 0x09), - DATA_MAKE_NUM(DATADIR_EFFECT, 0x0A), - DATA_MAKE_NUM(DATADIR_EFFECT, 0x0B), - DATA_MAKE_NUM(DATADIR_EFFECT, 0x0C), - DATA_MAKE_NUM(DATADIR_EFFECT, 0x0D), - DATA_MAKE_NUM(DATADIR_EFFECT, 0x0E) - }; +s32 BoardItemNameGet(s32 arg0) +{ + s32 sp8[15] = { DATA_MAKE_NUM(DATADIR_EFFECT, 0x00), DATA_MAKE_NUM(DATADIR_EFFECT, 0x01), DATA_MAKE_NUM(DATADIR_EFFECT, 0x02), + DATA_MAKE_NUM(DATADIR_EFFECT, 0x03), DATA_MAKE_NUM(DATADIR_EFFECT, 0x04), DATA_MAKE_NUM(DATADIR_EFFECT, 0x05), + DATA_MAKE_NUM(DATADIR_EFFECT, 0x06), DATA_MAKE_NUM(DATADIR_EFFECT, 0x07), DATA_MAKE_NUM(DATADIR_EFFECT, 0x08), + DATA_MAKE_NUM(DATADIR_EFFECT, 0x09), DATA_MAKE_NUM(DATADIR_EFFECT, 0x0A), DATA_MAKE_NUM(DATADIR_EFFECT, 0x0B), + DATA_MAKE_NUM(DATADIR_EFFECT, 0x0C), DATA_MAKE_NUM(DATADIR_EFFECT, 0x0D), DATA_MAKE_NUM(DATADIR_EFFECT, 0x0E) }; return sp8[arg0]; } -BOOL BoardStatusStopCheck(s32 arg0) { +BOOL BoardStatusStopCheck(s32 arg0) +{ return (uiStatus[arg0].unk00_bit2) ? FALSE : TRUE; } -s32 BoardStatusVisibleGet(s32 arg0) { +s32 BoardStatusVisibleGet(s32 arg0) +{ return uiStatus[arg0].unk00_bit1; } -void BoardStatusShowSetAll(s32 arg0) { +void BoardStatusShowSetAll(s32 arg0) +{ s32 i; for (i = 0; i < 4; i++) { @@ -312,7 +231,8 @@ void BoardStatusShowSetAll(s32 arg0) { } } -void BoardStatusItemSet(s32 arg0) { +void BoardStatusItemSet(s32 arg0) +{ UnkUiStatusStruct *temp_r31; s32 i; s32 j; @@ -332,11 +252,13 @@ void BoardStatusItemSet(s32 arg0) { } } -void BoardStatusShowSetForce(s32 arg0) { +void BoardStatusShowSetForce(s32 arg0) +{ uiStatus[arg0].unk00_bit3 = 1; } -void BoardStatusGraySet(s32 arg0, s32 arg1) { +void BoardStatusGraySet(s32 arg0, s32 arg1) +{ UnkUiStatusStruct *temp_r31; s16 sp10[9] = { 3, 4, 5, 7, 8, 9, 2, 6, 10 }; s16 var_r28; @@ -348,7 +270,8 @@ void BoardStatusGraySet(s32 arg0, s32 arg1) { var_r29 = 0xFF; temp_r31->unk00_bit4 = 1; var_r28 = 1500; - } else { + } + else { var_r29 = 0x3F; temp_r31->unk00_bit4 = 0; var_r28 = 1530; @@ -359,7 +282,8 @@ void BoardStatusGraySet(s32 arg0, s32 arg1) { } } -void BoardStatusShowSet(s32 arg0, s32 arg1) { +void BoardStatusShowSet(s32 arg0, s32 arg1) +{ UnkUiStatusStruct *temp_r31 = &uiStatus[arg0]; if (temp_r31->unk00_bit3) { @@ -372,7 +296,8 @@ void BoardStatusShowSet(s32 arg0, s32 arg1) { temp_r31->unk10.y = statusPosTbl[arg0][1]; temp_r31->unk00_bit3 = 0; } - } else { + } + else { if (!temp_r31->unk00_bit1) { temp_r31->unk00_bit1 = 1; temp_r31->unk10.x = statusPosTbl[arg0][0]; @@ -383,17 +308,20 @@ void BoardStatusShowSet(s32 arg0, s32 arg1) { } } -void BoardStatusItemHideSet(s32 arg0, s32 arg1) { +void BoardStatusItemHideSet(s32 arg0, s32 arg1) +{ UnkUiStatusStruct *temp_r31 = &uiStatus[arg0]; if (arg1 != 0) { temp_r31->unk00_bit5 = 1; - } else { + } + else { temp_r31->unk00_bit5 = 0; } } -void BoardStatusTargetPosSet(s32 arg0, Vec *arg1) { +void BoardStatusTargetPosSet(s32 arg0, Vec *arg1) +{ UnkUiStatusStruct *temp_r31 = &uiStatus[arg0]; temp_r31->unk10.x = arg1->x; @@ -401,14 +329,16 @@ void BoardStatusTargetPosSet(s32 arg0, Vec *arg1) { temp_r31->unk00_bit2 = 1; } -void BoardStatusPosGet(s32 arg0, Vec *arg1) { +void BoardStatusPosGet(s32 arg0, Vec *arg1) +{ UnkUiStatusStruct *temp_r31 = &uiStatus[arg0]; arg1->x = temp_r31->unk04.x; arg1->y = temp_r31->unk04.y; } -void BoardStatusPosSet(s32 arg0, Vec *arg1) { +void BoardStatusPosSet(s32 arg0, Vec *arg1) +{ UnkUiStatusStruct *temp_r30 = &uiStatus[arg0]; temp_r30->unk04.x = arg1->x; @@ -416,7 +346,8 @@ void BoardStatusPosSet(s32 arg0, Vec *arg1) { BoardStatusTargetPosSet(arg0, arg1); } -void BoardStatusHammerCreate(s32 arg0) { +void BoardStatusHammerCreate(s32 arg0) +{ UnkUiStatusStruct *temp_r31 = &uiStatus[arg0]; float spC[2]; s32 var_r30; @@ -448,20 +379,23 @@ void BoardStatusHammerCreate(s32 arg0) { } } -void BoardStatusHammerShowSet(s32 arg0, s32 arg1) { +void BoardStatusHammerShowSet(s32 arg0, s32 arg1) +{ UnkUiStatusStruct *temp_r31 = &uiStatus[arg0]; if (temp_r31->unk00_bit6) { if (arg1 != 0) { HuSprAttrSet(temp_r31->unk02, 0x10, HUSPR_ATTR_LOOP); - } else { + } + else { HuSprAttrReset(temp_r31->unk02, 0x10, HUSPR_ATTR_LOOP); HuSprAttrSet(temp_r31->unk02, 0x10, HUSPR_ATTR_NOANIM); } } } -void BoardStatusHammerKill(s32 arg0) { +void BoardStatusHammerKill(s32 arg0) +{ UnkUiStatusStruct *temp_r31 = &uiStatus[arg0]; if (temp_r31->unk00_bit6) { @@ -470,7 +404,8 @@ void BoardStatusHammerKill(s32 arg0) { } } -void BoardStatusKill(void) { +void BoardStatusKill(void) +{ UnkUiStatusStruct *temp_r31; s32 i; @@ -486,7 +421,8 @@ void BoardStatusKill(void) { } } -void BoardStatusCreate(void) { +void BoardStatusCreate(void) +{ s32 i; memset(uiStatus, 0, 0x70); @@ -512,28 +448,23 @@ void BoardStatusCreate(void) { } } -static void KillAllBoardStatus(void) { +static void KillAllBoardStatus(void) +{ BoardStatusKill(); statusProc = NULL; } -static void CreateBoardStatusSprite(s32 arg0, UnkUiStatusStruct *arg1) { +static void CreateBoardStatusSprite(s32 arg0, UnkUiStatusStruct *arg1) +{ float var_f31; float var_f30; s16 sp8; s32 temp_r28; s32 temp_r27; s16 temp_r26; - s32 spC[] = { - DATA_MAKE_NUM(DATADIR_BOARD, 0x2E), - DATA_MAKE_NUM(DATADIR_BOARD, 0x2F), - DATA_MAKE_NUM(DATADIR_BOARD, 0x30), - DATA_MAKE_NUM(DATADIR_BOARD, 0x31), - DATA_MAKE_NUM(DATADIR_BOARD, 0x32), - DATA_MAKE_NUM(DATADIR_BOARD, 0x33), - DATA_MAKE_NUM(DATADIR_BOARD, 0x34), - DATA_MAKE_NUM(DATADIR_BOARD, 0x35) - }; + s32 spC[] = { DATA_MAKE_NUM(DATADIR_BOARD, 0x2E), DATA_MAKE_NUM(DATADIR_BOARD, 0x2F), DATA_MAKE_NUM(DATADIR_BOARD, 0x30), + DATA_MAKE_NUM(DATADIR_BOARD, 0x31), DATA_MAKE_NUM(DATADIR_BOARD, 0x32), DATA_MAKE_NUM(DATADIR_BOARD, 0x33), + DATA_MAKE_NUM(DATADIR_BOARD, 0x34), DATA_MAKE_NUM(DATADIR_BOARD, 0x35) }; s32 i; temp_r28 = GWPlayerCfg[arg0].character; @@ -547,10 +478,11 @@ static void CreateBoardStatusSprite(s32 arg0, UnkUiStatusStruct *arg1) { HuSprAttrSet(arg1->unk02, i, 8); HuSprPosSet(arg1->unk02, i, statusSprPosTbl[i][0], statusSprPosTbl[i][1]); } - if ((s32) GWSystem.team != 0) { + if ((s32)GWSystem.team != 0) { if (GWPlayerTeamGet(arg0) == 0) { HuSprBankSet(arg1->unk02, 1, 2); - } else { + } + else { HuSprBankSet(arg1->unk02, 1, 1); } } @@ -582,7 +514,8 @@ static void CreateBoardStatusSprite(s32 arg0, UnkUiStatusStruct *arg1) { } } -void BoardSpriteCreate(s32 file, s32 prio, AnimData **anim, s16 *sprite) { +void BoardSpriteCreate(s32 file, s32 prio, AnimData **anim, s16 *sprite) +{ s16 temp_r28; void *temp_r27; AnimData *temp_r31; @@ -598,7 +531,8 @@ void BoardSpriteCreate(s32 file, s32 prio, AnimData **anim, s16 *sprite) { } } -static s32 UpdateBoardStatus(void) { +static s32 UpdateBoardStatus(void) +{ UnkUiStatusStruct *temp_r31; u8 *temp_r28; s32 temp_r27; @@ -619,13 +553,15 @@ static s32 UpdateBoardStatus(void) { if (temp_r27 != -1 && temp_r31->unk00_bit5) { UpdateStatusItem(temp_r31, j, temp_r27); HuSprAttrReset(temp_r31->unk02, j + 0xD, HUSPR_ATTR_DISPOFF); - } else { + } + else { HuSprAttrSet(temp_r31->unk02, j + 0xD, HUSPR_ATTR_DISPOFF); } } if (GWPlayer[i].com) { HuSprAttrReset(temp_r31->unk02, 0xC, HUSPR_ATTR_DISPOFF); - } else { + } + else { HuSprAttrSet(temp_r31->unk02, 0xC, HUSPR_ATTR_DISPOFF); } temp_r28 = statusColTbl[GWPlayer[i].color]; @@ -636,7 +572,8 @@ static s32 UpdateBoardStatus(void) { return 0; } -static void BoardStatusProc(void) { +static void BoardStatusProc(void) +{ while (1) { if (omSysExitReq != 0 || UpdateBoardStatus() != 0) { break; @@ -646,7 +583,8 @@ static void BoardStatusProc(void) { HuPrcEnd(); } -static void MoveBoardStatus(s32 arg0) { +static void MoveBoardStatus(s32 arg0) +{ UnkUiStatusStruct *temp_r30 = &uiStatus[arg0]; float var_f30; Vec spC; @@ -655,7 +593,8 @@ static void MoveBoardStatus(s32 arg0) { if (ABS(spC.x) < 1.0f && ABS(spC.y) < 1.0f) { spC = temp_r30->unk10; temp_r30->unk00_bit2 = 0; - } else { + } + else { OSs8tof32(&temp_r30->unk01, &var_f30); var_f30 /= 32; VECScale(&spC, &spC, var_f30); @@ -666,7 +605,8 @@ static void MoveBoardStatus(s32 arg0) { temp_r30->unk04.y = spC.y; } -void BoardSpriteDigitUpdate(s16 arg0, s16 arg1, s32 arg2) { +void BoardSpriteDigitUpdate(s16 arg0, s16 arg1, s32 arg2) +{ s32 temp_r29; s32 temp_r28; s32 temp_r27; @@ -676,20 +616,23 @@ void BoardSpriteDigitUpdate(s16 arg0, s16 arg1, s32 arg2) { temp_r27 = (arg2 - (temp_r29 * 100 + temp_r28 * 10)) % 10; if (temp_r29 == 0) { HuSprBankSet(arg0, arg1 + 2, 0xA); - } else { + } + else { HuSprBankSet(arg0, arg1 + 2, temp_r29); } if (temp_r28 == 0 && temp_r29 == 0) { HuSprBankSet(arg0, arg1 + 1, temp_r27); HuSprAttrSet(arg0, arg1, 4); - } else { + } + else { HuSprBankSet(arg0, arg1 + 1, temp_r28); HuSprBankSet(arg0, arg1, temp_r27); HuSprAttrReset(arg0, arg1, HUSPR_ATTR_DISPOFF); } } -static void UpdateStatusItem(UnkUiStatusStruct *arg0, s32 arg1, s32 arg2) { +static void UpdateStatusItem(UnkUiStatusStruct *arg0, s32 arg1, s32 arg2) +{ float temp_f31; float temp_f30; @@ -699,21 +642,15 @@ static void UpdateStatusItem(UnkUiStatusStruct *arg0, s32 arg1, s32 arg2) { HuSprPosSet(arg0->unk02, arg1 + 0xD, temp_f31, temp_f30); } -void BoardPickerCreate(s32 arg0, s8 arg1, void *arg2, s8 arg3) { +void BoardPickerCreate(s32 arg0, s8 arg1, void *arg2, s8 arg3) +{ UnkUiWork01 *temp_r31; omObjData *temp_r30; s32 temp_r28; s16 sp12; - s32 sp14[] = { - DATA_MAKE_NUM(DATADIR_BOARD, 0x1E), - DATA_MAKE_NUM(DATADIR_BOARD, 0x1F), - DATA_MAKE_NUM(DATADIR_BOARD, 0x20), - DATA_MAKE_NUM(DATADIR_BOARD, 0x21), - DATA_MAKE_NUM(DATADIR_BOARD, 0x22), - DATA_MAKE_NUM(DATADIR_BOARD, 0x23), - DATA_MAKE_NUM(DATADIR_BOARD, 0x24), - DATA_MAKE_NUM(DATADIR_BOARD, 0x25) - }; + s32 sp14[] = { DATA_MAKE_NUM(DATADIR_BOARD, 0x1E), DATA_MAKE_NUM(DATADIR_BOARD, 0x1F), DATA_MAKE_NUM(DATADIR_BOARD, 0x20), + DATA_MAKE_NUM(DATADIR_BOARD, 0x21), DATA_MAKE_NUM(DATADIR_BOARD, 0x22), DATA_MAKE_NUM(DATADIR_BOARD, 0x23), + DATA_MAKE_NUM(DATADIR_BOARD, 0x24), DATA_MAKE_NUM(DATADIR_BOARD, 0x25) }; temp_r28 = GWPlayer[arg0].character; temp_r30 = omAddObjEx(boardObjMan, 0x107, 0, 0, -1, &UpdatePicker); @@ -746,11 +683,13 @@ void BoardPickerCreate(s32 arg0, s8 arg1, void *arg2, s8 arg3) { CreatePickerWindow(temp_r31, 1); } -void BoardPickerBackFlagSet(s32 arg0) { +void BoardPickerBackFlagSet(s32 arg0) +{ if (pickerObj) { if (arg0 != 0) { pickerBackF = 0; - } else { + } + else { pickerBackF = 1; } if (arg0 == 0) { @@ -760,15 +699,18 @@ void BoardPickerBackFlagSet(s32 arg0) { } } -BOOL BoardPickerDoneCheck(void) { +BOOL BoardPickerDoneCheck(void) +{ if (pickerObj) { return FALSE; - } else { + } + else { return TRUE; } } -s32 BoardPickerPosGet(Vec *arg0) { +s32 BoardPickerPosGet(Vec *arg0) +{ if (pickerObj == 0 || arg0 == 0) { return -1; } @@ -778,11 +720,13 @@ s32 BoardPickerPosGet(Vec *arg0) { return 0; } -s32 BoardPickerChoiceGet(void) { +s32 BoardPickerChoiceGet(void) +{ return pickerChoice; } -static void UpdatePicker(omObjData *arg0) { +static void UpdatePicker(omObjData *arg0) +{ UnkUiWork01 *temp_r31 = OM_GET_WORK_PTR(arg0, UnkUiWork01); if (temp_r31->unk00_bit0 || BoardIsKill()) { @@ -790,12 +734,15 @@ static void UpdatePicker(omObjData *arg0) { HuSprGrpKill(temp_r31->unk04); pickerObj = NULL; omDelObjEx(HuPrcCurrentGet(), arg0); - } else { + } + else { if (temp_r31->unk03 != 0) { temp_r31->unk03--; - } else if (pickerChoice != -1 || temp_r31->unk00_bit7) { + } + else if (pickerChoice != -1 || temp_r31->unk00_bit7) { temp_r31->unk00_bit0 = 1; - } else { + } + else { UpdatePickerInput(temp_r31, arg0); } MovePicker(temp_r31, arg0); @@ -803,7 +750,8 @@ static void UpdatePicker(omObjData *arg0) { } } -static void UpdatePickerInput(UnkUiWork01 *arg0, omObjData *arg1) { +static void UpdatePickerInput(UnkUiWork01 *arg0, omObjData *arg1) +{ s32 sp8; s32 temp_r29; @@ -811,7 +759,8 @@ static void UpdatePickerInput(UnkUiWork01 *arg0, omObjData *arg1) { sp8 = 0; if (GWPlayer[arg0->unk00_bit5].com && arg0->unk01 != -1) { UpdateComPickerButton(arg0, arg1, &sp8); - } else { + } + else { temp_r29 = GWPlayer[arg0->unk00_bit5].port; sp8 = HuPadDStkRep[temp_r29] | HuPadBtnDown[temp_r29]; } @@ -823,7 +772,8 @@ static void UpdatePickerInput(UnkUiWork01 *arg0, omObjData *arg1) { } } -static void MovePicker(UnkUiWork01 *arg0, omObjData *arg1) { +static void MovePicker(UnkUiWork01 *arg0, omObjData *arg1) +{ float temp_f31 = 0.5f; Vec sp14; Vec sp8; @@ -840,7 +790,8 @@ static void MovePicker(UnkUiWork01 *arg0, omObjData *arg1) { arg1->trans.y = arg1->rot.y; arg1->trans.z = arg1->rot.z; arg0->unk00_bit6 = 0; - } else { + } + else { VECScale(&sp8, &sp8, temp_f31); VECAdd(&sp14, &sp8, &sp8); arg1->trans.x = sp8.x; @@ -850,34 +801,40 @@ static void MovePicker(UnkUiWork01 *arg0, omObjData *arg1) { } } -static void UpdateComPickerButton(UnkUiWork01 *arg0, omObjData *arg1, s32 *arg2) { +static void UpdateComPickerButton(UnkUiWork01 *arg0, omObjData *arg1, s32 *arg2) +{ if (arg0->unk02 == arg0->unk01) { *arg2 = 0x100; - } else { + } + else { *arg2 = 2; } } -static BOOL CheckPickerButton(UnkUiWork01 *arg0, omObjData *arg1, u32 arg2) { +static BOOL CheckPickerButton(UnkUiWork01 *arg0, omObjData *arg1, u32 arg2) +{ BOOL var_r30 = FALSE; if (arg2 == 0x100) { pickerChoice = arg0->unk02; HuAudFXPlay(2); var_r30 = TRUE; - } else if (arg2 == 0x200 && pickerBackF == 0) { + } + else if (arg2 == 0x200 && pickerBackF == 0) { arg0->unk00_bit0 = 1; arg0->unk00_bit7 = 1; pickerChoice = -1; HuAudFXPlay(3); var_r30 = TRUE; - } else if (arg2 & 1) { + } + else if (arg2 & 1) { var_r30 = TRUE; if (pickerChoiceDefault > 1) { HuAudFXPlay(0); } arg0->unk02--; - } else if (arg2 & 2) { + } + else if (arg2 & 2) { var_r30 = TRUE; if (pickerChoiceDefault > 1) { HuAudFXPlay(0); @@ -896,19 +853,13 @@ static BOOL CheckPickerButton(UnkUiWork01 *arg0, omObjData *arg1, u32 arg2) { return var_r30; } -void BoardYourTurnExec(s32 arg0) { +void BoardYourTurnExec(s32 arg0) +{ s32 temp_r29; UnkUiWork02 *temp_r31; - s32 sp8[] = { - DATA_MAKE_NUM(DATADIR_BOARD, 0x43), - DATA_MAKE_NUM(DATADIR_BOARD, 0x44), - DATA_MAKE_NUM(DATADIR_BOARD, 0x45), - DATA_MAKE_NUM(DATADIR_BOARD, 0x46), - DATA_MAKE_NUM(DATADIR_BOARD, 0x47), - DATA_MAKE_NUM(DATADIR_BOARD, 0x48), - DATA_MAKE_NUM(DATADIR_BOARD, 0x49), - DATA_MAKE_NUM(DATADIR_BOARD, 0x4A) - }; + s32 sp8[] = { DATA_MAKE_NUM(DATADIR_BOARD, 0x43), DATA_MAKE_NUM(DATADIR_BOARD, 0x44), DATA_MAKE_NUM(DATADIR_BOARD, 0x45), + DATA_MAKE_NUM(DATADIR_BOARD, 0x46), DATA_MAKE_NUM(DATADIR_BOARD, 0x47), DATA_MAKE_NUM(DATADIR_BOARD, 0x48), + DATA_MAKE_NUM(DATADIR_BOARD, 0x49), DATA_MAKE_NUM(DATADIR_BOARD, 0x4A) }; temp_r29 = GWPlayer[arg0].character; yourTurnObj = omAddObjEx(boardObjMan, 0x10B, 0, 0, -1, &UpdateYourTurn); @@ -931,7 +882,8 @@ void BoardYourTurnExec(s32 arg0) { } } -static void UpdateYourTurn(omObjData *arg0) { +static void UpdateYourTurn(omObjData *arg0) +{ UnkUiWork02 *temp_r31 = OM_GET_WORK_PTR(arg0, UnkUiWork02); if (temp_r31->unk00_bit0 || BoardIsKill()) { @@ -939,7 +891,8 @@ static void UpdateYourTurn(omObjData *arg0) { yourTurnSprGrp = -1; yourTurnObj = NULL; omDelObjEx(HuPrcCurrentGet(), arg0); - } else { + } + else { switch (temp_r31->unk00_bit3) { case 0: GrowYourTurn(temp_r31, arg0); @@ -954,7 +907,8 @@ static void UpdateYourTurn(omObjData *arg0) { } } -static void GrowYourTurn(UnkUiWork02 *arg0, omObjData *arg1) { +static void GrowYourTurn(UnkUiWork02 *arg0, omObjData *arg1) +{ float temp_f30; arg0->unk01 += 7; @@ -967,7 +921,8 @@ static void GrowYourTurn(UnkUiWork02 *arg0, omObjData *arg1) { HuSprScaleSet(yourTurnSprGrp, 0, temp_f30, temp_f30); } -static void WaitYourTurn(UnkUiWork02 *arg0, omObjData *arg1) { +static void WaitYourTurn(UnkUiWork02 *arg0, omObjData *arg1) +{ float temp_f30; arg0->unk01 += 7; @@ -981,7 +936,8 @@ static void WaitYourTurn(UnkUiWork02 *arg0, omObjData *arg1) { HuSprTPLvlSet(yourTurnSprGrp, 0, 1.0f - temp_f30); } -static void ShrinkYourTurn(UnkUiWork02 *arg0, omObjData *arg1) { +static void ShrinkYourTurn(UnkUiWork02 *arg0, omObjData *arg1) +{ s32 temp_r30 = GWPlayer[arg0->unk00_bit5].port; if ((HuPadBtnDown[temp_r30] & 0x100) || GWPlayer[arg0->unk00_bit5].com || _CheckFlag(FLAG_ID_MAKE(1, 11))) { @@ -991,7 +947,8 @@ static void ShrinkYourTurn(UnkUiWork02 *arg0, omObjData *arg1) { } } -s32 BoardItemUseExec(s32 arg0) { +s32 BoardItemUseExec(s32 arg0) +{ BoardPauseDisableSet(1); itemPlayer = arg0; itemUseProc = HuPrcChildCreate(ItemUseProc, 0x2004, 0x4000, 0, boardMainProc); @@ -1002,7 +959,8 @@ s32 BoardItemUseExec(s32 arg0) { return itemUsed; } -static void ItemUseTeamProc(s32 arg0) { +static void ItemUseTeamProc(s32 arg0) +{ UnkUiStatusStruct *temp_r22; Vec sp40; Vec sp34; @@ -1016,9 +974,10 @@ static void ItemUseTeamProc(s32 arg0) { if (itemTeamF != 0) { BoardStatusTargetPosSet(itemPlayer, &teamItemStatusPosTbl[0]); BoardStatusTargetPosSet(teamItemPlayer, &teamItemStatusPosTbl[1]); - } else { - BoardStatusTargetPosSet(itemPlayer, (Vec*) statusPosTbl[0]); - BoardStatusTargetPosSet(teamItemPlayer, (Vec*) statusPosTbl[1]); + } + else { + BoardStatusTargetPosSet(itemPlayer, (Vec *)statusPosTbl[0]); + BoardStatusTargetPosSet(teamItemPlayer, (Vec *)statusPosTbl[1]); } sp2C[0] = BoardPlayerTeamFind(itemPlayer); sp2C[1] = BoardPlayerSameTeamFind(sp2C[0]); @@ -1030,16 +989,14 @@ static void ItemUseTeamProc(s32 arg0) { while (!BoardStatusStopCheck(itemPlayer) || !BoardStatusStopCheck(teamItemPlayer)) { HuPrcVSleep(); } - } else { + } + else { for (i = 0; i < 4; i++) { sp40.x = statusPosTbl[i][0]; sp40.y = statusPosTbl[i][1]; BoardStatusTargetPosSet(i, &sp40); } - while (!BoardStatusStopCheck(0) - || !BoardStatusStopCheck(1) - || !BoardStatusStopCheck(2) - || !BoardStatusStopCheck(3)) { + while (!BoardStatusStopCheck(0) || !BoardStatusStopCheck(1) || !BoardStatusStopCheck(2) || !BoardStatusStopCheck(3)) { sp34.z = 0.0f; for (i = 0; i < 4; i++) { temp_r22 = &uiStatus[i]; @@ -1057,7 +1014,8 @@ static void ItemUseTeamProc(s32 arg0) { } } -static void ItemUseProc(void) { +static void ItemUseProc(void) +{ s32 var_r24; s16 temp_r23; s32 var_r25; @@ -1068,7 +1026,8 @@ static void ItemUseProc(void) { itemTeam = GWPlayerTeamGet(itemPlayer); if (GWTeamGet()) { itemTeamF = 1; - } else { + } + else { itemTeamF = 0; } for (i = 0; i < 4; i++) { @@ -1135,7 +1094,8 @@ static void ItemUseProc(void) { HuPrcEnd(); } -static void FinishItemUse(s16 arg0, s32 arg1) { +static void FinishItemUse(s16 arg0, s32 arg1) +{ s32 var_r30; s32 var_r31; s16 temp_r29; @@ -1171,7 +1131,8 @@ static void FinishItemUse(s16 arg0, s32 arg1) { } } -static void DestroyItemUse(void) { +static void DestroyItemUse(void) +{ s32 i; CharModelLayerSetAll(1); @@ -1183,7 +1144,8 @@ static void DestroyItemUse(void) { itemUseProc = NULL; } -void BoardMakeRandomItem(void) { +void BoardMakeRandomItem(void) +{ s32 chosenItemIndex; s32 i; @@ -1196,30 +1158,34 @@ void BoardMakeRandomItem(void) { BoardItemBagItemSet(itemRandTbl); } -static inline void TeamItemPosSetInlineFunc01(s32 arg0, s32 arg1, Vec *arg2) { +static inline void TeamItemPosSetInlineFunc01(s32 arg0, s32 arg1, Vec *arg2) +{ UnkUiWork03 *temp_r29 = OM_GET_WORK_PTR(itemPickObj, UnkUiWork03); - Vec (*temp_r31)[6] = (void*) temp_r29->unk04; + Vec(*temp_r31)[6] = (void *)temp_r29->unk04; temp_r31[arg0][arg1 + 2].x = arg2->x; temp_r31[arg0][arg1 + 2].y = arg2->y; temp_r31[arg0][arg1 + 2].z = arg2->z; } -static inline void TeamItemPosSetInlineFunc02(s32 arg0, s32 arg1, Vec *arg2) { +static inline void TeamItemPosSetInlineFunc02(s32 arg0, s32 arg1, Vec *arg2) +{ UnkUiWork03 *temp_r29 = OM_GET_WORK_PTR(itemPickObj, UnkUiWork03); - Vec (*temp_r31)[6] = (void*) temp_r29->unk04; + Vec(*temp_r31)[6] = (void *)temp_r29->unk04; (temp_r31 + 4)[arg0][arg1 + 2].x = arg2->x; (temp_r31 + 4)[arg0][arg1 + 2].y = arg2->y; (temp_r31 + 4)[arg0][arg1 + 2].z = arg2->z; } -static void TeamItemPosSet(s32 arg0, s32 arg1, Vec *arg2) { +static void TeamItemPosSet(s32 arg0, s32 arg1, Vec *arg2) +{ TeamItemPosSetInlineFunc01(arg0, arg1, arg2); TeamItemPosSetInlineFunc02(arg0, arg1, arg2); } -static inline void ExecItemPickInlineFunc01(Vec (*arg0)[6]) { +static inline void ExecItemPickInlineFunc01(Vec (*arg0)[6]) +{ Vec sp1C; Vec sp28; Vec sp34; @@ -1233,7 +1199,8 @@ static inline void ExecItemPickInlineFunc01(Vec (*arg0)[6]) { sp14 = GWPlayer[i].items[j]; if (sp14 == -1) { itemMdlId[i][j] = -1; - } else { + } + else { BoardCameraRotGet(&sp1C); temp_r24 = BoardModelCreate(itemMdlTbl[sp14], 0, 0); itemMdlId[i][j] = temp_r24; @@ -1253,7 +1220,8 @@ static inline void ExecItemPickInlineFunc01(Vec (*arg0)[6]) { } } -static inline void ExecItemPickInlineFunc02(s32 arg0, s8 arg1, s32 arg2) { +static inline void ExecItemPickInlineFunc02(s32 arg0, s8 arg1, s32 arg2) +{ UnkUiWork03 *sp10; BoardPickerCreate(arg0, arg1, itemPosTemp, arg2); @@ -1268,7 +1236,8 @@ static inline void ExecItemPickInlineFunc02(s32 arg0, s8 arg1, s32 arg2) { } } -static void ExecItemPick(void) { +static void ExecItemPick(void) +{ Vec sp40; s32 sp18; s32 var_r22; @@ -1276,7 +1245,7 @@ static void ExecItemPick(void) { s32 i; s32 j; UnkUiWork03 *temp_r27; - Vec (*temp_r28)[6]; + Vec(*temp_r28)[6]; if (_CheckFlag(FLAG_ID_MAKE(1, 11))) { BoardTutorialHostHide(0); @@ -1293,22 +1262,25 @@ static void ExecItemPick(void) { BoardStatusItemHideSet(1, 0); BoardStatusItemHideSet(2, 0); BoardStatusItemHideSet(3, 0); - temp_r28 = (void*) temp_r27->unk04; + temp_r28 = (void *)temp_r27->unk04; for (var_r22 = i = 0; i < 4; i++) { if (itemTeamF != 0) { if (itemTeam == GWPlayerTeamGet(i)) { if (itemPlayer == i) { var_r22 = 0; - } else { + } + else { var_r22 = 1; } sp40.x = teamItemStatusPosTbl[var_r22].x; sp40.y = teamItemStatusPosTbl[var_r22].y; - } else { + } + else { sp40.x = statusPosTbl[i][0] + statusHideOfsTbl[i]; sp40.y = statusPosTbl[i][1]; } - } else { + } + else { sp40.x = statusPosTbl[i][0]; sp40.y = statusPosTbl[i][1]; } @@ -1326,7 +1298,7 @@ static void ExecItemPick(void) { (temp_r28 + 4)[i][j].z = temp_r28[i][j].z = 0.0f; } } - ExecItemPickInlineFunc01((void*) temp_r27->unk04); + ExecItemPickInlineFunc01((void *)temp_r27->unk04); memset(itemPosTemp, 0, 0x48); var_r23 = BoardPlayerItemCount(itemPlayer); ItemGetPos(itemPlayer, &itemPosTemp[0]); @@ -1342,10 +1314,11 @@ static void ExecItemPick(void) { ExecItemPickInlineFunc02(itemPlayer, var_r23, sp18); } -static void UpdateItemPick(omObjData *arg0) { +static void UpdateItemPick(omObjData *arg0) +{ UnkUiWork03 *temp_r28 = OM_GET_WORK_PTR(arg0, UnkUiWork03); UnkUiStatusStruct *temp_r26; - Vec (*temp_r27)[6]; + Vec(*temp_r27)[6]; Vec sp14; Vec sp8; float temp_f30; @@ -1368,10 +1341,12 @@ static void UpdateItemPick(omObjData *arg0) { HuMemDirectFree(temp_r28->unk04); itemPickObj = NULL; omDelObjEx(HuPrcCurrentGet(), arg0); - } else { + } + else { if (temp_r28->unk02 != 0) { temp_r28->unk02--; - } else { + } + else { switch (temp_r28->unk01) { case 3: temp_r28->unk00_bit1 = 1; @@ -1386,7 +1361,7 @@ static void UpdateItemPick(omObjData *arg0) { } } MakeItemPickSpace(temp_r28); - temp_r27 = (void*) temp_r28->unk04; + temp_r27 = (void *)temp_r28->unk04; for (i = 0; i < 4; i++) { temp_r26 = &uiStatus[i]; for (j = 0; j < 6; j++) { @@ -1410,14 +1385,15 @@ static void UpdateItemPick(omObjData *arg0) { } } -static void MakeItemPickSpace(UnkUiWork03 *arg0) { +static void MakeItemPickSpace(UnkUiWork03 *arg0) +{ Vec sp8; float var_f29; s32 i; s32 j; - Vec (*temp_r28)[6]; + Vec(*temp_r28)[6]; - temp_r28 = (void*) arg0->unk04; + temp_r28 = (void *)arg0->unk04; if (!arg0->unk00_bit1) { if (arg0->unk03 < 90) { if (arg0->unk03 == 0) { @@ -1430,7 +1406,8 @@ static void MakeItemPickSpace(UnkUiWork03 *arg0) { arg0->unk03 = 90; } } - } else { + } + else { if (arg0->unk03 > 0) { arg0->unk03 -= 6; if (arg0->unk03 < 0) { @@ -1451,7 +1428,8 @@ static void MakeItemPickSpace(UnkUiWork03 *arg0) { if (arg0->unk00_bit1 && arg0->unk03 == 0) { arg0->unk00_bit0 = 1; } - } else { + } + else { var_f29 = 0.3f; VECScale(&sp8, &sp8, var_f29); VECAdd(&temp_r28[i][j], &sp8, &sp8); @@ -1462,9 +1440,10 @@ static void MakeItemPickSpace(UnkUiWork03 *arg0) { } } -static void SetItemUIStatus(s32 arg0) { +static void SetItemUIStatus(s32 arg0) +{ UnkUiWork03 *temp_r27 = OM_GET_WORK_PTR(itemPickObj, UnkUiWork03); - Vec (*temp_r28)[6] = (void*) temp_r27->unk04; + Vec(*temp_r28)[6] = (void *)temp_r27->unk04; float var_f31; float var_f30; s32 i; @@ -1506,7 +1485,8 @@ static void SetItemUIStatus(s32 arg0) { temp_r27->unk01 = arg0; } -void BoardItemGetDestPos(s32 arg0, Vec *arg1) { +void BoardItemGetDestPos(s32 arg0, Vec *arg1) +{ Vec spC; s32 i; @@ -1514,11 +1494,12 @@ void BoardItemGetDestPos(s32 arg0, Vec *arg1) { spC.y = statusPosTbl[arg0][1]; spC.z = 0.0f; for (i = 0; i < 3; i++) { - VECAdd((Vec*) &statusItemPosTbl[i + 2], &spC, &arg1[i]); + VECAdd((Vec *)&statusItemPosTbl[i + 2], &spC, &arg1[i]); } } -static void ItemGetPos(s32 arg0, Vec *arg1) { +static void ItemGetPos(s32 arg0, Vec *arg1) +{ Vec spC; s32 var_r29; s32 i; @@ -1526,22 +1507,25 @@ static void ItemGetPos(s32 arg0, Vec *arg1) { if (itemTeamF != 0) { if (itemPlayer == arg0) { var_r29 = 0; - } else { + } + else { var_r29 = 1; } spC.x = teamItemStatusPosTbl[var_r29].x; spC.y = teamItemStatusPosTbl[var_r29].y; - } else { + } + else { spC.x = statusPosTbl[arg0][0]; spC.y = statusPosTbl[arg0][1]; } spC.z = 0.0f; for (i = 0; i < 3; i++) { - VECAdd((Vec*) statusItemPosTbl[i + 2], &spC, &arg1[i]); + VECAdd((Vec *)statusItemPosTbl[i + 2], &spC, &arg1[i]); } } -void BoardItemStatusKill(s32 arg0) { +void BoardItemStatusKill(s32 arg0) +{ Vec sp68[3]; Vec sp44[3]; Vec sp20[3]; @@ -1556,17 +1540,19 @@ void BoardItemStatusKill(s32 arg0) { if (arg0 == itemPlayer) { sp8.x = teamItemStatusPosTbl[0].x; sp8.y = teamItemStatusPosTbl[0].y; - } else { + } + else { sp8.x = teamItemStatusPosTbl[1].x; sp8.y = teamItemStatusPosTbl[1].y; } - } else { + } + else { sp8.x = statusPosTbl[arg0][0]; sp8.y = statusPosTbl[arg0][1]; } sp8.z = 0.0f; for (i = 0; i < 3; i++) { - VECAdd((Vec*) statusItemPosTbl[i + 2], &sp8, &sp68[i]); + VECAdd((Vec *)statusItemPosTbl[i + 2], &sp8, &sp68[i]); if (itemMdlId[arg0][i] != -1) { BoardModelRotGet(itemMdlId[arg0][i], &sp44[i]); BoardModelScaleGet(itemMdlId[arg0][i], &sp20[i]); @@ -1592,7 +1578,8 @@ void BoardItemStatusKill(s32 arg0) { } } -static void UpdateItemPickGfx(omObjData *arg0) { +static void UpdateItemPickGfx(omObjData *arg0) +{ UnkUiWork01 *temp_r30 = OM_GET_WORK_PTR(arg0, UnkUiWork01); if (temp_r30->unk00_bit0 || BoardIsKill()) { @@ -1600,10 +1587,12 @@ static void UpdateItemPickGfx(omObjData *arg0) { HuSprGrpKill(temp_r30->unk04); pickerObj = NULL; omDelObjEx(HuPrcCurrentGet(), arg0); - } else { + } + else { if (temp_r30->unk03 != 0) { temp_r30->unk03--; - } else { + } + else { if (!CheckItemWindowSlide()) { temp_r30->unk00_bit6 = 1; } @@ -1620,7 +1609,8 @@ static void UpdateItemPickGfx(omObjData *arg0) { HuSprAttrReset(temp_r30->unk04, 0, HUSPR_ATTR_NOANIM); arg0->func = UpdateItemPickup; HuWinDispOff(temp_r30->unk06); - } else { + } + else { itemUsed = -1; } } @@ -1628,7 +1618,8 @@ static void UpdateItemPickGfx(omObjData *arg0) { } } -static void UpdateItemPickup(omObjData *arg0) { +static void UpdateItemPickup(omObjData *arg0) +{ UnkUiWork01 *temp_r31 = OM_GET_WORK_PTR(arg0, UnkUiWork01); Vec sp50; Vec sp44; @@ -1650,11 +1641,14 @@ static void UpdateItemPickup(omObjData *arg0) { HuSprGrpKill(temp_r31->unk04); pickerObj = NULL; omDelObjEx(HuPrcCurrentGet(), arg0); - } else if (temp_r31->unk03 != 0) { + } + else if (temp_r31->unk03 != 0) { temp_r31->unk03--; - } else if (pickerChoice == -1) { + } + else if (pickerChoice == -1) { temp_r31->unk00_bit0 = 1; - } else { + } + else { var_r29 = temp_r31->unk00_bit5; var_r28 = pickerChoice; if (GWTeamGet() && pickerChoice >= BoardPlayerItemCount(temp_r31->unk00_bit5)) { @@ -1697,7 +1691,8 @@ static void UpdateItemPickup(omObjData *arg0) { arg0->trans.x -= itemPickupPos; arg0->trans.y += itemPickupPos; itemPickupPos *= 0.98f; - } else { + } + else { sp50.x = arg0->trans.x; sp50.y = arg0->trans.y; sp50.z = 3200.0f; @@ -1714,7 +1709,8 @@ static void UpdateItemPickup(omObjData *arg0) { temp_r31->unk03 = 0x12; BoardPlayerItemRemove(var_r29, var_r28); temp_r31->unk00_bit3 = 5; - } else { + } + else { arg0->trans.x -= itemPickupPos; arg0->trans.y += itemPickupPos; itemPickupPos *= 0.9f; @@ -1736,7 +1732,8 @@ static void UpdateItemPickup(omObjData *arg0) { if (ABS(sp14.x) < 1.0f && ABS(sp14.y) < 1.0f) { HuSprAttrSet(temp_r31->unk04, 0, 4); temp_r31->unk00_bit3 = 6; - } else { + } + else { VECScale(&sp14, &sp14, 0.1f); VECAdd(&sp20, &sp14, &sp50); sp50.z = 3200.0f; @@ -1753,7 +1750,8 @@ static void UpdateItemPickup(omObjData *arg0) { } } -static BOOL CheckItemWindow(void) { +static BOOL CheckItemWindow(void) +{ UnkUiWork01 *temp_r31; if (pickerObj == 0) { @@ -1762,12 +1760,14 @@ static BOOL CheckItemWindow(void) { temp_r31 = OM_GET_WORK_PTR(pickerObj, UnkUiWork01); if (temp_r31->unk00_bit3 == 6) { return TRUE; - } else { + } + else { return FALSE; } } -static void HideItemWindow(void) { +static void HideItemWindow(void) +{ UnkUiWork01 *temp_r31; if (pickerObj) { @@ -1776,7 +1776,8 @@ static void HideItemWindow(void) { } } -static void CreateItemWindow(s32 arg0, s32 arg1) { +static void CreateItemWindow(s32 arg0, s32 arg1) +{ Vec sp10; float sp8[2]; float temp_f31; @@ -1800,7 +1801,8 @@ static void CreateItemWindow(s32 arg0, s32 arg1) { temp_r26->trans.x = 0.0f; if (GWTeamGet()) { var_f30 = 32.0f; - } else { + } + else { var_f30 = 0.0f; } temp_r31 = temp_r29->unk04; @@ -1812,9 +1814,9 @@ static void CreateItemWindow(s32 arg0, s32 arg1) { } temp_r28 = GWPlayer[arg0].items[var_r27]; if (temp_r28 == -1) { - temp_r31->unk12[i] = temp_r31->unk1E[i] - = temp_r31->unk06[i] = temp_r31->unk00[i] = -1; - } else { + temp_r31->unk12[i] = temp_r31->unk1E[i] = temp_r31->unk06[i] = temp_r31->unk00[i] = -1; + } + else { temp_r31->unk00[i] = temp_r28; temp_r31->unk74[i].x = i * HU_DISP_WIDTHF + 36.0f; temp_r31->unk74[i].y = var_f30 + HU_DISP_CENTERY; @@ -1851,7 +1853,8 @@ static void CreateItemWindow(s32 arg0, s32 arg1) { } } -static BOOL CheckItemWindowSlide(void) { +static BOOL CheckItemWindowSlide(void) +{ UnkUiWork04 *temp_r31; if (itemWindowObj == 0) { @@ -1861,7 +1864,8 @@ static BOOL CheckItemWindowSlide(void) { return (temp_r31->unk03 != 0) ? FALSE : TRUE; } -static void KillItemWindow(void) { +static void KillItemWindow(void) +{ UnkUiWork04 *temp_r31; if (itemWindowObj) { @@ -1870,7 +1874,8 @@ static void KillItemWindow(void) { } } -static void SetItemWindowCurr(s32 arg0) { +static void SetItemWindowCurr(s32 arg0) +{ UnkUiWork04 *temp_r31; UnkUiWindowStruct *temp_r30; @@ -1886,7 +1891,8 @@ static void SetItemWindowCurr(s32 arg0) { } } -static void UpdateItemWindow(omObjData *arg0) { +static void UpdateItemWindow(omObjData *arg0) +{ Vec sp20; Vec sp14; Vec sp8; @@ -1914,14 +1920,16 @@ static void UpdateItemWindow(omObjData *arg0) { HuMemDirectFree(temp_r29->unk04); itemWindowObj = NULL; omDelObjEx(HuPrcCurrentGet(), arg0); - } else { + } + else { var_r27 = 0; for (i = 0; i < temp_r29->unk02; i++) { if ((temp_r31->unk06[i] != -1) && (temp_r31->unk12[i] != -1)) { VECSubtract(&temp_r31->unk74[i], &temp_r31->unk2C[i], &sp20); if (VECMag(&sp20) <= 1.0f) { temp_r31->unk2C[i] = temp_r31->unk74[i]; - } else { + } + else { VECScale(&sp20, &sp20, 0.3f); VECAdd(&sp20, &temp_r31->unk2C[i], &temp_r31->unk2C[i]); var_r27 = 1; @@ -1937,9 +1945,9 @@ static void UpdateItemWindow(omObjData *arg0) { Hu3D2Dto3D(&sp14, 1, &sp14); BoardModelPosSetV(temp_r31->unk06[i], &sp14); BoardCameraRotGet(&sp8); - PSMTXRotRad(sp2C, 'y', MTXDegToRad(arg0->trans.x)); - PSMTXRotRad(sp5C, 'x', MTXDegToRad(sp8.x + 10.0f)); - PSMTXConcat(sp5C, sp2C, sp2C); + MTXRotRad(sp2C, 'y', MTXDegToRad(arg0->trans.x)); + MTXRotRad(sp5C, 'x', MTXDegToRad(sp8.x + 10.0f)); + MTXConcat(sp5C, sp2C, sp2C); BoardModelMtxSet(temp_r31->unk06[i], &sp2C); BoardModelRotSet(temp_r31->unk06[i], 0.0f, 0.0f, 0.0f); } @@ -1949,14 +1957,15 @@ static void UpdateItemWindow(omObjData *arg0) { } } -static void CreatePickerWindow(UnkUiWork01 *arg0, s32 arg1) { +static void CreatePickerWindow(UnkUiWork01 *arg0, s32 arg1) +{ float spC[2]; - + float posX; float posY; float yOfs; s32 var_r30; - #if VERSION_NTSC +#if VERSION_NTSC switch (GWGameStat.language) { case 1: yOfs = 0.0f; @@ -1965,17 +1974,18 @@ static void CreatePickerWindow(UnkUiWork01 *arg0, s32 arg1) { yOfs = 0.0f; break; } - #else +#else yOfs = 0; - #endif +#endif if (arg1 != 0) { var_r30 = MAKE_MESSID(0x10, 0x1A); - } else { + } + else { var_r30 = MAKE_MESSID(0x10, 0x1B); } HuWinMesMaxSizeGet(1, spC, var_r30); posX = -10000.0f; - posY = yOfs + (HU_DISP_HEIGHT-128); + posY = yOfs + (HU_DISP_HEIGHT - 128); arg0->unk06 = HuWinCreate(posX, posY, spC[0], spC[1], 0); HuWinBGTPLvlSet(arg0->unk06, 0.0f); HuWinMesSpeedSet(arg0->unk06, 0); @@ -1985,7 +1995,8 @@ static void CreatePickerWindow(UnkUiWork01 *arg0, s32 arg1) { } } -static void KillPickerWindow(UnkUiWork01 *arg0) { +static void KillPickerWindow(UnkUiWork01 *arg0) +{ if (arg0->unk06 != -1) { HuWinKill(arg0->unk06); arg0->unk06 = -1; diff --git a/src/game/board/view.c b/src/game/board/view.c index 38a6157c..dcbd1c65 100755 --- a/src/game/board/view.c +++ b/src/game/board/view.c @@ -1,5 +1,6 @@ #include "game/board/view.h" #include "game/audio.h" +#include "game/disp.h" #include "game/gamework.h" #include "game/gamework_data.h" #include "game/hsfex.h" @@ -7,7 +8,6 @@ #include "game/pad.h" #include "game/sprite.h" #include "game/wipe.h" -#include "game/disp.h" #include "game/board/main.h" #include "game/board/model.h" @@ -54,55 +54,28 @@ static Process *viewProc; static s16 buttonWin = -1; static s16 focusMdl = -1; -static float overhead2DPos[][2] = { - { 48.0f, 72.0f }, - { HU_DISP_WIDTH-48, 72.0f }, - { 48.0f, HU_DISP_HEIGHT-72 }, - { HU_DISP_WIDTH-48, HU_DISP_HEIGHT-72 }, - { HU_DISP_CENTERX, 72.0f } -}; +static float overhead2DPos[][2] = { { 48.0f, 72.0f }, { HU_DISP_WIDTH - 48, 72.0f }, { 48.0f, HU_DISP_HEIGHT - 72 }, + { HU_DISP_WIDTH - 48, HU_DISP_HEIGHT - 72 }, { HU_DISP_CENTERX, 72.0f } }; -static float mapViewMinZ[] = { - -2000.0f, -1500.0f, -2200.0f, - -1800.0f, -2100.0f, -3000.0f, - -3000.0f, -1800.0f, -1800.0f -}; +static float mapViewMinZ[] = { -2000.0f, -1500.0f, -2200.0f, -1800.0f, -2100.0f, -3000.0f, -3000.0f, -1800.0f, -1800.0f }; -static float mapViewMaxZ[] = { - 2300.0f, 2500.0f, 2600.0f, - 2000.0f, 2300.0f, 2500.0f, - 2500.0f, 2000.0f, 2000.0f -}; +static float mapViewMaxZ[] = { 2300.0f, 2500.0f, 2600.0f, 2000.0f, 2300.0f, 2500.0f, 2500.0f, 2000.0f, 2000.0f }; -static float mapViewMinX[] = { - -3000.0f, -3000.0f, -3000.0f, - -3000.0f, -3000.0f, -3000.0f, - -3000.0f, -2000.0f, -2000.0f -}; +static float mapViewMinX[] = { -3000.0f, -3000.0f, -3000.0f, -3000.0f, -3000.0f, -3000.0f, -3000.0f, -2000.0f, -2000.0f }; -static float mapViewMaxX[] = { - 3000.0f, 3000.0f, 3000.0f, - 3000.0f, 3000.0f, 3000.0f, - 3000.0f, 1600.0f, 2000.0f -}; +static float mapViewMaxX[] = { 3000.0f, 3000.0f, 3000.0f, 3000.0f, 3000.0f, 3000.0f, 3000.0f, 1600.0f, 2000.0f }; -static float overheadCamZoom[] = { - 14370.0f, 14500.0f, 15000.0f, - 15000.0f, 13000.0f, 15000.0f, - 100.0f, 10000.0f, 10000.0f -}; +static float overheadCamZoom[] = { 14370.0f, 14500.0f, 15000.0f, 15000.0f, 13000.0f, 15000.0f, 100.0f, 10000.0f, 10000.0f }; -static float overheadCamPosZ[] = { - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, -160.0f, 0.0f -}; +static float overheadCamPosZ[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -160.0f, 0.0f }; -void BoardViewOverheadExec(s32 arg0) { +void BoardViewOverheadExec(s32 arg0) +{ if (BoardPauseDisableGet() == 0) { BoardPauseDisableSet(1); pauseDisableF = 1; - } else { + } + else { pauseDisableF = 0; } _SetFlag(0x1001C); @@ -128,13 +101,15 @@ void BoardViewOverheadExec(s32 arg0) { _ClearFlag(0x1001C); } -void BoardViewFocusGetPos(Vec *arg0) { +void BoardViewFocusGetPos(Vec *arg0) +{ if (arg0) { BoardModelPosGet(focusMdl, arg0); } } -static inline void BoardViewInlineFunc00(Vec *arg0, Vec *arg1, u16 arg2) { +static inline void BoardViewInlineFunc00(Vec *arg0, Vec *arg1, u16 arg2) +{ if (arg2 == 0) { arg2 = 1; } @@ -150,13 +125,13 @@ static inline void BoardViewInlineFunc00(Vec *arg0, Vec *arg1, u16 arg2) { } } -void BoardViewFocusSet(Vec *arg0, u16 arg1) { - u16 var_r31; - +void BoardViewFocusSet(Vec *arg0, u16 arg1) +{ if (BoardPauseDisableGet() == 0) { BoardPauseDisableSet(1); pauseDisableF = 1; - } else { + } + else { pauseDisableF = 0; } focusDestroyF = 1; @@ -164,13 +139,13 @@ void BoardViewFocusSet(Vec *arg0, u16 arg1) { HuPrcSleep(2); } -void BoardViewMoveStart(Vec *arg0, Vec *arg1, u16 arg2) { - u16 var_r31; - +void BoardViewMoveStart(Vec *arg0, Vec *arg1, u16 arg2) +{ if (BoardPauseDisableGet() == 0) { BoardPauseDisableSet(1); pauseDisableF = 1; - } else { + } + else { pauseDisableF = 0; } viewProc = HuPrcChildCreate(ExecStarView, 0x200A, 0x3800, 0, boardMainProc); @@ -180,26 +155,31 @@ void BoardViewMoveStart(Vec *arg0, Vec *arg1, u16 arg2) { HuPrcSleep(2); } -BOOL BoardViewMoveCheck(void) { +BOOL BoardViewMoveCheck(void) +{ return (viewMoveF != 0) ? TRUE : FALSE; } -void BoardViewMoveEnd(void) { +void BoardViewMoveEnd(void) +{ viewMoveF = 0; } -void BoardViewWait(void) { +void BoardViewWait(void) +{ viewMoveF = 0; while (viewProc != NULL) { HuPrcVSleep(); } } -void BoardViewMapExec(s32 arg0) { +void BoardViewMapExec(s32 arg0) +{ if (BoardPauseDisableGet() == 0) { BoardPauseDisableSet(1); pauseDisableF = 1; - } else { + } + else { pauseDisableF = 0; } viewProc = HuPrcChildCreate(ExecMapView, 0x200A, 0x3800, 0, boardMainProc); @@ -214,7 +194,8 @@ void BoardViewMapExec(s32 arg0) { } } -static void ExecMapView(void) { +static void ExecMapView(void) +{ Vec spC; float var_f29; float temp_f28; @@ -240,7 +221,8 @@ static void ExecMapView(void) { } if (HuPadBtn[GWPlayer[viewPlayer].port] & 0x100) { var_f29 = 40.0f; - } else { + } + else { var_f29 = 20.0f; } spC.x = spC.y = spC.z = 0.0f; @@ -274,7 +256,8 @@ static void ExecMapView(void) { HuPrcEnd(); } -static void ExecStarView(void) { +static void ExecStarView(void) +{ Vec sp8; float temp_f30; @@ -307,7 +290,8 @@ static void ExecStarView(void) { HuPrcEnd(); } -static void ExecOverheadView(void) { +static void ExecOverheadView(void) +{ u32 var_r31; if ((GWBoardGet() == BOARD_ID_MAIN3 || GWBoardGet() == BOARD_ID_MAIN6) && boardLightResetHook) { @@ -338,7 +322,8 @@ static void ExecOverheadView(void) { HuPrcEnd(); } -static void DestroyView(void) { +static void DestroyView(void) +{ if (focusMdl != -1) { BoardModelKill(focusMdl); focusMdl = -1; @@ -355,7 +340,8 @@ static void DestroyView(void) { viewProc = NULL; } -static void SetTargetView(void) { +static void SetTargetView(void) +{ Vec sp14; Vec sp8; @@ -370,7 +356,8 @@ static void SetTargetView(void) { sp8.z = 0.0f; BoardCameraMotionStartEx(focusMdl, &sp8, NULL, 3000.0f, -1.0f, 21); BoardCameraMotionWait(); - } else { + } + else { BoardModelPosSet(focusMdl, 0.0f, 0.0f, 0.0f); sp14.x = 0.0f; sp14.y = 0.0f; @@ -386,7 +373,8 @@ static void SetTargetView(void) { } } -static void DestroyFocus(void) { +static void DestroyFocus(void) +{ if (focusMdl != -1) { BoardModelKill(focusMdl); focusMdl = -1; @@ -396,7 +384,8 @@ static void DestroyFocus(void) { BoardCameraMoveSet(1); } -static void CreateButtonWin(void) { +static void CreateButtonWin(void) +{ float sp8[2]; float posX; float posY; @@ -404,39 +393,41 @@ static void CreateButtonWin(void) { if (viewControls != 2) { var_r31 = MAKE_MESSID(0x09, 0x05); - #if VERSION_PAL +#if VERSION_PAL HuWinMesMaxSizeGet(1, sp8, var_r31); - posX = 288-((sp8[0]/2)-32); - #endif + posX = 288 - ((sp8[0] / 2) - 32); +#endif posY = 286.0f; - } else { + } + else { var_r31 = MAKE_MESSID(0x10, 0x4D); - #if VERSION_PAL +#if VERSION_PAL posX = -10000.0f; posY = 324.0f; - #else +#else posY = 328.0f; - #endif - +#endif } HuWinMesMaxSizeGet(1, sp8, var_r31); - #if VERSION_NTSC +#if VERSION_NTSC posX = -10000.0f; - #endif +#endif buttonWin = HuWinCreate(posX, posY, sp8[0], sp8[1], 0); HuWinBGTPLvlSet(buttonWin, 0.0f); HuWinMesSpeedSet(buttonWin, 0); HuWinMesSet(buttonWin, var_r31); } -static void DestroyButtonWin(void) { +static void DestroyButtonWin(void) +{ if (buttonWin != -1) { HuWinKill(buttonWin); buttonWin = -1; } } -static void InitOverheadView(void) { +static void InitOverheadView(void) +{ Vec sp10; GXColor spA; s16 sp8; @@ -444,16 +435,9 @@ static void InitOverheadView(void) { OverheadWork *temp_r31; float *temp_r30; s32 i; - s32 sp1C[8] = { - DATA_MAKE_NUM(DATADIR_BOARD, 0x2E), - DATA_MAKE_NUM(DATADIR_BOARD, 0x2F), - DATA_MAKE_NUM(DATADIR_BOARD, 0x30), - DATA_MAKE_NUM(DATADIR_BOARD, 0x31), - DATA_MAKE_NUM(DATADIR_BOARD, 0x32), - DATA_MAKE_NUM(DATADIR_BOARD, 0x33), - DATA_MAKE_NUM(DATADIR_BOARD, 0x34), - DATA_MAKE_NUM(DATADIR_BOARD, 0x35) - }; + s32 sp1C[8] = { DATA_MAKE_NUM(DATADIR_BOARD, 0x2E), DATA_MAKE_NUM(DATADIR_BOARD, 0x2F), DATA_MAKE_NUM(DATADIR_BOARD, 0x30), + DATA_MAKE_NUM(DATADIR_BOARD, 0x31), DATA_MAKE_NUM(DATADIR_BOARD, 0x32), DATA_MAKE_NUM(DATADIR_BOARD, 0x33), + DATA_MAKE_NUM(DATADIR_BOARD, 0x34), DATA_MAKE_NUM(DATADIR_BOARD, 0x35) }; temp_r26 = omAddObjEx(boardObjMan, 0x1000, 0, 0, -1, UpdateOverheadView); overheadObj = temp_r26; @@ -472,7 +456,8 @@ static void InitOverheadView(void) { spA.r = 0x50; spA.g = 0x50; spA.b = 0x50; - } else { + } + else { GWCharColorGet(GWPlayer[i].character, &spA); } BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x6C), 0x1770, 0, &sp8); @@ -505,13 +490,15 @@ static void InitOverheadView(void) { } } -static void DestroyOverheadView(void) { +static void DestroyOverheadView(void) +{ if (overheadObj) { OM_GET_WORK_PTR(overheadObj, OverheadWork)->unk00_field0 = 1; } } -static void UpdateOverheadView(omObjData *arg0) { +static void UpdateOverheadView(omObjData *arg0) +{ Vec sp20; Vec sp14; Vec sp8; @@ -545,7 +532,8 @@ static void UpdateOverheadView(omObjData *arg0) { } if (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { var_r27 = 1; - } else { + } + else { var_r27 = 0; } for (i = 0; i < 5; i++) { @@ -555,9 +543,11 @@ static void UpdateOverheadView(omObjData *arg0) { sp20.z = 1000.0f; if (i != 4) { BoardSpacePosGet(0, GWPlayer[i].space_curr, &sp14); - } else if (var_r27 != 0) { + } + else if (var_r27 != 0) { sp14.x = sp14.y = sp14.z = 0.0f; - } else { + } + else { BoardSpacePosGet(0, BoardSpaceStarGetCurr(), &sp14); } Hu3D3Dto2D(&sp14, 1, &sp14); @@ -569,7 +559,8 @@ static void UpdateOverheadView(omObjData *arg0) { temp_f31 = VECMag(&sp8) / 32; if (i != 4) { var_r28 = i + 4; - } else { + } + else { var_r28 = 8; } HuSprZRotSet(temp_r31->unk02, var_r28, temp_f30); @@ -577,13 +568,15 @@ static void UpdateOverheadView(omObjData *arg0) { HuSprPosSet(temp_r31->unk02, var_r28, var_r29[0], var_r29[1]); if (i == 4 && (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2)) { BoardModelVisibilitySet(temp_r31->unk04, 0); - } else if (temp_r31->unk01 != 0) { + } + else if (temp_r31->unk01 != 0) { if (i != 4) { HuSprAttrReset(temp_r31->unk02, i, HUSPR_ATTR_DISPOFF); } HuSprAttrReset(temp_r31->unk02, var_r28, HUSPR_ATTR_DISPOFF); BoardModelVisibilitySet(temp_r31->unk04, 1); - } else { + } + else { if (i != 4) { HuSprAttrSet(temp_r31->unk02, i, HUSPR_ATTR_DISPOFF); } @@ -595,15 +588,16 @@ static void UpdateOverheadView(omObjData *arg0) { sp20.y = var_r29[1]; sp20.z = 1000.0f; BoardCameraRotGet(&sp8); - PSMTXRotRad(sp5C, 'x', MTXDegToRad(sp8.x)); - PSMTXRotRad(sp2C, 'y', MTXDegToRad(sp8.y)); - PSMTXConcat(sp2C, sp5C, sp2C); + MTXRotRad(sp5C, 'x', MTXDegToRad(sp8.x)); + MTXRotRad(sp2C, 'y', MTXDegToRad(sp8.y)); + MTXConcat(sp2C, sp5C, sp2C); BoardModelMtxSet(temp_r31->unk04, &sp2C); Hu3D2Dto3D(&sp20, 1, &sp20); BoardModelPosSetV(temp_r31->unk04, &sp20); } -static void WaitOverheadView(void) { +static void WaitOverheadView(void) +{ while (overheadObj) { HuPrcVSleep(); } 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 b8ad92a3..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; @@ -83,13 +87,12 @@ static void OrbitEffect(HsfanimStruct01 *arg0); static void UpdateNpcEffect(void); static s32 PlayStepFX(s16 arg0, s16 arg1, u8 arg2); -static UnkCharInstanceStruct charInstance[CHARNO_MAX ]; -static s16 effectMdl[CHAR_EFFECT_AND_PARTICLE_MAX]; -static EffectParamData *particleData[CHAR_EFFECT_AND_PARTICLE_MAX]; +static UnkCharInstanceStruct charInstance[8]; +static s16 effectMdl[8]; +static EffectParamData *particleData[8]; static Process *itemHookProcess[32]; -//holds normal characters 0-7, then more characters 8-14 -static u16 lbl_801975B0[CHARNO_MAX + CHAR_NPC_MAX]; -static u8 lbl_801975CE[0x82]; // Unused? +static u16 effectFlag[15]; +static u8 lbl_801975C0[0x82]; // Unused? static s32 skipAnimUpdate; static void *effectAMemP; @@ -111,7 +114,7 @@ static EffectData effectDataTbl[8] = { { DATA_MAKE_NUM(DATADIR_EFFECT, 0x07), 0x000C, 0x0000, 0x00000002 }, }; -static s32 charDirTbl[CHARNO_MAX ][3] = { +static s32 charDirTbl[8][3] = { { DATADIR_MARIOMDL0, DATADIR_MARIOMDL1, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00) }, { DATADIR_LUIGIMDL0, DATADIR_LUIGIMDL1, DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00) }, { DATADIR_PEACHMDL0, DATADIR_PEACHMDL1, DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00) }, @@ -151,10 +154,10 @@ void CharManInit(void) s16 i; s16 j; - for (i = 0; i < CHARNO_MAX ; i++) { + for (i = 0; i < 8; i++) { temp_r29 = &charInstance[i]; temp_r29->unkC0 = NULL; - for (j = 0; j < ARRAY_COUNT(temp_r29->unk0C); j++) { + for (j = 0; j < 32; j++) { temp_r29->unk0C[j] = -1; } temp_r29->unk00 = -1; @@ -163,11 +166,11 @@ void CharManInit(void) if (!effectAMemP) { effectAMemP = (void *)HuAR_DVDtoARAM(0x120000); } - for (i = 0; i < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { + for (i = 0; i < 8; i++) { effectMdl[i] = -1; particleData[i] = NULL; } - for (i = 0; i < ARRAY_COUNT(itemHookProcess); i++) { + for (i = 0; i < 32; i++) { itemHookProcess[i] = NULL; } } @@ -181,7 +184,7 @@ void CharARAMOpen(s16 character) { UnkCharInstanceStruct *temp_r31; - if (character >= CHARNO_MAX || character < 0 || character == 0xFF) { + if (character >= 8 || character < 0 || character == 0xFF) { return; } temp_r31 = &charInstance[character]; @@ -682,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); @@ -709,12 +713,12 @@ static void InitEffect(void) s16 j; var_r27 = 0; - for (i = 0; i < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { + for (i = 0; i < 8; i++) { if (effectMdl[i] == -1) { temp_r26 = HuDataSelHeapReadNum(effectDataTbl[i].unk00, MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r25 = HuSprAnimRead(temp_r26); effectMdl[i] = Hu3DParticleCreate(temp_r25, effectDataTbl[i].unk04); - if (i == CHAR_EFFECT_AND_PARTICLE_MAX - 1) { + if (i == 7) { Hu3DParticleAnimModeSet(effectMdl[i], 0); } Hu3DParticleHookSet(effectMdl[i], UpdateEffect); @@ -1036,12 +1040,12 @@ s16 CharModelMotionCreate(s16 character, s32 data_num) return -1; } temp_r26 = data_num & 0xFFFF0000; - for (var_r28 = 0; var_r28 < CHARNO_MAX ; var_r28++) { + for (var_r28 = 0; var_r28 < 8; var_r28++) { if (temp_r26 == charDirTbl[var_r28][2]) { break; } } - if (var_r28 != CHARNO_MAX || temp_r26 == 0) { + if (var_r28 != 8 || temp_r26 == 0) { data_num &= 0xFFFF; var_r27 = HuAR_ARAMtoMRAMFileRead(data_num | charDirTbl[character][2], MEMORY_DEFAULT_NUM, 2); if (!var_r27) { @@ -1064,12 +1068,12 @@ void CharModelMotionIndexSet(s16 character, s16 arg1, s32 arg2) s16 i; temp_r30 = &charInstance[character]; - for (i = 0; i < ARRAY_COUNT(temp_r30->unk0C); i++) { + for (i = 0; i < 32; i++) { if (temp_r30->unk0C[i] == arg1) { break; } } - if (i != ARRAY_COUNT(temp_r30->unk0C)) { + if (i != 32) { temp_r30->unk4C[i] = arg2; } } @@ -1080,7 +1084,7 @@ void CharModelMotionKill(s16 character, u32 motion) s16 i; temp_r30 = &charInstance[character]; - for (i = 0; i < ARRAY_COUNT(temp_r30->unk0C); i++) { + for (i = 0; i < 32; i++) { if (temp_r30->unk0C[i] == motion) { break; } @@ -1094,7 +1098,7 @@ void CharModelMotionDataClose(s16 character) s16 i; if (character == -1) { - for (i = 0; i < CHARNO_MAX ; i++) { + for (i = 0; i < 8; i++) { CharModelMotionDataClose(i); } } @@ -1108,7 +1112,7 @@ void CharModelDataClose(s16 arg0) s16 i; if (arg0 == -1) { - for (i = 0; i < CHARNO_MAX ; i++) { + for (i = 0; i < 8; i++) { CharModelDataClose(i); // Required to match. (void)i; @@ -1128,17 +1132,17 @@ void CharModelKill(s16 character) s16 i; if (character == -1) { - for (i = 0; i < CHARNO_MAX ; i++) { + for (i = 0; i < 8; i++) { CharModelKill(i); } - for (i = 0; i < ARRAY_COUNT(lbl_801975B0); i++) { - lbl_801975B0[i] = 0; + for (i = 0; i < 15; i++) { + effectFlag[i] = 0; } return; } CharModelMotionDataClose(character); temp_r29 = &charInstance[character]; - for (i = 0; i < ARRAY_COUNT(temp_r29->unk0C); i++) { + for (i = 0; i < 32; i++) { if (temp_r29->unk0C[i] != -1) { Hu3DMotionKill(temp_r29->unk0C[i]); } @@ -1148,13 +1152,13 @@ void CharModelKill(s16 character) Hu3DModelKill(temp_r29->unk00); } temp_r29->unk00 = -1; - for (i = 0; i < CHARNO_MAX ; i++) { + for (i = 0; i < 8; i++) { if (charInstance[i].unk00 != -1) { break; } } - if (i == CHARNO_MAX ) { - for (i = 0; i < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { + if (i == 8) { + for (i = 0; i < 8; i++) { if (effectMdl[i] != -1) { Hu3DModelKill(effectMdl[i]); } @@ -1164,7 +1168,7 @@ void CharModelKill(s16 character) if (temp_r29->unkC4) { HuMemDirectFree(temp_r29->unkC4->user_data); HuPrcKill(temp_r29->unkC4); - for (i = 0; i < ARRAY_COUNT(itemHookProcess); i++) { + for (i = 0; i < 32; i++) { if (itemHookProcess[i]) { HuPrcKill(itemHookProcess[i]); } @@ -1320,7 +1324,7 @@ void CharModelLayerSetAll(s16 arg0) { s16 i; - for (i = 0; i < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { + for (i = 0; i < 8; i++) { if (effectMdl[i] != -1) { Hu3DModelLayerSet(effectMdl[i], arg0); } @@ -1331,12 +1335,12 @@ static inline Process *CharModelItemHookCreateInlineFunc(void) { s16 i; - for (i = 0; i < ARRAY_COUNT(itemHookProcess); i++) { + for (i = 0; i < 32; i++) { if (!itemHookProcess[i]) { break; } } - if (i == ARRAY_COUNT(itemHookProcess)) { + if (i == 32) { return NULL; } else { @@ -1422,9 +1426,9 @@ static void UpdateItemHook(void) effectDustParam.unk0C.z = frandmod(10) - 5; CreateEffectDust(temp_r31->unk02, sp8.x, sp8.y, sp8.z, 20.0f, &effectDustParam); } - PSMTXIdentity(temp_r30->unk_F0); + MTXIdentity(temp_r30->unk_F0); temp_r25 = HuPrcCurrentGet(); - for (var_r28 = 0; var_r28 < ARRAY_COUNT(itemHookProcess); var_r28++) { + for (var_r28 = 0; var_r28 < 32; var_r28++) { if (itemHookProcess[var_r28] == temp_r25) { HuPrcKill(temp_r25); itemHookProcess[var_r28] = NULL; @@ -1446,7 +1450,7 @@ void CharModelEffectCreate(s16 arg0, Vec *arg1) ParticleData *var_r27; ModelData *var_r26; - for (i = 0; i < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { + for (i = 0; i < 8; i++) { temp_r28 = CreateEffect(effectMdl[3], arg0, arg1->x, arg1->y, arg1->z, 20.0f, &modelParticleParam); if (temp_r28 == -1) { break; @@ -1463,7 +1467,7 @@ void CharModelEffectCreate(s16 arg0, Vec *arg1) var_r31->unk24 = 0.1f * (frandmod(20) - 10); var_r31->unk40.a = 0xFF - frandmod(3) * 16; } - for (i = 0; i < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { + for (i = 0; i < 8; i++) { temp_r28 = CreateEffect(effectMdl[3], arg0, arg1->x, arg1->y, arg1->z, 10.0f, &modelParticleParam); if (temp_r28 == -1) { break; @@ -1567,12 +1571,12 @@ void fn_8004EC74(s16 character) temp_r30 = &charInstance[character]; temp_r31 = &Hu3DData[temp_r30->unk00]; - for (i = 0; i < ARRAY_COUNT(temp_r30->unk0C); i++) { + for (i = 0; i < 32; i++) { if (temp_r30->unk0C[i] == temp_r31->unk_08) { break; } } - if (i != ARRAY_COUNT(temp_r30->unk0C)) { + if (i != 32) { Hu3DModelObjMtxGet(temp_r30->unk00, "test11_tex_we-itemhook-r", sp24); sp18.x = sp24[0][3]; sp18.y = sp24[1][3]; @@ -1699,12 +1703,12 @@ void CharModelVoiceEnableSet(s16 character, s16 motion, s32 flag) if (temp_r31->unk00 == -1) { return; } - for (i = 0; i < ARRAY_COUNT(temp_r31->unk0C); i++) { + for (i = 0; i < 32; i++) { if (temp_r31->unk0C[i] == motion) { break; } } - if (i != ARRAY_COUNT(temp_r31->unk0C)) { + if (i != 32) { if (flag == 0) { temp_r31->unk8C[i] |= 1; } @@ -1731,12 +1735,12 @@ void CharModelEffectEnableSet(s16 character, s32 arg1) { UnkCharInstanceStruct *temp_r31 = &charInstance[character]; - if (character >= CHARNO_MAX ) { + if (character >= 8) { if (arg1 == 0) { - lbl_801975B0[character] |= 0x10; + effectFlag[character] |= 0x10; } else { - lbl_801975B0[character] &= ~0x10; + effectFlag[character] &= ~0x10; } return; } @@ -1832,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); @@ -1851,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); @@ -1871,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); @@ -1890,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); @@ -1909,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); @@ -1930,17 +1934,17 @@ 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 < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { + for (i = 0; i < 8; i++) { effectStarParam.unk0C.x = 10.0 * sind(45.0f * i) * temp_r30->scale.x; effectStarParam.unk0C.y = 0.0f; effectStarParam.unk0C.z = 10.0 * cosd(45.0f * i) * temp_r30->scale.x; CreateEffectStar( temp_r25, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 40.0f, &effectStarParam); } - for (i = 0; i < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { + for (i = 0; i < 8; i++) { effectDustParam.unk0C.x = 4.0 * sind(45.0f * i + 22.5) * temp_r30->scale.x; effectDustParam.unk0C.y = 0.0f; effectDustParam.unk0C.z = 4.0 * cosd(45.0f * i + 22.5) * temp_r30->scale.x; @@ -1970,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 f76419c5..f962c140 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) { @@ -279,13 +286,21 @@ BOOL HuDataGetAsyncStat(s32 status) static void GetFileInfo(DataReadStat *read_stat, s32 file_num) { - u32 *temp_ptr; - temp_ptr = (u32 *)PTR_OFFSET(read_stat->dir, (file_num * 4))+1; + u32 *temp_ptr = (u32 *)PTR_OFFSET(read_stat->dir, (file_num * 4))+1; +#ifdef TARGET_PC + u32 ofs = *temp_ptr; + byteswap_u32(&ofs); + temp_ptr = &ofs; +#endif read_stat->file = PTR_OFFSET(read_stat->dir, *temp_ptr); temp_ptr = read_stat->file; read_stat->raw_len = *temp_ptr++; read_stat->comp_type = *temp_ptr++; read_stat->file = temp_ptr; +#ifdef TARGET_PC + byteswap_u32(&read_stat->raw_len); + byteswap_u32(&read_stat->comp_type); +#endif } void *HuDataRead(s32 data_num) @@ -322,7 +337,12 @@ void *HuDataReadNum(s32 data_num, s32 num) } read_stat = &ReadDataStat[status]; GetFileInfo(read_stat, data_num & 0xFFFF); - buf = HuMemDirectMallocNum(0, DATA_EFF_SIZE(read_stat->raw_len), num); +#ifdef TARGET_PC + // TODO PC why is the allocation invalid if we use HEAP_SYSTEM? + buf = HuMemDirectMallocNum(HEAP_DATA, DATA_EFF_SIZE(read_stat->raw_len), num); +#else + buf = HuMemDirectMallocNum(HEAP_SYSTEM, DATA_EFF_SIZE(read_stat->raw_len), num); +#endif if(buf) { HuDecodeData(read_stat->file, buf, read_stat->raw_len, read_stat->comp_type); } diff --git a/src/game/fault.c b/src/game/fault.c index f6043a78..e18075e5 100644 --- a/src/game/fault.c +++ b/src/game/fault.c @@ -23,7 +23,11 @@ static RGBColor XFB_Colors[5] = { { 0x40, 0x80, 0x80 } }; +#ifdef TARGET_PC +u8 Ascii8x8_1bpp[0x800]; +#else #include "Ascii8x8_1bpp.inc" +#endif static XFBGeometry XFB_Geometry; @@ -44,26 +48,29 @@ static void XFB_CR(s32 arg0, s32* arg1, s32* arg2); void OSPanic(const char* file, int line, const char* msg, ...) { static char* titleMes = "OSPanic encounterd:"; - va_list sp78; + va_list args; s32 sp74; s32 sp70; - char sp84[1024]; + char buffer[1024]; s32 puts; sp74 = x_start = 0x10; sp70 = y_start = 0x20; puts = XFB_puts((s8*)titleMes, sp74, sp70); XFB_CR(puts + 1, &sp74, &sp70); - sprintf(sp84, "%s:%d", file, line); - puts = XFB_puts((s8*)sp84, sp74, sp70); + sprintf(buffer, "%s:%d", file, line); + puts = XFB_puts((s8*)buffer, sp74, sp70); XFB_CR(puts, &sp74, &sp70); - va_start(sp78, msg); - vsnprintf(sp84, 0x400U, msg, &sp78[0]); - puts = XFB_puts((s8*)sp84, sp74, sp70); + va_start(args, msg); + vsnprintf(buffer, 0x400U, msg, &args[0]); +#ifdef TARGET_PC + fputs(buffer, stderr); +#endif + puts = XFB_puts((s8*)buffer, sp74, sp70); XFB_CR(puts, &sp74, &sp70); XFB_WriteBackCache(); PPCHalt(); - va_end(sp78); + va_end(args); } void HuFaultInitXfbDirectDraw(GXRenderModeObj *mode) { diff --git a/src/game/flag.c b/src/game/flag.c index 26cdb6c8..4f4b4c74 100644 --- a/src/game/flag.c +++ b/src/game/flag.c @@ -1,6 +1,9 @@ -#include "dolphin.h" #include "game/gamework_data.h" +#ifdef TARGET_PC +#include "string.h" +#endif + static u8 _Sys_Flag[16]; static u8 *GetFlagPtr(u32 flag) @@ -39,4 +42,4 @@ void _ClearFlag(u32 flag) void _InitFlag(void) { memset(_Sys_Flag, 0, sizeof(_Sys_Flag)); -} \ No newline at end of file +} diff --git a/src/game/frand.c b/src/game/frand.c index 69e83264..5d1407f9 100644 --- a/src/game/frand.c +++ b/src/game/frand.c @@ -2,6 +2,8 @@ static u32 frand_seed; +extern s32 rand8(void); + static inline u32 frandom(u32 param) { s32 rand2, rand3; @@ -36,4 +38,4 @@ u32 frandmod(u32 arg0) { frand_seed = frandom(frand_seed); ret = (frand_seed & 0x7FFFFFFF)%arg0; return ret; -} \ No newline at end of file +} diff --git a/src/game/gamework.c b/src/game/gamework.c index 0100278f..fb9c6fda 100644 --- a/src/game/gamework.c +++ b/src/game/gamework.c @@ -4,14 +4,18 @@ #include "string.h" #include "version.h" -s16 GwLanguage = 1; -s16 GwLanguageSave = -1; +#ifndef __MWERKS__ +#include "game/pad.h" +#endif -GameStat GWGameStatDefault; -GameStat GWGameStat; -SystemState GWSystem; -PlayerState GWPlayer[4]; -PlayerConfig GWPlayerCfg[4]; +SHARED_SYM s16 GwLanguage = 1; +SHARED_SYM s16 GwLanguageSave = -1; + +SHARED_SYM GameStat GWGameStatDefault; +SHARED_SYM GameStat GWGameStat; +SHARED_SYM SystemState GWSystem; +SHARED_SYM PlayerState GWPlayer[4]; +SHARED_SYM PlayerConfig GWPlayerCfg[4]; static inline void GWErase(void) { @@ -39,6 +43,13 @@ static inline void InitPlayerConfig(void) } } +// TODO: get these properly declared somewhere +extern void GWRumbleSet(s32 value); +extern void GWMGExplainSet(s32 value); +extern void GWMGShowComSet(s32 value); +extern void GWMessSpeedSet(s32 value); +extern void GWSaveModeSet(s32 value); + static inline void ResetBoardSettings(void) { GWRumbleSet(1); diff --git a/src/game/hsfanim.c b/src/game/hsfanim.c index b5a73d37..0c5a23f3 100755 --- a/src/game/hsfanim.c +++ b/src/game/hsfanim.c @@ -1,4 +1,5 @@ #include "game/hsfanim.h" +#include "dolphin/gx/GXStruct.h" #include "game/hsfdraw.h" #include "game/init.h" #include "game/memory.h" @@ -8,6 +9,10 @@ #include "ext_math.h" #include "string.h" +#ifndef __MWERKS__ +#include "game/frand.h" +#endif + typedef struct { /* 0x00 */ s16 unk00; /* 0x02 */ s16 unk02; @@ -30,10 +35,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) { @@ -315,7 +320,7 @@ void Hu3DAnimExec(void) { for (i = 0; i < HU3D_TEXSCROLL_MAX; i++, var_r31++) { if (var_r31->unk02 != -1) { if (Hu3DPauseF != 0 && !(var_r31->unk00 & 8)) { - PSMTXRotRad(var_r31->unk3C, 'Z', MTXDegToRad(var_r31->unk34)); + MTXRotRad(var_r31->unk3C, 'Z', MTXDegToRad(var_r31->unk34)); mtxTransCat(var_r31->unk3C, var_r31->unk04.x, var_r31->unk04.y, var_r31->unk04.z); } else { if (var_r31->unk00 & 1) { @@ -348,7 +353,7 @@ void Hu3DAnimExec(void) { var_r31->unk34 += 360.0f; } } - PSMTXRotRad(var_r31->unk3C, 'Z', MTXDegToRad(var_r31->unk34)); + MTXRotRad(var_r31->unk3C, 'Z', MTXDegToRad(var_r31->unk34)); mtxTransCat(var_r31->unk3C, var_r31->unk04.x, var_r31->unk04.y, var_r31->unk04.z); } } @@ -400,7 +405,7 @@ s16 Hu3DTexScrollCreate(s16 arg0, char *arg1) { var_r31->unk00 = 0; var_r31->unk04.x = var_r31->unk04.y = var_r31->unk04.z = 0.0f; var_r31->unk34 = 0.0f; - PSMTXIdentity(var_r31->unk3C); + MTXIdentity(var_r31->unk3C); return var_r28; } @@ -686,16 +691,16 @@ static void particleFunc(ModelData *arg0, Mtx arg1) { temp_r31 = arg0->unk_120; temp_r22 = temp_r31->unk_44; if (HmfInverseMtxF3X3(arg1, sp128) == 0) { - PSMTXIdentity(sp128); + MTXIdentity(sp128); } - PSMTXReorder(sp128, sp8); + MTXReorder(sp128, sp8); if ((Hu3DPauseF == 0 || (arg0->attr & HU3D_ATTR_NOPAUSE)) && temp_r31->unk_54 && temp_r31->unk_38 != GlobalCounter) { var_r17 = temp_r31->unk_54; var_r17(arg0, temp_r31, arg1); } var_r29 = temp_r31->unk_48; var_r30 = temp_r31->unk_4C; - PSMTXROMultVecArray(sp8, &basePos[0], sp38, 4); + MTXROMultVecArray(sp8, &basePos[0], sp38, 4); for (i = 0, var_r19 = 0; i < temp_r31->unk_30; i++, var_r29++) { if (var_r29->unk2C && (var_r29->unk06 & Hu3DCameraBit)) { if (!var_r29->unk30) { @@ -721,9 +726,9 @@ static void particleFunc(ModelData *arg0, Mtx arg1) { VECScale(&basePos[1], &sp98[1], var_r29->unk2C); VECScale(&basePos[2], &sp98[2], var_r29->unk2C); VECScale(&basePos[3], &sp98[3], var_r29->unk2C); - PSMTXRotRad(spC8, 'Z', var_r29->unk30); - PSMTXConcat(sp128, spC8, spF8); - PSMTXMultVecArray(spF8, sp98, sp68, 4); + MTXRotRad(spC8, 'Z', var_r29->unk30); + MTXConcat(sp128, spC8, spF8); + MTXMultVecArray(spF8, sp98, sp68, 4); VECAdd(&sp68[0], &var_r29->unk34, var_r30++); VECAdd(&sp68[1], &var_r29->unk34, var_r30++); VECAdd(&sp68[2], &var_r29->unk34, var_r30++); @@ -799,7 +804,7 @@ static void particleFunc(ModelData *arg0, Mtx arg1) { temp_r24 = &temp_r22->bmp[temp_r27->bmpNo]; temp_f29 = (float) temp_r27->sizeX / temp_r24->sizeX; temp_f30 = (float) temp_r27->sizeY / temp_r24->sizeY; - PSMTXScale(sp128, temp_f29, temp_f30, 1.0f); + MTXScale(sp128, temp_f29, temp_f30, 1.0f); temp_f29 = (float) temp_r27->startX / temp_r24->sizeX; temp_f30 = (float) temp_r27->startY / temp_r24->sizeY; mtxTransCat(sp128, temp_f29, temp_f30, 0.0f); @@ -823,15 +828,15 @@ static void particleFunc(ModelData *arg0, Mtx arg1) { } GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, temp_r31->unk_4C, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSETARRAY(GX_VA_POS, temp_r31->unk_4C, temp_r31->unk_30 * 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, &temp_r31->unk_48->unk40, 0x44); + GXSETARRAY(GX_VA_CLR0, &temp_r31->unk_48->unk40, temp_r31->unk_30 * sizeof(GXColor), 0x44); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_TEX0, baseST, 8); - GXCallDisplayList(temp_r31->unk_50, temp_r31->unk_40); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSETARRAY(GX_VA_TEX0, baseST, sizeof(baseST), 8); + GXCallDisplayListNative(temp_r31->unk_50, temp_r31->unk_40); } if (shadowModelDrawF == 0) { if (!(temp_r31->unk_2D & 2) && Hu3DPauseF == 0) { diff --git a/src/game/hsfdraw.c b/src/game/hsfdraw.c index fce142dd..e2280e0b 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" @@ -89,7 +89,7 @@ static u16 faceCnt; static u16 *faceNumBuf; static s32 DLTotalNum; static u32 totalSize; -static u32 mallocNo; +static uintptr_t mallocNo; static s32 curModelID; static s16 polySize; static s32 PGFinishF; @@ -97,23 +97,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; @@ -123,7 +119,7 @@ void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2) { temp_r28 = arg0->hsfData; if (arg0->attr & HU3D_ATTR_HOOKFUNC) { temp_r31 = &DrawObjData[DrawObjIdx]; - PSMTXCopy(arg1, temp_r31->matrix); + MTXCopy(arg1, temp_r31->matrix); sp8.x = temp_r31->matrix[0][3]; sp8.y = temp_r31->matrix[1][3]; sp8.z = temp_r31->matrix[2][3]; @@ -137,19 +133,20 @@ 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; } - PSMTXCopy(arg1, MTXBuf[0]); + MTXCopy(arg1, MTXBuf[0]); scaleBuf[0] = *arg2; MTXIdx = 1; CancelTRXF = 0; 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 +154,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 +186,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 +211,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; @@ -220,12 +220,13 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { if (CancelTRXF == 0) { if (arg1->data.cenvCnt != 0 && hookIdx == -1) { temp_r21 = arg1 - temp_r20->object; - PSMTXConcat(MTXBuf[0], temp_r20->matrix->data[temp_r21 + temp_r20->matrix->base_idx], MTXBuf[MTXIdx]); - } else { - PSMTXScale(sp1C, var_r30->scale.x, var_r30->scale.y, var_r30->scale.z); + MTXConcat(MTXBuf[0], temp_r20->matrix->data[temp_r21 + temp_r20->matrix->base_idx], MTXBuf[MTXIdx]); + } + 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); - PSMTXConcat(MTXBuf[MTXIdx - 1], sp1C, MTXBuf[MTXIdx]); + MTXConcat(MTXBuf[MTXIdx - 1], sp1C, MTXBuf[MTXIdx]); } temp_r28 = &scaleBuf[MTXIdx]; temp_r24 = temp_r28 - 1; @@ -234,45 +235,49 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { temp_r28->z = temp_r24->z * var_r30->scale.z; temp_r29->scale = *temp_r28; if (arg1->flags & 1) { - PSMTXInverse(MTXBuf[MTXIdx], sp1C); + MTXInverse(MTXBuf[MTXIdx], sp1C); sp1C[0][3] = sp1C[1][3] = sp1C[2][3] = 0.0f; - PSMTXConcat(MTXBuf[MTXIdx], sp1C, temp_r29->matrix); + MTXConcat(MTXBuf[MTXIdx], sp1C, temp_r29->matrix); mtxScaleCat(temp_r29->matrix, temp_r28->x, temp_r28->y, temp_r28->z); - } else { - PSMTXCopy(MTXBuf[MTXIdx], temp_r29->matrix); + } + else { + MTXCopy(MTXBuf[MTXIdx], temp_r29->matrix); } MTXIdx++; var_r18 = 1; - } else { + } + else { if (arg1->flags & 1) { - PSMTXInverse(MTXBuf[MTXIdx - 1], sp1C); + MTXInverse(MTXBuf[MTXIdx - 1], sp1C); sp1C[0][3] = sp1C[1][3] = sp1C[2][3] = 0.0f; - PSMTXConcat(MTXBuf[MTXIdx - 1], sp1C, temp_r29->matrix); + 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 { - PSMTXCopy(MTXBuf[MTXIdx - 1], temp_r29->matrix); + } + else { + MTXCopy(MTXBuf[MTXIdx - 1], temp_r29->matrix); } temp_r29->scale = scaleBuf[MTXIdx - 1]; CancelTRXF = 0; var_r18 = 0; } - PSMTXCopy(temp_r29->matrix, temp_r25->matrix); + MTXCopy(temp_r29->matrix, temp_r25->matrix); if (temp_r25->hook != -1) { temp_r31 = &Hu3DData[temp_r25->hook]; if (!(temp_r31->attr & HU3D_ATTR_DISPOFF)) { temp_r21 = attachMotionF; if (temp_r31->unk_08 != -1) { attachMotionF = 1; - } else { + } + else { attachMotionF = 0; } sp8 = hookIdx; hookIdx = temp_r25->hook; - PSMTXScale(sp1C, temp_r31->scale.x, temp_r31->scale.y, temp_r31->scale.z); + MTXScale(sp1C, temp_r31->scale.x, temp_r31->scale.y, temp_r31->scale.z); mtxRotCat(sp1C, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); mtxTransCat(sp1C, temp_r31->pos.x, temp_r31->pos.y, temp_r31->pos.z); - PSMTXConcat(sp1C, temp_r31->unk_F0, sp1C); - PSMTXConcat(temp_r29->matrix, sp1C, MTXBuf[MTXIdx]); + MTXConcat(sp1C, temp_r31->unk_F0, sp1C); + MTXConcat(temp_r29->matrix, sp1C, MTXBuf[MTXIdx]); temp_r28 = &scaleBuf[MTXIdx]; temp_r24 = temp_r28 - 1; temp_r28->x = temp_r24->x * temp_r31->scale.x; @@ -284,10 +289,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 +310,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 +319,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 +343,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,28 +373,33 @@ 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; temp_f30 = (temp_r29->y - temp_r31->y) * 0.5; temp_f29 = (temp_r29->z - temp_r31->z) * 0.5; - PSMTXTrans(sp28, temp_f31 + temp_r31->x, temp_f30 + temp_r31->y, temp_f29 + temp_r31->z); - PSMTXConcat(arg2, sp28, sp28); + MTXTrans(sp28, temp_f31 + temp_r31->x, temp_f30 + temp_r31->y, temp_f29 + temp_r31->z); + MTXConcat(arg2, sp28, sp28); temp_f21 = var_f26 * sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30 + temp_f29 * temp_f29); 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 +414,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 +443,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 +466,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) { @@ -483,28 +508,30 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *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_r28->data.vertex->data, 3 * sizeof(float)); + GXSETARRAY(GX_VA_POS, temp_r28->data.vertex->data, temp_r28->data.vertex->count * sizeof(Vec), sizeof(Vec)); 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, 3); - } else { + GXSETARRAY(GX_VA_NRM, temp_r28->data.normal->data, temp_r28->data.normal->count * 3, 3); + } + else { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); - GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 3 * sizeof(float)); + GXSETARRAY(GX_VA_NRM, temp_r28->data.normal->data, temp_r28->data.normal->count * sizeof(Vec), sizeof(Vec)); } if (var_r22 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, temp_r28->data.color->data, 4); + GXSETARRAY(GX_VA_CLR0, temp_r28->data.color->data, temp_r28->data.color->count * sizeof(GXColor), sizeof(GXColor)); } GXSetZCompLoc(1); } 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 +539,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 +552,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; @@ -556,27 +587,29 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *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_r28->data.vertex->data, 3 * sizeof(float)); + GXSETARRAY(GX_VA_POS, temp_r28->data.vertex->data, temp_r28->data.vertex->count * sizeof(Vec), sizeof(Vec)); 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, 3); - } else { + GXSETARRAY(GX_VA_NRM, temp_r28->data.normal->data, temp_r28->data.normal->count * 3, 3); + } + else { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); - GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 3 * sizeof(float)); + GXSETARRAY(GX_VA_NRM, temp_r28->data.normal->data, temp_r28->data.normal->count * 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, temp_r28->data.st->data, 2 * sizeof(float)); + GXSETARRAY(GX_VA_TEX0, temp_r28->data.st->data, temp_r28->data.st->count * sizeof(Vec2f), sizeof(Vec2f)); if (var_r22 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, temp_r28->data.color->data, 4); + GXSETARRAY(GX_VA_CLR0, temp_r28->data.color->data, temp_r28->data.color->count * sizeof(GXColor), sizeof(GXColor)); } GXSetZCompLoc(0); } @@ -589,126 +622,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; - GXCallDisplayList(sp28, DrawData[drawCnt].dlSize); - } else { - sp28 = (u8*) DLBufStartP + DrawData[drawCnt].dlOfs; - GXCallDisplayList(sp28, DrawData[drawCnt].dlSize); + sp28 = (u8 *)DLBufStartP + DrawData[drawCnt].dlOfs; + GXCallDisplayListNative(sp28, DrawData[drawCnt].dlSize); + } + else { + sp28 = (u8 *)DLBufStartP + DrawData[drawCnt].dlOfs; + GXCallDisplayListNative(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 +785,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 +799,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 +818,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 +828,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++; } @@ -795,14 +849,15 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { if (var_f31 < 0.1) { var_f31 = 0.1f; } - PSMTXCopy(hiliteMtx, sp20); + MTXCopy(hiliteMtx, sp20); mtxScaleCat(sp20, var_f31, var_f31, var_f31); GXLoadTexMtxImm(sp20, GX_TEXMTX7, GX_MTX2x4); var_r30++; 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 +865,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 +877,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 +891,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 +905,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 +937,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 +973,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 +987,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; @@ -935,15 +997,17 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { var_r30 = var_r31 = 1; temp_r29 = &temp_r19->data.attribute[arg1->attrs[0]]; if (temp_r29->unk28 != 1.0f || temp_r29->unk2C != 1.0f) { - PSMTXScale(sp54, 1.0f / 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(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); - } else if (temp_r29->unk30 != 0.0f || temp_r29->unk34 != 0.0f) { - PSMTXTrans(sp54, -temp_r29->unk30, -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,14 +1016,16 @@ 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) { - PSMTXScale(sp54, 1.0f / temp_r28->unk20, 1.0f / temp_r28->unk24, 1.0f / temp_r28->unk28); + } + 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) { - PSMTXScale(sp54, temp_r28->unk2C, temp_r28->unk30, 1.0f); + } + 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); GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY); @@ -973,7 +1039,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 +1057,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 +1074,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 +1106,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++; } @@ -1056,18 +1127,20 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { if (var_f31 < 0.1) { var_f31 = 0.1f; } - PSMTXCopy(hiliteMtx, sp54); + MTXCopy(hiliteMtx, sp54); mtxScaleCat(sp54, var_f31, var_f31, var_f31); GXLoadTexMtxImm(sp54, GX_TEXMTX7, GX_MTX2x4); var_r31++; 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 +1151,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 +1163,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 +1194,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) { - PSMTXScale(sp54, 1.0f / temp_r28->unk20, 1.0f / temp_r28->unk24, 1.0f / temp_r28->unk28); + } + 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) { - PSMTXScale(sp54, temp_r28->unk2C, temp_r28->unk30, 1.0f); + } + 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) { - PSMTXScale(sp54, 1.0f / 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) { - PSMTXTrans(sp54, -temp_r29->unk30, -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 +1264,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 +1279,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 +1302,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 +1313,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 +1327,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 +1342,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 +1380,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); @@ -1298,17 +1390,17 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { 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); } - PSMTXScale(sp54, 1.0f / arg0->scale.x, 1.0f / arg0->scale.y, 1.0f / arg0->scale.z); - PSMTXConcat(arg0->matrix, sp54, sp54); + MTXScale(sp54, 1.0f / arg0->scale.x, 1.0f / arg0->scale.y, 1.0f / arg0->scale.z); + MTXConcat(arg0->matrix, sp54, sp54); sp54[0][3] = sp54[1][3] = sp54[2][3] = 0.0f; - PSMTXConcat(sp54, Hu3DCameraMtxXPose, sp54); - PSMTXConcat(refMtx, sp54, sp54); + MTXConcat(sp54, Hu3DCameraMtxXPose, sp54); + MTXConcat(refMtx, sp54, sp54); GXLoadTexMtxImm(sp54, 0x36, GX_MTX2x4); var_r31++; 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++; } @@ -1320,7 +1412,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { if (var_f31 < 0.1) { var_f31 = 0.1f; } - PSMTXCopy(hiliteMtx, sp54); + MTXCopy(hiliteMtx, sp54); mtxScaleCat(sp54, var_f31, var_f31, var_f31); GXLoadTexMtxImm(sp54, 0x33, GX_MTX2x4); if (var_r20 == -1) { @@ -1330,7 +1422,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 +1443,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 +1460,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 +1472,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 +1491,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 +1505,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 +1537,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 +1573,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 +1590,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; @@ -1551,15 +1630,16 @@ static void SetReflect(HsfDrawObject *arg0, s16 arg1, s16 arg2, u8 arg3) { GXSetTevColorOp(arg1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(arg1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); GXSetTevAlphaOp(arg1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); - PSMTXScale(sp3C, 1.0f / arg0->scale.x, 1.0f / arg0->scale.y, 1.0f / arg0->scale.z); - PSMTXConcat(arg0->matrix, sp3C, spC); + MTXScale(sp3C, 1.0f / arg0->scale.x, 1.0f / arg0->scale.y, 1.0f / arg0->scale.z); + MTXConcat(arg0->matrix, sp3C, spC); spC[0][3] = spC[1][3] = spC[2][3] = 0.0f; - PSMTXConcat(spC, Hu3DCameraMtxXPose, sp3C); - PSMTXConcat(refMtx, sp3C, spC); + MTXConcat(spC, Hu3DCameraMtxXPose, sp3C); + MTXConcat(refMtx, sp3C, spC); 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,15 +1678,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); +#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); @@ -1615,7 +1700,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; @@ -1644,19 +1730,20 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *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->data.vertex->data, 3 * sizeof(float)); + GXSETARRAY(GX_VA_POS, temp_r31->data.vertex->data, temp_r31->data.vertex->count * sizeof(Vec), sizeof(Vec)); GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); 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, 3); - } else { + GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.normal->count * 3, 3); + } + else { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); - GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 3 * sizeof(float)); + GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.normal->count * sizeof(Vec), sizeof(Vec)); } if (var_r30 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, temp_r31->data.color->data, 4); + GXSETARRAY(GX_VA_CLR0, temp_r31->data.color->data, temp_r31->data.color->count * sizeof(GXColor), sizeof(GXColor)); } GXSetZCompLoc(1); } @@ -1667,7 +1754,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; @@ -1677,27 +1765,29 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *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->data.vertex->data, 3 * sizeof(float)); + GXSETARRAY(GX_VA_POS, temp_r31->data.vertex->data, temp_r31->data.vertex->count * sizeof(Vec), sizeof(Vec)); 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, 3); - } else { + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_S8, 0); + GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.normal->count * 3, 3); + } + else { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); - GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 3 * sizeof(float)); + GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.normal->count * 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, temp_r31->data.st->data, 2 * sizeof(float)); + GXSETARRAY(GX_VA_TEX0, temp_r31->data.st->data, temp_r31->data.st->count * sizeof(Vec2f), sizeof(Vec2f)); if (var_r30 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, temp_r31->data.color->data, 4); + GXSETARRAY(GX_VA_CLR0, temp_r31->data.color->data, temp_r31->data.color->count * sizeof(GXColor), sizeof(GXColor)); } GXSetZCompLoc(0); } @@ -1711,20 +1801,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; - GXCallDisplayList(var_r26, DrawData[drawCnt].dlSize); - } else { + var_r26 = (u8 *)DLBufStartP + DrawData[drawCnt].dlOfs; + //GXCallDisplayListNative(var_r26, DrawData[drawCnt].dlSize); + } + else { if (!(temp_r27->flags & 0x400)) { drawCnt++; return; } - var_r26 = (u8*) DLBufStartP + DrawData[drawCnt].dlOfs; - GXCallDisplayList(var_r26, DrawData[drawCnt].dlSize); + var_r26 = (u8 *)DLBufStartP + DrawData[drawCnt].dlOfs; + //GXCallDisplayListNative(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; @@ -1736,7 +1828,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; @@ -1758,7 +1854,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); @@ -1769,14 +1866,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; @@ -1784,7 +1882,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; @@ -1792,7 +1890,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; @@ -1800,7 +1898,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; @@ -1812,15 +1910,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); } @@ -1829,17 +1929,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); + 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; @@ -1850,14 +1960,15 @@ 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) { - PSMTXScale(sp8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + MTXScale(sp8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); mtxRotCat(sp8, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); mtxTransCat(sp8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); - PSMTXConcat(MTXBuf[MTXIdx - 1], sp8, MTXBuf[MTXIdx]); + MTXConcat(MTXBuf[MTXIdx - 1], sp8, MTXBuf[MTXIdx]); } temp_r28 = &scaleBuf[MTXIdx]; temp_r27 = temp_r28 - 1; @@ -1866,7 +1977,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; } @@ -1878,7 +1990,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; @@ -1889,14 +2002,15 @@ 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) { - PSMTXScale(sp8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + MTXScale(sp8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); mtxRotCat(sp8, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); mtxTransCat(sp8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); - PSMTXConcat(MTXBuf[MTXIdx - 1], sp8, MTXBuf[MTXIdx]); + MTXConcat(MTXBuf[MTXIdx - 1], sp8, MTXBuf[MTXIdx]); } temp_r30 = &scaleBuf[MTXIdx]; temp_r29 = temp_r30 - 1; @@ -1905,7 +2019,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; } @@ -1917,7 +2032,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; @@ -1928,14 +2044,15 @@ 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) { - PSMTXScale(sp8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + MTXScale(sp8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); mtxRotCat(sp8, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); mtxTransCat(sp8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); - PSMTXConcat(MTXBuf[MTXIdx - 1], sp8, MTXBuf[MTXIdx]); + MTXConcat(MTXBuf[MTXIdx - 1], sp8, MTXBuf[MTXIdx]); } temp_r28 = &scaleBuf[MTXIdx]; temp_r27 = temp_r28 - 1; @@ -1944,7 +2061,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; } @@ -1956,7 +2074,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; @@ -1967,13 +2086,14 @@ 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; } - PSMTXScale(spC, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + MTXScale(spC, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); mtxRotCat(spC, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); mtxTransCat(spC, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); - PSMTXConcat(MTXBuf[MTXIdx - 1], spC, MTXBuf[MTXIdx]); + MTXConcat(MTXBuf[MTXIdx - 1], spC, MTXBuf[MTXIdx]); temp_r30 = &scaleBuf[MTXIdx]; temp_r29 = temp_r30 - 1; temp_r30->x = temp_r29->x * var_r31->scale.x; @@ -1981,7 +2101,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; } @@ -1993,21 +2114,23 @@ 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); - PSMTXScale(sp3C, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); - PSMTXConcat(spC, sp3C, sp3C); + MTXScale(sp3C, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + MTXConcat(spC, sp3C, sp3C); mtxTransCat(sp3C, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); - PSMTXConcat(MTXBuf[MTXIdx - 1], sp3C, MTXBuf[MTXIdx]); + MTXConcat(MTXBuf[MTXIdx - 1], sp3C, MTXBuf[MTXIdx]); scaleBuf[MTXIdx].x = var_r31->scale.x * scaleBuf[MTXIdx - 1].x; scaleBuf[MTXIdx].y = var_r31->scale.y * scaleBuf[MTXIdx - 1].y; scaleBuf[MTXIdx].z = var_r31->scale.z * scaleBuf[MTXIdx - 1].z; @@ -2018,13 +2141,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; @@ -2070,7 +2194,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; } } @@ -2092,47 +2217,49 @@ 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; GXLoadPosMtxImm(temp_r28->matrix, GX_PNMTX0); - PSMTXInvXpose(temp_r28->matrix, sp120); + MTXInvXpose(temp_r28->matrix, sp120); GXLoadNrmMtxImm(sp120, 0); if (Hu3DShadowF != 0 && Hu3DShadowCamBit != 0 && (Hu3DObjInfoP->flags & 8)) { - PSMTXInverse(Hu3DCameraMtx, spF0); - PSMTXConcat(spF0, temp_r28->matrix, sp120); - PSMTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp150); - PSMTXConcat(sp150, sp120, sp120); + MTXInverse(Hu3DCameraMtx, spF0); + MTXConcat(spF0, temp_r28->matrix, sp120); + MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp150); + 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) { if (var_r19 == 0) { - PSMTXInverse(Hu3DCameraMtx, spF0); + MTXInverse(Hu3DCameraMtx, spF0); } for (i = 0, var_r21 = 1; i < 4; i++, var_r21 <<= 1) { if (var_r21 & temp_r28->model->unk_02) { - PSMTXConcat(spF0, temp_r28->matrix, sp120); - PSMTXConcat(Hu3DProjection[i].unk_68, Hu3DProjection[i].unk_38, sp150); - PSMTXConcat(sp150, sp120, sp120); + MTXConcat(spF0, temp_r28->matrix, sp120); + MTXConcat(Hu3DProjection[i].unk_68, Hu3DProjection[i].unk_38, sp150); + MTXConcat(sp150, sp120, sp120); GXLoadTexMtxImm(sp120, texMtxTbl[i + 3], GX_MTX3x4); } } @@ -2142,32 +2269,34 @@ void Hu3DDrawPost(void) { temp_r22 = &Hu3DGlobalLight[temp_r28->model->unk_03]; sp30 = temp_r22->unk_28; if (temp_r22->unk_00 & 0x8000) { - PSMTXMultVecSR(Hu3DCameraMtx, &sp30, &sp30); + MTXMultVecSR(Hu3DCameraMtx, &sp30, &sp30); } temp_f30 = VECDotProduct(&sp30, &sp54); temp_f30 *= 10000.0f; OSf32tos16(&temp_f30, &sp8); if (sp8 == -10000) { - PSMTXScale(hiliteMtx, 0.0f, 0.0f, 0.0f); - } else { + MTXScale(hiliteMtx, 0.0f, 0.0f, 0.0f); + } + else { C_VECHalfAngle(&sp30, &sp54, &sp3C); sp3C.x = -sp3C.x; sp3C.y = -sp3C.y; sp3C.z = -sp3C.z; - PSMTXScale(sp60, 1.0f / temp_r28->scale.x, 1.0f / temp_r28->scale.y, 1.0f / temp_r28->scale.z); - PSMTXConcat(temp_r28->matrix, sp60, spC0); + MTXScale(sp60, 1.0f / temp_r28->scale.x, 1.0f / temp_r28->scale.y, 1.0f / temp_r28->scale.z); + MTXConcat(temp_r28->matrix, sp60, spC0); spC0[0][3] = spC0[1][3] = spC0[2][3] = 0.0f; - PSMTXInvXpose(spC0, sp90); + MTXInvXpose(spC0, sp90); if (sp8 == 10000) { - PSMTXIdentity(spC0); - } else { + MTXIdentity(spC0); + } + else { VECCrossProduct(&sp3C, &sp54, &sp48); temp_f28 = acosf(VECDotProduct(&sp54, &sp3C)); - PSMTXRotAxisRad(spC0, &sp48, temp_f28); + MTXRotAxisRad(spC0, &sp48, temp_f28); } - PSMTXConcat(spC0, sp90, sp60); - PSMTXTrans(spC0, 0.5f, 0.5f, 0.0f); - PSMTXConcat(spC0, sp60, hiliteMtx); + MTXConcat(spC0, sp90, sp60); + MTXTrans(spC0, 0.5f, 0.5f, 0.0f); + MTXConcat(spC0, sp60, hiliteMtx); } } temp_r24 = temp_r28->object->data.face; @@ -2175,7 +2304,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); @@ -2183,13 +2312,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); @@ -2201,7 +2332,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; } @@ -2219,7 +2351,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; @@ -2250,28 +2383,29 @@ static void ObjDraw(HsfDrawObject *arg0) { DLBufStartP = Hu3DObjInfoP->dlBuf; DrawData = Hu3DObjInfoP->drawData; GXLoadPosMtxImm(arg0->matrix, GX_PNMTX0); - PSMTXInvXpose(arg0->matrix, sp110); + MTXInvXpose(arg0->matrix, sp110); GXLoadNrmMtxImm(sp110, 0); GXInvalidateVtxCache(); if (Hu3DShadowF != 0 && Hu3DShadowCamBit != 0 && (Hu3DObjInfoP->flags & 8)) { - PSMTXInverse(Hu3DCameraMtx, spE0); - PSMTXConcat(spE0, arg0->matrix, sp110); - PSMTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp140); - PSMTXConcat(sp140, sp110, sp110); + MTXInverse(Hu3DCameraMtx, spE0); + MTXConcat(spE0, arg0->matrix, sp110); + MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp140); + MTXConcat(sp140, sp110, sp110); GXLoadTexMtxImm(sp110, GX_TEXMTX9, GX_MTX3x4); var_r22 = 1; - } else { + } + else { var_r22 = 0; } if (arg0->model->unk_02 != 0) { if (var_r22 == 0) { - PSMTXInverse(Hu3DCameraMtx, spE0); + MTXInverse(Hu3DCameraMtx, spE0); } for (i = 0, var_r23 = 1; i < 4; i++, var_r23 <<= 1) { if (var_r23 & arg0->model->unk_02) { - PSMTXConcat(spE0, arg0->matrix, sp110); - PSMTXConcat(Hu3DProjection[i].unk_68, Hu3DProjection[i].unk_38, sp140); - PSMTXConcat(sp140, sp110, sp110); + MTXConcat(spE0, arg0->matrix, sp110); + MTXConcat(Hu3DProjection[i].unk_68, Hu3DProjection[i].unk_38, sp140); + MTXConcat(sp140, sp110, sp110); GXLoadTexMtxImm(sp110, texMtxTbl[i + 3], GX_MTX3x4); } } @@ -2281,32 +2415,34 @@ static void ObjDraw(HsfDrawObject *arg0) { temp_r24 = &Hu3DGlobalLight[arg0->model->unk_03]; sp20 = temp_r24->unk_28; if (temp_r24->unk_00 & 0x8000) { - PSMTXMultVecSR(Hu3DCameraMtx, &sp20, &sp20); + MTXMultVecSR(Hu3DCameraMtx, &sp20, &sp20); } temp_f30 = VECDotProduct(&sp20, &sp44); temp_f30 *= 10000.0f; OSf32tos16(&temp_f30, &var_r21); if (var_r21 == -10000) { - PSMTXScale(hiliteMtx, 0.0f, 0.0f, 0.0f); - } else { + MTXScale(hiliteMtx, 0.0f, 0.0f, 0.0f); + } + else { C_VECHalfAngle(&sp20, &sp44, &sp2C); sp2C.x = -sp2C.x; sp2C.y = -sp2C.y; sp2C.z = -sp2C.z; - PSMTXScale(sp50, 1.0f / arg0->scale.x, 1.0f / arg0->scale.y, 1.0f / arg0->scale.z); - PSMTXConcat(arg0->matrix, sp50, spB0); + MTXScale(sp50, 1.0f / arg0->scale.x, 1.0f / arg0->scale.y, 1.0f / arg0->scale.z); + MTXConcat(arg0->matrix, sp50, spB0); spB0[0][3] = spB0[1][3] = spB0[2][3] = 0.0f; - PSMTXInvXpose(spB0, sp80); + MTXInvXpose(spB0, sp80); if (var_r21 == 10000) { - PSMTXIdentity(spB0); - } else { + MTXIdentity(spB0); + } + else { VECCrossProduct(&sp2C, &sp44, &sp38); temp_f29 = acosf(VECDotProduct(&sp44, &sp2C)); - PSMTXRotAxisRad(spB0, &sp38, temp_f29); + MTXRotAxisRad(spB0, &sp38, temp_f29); } - PSMTXConcat(spB0, sp80, sp50); - PSMTXTrans(spB0, 0.5f, 0.5f, 0.0f); - PSMTXConcat(spB0, sp50, hiliteMtx); + MTXConcat(spB0, sp80, sp50); + MTXTrans(spB0, 0.5f, 0.5f, 0.0f); + MTXConcat(spB0, sp50, hiliteMtx); } } temp_r26 = arg0->object->data.face; @@ -2314,7 +2450,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); @@ -2322,11 +2458,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; @@ -2334,7 +2472,8 @@ static void ObjDraw(HsfDrawObject *arg0) { var_r27 += temp_r25->polyCnt; } } - } else { + } + else { sp1C.a = 0xFF; GXSetChanAmbColor(GX_COLOR0A0, sp1C); GXSetChanMatColor(GX_COLOR0A0, sp1C); @@ -2346,7 +2485,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; } @@ -2360,7 +2500,8 @@ static void ObjDraw(HsfDrawObject *arg0) { } } -void MakeDisplayList(s16 arg0, u32 arg1) { +void MakeDisplayList(s16 arg0, uintptr_t arg1) +{ HsfData *temp_r31; ModelData *var_r30; @@ -2376,7 +2517,8 @@ void MakeDisplayList(s16 arg0, u32 arg1) { } } -static void MDObjCall(HsfData *arg0, HsfObject *arg1) { +static void MDObjCall(HsfData *arg0, HsfObject *arg1) +{ s16 i; switch (arg1->type) { @@ -2397,7 +2539,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; @@ -2406,7 +2549,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; @@ -2420,7 +2563,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; @@ -2450,7 +2593,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); @@ -2461,7 +2605,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; @@ -2476,12 +2621,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 = (uintptr_t)DLBufP - (uintptr_t)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) { @@ -2526,13 +2672,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; } } @@ -2542,13 +2689,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; } } @@ -2558,13 +2706,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; } } @@ -2580,13 +2729,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; } } @@ -2596,13 +2746,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; } } @@ -2612,13 +2763,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; } } @@ -2628,13 +2780,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,13 +2802,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; } } @@ -2665,13 +2819,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; } } @@ -2681,13 +2836,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; } } @@ -2699,13 +2855,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; } } @@ -2721,15 +2878,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; @@ -2743,7 +2901,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]; @@ -2760,11 +2919,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; @@ -2774,7 +2934,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]; @@ -2786,7 +2947,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; @@ -2801,7 +2963,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) { @@ -2845,7 +3008,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; @@ -2853,43 +3017,47 @@ 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) { - PSMTXRotRad(sp8, 'X', MTXDegToRad(arg1)); - PSMTXConcat(sp8, arg0, arg0); + MTXRotRad(sp8, 'X', MTXDegToRad(arg1)); + MTXConcat(sp8, arg0, arg0); } if (arg2 != 0.0f) { - PSMTXRotRad(sp8, 'Y', MTXDegToRad(arg2)); - PSMTXConcat(sp8, arg0, arg0); + MTXRotRad(sp8, 'Y', MTXDegToRad(arg2)); + MTXConcat(sp8, arg0, arg0); } if (arg3 != 0.0f) { - PSMTXRotRad(sp8, 'Z', MTXDegToRad(arg3)); - PSMTXConcat(sp8, arg0, arg0); + MTXRotRad(sp8, 'Z', MTXDegToRad(arg3)); + MTXConcat(sp8, arg0, arg0); } } -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) { - PSMTXRotRad(arg0, 'X', MTXDegToRad(arg1)); - } else { - PSMTXIdentity(arg0); + MTXRotRad(arg0, 'X', MTXDegToRad(arg1)); + } + else { + MTXIdentity(arg0); } if (arg2 != 0.0f) { - PSMTXRotRad(sp38, 'Y', MTXDegToRad(arg2)); - PSMTXConcat(sp38, arg0, arg0); + MTXRotRad(sp38, 'Y', MTXDegToRad(arg2)); + MTXConcat(sp38, arg0, arg0); } if (arg3 != 0.0f) { - PSMTXRotRad(sp8, 'Z', MTXDegToRad(arg3)); - PSMTXConcat(sp8, arg0, arg0); + MTXRotRad(sp8, 'Z', MTXDegToRad(arg3)); + MTXConcat(sp8, arg0, arg0); } } -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; @@ -2901,7 +3069,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; @@ -2928,7 +3097,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; @@ -2947,7 +3117,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); @@ -2957,7 +3128,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); @@ -2970,7 +3142,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; @@ -2980,8 +3153,8 @@ void Hu3DModelObjMtxGet(s16 arg0, char *arg1, Mtx arg2) { temp_r31 = &Hu3DData[arg0]; temp_r30 = temp_r31->hsfData; mtxRot(sp70, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); - PSMTXScale(spA0, temp_r31->scale.x, temp_r31->scale.y, temp_r31->scale.z); - PSMTXConcat(sp70, spA0, MTXBuf[0]); + MTXScale(spA0, temp_r31->scale.x, temp_r31->scale.y, temp_r31->scale.z); + MTXConcat(sp70, spA0, MTXBuf[0]); mtxTransCat(MTXBuf[0], temp_r31->pos.x, temp_r31->pos.y, temp_r31->pos.z); PGMaxPos.x = PGMaxPos.y = PGMaxPos.z = -1000000.0f; PGMinPos.x = PGMinPos.y = PGMinPos.z = 1000000.0f; @@ -2990,22 +3163,24 @@ 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); - PSMTXCopy(MTXBuf[MTXIdx - 1], arg2); + MTXCopy(MTXBuf[MTXIdx - 1], arg2); if (PGFinishF == 0 && *PGName != 0) { OSReport("Error: Not Found %s for ObjPosGet\n", arg1); - PSMTXIdentity(MTXBuf[MTXIdx]); + MTXIdentity(MTXBuf[MTXIdx]); } HuMemDirectFree(PGName); } -void PGObjCall(ModelData *arg0, HsfObject *arg1) { +void PGObjCall(ModelData *arg0, HsfObject *arg1) +{ switch (arg1->type) { case 0: case 2: @@ -3022,7 +3197,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; @@ -3038,21 +3214,23 @@ 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); - PSMTXScale(spD4, var_r30->scale.x, var_r30->scale.y, var_r30->scale.z); - PSMTXConcat(spA4, spD4, spD4); + MTXScale(spD4, var_r30->scale.x, var_r30->scale.y, var_r30->scale.z); + MTXConcat(spA4, spD4, spD4); mtxTransCat(spD4, var_r30->pos.x, var_r30->pos.y, var_r30->pos.z); - PSMTXConcat(MTXBuf[MTXIdx - 1], spD4, MTXBuf[MTXIdx]); + 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; } @@ -3063,16 +3241,17 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) { var_r27 = attachMotionF; if (temp_r31->unk_08 != -1) { attachMotionF = 1; - } else { + } + else { attachMotionF = 0; } temp_r22 = hookIdx; hookIdx = temp_r28->hook; - PSMTXScale(spD4, temp_r31->scale.x, temp_r31->scale.y, temp_r31->scale.z); + MTXScale(spD4, temp_r31->scale.x, temp_r31->scale.y, temp_r31->scale.z); mtxRotCat(spD4, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); mtxTransCat(spD4, temp_r31->pos.x, temp_r31->pos.y, temp_r31->pos.z); - PSMTXConcat(spD4, temp_r31->unk_F0, spD4); - PSMTXConcat(MTXBuf[MTXIdx - 1], spD4, MTXBuf[MTXIdx]); + MTXConcat(spD4, temp_r31->unk_F0, spD4); + MTXConcat(MTXBuf[MTXIdx - 1], spD4, MTXBuf[MTXIdx]); MTXIdx++; PGObjCall(temp_r31, temp_r31->hsfData->root); MTXIdx--; @@ -3082,7 +3261,7 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) { } if (*PGName == 0 && arg1->type == 2) { var_r23 = arg1; - PSMTXMultVec(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; } @@ -3101,7 +3280,7 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) { if (sp8.z > PGMaxPos.z) { PGMaxPos.z = sp8.z; } - PSMTXMultVec(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; } @@ -3132,21 +3311,23 @@ 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); - PSMTXScale(sp1B8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); - PSMTXConcat(sp188, sp1B8, sp1B8); + MTXScale(sp1B8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + MTXConcat(sp188, sp1B8, sp1B8); mtxTransCat(sp1B8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); - PSMTXConcat(MTXBuf[MTXIdx - 1], sp1B8, MTXBuf[MTXIdx]); + MTXConcat(MTXBuf[MTXIdx - 1], sp1B8, MTXBuf[MTXIdx]); MTXIdx++; CancelTRXF = 1; PGObjCall(arg0, arg1->data.replica); @@ -3156,13 +3337,13 @@ void PGObjReplica(ModelData *arg0, HsfObject *arg1) { } } -HsfObject *Hu3DObjDuplicate(HsfData *arg0, u32 arg1) { +HsfObject *Hu3DObjDuplicate(HsfData *arg0, uintptr_t arg1) +{ HsfObject *temp_r27; HsfObject *var_r30; HsfObject *var_r31; s16 i; s16 j; - var_r31 = HuMemDirectMallocNum(HEAP_DATA, arg0->objectCnt * sizeof(HsfObject), arg1); temp_r27 = var_r31; var_r30 = arg0->object; @@ -3170,7 +3351,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 + ((uintptr_t)var_r30->data.parent - (uintptr_t)arg0->object)); } var_r31->data.children = HuMemDirectMallocNum(HEAP_DATA, var_r30->data.childrenCount * 4, arg1); if (var_r30->constData) { @@ -3178,29 +3359,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 + ((uintptr_t)var_r30->data.children[j] - (uintptr_t)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; @@ -3208,7 +3391,7 @@ void Hu3DModelObjDraw(s16 arg0, char *arg1, Mtx arg2) { sp14.model = &Hu3DData[arg0]; sp14.object = temp_r3 = Hu3DModelObjPtrGet(arg0, arg1); sp10 = temp_r3->constData; - PSMTXCopy(arg2, sp14.matrix); + MTXCopy(arg2, sp14.matrix); sp14.scale.x = sp14.scale.y = sp14.scale.z = 1.0f; ObjDraw(&sp14); } diff --git a/src/game/hsfex.c b/src/game/hsfex.c index 490e19e3..beac8a84 100644 --- a/src/game/hsfex.c +++ b/src/game/hsfex.c @@ -2,9 +2,11 @@ #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/disp.h" +#include "game/process.h" #include "ext_math.h" + #define DISP_HALF_W (HU_DISP_WIDTH/2.0f) #define DISP_HALF_H (HU_DISP_HEIGHT/2.0f) @@ -59,7 +61,7 @@ void CamMotionEx(s16 arg0, s16 arg1, Vec *arg2, Vec *arg3, Vec *arg4, float arg5 temp_r23 = &Hu3DData[arg0]; temp_r19 = &Hu3DMotion[temp_r23->unk_08]; temp_r22 = temp_r23->hsfData; - temp_r18 = temp_r19->unk_04; + temp_r18 = temp_r19->hsfData; temp_r26 = temp_r18->motion; for (var_r25 = 0; var_r25 < HU3D_CAM_MAX; var_r25++) { if (arg1 & (1 << var_r25)) { @@ -441,8 +443,8 @@ void Hu3D2Dto3D(Vec *arg0, s16 arg1, Vec *arg2) { arg2->y = -(temp_f27 - 0.5) * temp_f31; arg2->z = -arg0->z; C_MTXLookAt(spC, &temp_r31->pos, &temp_r31->up, &temp_r31->target); - PSMTXInverse(spC, spC); - PSMTXMultVec(spC, arg2, arg2); + MTXInverse(spC, spC); + MTXMultVec(spC, arg2, arg2); } void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2) { @@ -460,7 +462,7 @@ void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2) { } temp_r31 = &Hu3DCamera[i]; C_MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target); - PSMTXMultVec(sp1C, arg0, &sp10); + MTXMultVec(sp1C, arg0, &sp10); temp_f31 = (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * sp10.z * HU_DISP_ASPECT; temp_f30 = (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * sp10.z; arg2->x = DISP_HALF_W + sp10.x * (DISP_HALF_W / -temp_f31); diff --git a/src/game/hsfload.c b/src/game/hsfload.c index d5db2471..1d94cd3a 100644 --- a/src/game/hsfload.c +++ b/src/game/hsfload.c @@ -1,6 +1,13 @@ #include "game/hsfload.h" -#include "string.h" +#include "game/EnvelopeExec.h" #include "ctype.h" +#include "string.h" + + +#ifdef TARGET_PC +#include "game/memory.h" +#include "port/byteswap.h" +#endif #define AS_S16(field) (*((s16 *)&(field))) #define AS_U16(field) (*((u16 *)&(field))) @@ -22,6 +29,15 @@ HsfBuffer *vtxtop; HsfCluster *ClusterTop; HsfAttribute *AttributeTop; HsfMaterial *MaterialTop; +#ifdef TARGET_PC +HsfBuffer *NormalTop; +HsfBuffer *StTop; +HsfBuffer *ColorTop; +HsfBuffer *FaceTop; +HsfCenv *CenvTop; +HsfPart *PartTop; +HsfBitmap *BitmapTop; +#endif static void FileLoad(void *data); static HsfData *SetHsfModel(void); @@ -75,7 +91,9 @@ HsfData *LoadHSF(void *data) NormalLoad(); STLoad(); FaceLoad(); +#if __MWERKS__ ObjectLoad(); +#endif CenvLoad(); SkeletonLoad(); PartLoad(); @@ -84,6 +102,10 @@ HsfData *LoadHSF(void *data) MapAttrLoad(); MotionLoad(); MatrixLoad(); +#if TARGET_PC + // to properly set pointers + ObjectLoad(); +#endif hsf = SetHsfModel(); InitEnvelope(hsf); objtop = NULL; @@ -114,14 +136,43 @@ void ClusterAdjustObject(HsfData *model, HsfData *src_model) static void FileLoad(void *data) { +#ifdef TARGET_PC + s32 i; +#endif fileptr = data; memcpy(&head, fileptr, sizeof(HsfHeader)); memset(&Model, 0, sizeof(HsfData)); - NSymIndex = (void **)((u32)fileptr+head.symbol.ofs); - StringTable = (char *)((u32)fileptr+head.string.ofs); - ClusterTop = (HsfCluster *)((u32)fileptr+head.cluster.ofs); - AttributeTop = (HsfAttribute *)((u32)fileptr+head.attribute.ofs); - MaterialTop = (HsfMaterial *)((u32)fileptr+head.material.ofs); +#ifdef TARGET_PC + byteswap_hsfheader(&head); + NSymIndex = HuMemDirectMallocNum(HEAP_DATA, sizeof(void*) * head.symbol.count, MEMORY_DEFAULT_NUM); + for (i = 0; i < head.symbol.count; i++) { + u32 *file_symbol_real = (u32 *)((uintptr_t)fileptr + head.symbol.ofs); + byteswap_u32(&file_symbol_real[i]); + NSymIndex[i] = (void *)file_symbol_real[i]; + } + StringTable = (char *)((uintptr_t)fileptr+head.string.ofs); + ClusterTop = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfCluster) * head.cluster.count, MEMORY_DEFAULT_NUM); + for (i = 0; i < head.cluster.count; i++) { + HsfCluster32b *file_cluster_real = (HsfCluster32b *)((uintptr_t)fileptr + head.cluster.ofs); + byteswap_hsfcluster(&file_cluster_real[i], &ClusterTop[i]); + } + AttributeTop = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfAttribute) * head.attribute.count, MEMORY_DEFAULT_NUM); + for (i = 0; i < head.attribute.count; i++) { + HsfAttribute32b *file_attribute_real = (HsfAttribute32b *)((uintptr_t)fileptr + head.attribute.ofs); + byteswap_hsfattribute(&file_attribute_real[i], &AttributeTop[i]); + } + MaterialTop = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfMaterial) * head.material.count, MEMORY_DEFAULT_NUM); + for (i = 0; i < head.material.count; i++) { + HsfMaterial32b *file_material_real = (HsfMaterial32b *)((uintptr_t)fileptr + head.material.ofs); + byteswap_hsfmaterial(&file_material_real[i], &MaterialTop[i]); + } +#else + NSymIndex = (void **)((uintptr_t)fileptr+head.symbol.ofs); + StringTable = (char *)((uintptr_t)fileptr+head.string.ofs); + ClusterTop = (HsfCluster *)((uintptr_t)fileptr+head.cluster.ofs); + AttributeTop = (HsfAttribute *)((uintptr_t)fileptr + head.attribute.ofs); + MaterialTop = (HsfMaterial *)((uintptr_t)fileptr + head.material.ofs); +#endif } static HsfData *SetHsfModel(void) @@ -166,6 +217,9 @@ static HsfData *SetHsfModel(void) data->shapeCnt = Model.shapeCnt; data->mapAttr = Model.mapAttr; data->mapAttrCnt = Model.mapAttrCnt; +#ifdef TARGET_PC + data->symbol = NSymIndex; +#endif return data; } @@ -186,7 +240,11 @@ static void MaterialLoad(void) s32 i; s32 j; if(head.material.count) { - HsfMaterial *file_mat = (HsfMaterial *)((u32)fileptr+head.material.ofs); +#ifdef TARGET_PC + HsfMaterial *file_mat = MaterialTop; +#else + HsfMaterial *file_mat = (HsfMaterial *)((uintptr_t)fileptr+head.material.ofs); +#endif HsfMaterial *curr_mat; HsfMaterial *new_mat; for(i=0; iname = SetName((u32 *)&curr_mat->name); @@ -237,7 +299,11 @@ static void AttributeLoad(void) HsfAttribute *temp_attr; s32 i; if(head.attribute.count) { +#ifdef TARGET_PC + temp_attr = file_attr = AttributeTop; +#else temp_attr = file_attr = (HsfAttribute *)((u32)fileptr+head.attribute.ofs); +#endif new_attr = temp_attr; Model.attribute = new_attr; Model.attributeCnt = head.attribute.count; @@ -254,10 +320,18 @@ static void AttributeLoad(void) static void SceneLoad(void) { +#ifdef TARGET_PC + s32 i; +#endif HsfScene *file_scene; HsfScene *new_scene; if(head.scene.count) { - file_scene = (HsfScene *)((u32)fileptr+head.scene.ofs); + file_scene = (HsfScene *)((uintptr_t)fileptr+head.scene.ofs); +#ifdef TARGET_PC + for (i = 0; i < head.scene.count; i++) { + byteswap_hsfscene(&file_scene[i]); + } +#endif new_scene = file_scene; new_scene->end = file_scene->end; new_scene->start = file_scene->start; @@ -276,18 +350,30 @@ static void ColorLoad(void) HsfBuffer *temp_color; if(head.color.count) { +#ifdef TARGET_PC + HsfBuffer32b * file_color_real = (HsfBuffer32b *)((uintptr_t)fileptr + head.color.ofs); + temp_color = file_color = ColorTop = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfBuffer) * head.color.count, MEMORY_DEFAULT_NUM); + for (i = 0; i < head.color.count; i++) { + byteswap_hsfbuffer(&file_color_real[i], &file_color[i]); + } +#else temp_color = file_color = (HsfBuffer *)((u32)fileptr+head.color.ofs); data = &file_color[head.color.count]; for(i=0; idata; new_color->name = SetName((u32 *)&file_color->name); - new_color->data = (void *)((u32)data+(u32)color_data); + new_color->data = (void *)((uintptr_t)data+(uintptr_t)color_data); } } } @@ -302,25 +388,40 @@ static void VertexLoad(void) void *temp_data; if(head.vertex.count) { +#ifdef TARGET_PC + HsfBuffer32b *file_vertex_real = (HsfBuffer32b *)((uintptr_t)fileptr + head.vertex.ofs); + vtxtop = file_vertex = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfBuffer) * head.vertex.count, MEMORY_DEFAULT_NUM); + for (i = 0; i < head.vertex.count; i++) { + byteswap_hsfbuffer(&file_vertex_real[i], &file_vertex[i]); + } +#else vtxtop = file_vertex = (HsfBuffer *)((u32)fileptr+head.vertex.ofs); data = (void *)&file_vertex[head.vertex.count]; for(i=0; icount; j++) { - data_elem = (HsfVector3f *)(((u32)data)+((u32)file_vertex->data)+(j*sizeof(HsfVector3f))); + data_elem = (HsfVector3f *)(((uintptr_t)data)+((uintptr_t)file_vertex->data)+(j*sizeof(HsfVector3f))); } } +#endif new_vertex = vtxtop; Model.vertex = new_vertex; Model.vertexCnt = head.vertex.count; +#ifdef TARGET_PC + VertexDataTop = data = (void *)&file_vertex_real[head.vertex.count]; +#else file_vertex = (HsfBuffer *)((u32)fileptr+head.vertex.ofs); VertexDataTop = data = (void *)&file_vertex[head.vertex.count]; +#endif for(i=0; idata; new_vertex->count = file_vertex->count; new_vertex->name = SetName((u32 *)&file_vertex->name); - new_vertex->data = (void *)((u32)data+(u32)temp_data); + new_vertex->data = (void *)((uintptr_t)data + (uintptr_t)temp_data); for(j=0; jcount; j++) { - data_elem = (HsfVector3f *)(((u32)data)+((u32)temp_data)+(j*sizeof(HsfVector3f))); + data_elem = (HsfVector3f *)((uintptr_t)data + (uintptr_t)temp_data + (j * sizeof(HsfVector3f))); +#ifdef TARGET_PC + byteswap_hsfvec3f(data_elem); +#endif ((HsfVector3f *)new_vertex->data)[j].x = data_elem->x; ((HsfVector3f *)new_vertex->data)[j].y = data_elem->y; ((HsfVector3f *)new_vertex->data)[j].z = data_elem->z; @@ -341,18 +442,38 @@ static void NormalLoad(void) if(head.normal.count) { s32 cenv_count = head.cenv.count; +#ifdef TARGET_PC + HsfBuffer32b *file_normal_real = (HsfBuffer32b *)((uintptr_t)fileptr + head.normal.ofs); + temp_normal = file_normal = NormalTop = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfBuffer) * head.normal.count, MEMORY_DEFAULT_NUM); + for (i = 0; i < head.normal.count; i++) { + byteswap_hsfbuffer(&file_normal_real[i], &file_normal[i]); + } +#else temp_normal = file_normal = (HsfBuffer *)((u32)fileptr+head.normal.ofs); data = (void *)&file_normal[head.normal.count]; +#endif new_normal = temp_normal; Model.normal = new_normal; Model.normalCnt = head.normal.count; +#ifdef TARGET_PC + NormalDataTop = data = (void *)&file_normal_real[head.normal.count]; +#else file_normal = (HsfBuffer *)((u32)fileptr+head.normal.ofs); NormalDataTop = data = (void *)&file_normal[head.normal.count]; +#endif for(i=0; idata; new_normal->count = file_normal->count; new_normal->name = SetName((u32 *)&file_normal->name); - new_normal->data = (void *)((u32)data+(u32)temp_data); + new_normal->data = (void *)((uintptr_t)data+(uintptr_t)temp_data); +#ifdef TARGET_PC + if (cenv_count != 0) { + for (j = 0; j < new_normal->count; j++) { + HsfVector3f *normalData = &((HsfVector3f *)new_normal->data)[j]; + byteswap_hsfvec3f(normalData); + } + } +#endif } } } @@ -368,6 +489,13 @@ static void STLoad(void) void *temp_data; if(head.st.count) { +#ifdef TARGET_PC + HsfBuffer32b *file_st_real = (HsfBuffer32b *)((uintptr_t)fileptr + head.st.ofs); + temp_st = file_st = StTop = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfBuffer) * head.st.count, MEMORY_DEFAULT_NUM); + for (i = 0; i < head.st.count; i++) { + byteswap_hsfbuffer(&file_st_real[i], &file_st[i]); + } +#else temp_st = file_st = (HsfBuffer *)((u32)fileptr+head.st.ofs); data = (void *)&file_st[head.st.count]; for(i=0; idata)+(j*sizeof(HsfVector2f))); } } +#endif new_st = temp_st; Model.st = new_st; Model.stCnt = head.st.count; +#ifdef TARGET_PC + data = (void *)&file_st_real[head.st.count]; +#else file_st = (HsfBuffer *)((u32)fileptr+head.st.ofs); data = (void *)&file_st[head.st.count]; +#endif for(i=0; idata; new_st->count = file_st->count; new_st->name = SetName((u32 *)&file_st->name); - new_st->data = (void *)((u32)data+(u32)temp_data); + new_st->data = (void *)((uintptr_t)data + (uintptr_t)temp_data); for(j=0; jcount; j++) { - data_elem = (HsfVector2f *)(((u32)data)+((u32)temp_data)+(j*sizeof(HsfVector2f))); + data_elem = (HsfVector2f *)((uintptr_t)data + (uintptr_t)temp_data + (j*sizeof(HsfVector2f))); +#ifdef TARGET_PC + byteswap_hsfvec2f(data_elem); +#endif ((HsfVector2f *)new_st->data)[j].x = data_elem->x; ((HsfVector2f *)new_st->data)[j].y = data_elem->y; } @@ -408,26 +544,57 @@ static void FaceLoad(void) s32 j; if(head.face.count) { +#ifdef TARGET_PC + HsfBuffer32b *file_face_real = (HsfBuffer32b *)((uintptr_t)fileptr + head.face.ofs); + HsfFace32b *file_facedata_real = (HsfFace32b *)&file_face_real[head.face.count]; + temp_face = file_face = FaceTop = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfBuffer) * head.face.count, MEMORY_DEFAULT_NUM); + for (i = 0; i < head.face.count; i++) { + byteswap_hsfbuffer(&file_face_real[i], &file_face[i]); + } +#else temp_face = file_face = (HsfBuffer *)((u32)fileptr+head.face.ofs); data = (HsfFace *)&file_face[head.face.count]; +#endif new_face = temp_face; Model.face = new_face; Model.faceCnt = head.face.count; +#ifdef __MWERKS__ file_face = (HsfBuffer *)((u32)fileptr+head.face.ofs); data = (HsfFace *)&file_face[head.face.count]; +#endif for(i=0; idata; new_face->name = SetName((u32 *)&file_face->name); new_face->count = file_face->count; - new_face->data = (void *)((u32)data+(u32)temp_data); +#ifdef TARGET_PC + { + HsfFace32b *facedata_start = (HsfFace32b *)((uintptr_t)file_facedata_real + (uintptr_t)temp_data); + data = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfFace) * new_face->count, MEMORY_DEFAULT_NUM); + for (j = 0; j < new_face->count; j++) { + byteswap_hsfface(&facedata_start[j], &data[j]); + } + new_face->data = data; + strip = (u8 *)(&facedata_start[new_face->count]); + } +#else + new_face->data = (void *)((uintptr_t)data+(uintptr_t)temp_data); strip = (u8 *)(&((HsfFace *)new_face->data)[new_face->count]); +#endif } new_face = temp_face; for(i=0; idata; for(j=0; jcount; j++, new_face_strip++, file_face_strip++) { if(AS_U16(file_face_strip->type) == 4) { - new_face_strip->strip.data = (s16 *)(strip+(u32)file_face_strip->strip.data*(sizeof(s16)*4)); + new_face_strip->strip.data = (s16 *)(strip+(uintptr_t)file_face_strip->strip.data*(sizeof(s16)*4)); +#ifdef TARGET_PC + { + s32 k; + for (k = 0; k < new_face_strip->strip.count; k++) { + byteswap_s16(&new_face_strip->strip.data[k]); + } + } +#endif } } } @@ -456,9 +623,9 @@ static void DispObject(HsfObject *parent, HsfObject *object) data = &object->data; new_object = temp_object = object; new_object->data.childrenCount = data->childrenCount; - new_object->data.children = (HsfObject **)&NSymIndex[(u32)data->children]; + new_object->data.children = (HsfObject **)&NSymIndex[(uintptr_t)data->children]; for(i=0; idata.childrenCount; i++) { - child_obj = &objtop[(u32)new_object->data.children[i]]; + child_obj = &objtop[(uintptr_t)new_object->data.children[i]]; new_object->data.children[i] = child_obj; } new_object->data.parent = parent; @@ -471,14 +638,14 @@ static void DispObject(HsfObject *parent, HsfObject *object) new_object->data.st = SearchStPtr((s32)data->st); new_object->data.color = SearchColorPtr((s32)data->color); new_object->data.face = SearchFacePtr((s32)data->face); - new_object->data.vertexShape = (HsfBuffer **)&NSymIndex[(u32)data->vertexShape]; + new_object->data.vertexShape = (HsfBuffer **)&NSymIndex[(uintptr_t)data->vertexShape]; for(i=0; idata.vertexShapeCnt; i++) { - temp.shape = &vtxtop[(u32)new_object->data.vertexShape[i]]; + temp.shape = &vtxtop[(uintptr_t)new_object->data.vertexShape[i]]; new_object->data.vertexShape[i] = temp.shape; } - new_object->data.cluster = (HsfCluster **)&NSymIndex[(u32)data->cluster]; + new_object->data.cluster = (HsfCluster **)&NSymIndex[(uintptr_t)data->cluster]; for(i=0; idata.clusterCnt; i++) { - temp.cluster = &ClusterTop[(u32)new_object->data.cluster[i]]; + temp.cluster = &ClusterTop[(uintptr_t)new_object->data.cluster[i]]; new_object->data.cluster[i] = temp.cluster; } new_object->data.cenv = SearchCenvPtr((s32)data->cenv); @@ -488,8 +655,16 @@ static void DispObject(HsfObject *parent, HsfObject *object) } else { new_object->data.attribute = NULL; } - new_object->data.file[0] = (void *)((u32)fileptr+(u32)data->file[0]); - new_object->data.file[1] = (void *)((u32)fileptr+(u32)data->file[1]); + new_object->data.vtxtop = (void *)((uintptr_t)fileptr + (uintptr_t)data->vtxtop); + new_object->data.normtop = (void *)((uintptr_t)fileptr + (uintptr_t)data->normtop); +#ifdef TARGET_PC + for (i = 0; i < new_object->data.vertex->count; i++) { + byteswap_hsfvec3f(&new_object->data.vtxtop[i]); + } + for (i = 0; i < new_object->data.normal->count; i++) { + byteswap_hsfvec3f(&new_object->data.normtop[i]); + } +#endif new_object->data.base.pos.x = data->base.pos.x; new_object->data.base.pos.y = data->base.pos.y; new_object->data.base.pos.z = data->base.pos.z; @@ -519,9 +694,9 @@ static void DispObject(HsfObject *parent, HsfObject *object) new_object = temp_object = object; new_object->data.parent = parent; new_object->data.childrenCount = data->childrenCount; - new_object->data.children = (HsfObject **)&NSymIndex[(u32)data->children]; + new_object->data.children = (HsfObject **)&NSymIndex[(uintptr_t)data->children]; for(i=0; idata.childrenCount; i++) { - child_obj = &objtop[(u32)new_object->data.children[i]]; + child_obj = &objtop[(uintptr_t)new_object->data.children[i]]; new_object->data.children[i] = child_obj; } if(Model.root == NULL) { @@ -541,15 +716,15 @@ static void DispObject(HsfObject *parent, HsfObject *object) new_object = temp_object = object; new_object->data.parent = parent; new_object->data.childrenCount = data->childrenCount; - new_object->data.children = (HsfObject **)&NSymIndex[(u32)data->children]; + new_object->data.children = (HsfObject **)&NSymIndex[(uintptr_t)data->children]; for(i=0; idata.childrenCount; i++) { - child_obj = &objtop[(u32)new_object->data.children[i]]; + child_obj = &objtop[(uintptr_t)new_object->data.children[i]]; new_object->data.children[i] = child_obj; } if(Model.root == NULL) { Model.root = temp_object; } - new_object->data.replica = &objtop[(u32)new_object->data.replica]; + new_object->data.replica = &objtop[(uintptr_t)new_object->data.replica]; for(i=0; ichildrenCount; i++) { DispObject(new_object, new_object->data.children[i]); } @@ -684,7 +859,15 @@ static void ObjectLoad(void) s32 obj_type; if(head.object.count) { +#ifdef TARGET_PC + HsfObject32b *file_object_real = (HsfObject32b *)((uintptr_t)fileptr + head.object.ofs); + objtop = object = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfObject) * head.object.count, MEMORY_DEFAULT_NUM); + for (i = 0; i < head.object.count; i++) { + byteswap_hsfobject(&file_object_real[i], &objtop[i]); + } +#else objtop = object = (HsfObject *)((u32)fileptr+head.object.ofs); +#endif for(i=0; iname = SetName((u32 *)&object->name); @@ -722,50 +905,93 @@ static void CenvLoad(void) s32 i; if(head.cenv.count) { +#ifdef TARGET_PC + HsfCenv32b *file_cenv_real = (HsfCenv32b *)((uintptr_t)fileptr + head.cenv.ofs); + cenv_file = CenvTop = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfCenv) * head.cenv.count, MEMORY_DEFAULT_NUM); + for (i = 0; i < head.cenv.count; i++) { + byteswap_hsfcenv(&file_cenv_real[i], &cenv_file[i]); + } + data_base = &file_cenv_real[head.cenv.count]; +#else cenv_file = (HsfCenv *)((u32)fileptr+head.cenv.ofs); data_base = &cenv_file[head.cenv.count]; +#endif weight_base = data_base; cenv_new = cenv_file; Model.cenvCnt = head.cenv.count; Model.cenv = cenv_file; for(i=0; iname = SetName((u32 *)&part_file[i].name); part_new->count = part_file[i].count; - part_new->vertex = &data[(u32)part_file[i].vertex]; + part_new->vertex = &data[(uintptr_t)part_file[i].vertex]; for(j=0; jcount; j++) { part_new->vertex[j] = part_new->vertex[j]; +#ifdef TARGET_PC + byteswap_u16(&part_new->vertex[j]); +#endif } } } @@ -838,7 +1087,11 @@ static void ClusterLoad(void) s32 i, j; if(head.cluster.count) { +#ifdef TARGET_PC + cluster_new = cluster_file = ClusterTop; +#else cluster_new = cluster_file = (HsfCluster *)((u32)fileptr+head.cluster.ofs); +#endif Model.clusterCnt = head.cluster.count; Model.cluster = cluster_file; for(i=0; idata = &data[(u32)mapattr_file->data]; } @@ -918,14 +1191,26 @@ static void BitmapLoad(void) s32 i; if(head.bitmap.count) { +#ifdef TARGET_PC + HsfBitmap32b *file_bitmap_real = (HsfBitmap32b *)((uintptr_t)fileptr + head.bitmap.ofs); + bitmap_temp = bitmap_file = BitmapTop = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfBitmap) * head.bitmap.count, MEMORY_DEFAULT_NUM); + for (i = 0; i < head.bitmap.count; i++) { + byteswap_hsfbitmap(&file_bitmap_real[i], &bitmap_file[i]); + } +#else bitmap_temp = bitmap_file = (HsfBitmap *)((u32)fileptr+head.bitmap.ofs); data = &bitmap_file[head.bitmap.count]; for(i=0; iname = SetName((u32 *)&bitmap_file->name); bitmap_new->dataFmt = bitmap_file->dataFmt; @@ -933,11 +1218,11 @@ static void BitmapLoad(void) bitmap_new->sizeX = bitmap_file->sizeX; bitmap_new->sizeY = bitmap_file->sizeY; bitmap_new->palSize = bitmap_file->palSize; - palette = SearchPalettePtr((u32)bitmap_file->palData); + palette = SearchPalettePtr((uintptr_t)bitmap_file->palData); if(palette) { bitmap_new->palData = palette->data; } - bitmap_new->data = (void *)((u32)data+(u32)bitmap_file->data); + bitmap_new->data = (void *)((uintptr_t)data+(uintptr_t)bitmap_file->data); } } } @@ -955,24 +1240,39 @@ static void PaletteLoad(void) u16 *data; if(head.palette.count) { +#ifdef TARGET_PC + HsfPalette32b *file_palette_real = (HsfPalette32b *)((uintptr_t)fileptr + head.palette.ofs); + palette_temp = palette_file = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfPalette) * head.palette.count, MEMORY_DEFAULT_NUM); + for (i = 0; i < head.palette.count; i++) { + byteswap_hsfpalette(&file_palette_real[i], &palette_file[i]); + } +#else palette_temp = palette_file = (HsfPalette *)((u32)fileptr+head.palette.ofs); data_base = (u16 *)&palette_file[head.palette.count]; for(i=0; idata); + temp_data = (u16 *)((uintptr_t)data_base+(uintptr_t)palette_file->data); } +#endif Model.palette = palette_temp; Model.paletteCnt = head.palette.count; palette_new = palette_temp; +#ifdef TARGET_PC + data_base = (u16 *)&file_palette_real[head.palette.count]; +#else palette_file = (HsfPalette *)((u32)fileptr+head.palette.ofs); data_base = (u16 *)&palette_file[head.palette.count]; +#endif for(i=0; idata); + temp_data = (u16 *)((uintptr_t)data_base+(uintptr_t)palette_file->data); data = temp_data; palette_new->name = SetName((u32 *)&palette_file->name); palette_new->data = data; palette_new->palSize = palette_file->palSize; for(j=0; jpalSize; j++) { data[j] = data[j]; +#ifdef TARGET_PC + byteswap_u16(&data[j]); +#endif } } } @@ -1119,21 +1419,21 @@ static inline void MotionLoadTransform(HsfTrack *track, void *data) switch(track->curveType) { case HSF_CURVE_STEP: { - step_data = (float *)((u32)data+(u32)track->data); + step_data = (float *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = step_data; } break; case HSF_CURVE_LINEAR: { - linear_data = (float *)((u32)data+(u32)track->data); + linear_data = (float *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = linear_data; } break; case HSF_CURVE_BEZIER: { - bezier_data = (float *)((u32)data+(u32)track->data); + bezier_data = (float *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = bezier_data; } break; @@ -1164,21 +1464,21 @@ static inline void MotionLoadCluster(HsfTrack *track, void *data) switch(track->curveType) { case HSF_CURVE_STEP: { - step_data = (float *)((u32)data+(u32)track->data); + step_data = (float *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = step_data; } break; case HSF_CURVE_LINEAR: { - linear_data = (float *)((u32)data+(u32)track->data); + linear_data = (float *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = linear_data; } break; case HSF_CURVE_BEZIER: { - bezier_data = (float *)((u32)data+(u32)track->data); + bezier_data = (float *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = bezier_data; } break; @@ -1209,21 +1509,21 @@ static inline void MotionLoadClusterWeight(HsfTrack *track, void *data) switch(track->curveType) { case HSF_CURVE_STEP: { - step_data = (float *)((u32)data+(u32)track->data); + step_data = (float *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = step_data; } break; case HSF_CURVE_LINEAR: { - linear_data = (float *)((u32)data+(u32)track->data); + linear_data = (float *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = linear_data; } break; case HSF_CURVE_BEZIER: { - bezier_data = (float *)((u32)data+(u32)track->data); + bezier_data = (float *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = bezier_data; } break; @@ -1245,21 +1545,21 @@ static inline void MotionLoadMaterial(HsfTrack *track, void *data) switch(track->curveType) { case HSF_CURVE_STEP: { - step_data = (float *)((u32)data+(u32)track->data); + step_data = (float *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = step_data; } break; case HSF_CURVE_LINEAR: { - linear_data = (float *)((u32)data+(u32)track->data); + linear_data = (float *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = linear_data; } break; case HSF_CURVE_BEZIER: { - bezier_data = (float *)((u32)data+(u32)track->data); + bezier_data = (float *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = bezier_data; } break; @@ -1292,30 +1592,38 @@ static inline void MotionLoadAttribute(HsfTrack *track, void *data) switch(track->curveType) { case HSF_CURVE_STEP: { - step_data = (float *)((u32)data+(u32)track->data); + step_data = (float *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = step_data; } break; case HSF_CURVE_LINEAR: { - linear_data = (float *)((u32)data+(u32)track->data); + linear_data = (float *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = linear_data; } break; case HSF_CURVE_BEZIER: { - bezier_data = (float *)((u32)data+(u32)track->data); + bezier_data = (float *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = bezier_data; } break; case HSF_CURVE_BITMAP: { - new_frame = file_frame = (HsfBitmapKey *)((u32)data+(u32)track->data); +#ifdef TARGET_PC + HsfBitmapKey32b *file_frame_real = (HsfBitmapKey32b *)((uintptr_t)data + (uintptr_t)track->data); + new_frame = file_frame = track->dataTop = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfBitmapKey) * track->numKeyframes, MEMORY_DEFAULT_NUM); +#else + new_frame = file_frame = (HsfBitmapKey *)((uintptr_t)data + (uintptr_t)track->data); out_track->data = file_frame; +#endif for(i=0; inumKeyframes; i++, file_frame++, new_frame++) { +#ifdef TARGET_PC + byteswap_hsfbitmapkey(&file_frame_real[i], new_frame); +#endif new_frame->data = SearchBitmapPtr((s32)file_frame->data); } } @@ -1337,12 +1645,31 @@ static void MotionLoad(void) MotionOnly = FALSE; MotionModel = NULL; if(head.motion.count) { - temp_motion = file_motion = (HsfMotion *)((u32)fileptr+head.motion.ofs); +#ifdef TARGET_PC + HsfMotion32b *file_motion_real = (HsfMotion32b *)((uintptr_t)fileptr + head.motion.ofs); + temp_motion = file_motion = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfMotion) * head.motion.count, MEMORY_DEFAULT_NUM); + for (i = 0; i < head.motion.count; i++) { + byteswap_hsfmotion(&file_motion_real[i], &file_motion[i]); + } +#else + temp_motion = file_motion = (HsfMotion *)((uintptr_t)fileptr+head.motion.ofs); +#endif new_motion = temp_motion; Model.motion = new_motion; Model.motionCnt = file_motion->numTracks; +#ifdef TARGET_PC + { + HsfTrack32b *track_base_real = (HsfTrack32b *)&file_motion_real[head.motion.count]; + track_base = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfTrack) * file_motion->numTracks, MEMORY_DEFAULT_NUM); + track_data = &track_base_real[file_motion->numTracks]; + for (i = 0; i < file_motion->numTracks; i++) { + byteswap_hsftrack(&track_base_real[i], &track_base[i]); + } + } +#else track_base = (HsfTrack *)&file_motion[head.motion.count]; track_data = &track_base[file_motion->numTracks]; +#endif new_motion->track = track_base; for(i=0; i<(s32)file_motion->numTracks; i++) { switch(track_base[i].type) { @@ -1403,8 +1730,13 @@ static void MatrixLoad(void) HsfMatrix *matrix_file; if(head.matrix.count) { - matrix_file = (HsfMatrix *)((u32)fileptr+head.matrix.ofs); +#ifdef TARGET_PC + matrix_file = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfMatrix) * head.matrix.count, MEMORY_DEFAULT_NUM); + byteswap_hsfmatrix((HsfMatrix32b *)((uintptr_t)fileptr + head.matrix.ofs), matrix_file); +#else + matrix_file = (HsfMatrix *)((uintptr_t)fileptr+head.matrix.ofs); matrix_file->data = (Mtx *)((u32)fileptr+head.matrix.ofs+sizeof(HsfMatrix)); +#endif Model.matrix = matrix_file; Model.matrixCnt = head.matrix.count; } @@ -1429,7 +1761,11 @@ static HsfBuffer *SearchVertexPtr(s32 id) if(id == -1) { return NULL; } - vertex = (HsfBuffer *)((u32)fileptr+head.vertex.ofs); +#ifdef TARGET_PC + vertex = vtxtop; +#else + vertex = (HsfBuffer *)((uintptr_t)fileptr+head.vertex.ofs); +#endif vertex += id; return vertex; } @@ -1440,7 +1776,11 @@ static HsfBuffer *SearchNormalPtr(s32 id) if(id == -1) { return NULL; } - normal = (HsfBuffer *)((u32)fileptr+head.normal.ofs); +#ifdef TARGET_PC + normal = NormalTop; +#else + normal = (HsfBuffer *)((uintptr_t)fileptr+head.normal.ofs); +#endif normal += id; return normal; } @@ -1451,7 +1791,11 @@ static HsfBuffer *SearchStPtr(s32 id) if(id == -1) { return NULL; } - st = (HsfBuffer *)((u32)fileptr+head.st.ofs); +#ifdef TARGET_PC + st = StTop; +#else + st = (HsfBuffer *)((uintptr_t)fileptr+head.st.ofs); +#endif st += id; return st; } @@ -1462,7 +1806,11 @@ static HsfBuffer *SearchColorPtr(s32 id) if(id == -1) { return NULL; } - color = (HsfBuffer *)((u32)fileptr+head.color.ofs); +#ifdef TARGET_PC + color = ColorTop; +#else + color = (HsfBuffer *)((uintptr_t)fileptr+head.color.ofs); +#endif color += id; return color; } @@ -1473,7 +1821,11 @@ static HsfBuffer *SearchFacePtr(s32 id) if(id == -1) { return NULL; } - face = (HsfBuffer *)((u32)fileptr+head.face.ofs); +#ifdef TARGET_PC + face = FaceTop; +#else + face = (HsfBuffer *)((uintptr_t)fileptr+head.face.ofs); +#endif face += id; return face; } @@ -1484,7 +1836,11 @@ static HsfCenv *SearchCenvPtr(s32 id) if(id == -1) { return NULL; } - cenv = (HsfCenv *)((u32)fileptr+head.cenv.ofs); +#ifdef TARGET_PC + cenv = CenvTop; +#else + cenv = (HsfCenv *)((uintptr_t)fileptr + head.cenv.ofs); +#endif cenv += id; return cenv; } @@ -1495,7 +1851,11 @@ static HsfPart *SearchPartPtr(s32 id) if(id == -1) { return NULL; } - part = (HsfPart *)((u32)fileptr+head.part.ofs); +#ifdef TARGET_PC + part = PartTop; +#else + part = (HsfPart *)((uintptr_t)fileptr+head.part.ofs); +#endif part += id; return part; } @@ -1517,7 +1877,11 @@ static HsfBitmap *SearchBitmapPtr(s32 id) if(id == -1) { return NULL; } - bitmap = (HsfBitmap *)((u32)fileptr+head.bitmap.ofs); +#ifdef TARGET_PC + bitmap = BitmapTop; +#else + bitmap = (HsfBitmap *)((uintptr_t)fileptr+head.bitmap.ofs); +#endif bitmap += id; return bitmap; } @@ -1532,4 +1896,66 @@ static char *GetMotionString(u16 *str_ofs) { char *ret = &StringTable[*str_ofs]; return ret; -} \ No newline at end of file +} + +#ifdef TARGET_PC +void KillHSF(HsfData *data) +{ + s32 i, j; + // if (data->attributeCnt) + // HuMemDirectFree(data->attribute); + // if (data->bitmapCnt) + // HuMemDirectFree(data->bitmap); + // if (data->skeletonCnt) + // HuMemDirectFree(data->skeleton); + // if (data->faceCnt) { + // for (i = 0; i < data->faceCnt; i++) { + // HuMemDirectFree(data->face[i].data); + // } + // HuMemDirectFree(data->face); + // } + // if (data->materialCnt) + // HuMemDirectFree(data->material); + // if (data->motionCnt) { + // HsfMotion *motion = data->motion; + // for (j = 0; j < motion->numTracks; j++) { + // HsfTrack *track = motion->track; + // if (track->type == HSF_TRACK_ATTRIBUTE && track->curveType == HSF_CURVE_BITMAP) { + // // in this case we needed to allocate space for HsfBitmapKey structs + // HuMemDirectFree(track->dataTop); + // } + // } + // HuMemDirectFree(motion->track); + // HuMemDirectFree(data->motion); + // } + // if (data->normalCnt) + // HuMemDirectFree(data->normal); + // if (data->objectCnt) + // HuMemDirectFree(data->object); + // if (data->matrixCnt) + // HuMemDirectFree(data->matrix); + // if (data->paletteCnt) + // HuMemDirectFree(data->palette); + // if (data->stCnt) + // HuMemDirectFree(data->st); + // if (data->vertexCnt) + // HuMemDirectFree(data->vertex); + // if (data->cenvCnt) { + // for (i = 0; i < data->cenvCnt; i++) { + // HsfCenv *cenv = &data->cenv[i]; + // HuMemDirectFree(cenv->dualData); + // HuMemDirectFree(cenv->multiData); + // } + // HuMemDirectFree(data->cenv); + // } + // if (data->clusterCnt) + // HuMemDirectFree(data->cluster); + // if (data->partCnt) + // HuMemDirectFree(data->part); + // if (data->shapeCnt) + // HuMemDirectFree(data->shape); + // if (data->mapAttrCnt) + // HuMemDirectFree(data->mapAttr); + // HuMemDirectFree(data->symbol); +} +#endif diff --git a/src/game/hsfman.c b/src/game/hsfman.c index 243da902..04820c45 100644 --- a/src/game/hsfman.c +++ b/src/game/hsfman.c @@ -14,36 +14,39 @@ #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; -u32 Hu3DMallocNo; +uintptr_t Hu3DMallocNo; s16 Hu3DPauseF; u16 Hu3DCameraExistF; static u16 NoSyncF; @@ -178,19 +181,19 @@ 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) { Hu3DCameraSet(Hu3DCameraNo, Hu3DCameraMtx); - PSMTXInvXpose(Hu3DCameraMtx, Hu3DCameraMtxXPose); + MTXInvXpose(Hu3DCameraMtx, Hu3DCameraMtxXPose); temp = layerHook[j]; temp(j); } if (layerNum[j] != 0) { Hu3DDrawPreInit(); Hu3DCameraSet(Hu3DCameraNo, Hu3DCameraMtx); - PSMTXInvXpose(Hu3DCameraMtx, Hu3DCameraMtxXPose); + MTXInvXpose(Hu3DCameraMtx, Hu3DCameraMtxXPose); data = Hu3DData; for (i = 0, var_r23 = i; i < HU3D_MODEL_MAX; i++, data++) { if (data->hsfData != 0) { @@ -252,8 +255,8 @@ void Hu3DExec(void) { mtxRot(sp40, data->rot.x, data->rot.y, data->rot.z); mtxScaleCat(sp40, data->scale.x, data->scale.y, data->scale.z); mtxTransCat(sp40, data->pos.x, data->pos.y, data->pos.z); - PSMTXConcat(Hu3DCameraMtx, sp40, sp10); - PSMTXConcat(sp10, data->unk_F0, sp10); + MTXConcat(Hu3DCameraMtx, sp40, sp10); + MTXConcat(sp10, data->unk_F0, sp10); Hu3DDraw(data, sp10, &data->scale); } data->unk_00++; @@ -290,10 +293,13 @@ void Hu3DAllKill(void) { Hu3DCameraAllKill(); Hu3DLightAllKill(); Hu3DAnimAllKill(); +#if __MWERKS__ + // this causes anim to be reallocated, so we lose the old allocation if(reflectAnim[0] != (AnimData *)refMapData0) { HuMemDirectFree(reflectAnim[0]); } reflectAnim[0] = HuSprAnimRead(refMapData0); +#endif if(Hu3DShadowData.unk_04) { HuMemDirectFree(Hu3DShadowData.unk_04); Hu3DShadowCamBit = 0; @@ -350,7 +356,7 @@ s16 Hu3DModelCreate(void *arg0) { return -1; } var_r31->hsfData = LoadHSF(arg0); - var_r31->unk_48 = Hu3DMallocNo = (u32)var_r31->hsfData; + var_r31->unk_48 = Hu3DMallocNo = (uintptr_t)var_r31->hsfData; var_r31->attr = HU3D_ATTR_NONE; var_r31->motion_attr = HU3D_ATTR_NONE; var_r31->unk_02 = 0; @@ -398,7 +404,7 @@ s16 Hu3DModelCreate(void *arg0) { } var_r31->unk_01 = 0; var_r31->unk_00 = (u8) var_r30; - PSMTXIdentity(var_r31->unk_F0); + MTXIdentity(var_r31->unk_F0); layerNum[0] += 1; HuMemDCFlush(HEAP_DATA); if ((var_r31->hsfData->sceneCnt != 0) && ((var_r31->hsfData->scene->start) || (var_r31->hsfData->scene->end))) { @@ -413,12 +419,6 @@ s16 Hu3DModelLink(s16 arg0) { ModelData* var_r31; s16 var_r28; s16 i; - s32 temp_r0; - s32 temp_r3; - s32 temp_r5; - s32 var_ctr; - HsfData* var_r4; - HsfData* var_r5; temp_r30 = &Hu3DData[arg0]; var_r31 = Hu3DData; @@ -431,11 +431,11 @@ s16 Hu3DModelLink(s16 arg0) { return -1; } var_r31->unk_C8 = temp_r30->hsfData; - var_r31->hsfData = HuMemDirectMallocNum(HEAP_DATA, 0x80, var_r31->unk_4C); - var_r31->unk_4C = (u32)var_r31->hsfData; + var_r31->hsfData = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfData), var_r31->unk_4C); + var_r31->unk_4C = (uintptr_t)var_r31->hsfData; *var_r31->hsfData = *temp_r30->hsfData; temp_r3_2 = Hu3DObjDuplicate(var_r31->hsfData, var_r31->unk_4C); - var_r31->hsfData->root = (HsfObject*)((u32)temp_r3_2 + ((u32)var_r31->hsfData->root - (u32)var_r31->hsfData->object)); + var_r31->hsfData->root = (HsfObject*)((uintptr_t)temp_r3_2 + ((uintptr_t)var_r31->hsfData->root - (uintptr_t)var_r31->hsfData->object)); var_r31->hsfData->object = temp_r3_2; var_r31->unk_48 = temp_r30->unk_48; var_r31->attr = temp_r30->attr; @@ -453,7 +453,7 @@ s16 Hu3DModelLink(s16 arg0) { for (i = 0; i < 4; i++) { var_r31->unk_10[i] = temp_r30->unk_10[i]; if (var_r31->unk_10[i] != -1) { - ClusterAdjustObject(var_r31->hsfData, Hu3DMotion[var_r31->unk_10[i]].unk_04); + ClusterAdjustObject(var_r31->hsfData, Hu3DMotion[var_r31->unk_10[i]].hsfData); var_r31->attr |= HU3D_ATTR_CLUSTER_ON; } } @@ -473,7 +473,7 @@ s16 Hu3DModelLink(s16 arg0) { var_r31->unk_38[i] = -1; } var_r31->unk_01 = 0; - PSMTXIdentity(var_r31->unk_F0); + MTXIdentity(var_r31->unk_F0); layerNum[0] += 1; return var_r28; } @@ -521,7 +521,7 @@ s16 Hu3DHookFuncCreate(ModelHookFunc hook) { var_r31->unk_38[i] = -1; } var_r31->unk_01 = 0; - PSMTXIdentity(var_r31->unk_F0); + MTXIdentity(var_r31->unk_F0); layerNum[0] += 1; return var_r29; } @@ -564,6 +564,9 @@ void Hu3DModelKill(s16 arg0) { } Hu3DAnimModelKill(arg0); if (temp_r31->unk_24 != -1) { +#ifdef TARGET_PC + KillHSF(temp_r31->hsfData); +#endif HuMemDirectFree(temp_r31->hsfData); HuMemDirectFreeNum(HEAP_DATA, temp_r31->unk_4C); var_r28 = temp_r31->unk_C8; @@ -581,7 +584,7 @@ void Hu3DModelKill(s16 arg0) { if (temp_r31->unk_20 != -1) { for (i = 0; i < HU3D_MODEL_MAX; i++, var_r30++) { if (var_r30->hsfData != 0 && var_r30->unk_24 != -1 && var_r30->unk_C8 == var_r28) { - Hu3DMotion[temp_r31->unk_20].unk_02 = i; + Hu3DMotion[temp_r31->unk_20].modelId = i; break; } } @@ -592,7 +595,7 @@ void Hu3DModelKill(s16 arg0) { return; } if (temp_r31->unk_20 != -1 && Hu3DMotionKill(temp_r31->unk_20) == 0) { - Hu3DMotion[temp_r31->unk_20].unk_02 = -1; + Hu3DMotion[temp_r31->unk_20].modelId = -1; HuMemDirectFreeNum(HEAP_DATA, temp_r31->unk_48); temp_r31->hsfData = NULL; if (modelKillAllF == 0) { @@ -600,6 +603,9 @@ void Hu3DModelKill(s16 arg0) { } return; } +#ifdef TARGET_PC + KillHSF(temp_r31->hsfData); +#endif HuMemDirectFree(temp_r31->hsfData); HuMemDirectFreeNum(HEAP_DATA, temp_r31->unk_48); for (i = 0; i < temp_r31->unk_26; i++) { @@ -1115,7 +1121,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; @@ -1124,8 +1130,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; } } @@ -1242,7 +1248,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()); @@ -1293,7 +1299,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]; @@ -1830,8 +1836,8 @@ void lightSet(LightData* arg0, s16 arg1, Mtx *arg2, Mtx *arg3, f32 arg8) { break; } if ((arg0->unk_00 & 0x8000) != 0) { - PSMTXMultVec(*arg2, &arg0->unk_28, &sp24); - PSMTXMultVec(*arg3, &arg0->unk_1C, &sp18); + MTXMultVec(*arg2, &arg0->unk_28, &sp24); + MTXMultVec(*arg3, &arg0->unk_1C, &sp18); GXInitLightPos(&sp30, sp18.x, sp18.y, sp18.z); } else { GXInitLightPos(&sp30, arg0->unk_1C.x, arg0->unk_1C.y, arg0->unk_1C.z); @@ -1939,7 +1945,7 @@ void Hu3DShadowExec(void) { test = Hu3DShadowData.unk_02 * Hu3DShadowData.unk_02; } C_MTXLookAt(Hu3DCameraMtx, &Hu3DShadowData.unk_14, &Hu3DShadowData.unk_2C, &Hu3DShadowData.unk_20); - PSMTXCopy(Hu3DCameraMtx, Hu3DShadowData.unk_38); + MTXCopy(Hu3DCameraMtx, Hu3DShadowData.unk_38); var_r31 = Hu3DData; shadowModelDrawF = 1; GXInvalidateTexAll(); @@ -1986,11 +1992,11 @@ void Hu3DShadowExec(void) { var_r31->attr |= HU3D_ATTR_MOT_EXEC; } mtxRot(sp58, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); - PSMTXScale(spB8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); - PSMTXConcat(sp58, spB8, spB8); + MTXScale(spB8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + MTXConcat(sp58, spB8, spB8); mtxTransCat(spB8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); - PSMTXConcat(Hu3DCameraMtx, spB8, sp88); - PSMTXConcat(sp88, var_r31->unk_F0, sp88); + MTXConcat(Hu3DCameraMtx, spB8, sp88); + MTXConcat(sp88, var_r31->unk_F0, sp88); Hu3DDraw(var_r31, sp88, &var_r31->scale); } } @@ -2020,17 +2026,20 @@ void Hu3DShadowExec(void) { GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1U, GX_TEVPREV); GXSetNumChans(0); - PSMTXIdentity(sp88); + MTXIdentity(sp88); GXLoadPosMtxImm(sp88, 0); GXSetZMode(0, GX_ALWAYS, 1); GXSetNumChans(1); GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXColor3u8(0, 0, 0); - GXColor3u8(1, 0, 0); - GXColor3u8(1, 1, 0); - GXColor3u8(0, 1, 0); + GXPosition3u8(0, 0, 0); + GXPosition3u8(1, 0, 0); + GXPosition3u8(1, 1, 0); + GXPosition3u8(0, 1, 0); +#ifdef TARGET_PC + GXEnd(); +#endif } s16 Hu3DProjectionCreate(void *arg0, f32 arg8, f32 arg9, f32 argA) { diff --git a/src/game/hsfmotion.c b/src/game/hsfmotion.c index e21ad90f..37d1f98a 100644 --- a/src/game/hsfmotion.c +++ b/src/game/hsfmotion.c @@ -1,43 +1,46 @@ #include "game/hsfmotion.h" #include "game/ClusterExec.h" #include "game/EnvelopeExec.h" +#include "game/ShapeExec.h" #include "game/hsfdraw.h" #include "game/hsfload.h" #include "game/hsfman.h" #include "game/init.h" -#include "game/ShapeExec.h" + #include "ext_math.h" #include "string.h" -#define HU3D_MOTATTR_SHIFT_ALL (HU3D_MOTATTR_SHIFT_LOOP|HU3D_MOTATTR_SHIFT_PAUSE|HU3D_MOTATTR_SHIFT_REV) -#define HU3D_MOTATTR_NOSHIFT_ALL (HU3D_MOTATTR_LOOP|HU3D_MOTATTR_PAUSE|HU3D_MOTATTR_REV) -#define HU3D_MOTATTR_ALL (HU3D_MOTATTR_SHIFT_ALL|HU3D_MOTATTR_NOSHIFT_ALL) +#define HU3D_MOTATTR_SHIFT_ALL (HU3D_MOTATTR_SHIFT_LOOP | HU3D_MOTATTR_SHIFT_PAUSE | HU3D_MOTATTR_SHIFT_REV) +#define HU3D_MOTATTR_NOSHIFT_ALL (HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV) +#define HU3D_MOTATTR_ALL (HU3D_MOTATTR_SHIFT_ALL | HU3D_MOTATTR_NOSHIFT_ALL) 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; -void Hu3DMotionInit(void) { +void Hu3DMotionInit(void) +{ MotionData *var_r31; s16 i; - var_r31 = (MotionData*) Hu3DData; + var_r31 = (MotionData *)Hu3DData; for (i = 0; i < HU3D_MOTION_MAX; i++, var_r31++) { - var_r31->unk_04 = 0; + var_r31->hsfData = 0; } } -s16 Hu3DMotionCreate(void *arg0) { +s16 Hu3DMotionCreate(void *arg0) +{ MotionData *var_r31; s16 i; var_r31 = Hu3DMotion; for (i = 0; i < HU3D_MOTION_MAX; i++, var_r31++) { - if (var_r31->unk_04 == 0) { + if (var_r31->hsfData == 0) { break; } } @@ -45,20 +48,21 @@ s16 Hu3DMotionCreate(void *arg0) { OSReport("Error: Create Motion Over!\n"); return -1; } - var_r31->unk_04 = LoadHSF(arg0); - var_r31->unk_00 = 0; - var_r31->unk_02 = -1; + var_r31->hsfData = LoadHSF(arg0); + var_r31->attr = 0; + var_r31->modelId = -1; return i; } -s16 Hu3DMotionModelCreate(s16 arg0) { +s16 Hu3DMotionModelCreate(s16 arg0) +{ ModelData *temp_r29 = &Hu3DData[arg0]; MotionData *var_r31; s16 i; var_r31 = Hu3DMotion; for (i = 0; i < HU3D_MOTION_MAX; i++, var_r31++) { - if (var_r31->unk_04 == 0) { + if (var_r31->hsfData == 0) { break; } } @@ -66,53 +70,60 @@ s16 Hu3DMotionModelCreate(s16 arg0) { OSReport("Error: Create Motion Over!\n"); return -1; } - var_r31->unk_04 = temp_r29->hsfData; - var_r31->unk_00 = 0; - var_r31->unk_02 = arg0; + var_r31->hsfData = temp_r29->hsfData; + var_r31->attr = 0; + var_r31->modelId = arg0; temp_r29->unk_20 = i; return i; } -s32 Hu3DMotionKill(s16 arg0) { +s32 Hu3DMotionKill(s16 arg0) +{ ModelData *var_r30; MotionData *temp_r31; s16 i; temp_r31 = &Hu3DMotion[arg0]; - if (temp_r31->unk_04 == 0) { + if (temp_r31->hsfData == 0) { return 0; } var_r30 = Hu3DData; for (i = 0; i < 512; i++, var_r30++) { - if (var_r30->hsfData && var_r30->unk_08 == arg0 && temp_r31->unk_02 != i) { + if (var_r30->hsfData && var_r30->unk_08 == arg0 && temp_r31->modelId != i) { break; } } if (i != 512) { return 0; } - if (temp_r31->unk_02 == -1) { - HuMemDirectFree(temp_r31->unk_04); - } else { - Hu3DData[temp_r31->unk_02].unk_20 = -1; + if (temp_r31->modelId == -1) { +#ifdef TARGET_PC + KillHSF(temp_r31->hsfData); +#endif + HuMemDirectFree(temp_r31->hsfData); } - temp_r31->unk_04 = NULL; + else { + Hu3DData[temp_r31->modelId].unk_20 = -1; + } + temp_r31->hsfData = NULL; return 1; } -void Hu3DMotionAllKill(void) { +void Hu3DMotionAllKill(void) +{ MotionData *var_r27; s16 i; var_r27 = Hu3DMotion; for (i = 0; i < HU3D_MOTION_MAX; i++, var_r27++) { - if (var_r27->unk_04) { + if (var_r27->hsfData) { Hu3DMotionKill(i); } } } -void Hu3DMotionSet(s16 arg0, s16 arg1) { +void Hu3DMotionSet(s16 arg0, s16 arg1) +{ Hu3DData[arg0].unk_0C = -1; Hu3DData[arg0].unk_08 = arg1; Hu3DData[arg0].unk_64 = 0.0f; @@ -120,29 +131,35 @@ void Hu3DMotionSet(s16 arg0, s16 arg1) { Hu3DData[arg0].unk_70 = Hu3DMotionMaxTimeGet(arg0); } -void Hu3DMotionOverlaySet(s16 arg0, s16 arg1) { +void Hu3DMotionOverlaySet(s16 arg0, s16 arg1) +{ Hu3DData[arg0].unk_0A = arg1; Hu3DData[arg0].unk_74 = 0.0f; Hu3DData[arg0].unk_78 = 1.0f; } -void Hu3DMotionOverlayReset(s16 arg0) { +void Hu3DMotionOverlayReset(s16 arg0) +{ Hu3DData[arg0].unk_0A = -1; } -float Hu3DMotionOverlayTimeGet(s16 arg0) { +float Hu3DMotionOverlayTimeGet(s16 arg0) +{ return Hu3DData[arg0].unk_74; } -void Hu3DMotionOverlayTimeSet(s16 arg0, float arg1) { +void Hu3DMotionOverlayTimeSet(s16 arg0, float arg1) +{ Hu3DData[arg0].unk_74 = arg1; } -void Hu3DMotionOverlaySpeedSet(s16 arg0, float arg1) { +void Hu3DMotionOverlaySpeedSet(s16 arg0, float arg1) +{ Hu3DData[arg0].unk_78 = arg1; } -void Hu3DMotionShiftSet(s16 arg0, s16 arg1, float arg2, float arg3, u32 arg4) { +void Hu3DMotionShiftSet(s16 arg0, s16 arg1, float arg2, float arg3, u32 arg4) +{ ModelData *temp_r31 = &Hu3DData[arg0]; MotionData *sp10 = &Hu3DMotion[arg1]; s32 var_r30; @@ -167,7 +184,8 @@ void Hu3DMotionShiftSet(s16 arg0, s16 arg1, float arg2, float arg3, u32 arg4) { temp_r31->motion_attr &= ~HU3D_MOTATTR_ALL; temp_r31->motion_attr |= var_r30; temp_r31->motion_attr &= ~HU3D_MOTATTR; - } else { + } + else { temp_r31->motion_attr &= ~HU3D_MOTATTR_SHIFT_ALL; } temp_r31->unk_0C = arg1; @@ -191,7 +209,8 @@ void Hu3DMotionShiftSet(s16 arg0, s16 arg1, float arg2, float arg3, u32 arg4) { temp_r31->motion_attr &= ~HU3D_MOTATTR; } -void Hu3DMotionShapeSet(s16 arg0, s16 arg1) { +void Hu3DMotionShapeSet(s16 arg0, s16 arg1) +{ Hu3DData[arg0].unk_0E = arg1; Hu3DData[arg0].unk_94 = 0.0f; Hu3DData[arg0].unk_98 = 1.0f; @@ -199,34 +218,40 @@ void Hu3DMotionShapeSet(s16 arg0, s16 arg1) { Hu3DData[arg0].unk_A0 = Hu3DMotionShapeMaxTimeGet(arg0); } -s16 Hu3DMotionShapeIDGet(s16 arg0) { +s16 Hu3DMotionShapeIDGet(s16 arg0) +{ return Hu3DData[arg0].unk_0E; } -void Hu3DMotionShapeSpeedSet(s16 arg0, float arg1) { +void Hu3DMotionShapeSpeedSet(s16 arg0, float arg1) +{ ModelData *temp_r31 = &Hu3DData[arg0]; temp_r31->unk_98 = arg1; } -void Hu3DMotionShapeTimeSet(s16 arg0, float arg1) { +void Hu3DMotionShapeTimeSet(s16 arg0, float arg1) +{ Hu3DData[arg0].unk_94 = arg1; } -float Hu3DMotionShapeMaxTimeGet(s16 arg0) { +float Hu3DMotionShapeMaxTimeGet(s16 arg0) +{ ModelData *temp_r31 = &Hu3DData[arg0]; return Hu3DMotionMotionMaxTimeGet(temp_r31->unk_0E); } -void Hu3DMotionShapeStartEndSet(s16 arg0, float arg1, float arg2) { +void Hu3DMotionShapeStartEndSet(s16 arg0, float arg1, float arg2) +{ ModelData *temp_r31 = &Hu3DData[arg0]; temp_r31->unk_9C = arg1; temp_r31->unk_A0 = arg2; } -s16 Hu3DMotionClusterSet(s16 arg0, s16 arg1) { +s16 Hu3DMotionClusterSet(s16 arg0, s16 arg1) +{ ModelData *temp_r31 = &Hu3DData[arg0]; s16 i; @@ -237,7 +262,7 @@ s16 Hu3DMotionClusterSet(s16 arg0, s16 arg1) { temp_r31->unk_B4[i] = 1.0f; temp_r31->cluster_attr[i] = HU3D_ATTR_NONE; temp_r31->attr |= HU3D_ATTR_CLUSTER_ON; - ClusterAdjustObject(temp_r31->hsfData, Hu3DMotion[arg1].unk_04); + ClusterAdjustObject(temp_r31->hsfData, Hu3DMotion[arg1].hsfData); return i; } } @@ -245,7 +270,8 @@ s16 Hu3DMotionClusterSet(s16 arg0, s16 arg1) { return -1; } -s16 Hu3DMotionClusterNoSet(s16 arg0, s16 arg1, s16 arg2) { +s16 Hu3DMotionClusterNoSet(s16 arg0, s16 arg1, s16 arg2) +{ ModelData *temp_r31 = &Hu3DData[arg0]; Hu3DMotionClusterReset(arg0, arg2); @@ -253,15 +279,17 @@ s16 Hu3DMotionClusterNoSet(s16 arg0, s16 arg1, s16 arg2) { temp_r31->unk_A4[arg2] = 0.0f; temp_r31->unk_B4[arg2] = 1.0f; temp_r31->attr |= HU3D_ATTR_CLUSTER_ON; - ClusterAdjustObject(temp_r31->hsfData, Hu3DMotion[arg1].unk_04); + ClusterAdjustObject(temp_r31->hsfData, Hu3DMotion[arg1].hsfData); return arg2; } -void Hu3DMotionShapeReset(s16 arg0) { +void Hu3DMotionShapeReset(s16 arg0) +{ Hu3DData[arg0].unk_0E = -1; } -void Hu3DMotionClusterReset(s16 arg0, s16 arg1) { +void Hu3DMotionClusterReset(s16 arg0, s16 arg1) +{ ModelData *temp_r31 = &Hu3DData[arg0]; s16 i; @@ -270,7 +298,8 @@ void Hu3DMotionClusterReset(s16 arg0, s16 arg1) { temp_r31->unk_10[i] = -1; } temp_r31->attr &= ~HU3D_ATTR_CLUSTER_ON; - } else { + } + else { temp_r31->unk_10[arg1] = -1; for (i = 0; i < 4; i++) { if (temp_r31->unk_10[i] != -1) { @@ -281,19 +310,22 @@ void Hu3DMotionClusterReset(s16 arg0, s16 arg1) { } } -s16 Hu3DMotionIDGet(s16 arg0) { +s16 Hu3DMotionIDGet(s16 arg0) +{ ModelData *temp_r31 = &Hu3DData[arg0]; return temp_r31->unk_08; } -s16 Hu3DMotionShiftIDGet(s16 arg0) { +s16 Hu3DMotionShiftIDGet(s16 arg0) +{ ModelData *temp_r31 = &Hu3DData[arg0]; return temp_r31->unk_0C; } -void Hu3DMotionTimeSet(s16 arg0, float arg1) { +void Hu3DMotionTimeSet(s16 arg0, float arg1) +{ ModelData *temp_r31 = &Hu3DData[arg0]; if (Hu3DMotionMaxTimeGet(arg0) <= arg1) { @@ -303,7 +335,7 @@ void Hu3DMotionTimeSet(s16 arg0, float arg1) { arg1 = 0.0f; } temp_r31->unk_64 = arg1; - if (temp_r31->hsfData != (HsfData*) -1 && temp_r31->hsfData->cenvCnt != 0 && (temp_r31->motion_attr & HU3D_MOTATTR_PAUSE)) { + if (temp_r31->hsfData != (HsfData *)-1 && temp_r31->hsfData->cenvCnt != 0 && (temp_r31->motion_attr & HU3D_MOTATTR_PAUSE)) { Hu3DMotionExec(arg0, temp_r31->unk_08, arg1, 0); if (temp_r31->unk_0C != -1) { Hu3DSubMotionExec(arg0); @@ -312,19 +344,22 @@ void Hu3DMotionTimeSet(s16 arg0, float arg1) { } } -float Hu3DMotionTimeGet(s16 arg0) { +float Hu3DMotionTimeGet(s16 arg0) +{ ModelData *temp_r31 = &Hu3DData[arg0]; return temp_r31->unk_64; } -float Hu3DMotionShiftTimeGet(s16 arg0) { +float Hu3DMotionShiftTimeGet(s16 arg0) +{ ModelData *temp_r31 = &Hu3DData[arg0]; return temp_r31->unk_84; } -float Hu3DMotionMaxTimeGet(s16 arg0) { +float Hu3DMotionMaxTimeGet(s16 arg0) +{ ModelData *temp_r31 = &Hu3DData[arg0]; MotionData *temp_r30; HsfMotion *temp_r29; @@ -334,12 +369,13 @@ float Hu3DMotionMaxTimeGet(s16 arg0) { return 0.0f; } temp_r30 = &Hu3DMotion[temp_r31->unk_08]; - temp_r29 = temp_r30->unk_04->motion; + temp_r29 = temp_r30->hsfData->motion; temp_r28 = 0.0001 + temp_r29->len; return temp_r28; } -float Hu3DMotionShiftMaxTimeGet(s16 arg0) { +float Hu3DMotionShiftMaxTimeGet(s16 arg0) +{ ModelData *temp_r31 = &Hu3DData[arg0]; MotionData *temp_r30; HsfMotion *temp_r29; @@ -349,66 +385,75 @@ float Hu3DMotionShiftMaxTimeGet(s16 arg0) { return 0.0f; } temp_r30 = &Hu3DMotion[temp_r31->unk_0C]; - temp_r29 = temp_r30->unk_04->motion; + temp_r29 = temp_r30->hsfData->motion; temp_r28 = 0.0001 + temp_r29->len; return temp_r28; } -void Hu3DMotionShiftStartEndSet(s16 arg0, float arg1, float arg2) { +void Hu3DMotionShiftStartEndSet(s16 arg0, float arg1, float arg2) +{ ModelData *temp_r31 = &Hu3DData[arg0]; temp_r31->unk_8C = arg1; temp_r31->unk_90 = arg2; } -float Hu3DMotionMotionMaxTimeGet(s16 arg0) { +float Hu3DMotionMotionMaxTimeGet(s16 arg0) +{ MotionData *temp_r31 = &Hu3DMotion[arg0]; HsfMotion *temp_r30; s16 temp_r29; - if (temp_r31->unk_04 == 0) { + if (temp_r31->hsfData == 0) { return 0.0f; } - temp_r30 = temp_r31->unk_04->motion; + temp_r30 = temp_r31->hsfData->motion; temp_r29 = 0.0001 + temp_r30->len; return temp_r29; } -void Hu3DMotionStartEndSet(s16 arg0, float arg1, float arg2) { +void Hu3DMotionStartEndSet(s16 arg0, float arg1, float arg2) +{ ModelData *temp_r31 = &Hu3DData[arg0]; temp_r31->unk_6C = arg1; temp_r31->unk_70 = arg2; } -s32 Hu3DMotionEndCheck(s16 arg0) { +s32 Hu3DMotionEndCheck(s16 arg0) +{ if (!(Hu3DData[arg0].motion_attr & HU3D_MOTATTR_REV)) { return (Hu3DMotionMaxTimeGet(arg0) <= Hu3DMotionTimeGet(arg0)); - } else { + } + else { return (Hu3DMotionTimeGet(arg0) <= 0.0f); } } -void Hu3DMotionSpeedSet(s16 arg0, float arg1) { +void Hu3DMotionSpeedSet(s16 arg0, float arg1) +{ ModelData *temp_r31 = &Hu3DData[arg0]; temp_r31->unk_68 = arg1; } -void Hu3DMotionShiftSpeedSet(s16 arg0, float arg1) { +void Hu3DMotionShiftSpeedSet(s16 arg0, float arg1) +{ ModelData *temp_r31 = &Hu3DData[arg0]; temp_r31->unk_88 = arg1; } -void Hu3DMotionNoMotSet(s16 arg0, char *arg1, u32 arg2) { +void Hu3DMotionNoMotSet(s16 arg0, char *arg1, u32 arg2) +{ HsfConstData *var_r29; HsfObject *temp_r3; temp_r3 = Hu3DModelObjPtrGet(arg0, arg1); if (temp_r3->constData == 0) { - var_r29 = ObjConstantMake(temp_r3, (u32) Hu3DData[arg0].unk_48); - } else { + var_r29 = ObjConstantMake(temp_r3, (u32)Hu3DData[arg0].unk_48); + } + else { var_r29 = temp_r3->constData; } var_r29->flags |= arg2; @@ -432,7 +477,8 @@ void Hu3DMotionNoMotSet(s16 arg0, char *arg1, u32 arg2) { } } -void Hu3DMotionNoMotReset(s16 arg0, char *arg1, u32 arg2) { +void Hu3DMotionNoMotReset(s16 arg0, char *arg1, u32 arg2) +{ HsfObject *temp_r31; HsfConstData *temp_r30; @@ -441,14 +487,16 @@ void Hu3DMotionNoMotReset(s16 arg0, char *arg1, u32 arg2) { temp_r30->flags &= ~arg2; } -void Hu3DMotionForceSet(s16 arg0, char *arg1, u32 arg2, float arg3) { +void Hu3DMotionForceSet(s16 arg0, char *arg1, u32 arg2, float arg3) +{ HsfConstData *var_r29; HsfObject *temp_r3; temp_r3 = Hu3DModelObjPtrGet(arg0, arg1); if (temp_r3->constData == 0) { - var_r29 = ObjConstantMake(temp_r3, (u32) Hu3DData[arg0].unk_48); - } else { + var_r29 = ObjConstantMake(temp_r3, (u32)Hu3DData[arg0].unk_48); + } + else { var_r29 = temp_r3->constData; } var_r29->flags |= arg2; @@ -472,7 +520,8 @@ void Hu3DMotionForceSet(s16 arg0, char *arg1, u32 arg2, float arg3) { } } -void Hu3DMotionNext(s16 arg0) { +void Hu3DMotionNext(s16 arg0) +{ ModelData *temp_r31 = &Hu3DData[arg0]; HsfMotion *temp_r29; MotionData *temp_r27; @@ -480,47 +529,55 @@ void Hu3DMotionNext(s16 arg0) { s16 i; temp_r27 = &Hu3DMotion[temp_r31->unk_08]; - temp_r29 = temp_r27->unk_04->motion; + temp_r29 = temp_r27->hsfData->motion; temp_r28 = temp_r31->motion_attr; if (temp_r31->unk_08 != -1) { temp_r27 = &Hu3DMotion[temp_r31->unk_08]; if (!(temp_r28 & HU3D_MOTATTR_PAUSE)) { if (!(temp_r28 & HU3D_MOTATTR_REV)) { temp_r31->unk_64 += temp_r31->unk_68 * minimumVcountf; - } else { + } + else { temp_r31->unk_64 -= temp_r31->unk_68 * minimumVcountf; } if (temp_r28 & HU3D_MOTATTR_LOOP) { if (temp_r31->unk_64 < temp_r31->unk_6C) { temp_r31->unk_64 = temp_r31->unk_70 - (temp_r31->unk_6C - temp_r31->unk_64); - } else if (temp_r31->unk_64 >= temp_r31->unk_70) { + } + else if (temp_r31->unk_64 >= temp_r31->unk_70) { temp_r31->unk_64 = temp_r31->unk_6C + (temp_r31->unk_64 - temp_r31->unk_70); } - } else if (temp_r31->unk_64 < 0.0f) { + } + else if (temp_r31->unk_64 < 0.0f) { temp_r31->unk_64 = 0.0f; - } else if (temp_r31->unk_64 >= temp_r31->unk_70) { + } + else if (temp_r31->unk_64 >= temp_r31->unk_70) { temp_r31->unk_64 = temp_r31->unk_70; } } } if (temp_r31->unk_0A != -1) { temp_r27 = &Hu3DMotion[temp_r31->unk_0A]; - temp_r29 = temp_r27->unk_04->motion; + temp_r29 = temp_r27->hsfData->motion; if (!(temp_r28 & HU3D_MOTATTR_OVL_PAUSE)) { if (!(temp_r28 & HU3D_MOTATTR_OVL_REV)) { temp_r31->unk_74 += temp_r31->unk_78 * minimumVcountf; - } else { + } + else { temp_r31->unk_74 -= temp_r31->unk_78 * minimumVcountf; } if (temp_r28 & HU3D_MOTATTR_OVL_LOOP) { if (temp_r31->unk_74 < 0.0f) { temp_r31->unk_74 = temp_r29->len; - } else if (temp_r31->unk_74 >= temp_r29->len) { + } + else if (temp_r31->unk_74 >= temp_r29->len) { temp_r31->unk_74 = 0.0f; } - } else if (temp_r31->unk_74 < 0.0f) { + } + else if (temp_r31->unk_74 < 0.0f) { temp_r31->unk_74 = 0.0f; - } else if (temp_r31->unk_74 >= temp_r29->len) { + } + else if (temp_r31->unk_74 >= temp_r29->len) { temp_r31->unk_74 = temp_r29->len; } } @@ -553,39 +610,47 @@ void Hu3DMotionNext(s16 arg0) { temp_r27 = &Hu3DMotion[temp_r31->unk_0C]; if (!(temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_REV)) { temp_r31->unk_84 += temp_r31->unk_88 * minimumVcountf; - } else { + } + else { temp_r31->unk_84 -= temp_r31->unk_88 * minimumVcountf; } if (temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_LOOP) { if (temp_r31->unk_84 < temp_r31->unk_8C) { temp_r31->unk_84 = temp_r31->unk_90; - } else if (temp_r31->unk_84 >= temp_r31->unk_90) { + } + else if (temp_r31->unk_84 >= temp_r31->unk_90) { temp_r31->unk_84 = temp_r31->unk_8C; } - } else if (temp_r31->unk_84 < temp_r31->unk_8C) { + } + else if (temp_r31->unk_84 < temp_r31->unk_8C) { temp_r31->unk_84 = temp_r31->unk_8C; - } else if (temp_r31->unk_84 >= temp_r31->unk_90) { + } + else if (temp_r31->unk_84 >= temp_r31->unk_90) { temp_r31->unk_84 = temp_r31->unk_90; } } } if (temp_r31->unk_0E != -1 && !(temp_r28 & HU3D_MOTATTR_SHAPE_PAUSE)) { temp_r27 = &Hu3DMotion[temp_r31->unk_0E]; - temp_r29 = temp_r27->unk_04->motion; + temp_r29 = temp_r27->hsfData->motion; if (!(temp_r28 & HU3D_MOTATTR_SHAPE_REV)) { temp_r31->unk_94 += temp_r31->unk_98 * minimumVcountf; - } else { + } + else { temp_r31->unk_94 -= temp_r31->unk_98 * minimumVcountf; } if (temp_r28 & HU3D_MOTATTR_SHAPE_LOOP) { if (temp_r31->unk_94 < temp_r31->unk_9C) { temp_r31->unk_94 = temp_r31->unk_A0; - } else if (temp_r31->unk_94 >= temp_r31->unk_A0) { + } + else if (temp_r31->unk_94 >= temp_r31->unk_A0) { temp_r31->unk_94 = temp_r31->unk_9C; } - } else if (temp_r31->unk_94 < temp_r31->unk_9C) { + } + else if (temp_r31->unk_94 < temp_r31->unk_9C) { temp_r31->unk_94 = temp_r31->unk_9C; - } else if (temp_r31->unk_94 >= temp_r31->unk_A0) { + } + else if (temp_r31->unk_94 >= temp_r31->unk_A0) { temp_r31->unk_94 = temp_r31->unk_A0; } } @@ -593,21 +658,25 @@ void Hu3DMotionNext(s16 arg0) { for (i = 0; i < 4; i++) { if (temp_r31->unk_10[i] != -1 && !(temp_r31->cluster_attr[i] & HU3D_CLUSTER_ATTR_PAUSE)) { temp_r27 = &Hu3DMotion[temp_r31->unk_10[i]]; - temp_r29 = temp_r27->unk_04->motion; + temp_r29 = temp_r27->hsfData->motion; if (!(temp_r31->cluster_attr[i] & HU3D_CLUSTER_ATTR_REV)) { temp_r31->unk_A4[i] += temp_r31->unk_B4[i] * minimumVcountf; - } else { + } + else { temp_r31->unk_A4[i] -= temp_r31->unk_B4[i] * minimumVcountf; } if (temp_r31->cluster_attr[i] & HU3D_CLUSTER_ATTR_LOOP) { if (temp_r31->unk_A4[i] < 0.0f) { temp_r31->unk_A4[i] = temp_r29->len; - } else if (temp_r31->unk_A4[i] >= temp_r29->len) { + } + else if (temp_r31->unk_A4[i] >= temp_r29->len) { temp_r31->unk_A4[i] = 0.0f; } - } else if (temp_r31->unk_A4[i] < 0.0f) { + } + else if (temp_r31->unk_A4[i] < 0.0f) { temp_r31->unk_A4[i] = 0.0f; - } else if (temp_r31->unk_A4[i] >= temp_r29->len) { + } + else if (temp_r31->unk_A4[i] >= temp_r29->len) { temp_r31->unk_A4[i] = temp_r29->len; } } @@ -615,7 +684,8 @@ void Hu3DMotionNext(s16 arg0) { } } -void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3) { +void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3) +{ MotionData *sp18; HsfData *sp14; HsfTrack *sp10; @@ -625,7 +695,7 @@ void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3) { HsfObject *temp_r31; HsfObject *var_r19; HsfCluster *var_r23; - HsfTrack *var_r30; + HsfTrack *track; HsfTrack *temp_r25; HsfTrack *temp_r22; HsfTrack *var_r26; @@ -637,9 +707,9 @@ void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3) { temp_r27 = &Hu3DData[arg0]; sp18 = &Hu3DMotion[arg1]; temp_r29 = temp_r27->hsfData; - sp14 = sp18->unk_04; + sp14 = sp18->hsfData; temp_r21 = sp14->motion; - var_r30 = temp_r21->track; + track = temp_r21->track; var_r19 = temp_r29->object; if (arg3 == 0) { for (var_r18 = 0; var_r18 < temp_r29->objectCnt; var_r19++, var_r18++) { @@ -666,83 +736,92 @@ void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3) { if (!(temp_r24 & 0x200)) { temp_r31->data.curr.rot.z = temp_r31->data.base.rot.z; } - } else { + } + else { temp_r31->data.curr = temp_r31->data.base; } - } else { + } + else { temp_r31->data.curr = temp_r31->data.base; } } } - sp10 = &var_r30[temp_r21->numTracks]; - for (; var_r30 < sp10; var_r30++) { - switch (var_r30->type) { - case 2: - if (var_r30->target < temp_r29->objectCnt && var_r30->target != -1) { - temp_r31 = &temp_r29->object[var_r30->target]; - if (var_r30->channel == 0x28) { - temp_r31->data.mesh.baseMorph = GetCurve(var_r30, arg2); - } else if (temp_r31->type == 7) { + sp10 = &track[temp_r21->numTracks]; + for (; track < sp10; track++) { + switch (track->type) { + case HSF_TRACK_TRANSFORM: + if (track->target < temp_r29->objectCnt && track->target != -1) { + temp_r31 = &temp_r29->object[track->target]; + if (track->channel == 0x28) { + temp_r31->data.mesh.baseMorph = GetCurve(track, arg2); + } + else if (temp_r31->type == 7) { if (temp_r27->attr & HU3D_ATTR_CAMERA_MOTON) { - SetObjCameraMotion(arg0, var_r30, GetCurve(var_r30, arg2)); + SetObjCameraMotion(arg0, track, GetCurve(track, arg2)); } - } else if (temp_r31->type == 8) { - SetObjLightMotion(arg0, var_r30, GetCurve(var_r30, arg2)); - } else if (var_r30->channel == 0x18) { + } + else if (temp_r31->type == 8) { + SetObjLightMotion(arg0, track, GetCurve(track, arg2)); + } + else if (track->channel == 0x18) { if (temp_r31->constData) { temp_r28 = temp_r31->constData; - if (GetCurve(var_r30, arg2) == 1.0f) { + if (GetCurve(track, arg2) == 1.0f) { temp_r28->flags &= ~0x1000; - } else { + } + else { temp_r28->flags |= 0x1000; } } - } else if (var_r30->channel == 0x1A) { + } + else if (track->channel == 0x1A) { if (temp_r31->constData) { temp_r28 = temp_r31->constData; - if (GetCurve(var_r30, arg2) == 1.0f) { + if (GetCurve(track, arg2) == 1.0f) { temp_r28->flags &= ~0x2000; - } else { + } + else { temp_r28->flags |= 0x2000; } } - } else { - temp_r17 = GetObjTRXPtr(temp_r31, var_r30->channel); - if (temp_r17 != (float*) -1) { - *temp_r17 = GetCurve(var_r30, arg2); + } + else { + temp_r17 = GetObjTRXPtr(temp_r31, track->channel); + if (temp_r17 != (float *)-1) { + *temp_r17 = GetCurve(track, arg2); } } } break; - case 3: - temp_r25 = var_r30; + case HSF_TRACK_MORPH: + temp_r25 = track; if (temp_r25->target < temp_r29->objectCnt) { temp_r31 = &temp_r29->object[temp_r25->target]; temp_r31->data.mesh.morphWeight[temp_r25->channel_s16] = GetCurve(temp_r25, arg2); } break; - case 9: + case HSF_TRACK_MATERIAL: if (!(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) { - if (var_r30->param < temp_r29->materialCnt) { - SetObjMatMotion(arg0, var_r30, GetCurve(var_r30, arg2)); + if (track->param < temp_r29->materialCnt) { + SetObjMatMotion(arg0, track, GetCurve(track, arg2)); } } break; - case 5: + case HSF_TRACK_CLUSTER: if (!(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) { - var_r23 = &temp_r29->cluster[var_r30->target_s16]; - var_r23->unk10 = GetClusterCurve(var_r30, arg2); + var_r23 = &temp_r29->cluster[track->target_s16]; + var_r23->index = GetClusterCurve(track, arg2); } break; - case 6: + case HSF_TRACK_CLUSTER_WEIGHT: if (!(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) { - temp_r22 = var_r30; + temp_r22 = track; var_r23 = &temp_r29->cluster[temp_r22->target_s16]; - var_r23->unk14[temp_r22->unk04] = GetClusterWeightCurve(temp_r22, arg2); + var_r23->weight[temp_r22->unk04] = GetClusterWeightCurve(temp_r22, arg2); } break; - case 10: - var_r26 = var_r30; + case HSF_TRACK_ATTRIBUTE: + var_r26 = track; if (var_r26->target_s16 != -1 || !(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) { if (var_r26->param != -1 && var_r26->param < temp_r29->attributeCnt) { SetObjAttrMotion(arg0, var_r26, GetCurve(var_r26, arg2)); @@ -753,36 +832,38 @@ void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3) { } } -void Hu3DCameraMotionExec(s16 arg0) { +void Hu3DCameraMotionExec(s16 arg0) +{ ModelData *temp_r30; MotionData *temp_r28; HsfData *temp_r27; - HsfMotion *temp_r29; - HsfTrack *var_r31; + HsfMotion *motion; + HsfTrack *track; HsfTrack *temp_r26; temp_r30 = &Hu3DData[arg0]; temp_r28 = &Hu3DMotion[temp_r30->unk_08]; - temp_r27 = temp_r28->unk_04; - temp_r29 = temp_r27->motion; - var_r31 = temp_r29->track; + temp_r27 = temp_r28->hsfData; + motion = temp_r27->motion; + track = motion->track; if (temp_r30->attr & HU3D_ATTR_CAMERA_MOTON) { - temp_r26 = &var_r31[temp_r29->numTracks]; - for (; var_r31 < temp_r26; var_r31++) { - if (var_r31->type == 2 && var_r31->param_u16 == 7) { - SetObjCameraMotion(arg0, var_r31, GetCurve(var_r31, temp_r30->unk_64)); + temp_r26 = &track[motion->numTracks]; + for (; track < temp_r26; track++) { + if (track->type == HSF_TRACK_TRANSFORM && track->param_u16 == 7) { + SetObjCameraMotion(arg0, track, GetCurve(track, temp_r30->unk_64)); } } } } -void Hu3DSubMotionExec(s16 arg0) { +void Hu3DSubMotionExec(s16 arg0) +{ ModelData *temp_r30; MotionData *temp_r22; HsfData *temp_r28; HsfData *temp_r21; - HsfMotion *temp_r25; - HsfTrack *var_r29; + HsfMotion *motion; + HsfTrack *track; HsfObject *var_r23; HsfObject *temp_r26; float *temp_r31; @@ -794,9 +875,9 @@ void Hu3DSubMotionExec(s16 arg0) { temp_r30 = &Hu3DData[arg0]; temp_r22 = &Hu3DMotion[temp_r30->unk_0C]; temp_r28 = temp_r30->hsfData; - temp_r21 = temp_r22->unk_04; - temp_r25 = temp_r21->motion; - var_r29 = temp_r25->track; + temp_r21 = temp_r22->hsfData; + motion = temp_r21->motion; + track = motion->track; var_r23 = temp_r28->object; if (temp_r30->unk_08 == -1) { for (var_r27 = 0; var_r27 < temp_r28->objectCnt; var_r23++, var_r27++) { @@ -806,19 +887,20 @@ void Hu3DSubMotionExec(s16 arg0) { } if (temp_r30->unk_80) { var_f30 = temp_r30->unk_7C / temp_r30->unk_80; - } else { + } + else { var_f30 = 1.0f; } - for (var_r27 = 0; var_r27 < temp_r25->numTracks; var_r27++, var_r29++) { - switch (var_r29->type) { - case 2: - if (var_r29->target < temp_r28->objectCnt && var_r29->target != -1) { - temp_r26 = &temp_r28->object[var_r29->target]; - temp_r24 = var_r29->channel; + for (var_r27 = 0; var_r27 < motion->numTracks; var_r27++, track++) { + switch (track->type) { + case HSF_TRACK_TRANSFORM: + if (track->target < temp_r28->objectCnt && track->target != -1) { + temp_r26 = &temp_r28->object[track->target]; + temp_r24 = track->channel; temp_r31 = GetObjTRXPtr(temp_r26, temp_r24); - if (temp_r31 != (float*) -1) { + if (temp_r31 != (float *)-1) { if (temp_r24 == 0x1C || temp_r24 == 0x1D || temp_r24 == 0x1E) { - var_f31 = GetCurve(var_r29, temp_r30->unk_84); + var_f31 = GetCurve(track, temp_r30->unk_84); if (var_f31 < 0.0f) { var_f31 += 360.0f; } @@ -829,12 +911,14 @@ void Hu3DSubMotionExec(s16 arg0) { if (*temp_r31 > (180.0f + var_f31)) { *temp_r31 -= 360.0f; } - } else if (*temp_r31 < (var_f31 - 180.0f)) { + } + else if (*temp_r31 < (var_f31 - 180.0f)) { var_f31 -= 360.0f; } *temp_r31 = (1.0f - var_f30) * *temp_r31 + var_f30 * var_f31; - } else { - *temp_r31 = (1.0f - var_f30) * *temp_r31 + var_f30 * GetCurve(var_r29, temp_r30->unk_84); + } + else { + *temp_r31 = (1.0f - var_f30) * *temp_r31 + var_f30 * GetCurve(track, temp_r30->unk_84); } } } @@ -843,38 +927,44 @@ void Hu3DSubMotionExec(s16 arg0) { } } -__declspec(weak) float *GetObjTRXPtr(HsfObject *arg0, u16 arg1) { +#ifdef __MWERKS__ +__declspec(weak) float *GetObjTRXPtr(HsfObject *arg0, u16 arg1) +{ +#else +float *GetObjTRXPtr(HsfObject *arg0, u16 arg1) +{ +#endif HsfConstData *temp_r31 = arg0->constData; switch (arg1) { case 8: if (temp_r31 && (temp_r31->flags & 0x10)) { - return (float*) -1; + return (float *)-1; } return &arg0->data.curr.pos.x; case 9: if (temp_r31 && (temp_r31->flags & 0x20)) { - return (float*) -1; + return (float *)-1; } return &arg0->data.curr.pos.y; case 10: if (temp_r31 && (temp_r31->flags & 0x40)) { - return (float*) -1; + return (float *)-1; } return &arg0->data.curr.pos.z; case 28: if (temp_r31 && (temp_r31->flags & 0x80)) { - return (float*) -1; + return (float *)-1; } return &arg0->data.curr.rot.x; case 29: if (temp_r31 && (temp_r31->flags & 0x100)) { - return (float*) -1; + return (float *)-1; } return &arg0->data.curr.rot.y; case 30: if (temp_r31 && (temp_r31->flags & 0x200)) { - return (float*) -1; + return (float *)-1; } return &arg0->data.curr.rot.z; case 31: @@ -884,11 +974,12 @@ __declspec(weak) float *GetObjTRXPtr(HsfObject *arg0, u16 arg1) { case 33: return &arg0->data.curr.scale.z; default: - return (float*) -1; + return (float *)-1; } } -void SetObjMatMotion(s16 arg0, HsfTrack *arg1, float arg2) { +void SetObjMatMotion(s16 arg0, HsfTrack *arg1, float arg2) +{ HsfMaterial *temp_r31; HsfData *temp_r29; ModelData *temp_r30; @@ -900,7 +991,8 @@ void SetObjMatMotion(s16 arg0, HsfTrack *arg1, float arg2) { var_f31 = arg2; if (arg2 > 1.0f) { var_f31 = 1.0f; - } else if (arg2 < 0.0f) { + } + else if (arg2 < 0.0f) { var_f31 = 0.0f; } switch (arg1->channel) { @@ -942,7 +1034,8 @@ void SetObjMatMotion(s16 arg0, HsfTrack *arg1, float arg2) { } } -void SetObjAttrMotion(s16 arg0, HsfTrack *arg1, float arg2) { +void SetObjAttrMotion(s16 arg0, HsfTrack *arg1, float arg2) +{ ModelData *temp_r28; HsfData *temp_r27; HsfAttribute *temp_r30; @@ -955,7 +1048,8 @@ void SetObjAttrMotion(s16 arg0, HsfTrack *arg1, float arg2) { var_f30 = arg2; if (arg2 > 1.0f) { var_f30 = 1.0f; - } else if (arg2 < 0.0f) { + } + else if (arg2 < 0.0f) { var_f30 = 0.0f; } switch (arg1->channel) { @@ -970,18 +1064,20 @@ void SetObjAttrMotion(s16 arg0, HsfTrack *arg1, float arg2) { case 0x21: case 0x43: if (temp_r30->unk04 == 0) { - var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfdrawStruct01), (u32) Hu3DData[arg0].unk_48); + var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfdrawStruct01), (u32)Hu3DData[arg0].unk_48); temp_r30->unk04 = var_r31; var_r31->unk00 = 0; var_r31->unk08 = var_r31->unk0C = var_r31->unk10 = 0.0f; var_r31->unk14 = var_r31->unk18 = var_r31->unk1C = 0.0f; var_r31->unk20 = var_r31->unk24 = var_r31->unk28 = 1.0f; - } else { + } + else { var_r31 = temp_r30->unk04; } if (arg1->channel != 0x43) { var_r31->unk00 |= 4; - } else { + } + else { var_r31->unk00 |= 8; } break; @@ -1029,7 +1125,8 @@ void SetObjAttrMotion(s16 arg0, HsfTrack *arg1, float arg2) { } } -void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { +void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) +{ ModelData *temp_r29; Vec sp18; Vec spC; @@ -1045,7 +1142,8 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { var_f31 = arg2; if (arg2 > 1.0f) { var_f31 = 1.0f; - } else if (arg2 < 0.0f) { + } + else if (arg2 < 0.0f) { var_f31 = 0.0f; } switch (arg1->channel) { @@ -1121,7 +1219,8 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { } } -void SetObjLightMotion(s16 arg0, HsfTrack *arg1, float arg2) { +void SetObjLightMotion(s16 arg0, HsfTrack *arg1, float arg2) +{ s16 var_r29; ModelData *temp_r30; HsfData *temp_r28; @@ -1136,10 +1235,11 @@ void SetObjLightMotion(s16 arg0, HsfTrack *arg1, float arg2) { var_r26 = temp_r28->object; for (i = var_r29 = 0; i < temp_r28->objectCnt; i++, var_r26++) { var_r24 = var_r26; - if (var_r24->type == 8) { + if (var_r24->type == HSF_OBJ_NONE2) { if (i != arg1->target) { var_r29++; - } else { + } + else { break; } } @@ -1149,7 +1249,8 @@ void SetObjLightMotion(s16 arg0, HsfTrack *arg1, float arg2) { var_f30 = arg2; if (arg2 > 1.0f) { var_f30 = 1.0f; - } else if (arg2 < 0.0f) { + } + else if (arg2 < 0.0f) { var_f30 = 0.0f; } switch (arg1->channel) { @@ -1178,27 +1279,29 @@ void SetObjLightMotion(s16 arg0, HsfTrack *arg1, float arg2) { } } -float GetCurve(HsfTrack *arg0, float arg1) { +float GetCurve(HsfTrack *track, float arg1) +{ float *var_r30; - switch (arg0->curveType) { - case 1: - return GetLinear(arg0->numKeyframes, arg0->data, arg1); - case 2: - return GetBezier(arg0->numKeyframes, arg0, arg1); - case 3: - bitMapPtr = GetBitMap(arg0->numKeyframes, arg0->data, arg1); + switch (track->curveType) { + case HSF_CURVE_LINEAR: + return GetLinear(track->numKeyframes, track->data, arg1); + case HSF_CURVE_BEZIER: + return GetBezier(track->numKeyframes, track, arg1); + case HSF_CURVE_BITMAP: + bitMapPtr = GetBitMap(track->numKeyframes, track->data, arg1); break; - case 4: - var_r30 = &arg0->value; + case HSF_CURVE_CONST: + var_r30 = &track->value; return *var_r30; - case 0: - return GetConstant(arg0->numKeyframes, arg0->data, arg1); + case HSF_CURVE_STEP: + return GetConstant(track->numKeyframes, track->data, arg1); } return 0.0f; } -float GetConstant(s32 arg0, float *arg1, float arg2) { +float GetConstant(s32 arg0, float *arg1, float arg2) +{ float *var_r31; s16 i; @@ -1214,7 +1317,8 @@ float GetConstant(s32 arg0, float *arg1, float arg2) { return var_r31[-1]; } -float GetLinear(s32 arg0, float arg1[][2], float arg2) { +float GetLinear(s32 arg0, float arg1[][2], float arg2) +{ float var_f31; float var_f30; s16 temp_r30; @@ -1234,7 +1338,13 @@ float GetLinear(s32 arg0, float arg1[][2], float arg2) { return arg1[arg0 - 1][1]; } -__declspec(weak) float GetBezier(s32 arg0, HsfTrack *arg1, float arg2) { +#ifdef __MWERKS__ +__declspec(weak) float GetBezier(s32 arg0, HsfTrack *arg1, float arg2) +{ +#else +float GetBezier(s32 arg0, HsfTrack *arg1, float arg2) +{ +#endif float temp_f24; float temp_f29; float temp_f28; @@ -1243,8 +1353,8 @@ __declspec(weak) float GetBezier(s32 arg0, HsfTrack *arg1, float arg2) { float temp_f25; float temp_f30; float temp_f31; - float (*var_r31)[4]; - float (*var_r29)[4]; + float(*var_r31)[4]; + float(*var_r29)[4]; s32 i; var_r31 = arg1->data; @@ -1256,7 +1366,7 @@ __declspec(weak) float GetBezier(s32 arg0, HsfTrack *arg1, float arg2) { i = 0; } if (i == -1) { - var_r31 = (float(*)[4]) arg1->data + arg1->start; + var_r31 = (float(*)[4])arg1->data + arg1->start; var_r29 = var_r31 - 1; for (i = arg1->start; i < arg0; i++, var_r31++) { if (arg2 >= var_r29[0][0] && arg2 < var_r31[0][0]) { @@ -1286,13 +1396,12 @@ __declspec(weak) float GetBezier(s32 arg0, HsfTrack *arg1, float arg2) { temp_f27 = 3.0f * temp_f30; temp_f26 = temp_f31 * temp_f30; temp_f25 = temp_f31 * temp_f28; - return var_r31[0][1] * (temp_f25 - temp_f27 + 1.0f) - + var_r31[1][1] * (-temp_f25 + temp_f27) - + var_r31[0][2] * (temp_f26 - temp_f28 + temp_f31) + return var_r31[0][1] * (temp_f25 - temp_f27 + 1.0f) + var_r31[1][1] * (-temp_f25 + temp_f27) + var_r31[0][2] * (temp_f26 - temp_f28 + temp_f31) + var_r31[1][3] * (temp_f26 - temp_f30); } -HsfBitmap *GetBitMap(s32 arg0, UnknownHsfMotionStruct01 *arg1, float arg2) { +HsfBitmap *GetBitMap(s32 arg0, UnknownHsfMotionStruct01 *arg1, float arg2) +{ s16 var_r31; if (arg2 == 0.0f || arg0 == 1) { @@ -1306,7 +1415,8 @@ HsfBitmap *GetBitMap(s32 arg0, UnknownHsfMotionStruct01 *arg1, float arg2) { return arg1[-1].unk04; } -s16 Hu3DJointMotion(s16 arg0, void *arg1) { +s16 Hu3DJointMotion(s16 arg0, void *arg1) +{ s16 var_r29; var_r29 = Hu3DMotionCreate(arg1); @@ -1314,13 +1424,14 @@ s16 Hu3DJointMotion(s16 arg0, void *arg1) { return var_r29; } -void JointModel_Motion(s16 arg0, s16 arg1) { +void JointModel_Motion(s16 arg0, s16 arg1) +{ ModelData *temp_r24; MotionData *temp_r23; HsfData *temp_r26; HsfData *temp_r22; - HsfMotion *temp_r29; - HsfTrack *var_r30; + HsfMotion *motion; + HsfTrack *track; HsfTrack *var_r28; HsfTrack *var_r27; HsfTrack *var_r31; @@ -1330,26 +1441,27 @@ void JointModel_Motion(s16 arg0, s16 arg1) { temp_r24 = &Hu3DData[arg0]; temp_r23 = &Hu3DMotion[arg1]; temp_r26 = temp_r24->hsfData; - temp_r22 = temp_r23->unk_04; - temp_r29 = temp_r22->motion; - var_r30 = temp_r29->track; - for (i = 0; i < temp_r29->numTracks; i++, var_r30++) { - switch (var_r30->type) { - case 2: - var_r28 = var_r30; + temp_r22 = temp_r23->hsfData; + motion = temp_r22->motion; + track = motion->track; + for (i = 0; i < motion->numTracks; i++, track++) { + switch (track->type) { + case HSF_TRACK_TRANSFORM: + var_r28 = track; var_r28->target = SearchObjectIndex(temp_r26, var_r28->target); break; - case 3: - var_r27 = var_r30; + case HSF_TRACK_MORPH: + var_r27 = track; var_r27->target = SearchObjectIndex(temp_r26, var_r27->target); break; - case 10: - var_r31 = var_r30; + case HSF_TRACK_ATTRIBUTE: + var_r31 = track; if (var_r31->param == -1) { temp_r21 = SearchAttributeIndex(temp_r26, var_r31->target_s16); if (temp_r21 != -1) { var_r31->param = temp_r21; - } else { + } + else { var_r31->param = -1; } } @@ -1358,7 +1470,8 @@ void JointModel_Motion(s16 arg0, s16 arg1) { } } -void Hu3DMotionCalc(s16 arg0) { +void Hu3DMotionCalc(s16 arg0) +{ ModelData *temp_r31 = &Hu3DData[arg0]; if ((temp_r31->attr & HU3D_ATTR_DISPOFF) || (temp_r31->attr & HU3D_ATTR_HOOK)) { @@ -1379,11 +1492,12 @@ void Hu3DMotionCalc(s16 arg0) { if (temp_r31->unk_0E != -1) { if (temp_r31->unk_08 == -1) { Hu3DMotionExec(arg0, temp_r31->unk_0E, temp_r31->unk_94, 0); - } else { + } + else { Hu3DMotionExec(arg0, temp_r31->unk_0E, temp_r31->unk_94, 1); } } - if (!(temp_r31->attr & (HU3D_ATTR_ENVELOPE_OFF|HU3D_ATTR_HOOKFUNC)) || !(temp_r31->motion_attr & HU3D_MOTATTR_PAUSE)) { + if (!(temp_r31->attr & (HU3D_ATTR_ENVELOPE_OFF | HU3D_ATTR_HOOKFUNC)) || !(temp_r31->motion_attr & HU3D_MOTATTR_PAUSE)) { InitVtxParm(temp_r31->hsfData); if (temp_r31->unk_0E != -1) { ShapeProc(temp_r31->hsfData); @@ -1399,7 +1513,8 @@ void Hu3DMotionCalc(s16 arg0) { temp_r31->attr |= HU3D_ATTR_MOT_EXEC; } -static s32 SearchObjectIndex(HsfData *arg0, u32 arg1) { +static s32 SearchObjectIndex(HsfData *arg0, u32 arg1) +{ s32 i; char *temp_r28; HsfObject *var_r30; @@ -1414,7 +1529,8 @@ static s32 SearchObjectIndex(HsfData *arg0, u32 arg1) { return -1; } -static s32 SearchAttributeIndex(HsfData *arg0, u32 arg1) { +static s32 SearchAttributeIndex(HsfData *arg0, u32 arg1) +{ HsfAttribute *var_r31; size_t temp_r28; char *temp_r27; diff --git a/src/game/init.c b/src/game/init.c index 61315c66..fdd5d55c 100644 --- a/src/game/init.c +++ b/src/game/init.c @@ -1,5 +1,8 @@ #include "game/init.h" +#include "game/memory.h" #include "game/fault.h" +#include "game/sreset.h" +#include "dolphin/demo/DEMOStats.h" #include "dolphin/os.h" #include "dolphin/gx.h" #include "dolphin/dvd.h" @@ -19,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; @@ -28,7 +31,7 @@ void *DemoFrameBuffer2; void *DemoCurrentBuffer; u32 minimumVcount; float minimumVcountf; -u32 worstVcount; +SHARED_SYM u32 worstVcount; static BOOL DemoStatEnable; @@ -47,7 +50,11 @@ void HuSysInit(GXRenderModeObj *mode) OSInit(); DVDInit(); VIInit(); + #ifdef TARGET_PC + VISetWindowTitle("Mario Party 4"); + #endif PADInit(); + #ifdef __MWERKS__ #if VERSION_NTSC if(OSGetProgressiveMode() == 1 && VIGetDTVStatus() == 1) { mode = &GXNtsc480Prog; @@ -55,6 +62,7 @@ void HuSysInit(GXRenderModeObj *mode) #else mode->efbHeight = 480; #endif + #endif InitRenderMode(mode); InitMem(); VIConfigure(RenderMode); @@ -132,12 +140,12 @@ static void InitMem() { void *arena_lo = OSGetArenaLo(); void *arena_hi = OSGetArenaHi(); - u32 fb_size = (u16)(((u16)RenderMode->fbWidth+15) & ~15)*RenderMode->xfbHeight*2; - u32 *fb1; - u32 *fb2; + uintptr_t fb_size = (u16)(((u16)RenderMode->fbWidth+15) & ~15)*RenderMode->xfbHeight*2; + uintptr_t *fb1; + uintptr_t *fb2; u32 i; - DemoFrameBuffer1 = (void *)OSRoundUp32B((u32)arena_lo); - DemoFrameBuffer2 = (void *)OSRoundUp32B((u32)DemoFrameBuffer1+fb_size); + DemoFrameBuffer1 = (void *)OSRoundUp32B((uintptr_t)arena_lo); + DemoFrameBuffer2 = (void *)OSRoundUp32B((uintptr_t)DemoFrameBuffer1 + fb_size); DemoCurrentBuffer = DemoFrameBuffer2; #if VERSION_PAL fb1 = DemoFrameBuffer1; @@ -148,7 +156,7 @@ static void InitMem() DCStoreRangeNoSync(DemoFrameBuffer1, fb_size); DCStoreRangeNoSync(DemoFrameBuffer2, fb_size); #endif - arena_lo = (void *)OSRoundUp32B((u32)DemoFrameBuffer2+fb_size); + arena_lo = (void *)OSRoundUp32B((uintptr_t)DemoFrameBuffer2 + fb_size); OSSetArenaLo(arena_lo); if(OSGetConsoleType() == OS_CONSOLE_DEVHW1 && OSGetPhysicalMemSize() != 0x400000 && OSGetConsoleSimulatedMemSize() < 0x1800000) { LoadMemInfo(); @@ -157,8 +165,8 @@ static void InitMem() arena_hi = OSGetArenaHi(); arena_lo = OSInitAlloc(arena_lo, arena_hi, 1); OSSetArenaLo(arena_lo); - arena_lo = (void *)OSRoundUp32B((u32)arena_lo); - arena_hi = (void *)OSRoundDown32B((u32)arena_hi); + arena_lo = (void *)OSRoundUp32B((uintptr_t)arena_lo); + arena_hi = (void *)OSRoundDown32B((uintptr_t)arena_hi); OSSetCurrentHeap(currentHeapHandle = OSCreateHeap(arena_lo, arena_hi)); arena_lo = arena_hi; OSSetArenaLo(arena_lo); @@ -295,4 +303,4 @@ static void LoadMemInfo() DVDClose(&file); OSDumpHeap(__OSCurrHeap); } -} \ No newline at end of file +} diff --git a/src/game/jmp.c b/src/game/jmp.c index 8313bd8c..4da43088 100755 --- a/src/game/jmp.c +++ b/src/game/jmp.c @@ -1,6 +1,7 @@ #include "game/jmp.h" -s32 gcsetjmp(register jmp_buf *jump) { +s32 gcsetjmp(register jmp_buf *jump) +{ // clang-format off asm { mflr r5 diff --git a/src/game/main.c b/src/game/main.c index 59390f8b..3831d60f 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -1,20 +1,36 @@ -#include "game/gamework_data.h" -#include "game/dvd.h" -#include "game/printfunc.h" -#include "game/object.h" -#include "game/wipe.h" -#include "game/init.h" -#include "game/process.h" -#include "game/pad.h" #include "game/data.h" -#include "game/sprite.h" +#include "game/dvd.h" +#include "game/gamework.h" +#include "game/gamework_data.h" #include "game/hsfformat.h" #include "game/hsfman.h" +#include "game/init.h" +#include "game/minigame_seq.h" +#include "game/msm.h" +#include "game/object.h" +#include "game/pad.h" #include "game/perf.h" -#include "game/gamework.h" +#include "game/printfunc.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/sreset.h" +#include "game/wipe.h" +#include "version.h" + +#ifdef TARGET_PC +#include "port/imgui.h" +#include +#include +#include + +const char *__asan_default_options() +{ + return "new_delete_type_mismatch=0,sleep_before_dying=5,allocator_may_return_null=1"; +} +#endif extern FileListEntry _ovltbl[]; -u32 GlobalCounter; +SHARED_SYM u32 GlobalCounter; static u32 vcheck; static u32 vmiss; static u32 vstall; @@ -35,25 +51,74 @@ static u32 pe_req; static u32 rf_req; static u32 fi_req; s32 HuDvdErrWait; -s32 SystemInitF; +SHARED_SYM s32 SystemInitF; -void main(void) +#ifdef TARGET_PC +#include +void aurora_log_callback(AuroraLogLevel level, const char* module, const char *message, unsigned int len) { + const char *levelStr = "??"; + FILE *out = stdout; + switch (level) { + case LOG_DEBUG: + levelStr = "DEBUG"; + break; + case LOG_INFO: + levelStr = "INFO"; + break; + case LOG_WARNING: + levelStr = "WARNING"; + break; + case LOG_ERROR: + levelStr = "ERROR"; + out = stderr; + break; + case LOG_FATAL: + levelStr = "FATAL"; + out = stderr; + break; + } + fprintf(out, "[%s | %s] %s\n", levelStr, module, message); + if (level == LOG_FATAL) { + fflush(out); + abort(); + } +} +#endif + +#ifdef TARGET_PC +int game_main(int argc, char *argv[]) +#else +void main(void) +#endif +{ +#ifdef TARGET_PC + const AuroraInfo auroraInfo = aurora_initialize(argc, argv, + &(AuroraConfig) { + .appName = "Mario Party 4", + .logCallback = &aurora_log_callback, + .desiredBackend = BACKEND_VULKAN, + .windowPosX = 100, + .windowPosY = 100, + .windowWidth = 640, + .windowHeight = 480, + }); +#endif u32 met0; u32 met1; s16 i; s32 retrace; - #if VERSION_PAL +#if VERSION_PAL s16 temp = 0; - #endif - +#endif + HuDvdErrWait = 0; SystemInitF = 0; - #if VERSION_NTSC +#if VERSION_NTSC HuSysInit(&GXNtsc480IntDf); - #else +#else HuSysInit(&GXPal528IntDf); - #endif +#endif HuPrcInit(); HuPadInit(); GWInit(); @@ -66,25 +131,43 @@ void main(void) HuPerfCreate("USR0", 0xFF, 0xFF, 0xFF, 0xFF); HuPerfCreate("USR1", 0, 0xFF, 0xFF, 0xFF); WipeInit(RenderMode); - + for (i = 0; i < 4; i++) { GWPlayerCfg[i].character = -1; } - + omMasterInit(0, _ovltbl, OVL_COUNT, OVL_BOOT); VIWaitForRetrace(); - + if (VIGetNextField() == 0) { OSReport("VI_FIELD_BELOW\n"); VIWaitForRetrace(); } while (1) { +#ifdef TARGET_PC + const AuroraEvent *event = aurora_update(); + bool exiting = false; + while (event != NULL && event->type != AURORA_NONE) { + if (event->type == AURORA_EXIT) { + exiting = true; + break; + } + ++event; + } + if (exiting) { + break; + } +#endif retrace = VIGetRetraceCount(); if (HuSoftResetButtonCheck() != 0 || HuDvdErrWait != 0) { continue; } HuPerfZero(); + HuPerfBegin(2); +#ifdef TARGET_PC + aurora_begin_frame(); +#endif HuSysBeforeRender(); GXSetGPMetric(GX_PERF0_CLIP_VTX, GX_PERF1_VERTICES); GXClearGPMetric(); @@ -92,10 +175,12 @@ void main(void) GXClearVCacheMetric(); GXClearPixMetric(); GXClearMemMetric(); + HuPerfBegin(0); Hu3DPreProc(); HuPadRead(); pfClsScr(); + HuPrcCall(1); MGSeqMain(); HuPerfBegin(1); @@ -103,8 +188,10 @@ void main(void) HuDvdErrorWatch(); WipeExecAlways(); HuPerfEnd(0); + pfDrawFonts(); HuPerfEnd(1); + msmMusFdoutEnd(); HuSysDoneRender(retrace); GXReadGPMetric(&met0, &met1); @@ -113,7 +200,17 @@ void main(void) GXReadMemMetric(&cp_req, &tc_req, &cpu_rd_req, &cpu_wr_req, &dsp_req, &io_req, &vi_req, &pe_req, &rf_req, &fi_req); HuPerfEnd(2); GlobalCounter++; + +#ifdef TARGET_PC + imgui_main(&auroraInfo); + aurora_end_frame(); + frame_limiter(); +#endif } + +#ifdef TARGET_PC + aurora_shutdown(); +#endif } void HuSysVWaitSet(s16 vcount) @@ -124,7 +221,7 @@ void HuSysVWaitSet(s16 vcount) s16 HuSysVWaitGet(s16 param) { - return (s16) minimumVcount; + return (s16)minimumVcount; } s32 rnd_seed = 0x0000D9ED; diff --git a/src/game/malloc.c b/src/game/malloc.c index 863f8c57..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]); @@ -47,39 +50,55 @@ void HuMemDCFlush(HeapID heap) void *HuMemDirectMalloc(HeapID heap, s32 size) { +#ifdef TARGET_PC + u32 retaddr = 0; +#else register u32 retaddr; asm { mflr retaddr } - size = (size+31) & 0xFFFFFFE0; +#endif + size = (size + 31) & ~0x1F; return HuMemMemoryAlloc(HeapTbl[heap], size, retaddr); } -void *HuMemDirectMallocNum(HeapID heap, s32 size, u32 num) +void *HuMemDirectMallocNum(HeapID heap, s32 size, uintptr_t num) { +#ifdef TARGET_PC + u32 retaddr = 0; +#else register u32 retaddr; asm { mflr retaddr } - size = (size+31) & 0xFFFFFFE0; +#endif + size = (size + 31) & ~0x1F; return HuMemMemoryAllocNum(HeapTbl[heap], size, num, retaddr); } void HuMemDirectFree(void *ptr) { +#ifdef TARGET_PC + u32 retaddr = 0; +#else register u32 retaddr; asm { mflr retaddr } +#endif HuMemMemoryFree(ptr, retaddr); } -void HuMemDirectFreeNum(HeapID heap, u32 num) +void HuMemDirectFreeNum(HeapID heap, uintptr_t num) { +#ifdef TARGET_PC + u32 retaddr = 0; +#else register u32 retaddr; asm { mflr retaddr } +#endif HuMemMemoryFreeNum(HeapTbl[heap], num, retaddr); } @@ -101,4 +120,4 @@ u32 HuMemHeapSizeGet(HeapID heap) void *HuMemHeapPtrGet(HeapID heap) { return HeapTbl[heap]; -} \ No newline at end of file +} diff --git a/src/game/mapspace.c b/src/game/mapspace.c index f04e7c16..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; @@ -94,8 +96,8 @@ void MapWallCheck(float *arg0, float *arg1, HsfMapAttr *arg2) { MTRAdd.x = AddX; MTRAdd.z = AddZ; MTRAdd.y = 0.0f; - PSMTXInvXpose(MapMT, sp10); - PSMTXMultVec(sp10, &MTRAdd, &MTRAdd); + MTXInvXpose(MapMT, sp10); + MTXMultVec(sp10, &MTRAdd, &MTRAdd); for (var_r30 = 0; var_r30 < arg2->dataLen;) { temp_r29 = *var_r31; if (temp_r29 & 0x8000) { @@ -142,7 +144,7 @@ float MapPos(float arg0, float arg1, float arg2, float arg3, Vec *arg4) { sp14.x = var_f29; sp14.y = sp10; sp14.z = var_f28; - PSMTXMultVec(MapMT, &sp14, &sp14); + MTXMultVec(MapMT, &sp14, &sp14); sp10 = sp14.y; if (sp10 > arg1 + arg3 || fabs(arg1 - sp10) > fabs(arg1 - var_f31)) { continue; @@ -151,8 +153,8 @@ float MapPos(float arg0, float arg1, float arg2, float arg3, Vec *arg4) { arg4->x = FieldVec.x; arg4->y = FieldVec.y; arg4->z = FieldVec.z; - PSMTXInvXpose(MapMT, sp20); - PSMTXMultVec(sp20, arg4, arg4); + MTXInvXpose(MapMT, sp20); + MTXMultVec(sp20, arg4, arg4); var_f31 = sp14.y; } } @@ -205,7 +207,7 @@ BOOL PolygonRangeCheck(HsfMapAttr *arg0, float arg1, float arg2, float *arg3, fl sp20.x = arg1; sp20.y = temp_f29; sp20.z = arg2; - PSMTXMultVec(MapMT, &sp20, &sp20); + MTXMultVec(MapMT, &sp20, &sp20); if (arg4 > sp20.y && var_f27 > fabs(arg4 - sp20.y)) { var_f27 = fabs(arg4 - sp20.y); *arg3 = temp_f29; @@ -224,7 +226,7 @@ BOOL PolygonRangeCheck(HsfMapAttr *arg0, float arg1, float arg2, float *arg3, fl sp20.x = arg1; sp20.y = temp_f29; sp20.z = arg2; - PSMTXMultVec(MapMT, &sp20, &sp20); + MTXMultVec(MapMT, &sp20, &sp20); if (arg4 > sp20.y) { if (var_f27 > fabs(arg4 - sp20.y)) { var_f27 = fabs(arg4 - sp20.y); @@ -711,7 +713,7 @@ static BOOL GetPolygonCircleMtx(s16 *arg0, Vec *arg1, float *arg2, float *arg3) spD0[0] = arg2[0] + AddX; spD0[1] = arg2[1]; spD0[2] = arg2[2] + AddZ; - PSMTXMultVec(MapMT, &spC4, &spC4); + MTXMultVec(MapMT, &spC4, &spC4); DefSetHitFace(spC4.x, spC4.y, spC4.z); temp_r29 = &HitFaceVec[HitFaceCount]; MapspaceInlineFunc01(temp_r29, &arg1[arg0[0]], &arg1[arg0[1]], &arg1[arg0[2]]); @@ -724,7 +726,7 @@ static BOOL GetPolygonCircleMtx(s16 *arg0, Vec *arg1, float *arg2, float *arg3) spE0[0] = OldXYZ.x; spE0[1] = OldXYZ.y; spE0[2] = OldXYZ.z; - PSMTXMultVec(MapMTR, (Vec*) &spE0, (Vec*) &spE0); + MTXMultVec(MapMTR, (Vec*) &spE0, (Vec*) &spE0); if (MapspaceInlineFunc03(spE0, temp_r31, arg1) < 0) { spB8.x = spE0[0] - spD0[0]; spB8.y = spE0[1] - spD0[1]; @@ -742,8 +744,8 @@ static BOOL GetPolygonCircleMtx(s16 *arg0, Vec *arg1, float *arg2, float *arg3) MTRAdd.x = AddX; MTRAdd.z = AddZ; MTRAdd.y = 0.0f; - PSMTXInvXpose(MapMT, spF0); - PSMTXMultVec(spF0, &MTRAdd, &MTRAdd); + MTXInvXpose(MapMT, spF0); + MTXMultVec(spF0, &MTRAdd, &MTRAdd); } } return var_r17; @@ -893,19 +895,19 @@ void AppendAddXZ(float arg0, float arg1, float arg2) { void CharRotInv(Mtx arg0, Mtx arg1, Vec *arg2, omObjData *arg3) { Mtx sp8; - PSMTXTrans(arg0, arg3->trans.x, arg3->trans.y, arg3->trans.z); + MTXTrans(arg0, arg3->trans.x, arg3->trans.y, arg3->trans.z); if (arg3->rot.z) { - PSMTXRotRad(sp8, 'z', MTXDegToRad(arg3->rot.z)); - PSMTXConcat(arg0, sp8, arg0); + MTXRotRad(sp8, 'z', MTXDegToRad(arg3->rot.z)); + MTXConcat(arg0, sp8, arg0); } if (arg3->rot.y) { - PSMTXRotRad(sp8, 'y', MTXDegToRad(arg3->rot.y)); - PSMTXConcat(arg0, sp8, arg0); + MTXRotRad(sp8, 'y', MTXDegToRad(arg3->rot.y)); + MTXConcat(arg0, sp8, arg0); } if (arg3->rot.x) { - PSMTXRotRad(sp8, 'x', MTXDegToRad(arg3->rot.x)); - PSMTXConcat(arg0, sp8, arg0); + MTXRotRad(sp8, 'x', MTXDegToRad(arg3->rot.x)); + MTXConcat(arg0, sp8, arg0); } - PSMTXInverse(arg0, arg1); - PSMTXMultVec(arg1, arg2, arg2); + MTXInverse(arg0, arg1); + MTXMultVec(arg1, arg2, arg2); } diff --git a/src/game/memory.c b/src/game/memory.c index d7c0374d..eb8c001b 100644 --- a/src/game/memory.c +++ b/src/game/memory.c @@ -1,22 +1,30 @@ #include "game/memory.h" #include "dolphin/os.h" -#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) +#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 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 { +struct memory_block { s32 size; u8 magic; u8 flag; struct memory_block *prev; struct memory_block *next; - u32 num; - u32 retaddr; + uintptr_t num; + uintptr_t retaddr; }; -static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, u32 num, u32 retaddr); +static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, uintptr_t num, uintptr_t retaddr); void *HuMemHeapInit(void *ptr, s32 size) { @@ -31,25 +39,29 @@ void *HuMemHeapInit(void *ptr, s32 size) return block; } -void *HuMemMemoryAllocNum(void *heap_ptr, s32 size, u32 num, u32 retaddr) +void *HuMemMemoryAllocNum(void *heap_ptr, s32 size, uintptr_t num, uintptr_t retaddr) { return HuMemMemoryAlloc2(heap_ptr, size, num, retaddr); } -void *HuMemMemoryAlloc(void *heap_ptr, s32 size, u32 retaddr) +void *HuMemMemoryAlloc(void *heap_ptr, s32 size, uintptr_t retaddr) { return HuMemMemoryAlloc2(heap_ptr, size, -256, retaddr); } -static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, u32 num, u32 retaddr) +static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, uintptr_t num, uintptr_t retaddr) { s32 alloc_size = MEM_ALLOC_SIZE(size); struct memory_block *block = heap_ptr; do { - if(!block->flag && block->size >= alloc_size) { - if(block->size-alloc_size > 32u) { - struct memory_block *new_block = (struct memory_block *)(((u32)block)+alloc_size); - new_block->size = block->size-alloc_size; + if (!block->flag && block->size >= alloc_size) { + if (block->size - alloc_size > BLOCK_ALIGNMENT) { +#ifdef TARGET_PC + 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 + new_block->size = block->size - alloc_size; new_block->magic = 205; new_block->flag = 0; new_block->retaddr = retaddr; @@ -66,50 +78,49 @@ static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, u32 num, u32 retaddr) return BLOCK_GET_DATA(block); } block = block->next; - } while(block != heap_ptr); + } while (block != heap_ptr); OSReport("HuMem>memory alloc error %08x(%08X): Call %08x\n", size, num, retaddr); HuMemHeapDump(heap_ptr, -1); return NULL; } -void HuMemMemoryFreeNum(void *heap_ptr, u32 num, u32 retaddr) +void HuMemMemoryFreeNum(void *heap_ptr, uintptr_t num, uintptr_t retaddr) { struct memory_block *block = heap_ptr; do { struct memory_block *block_next = block->next; - if(block->flag && block->num == num) { + if (block->flag && block->num == num) { HuMemMemoryFree(BLOCK_GET_DATA(block), retaddr); } block = block_next; - } while(block != heap_ptr); - + } while (block != heap_ptr); } -static void HuMemTailMemoryAlloc2() //Required for string literal +static void HuMemTailMemoryAlloc2() // Required for string literal { OSReport("memory allocation(tail) error.\n"); } -void HuMemMemoryFree(void *ptr, u32 retaddr) +void HuMemMemoryFree(void *ptr, uintptr_t retaddr) { struct memory_block *block; - if(!ptr) { + if (!ptr) { return; } block = DATA_GET_BLOCK(ptr); - if(block->magic != 165) { + if (block->magic != 165) { OSReport("HuMem>memory free error. %08x( call %08x)\n", ptr, retaddr); return; } - if(block->prev < block && !block->prev->flag) { - block->flag = 0; + if (block->prev < block && !block->prev->flag) { + block->flag = 0; block->magic = 205; block->next->prev = block->prev; block->prev->next = block->next; block->prev->size += block->size; block = block->prev; } - if(block->next > block && !block->next->flag) { + if (block->next > block && !block->next->flag) { block->next->next->prev = block; block->size += block->next->size; block->next = block->next->next; @@ -124,11 +135,11 @@ s32 HuMemUsedMemorySizeGet(void *heap_ptr) struct memory_block *block = heap_ptr; s32 size = 0; do { - if(block->flag == 1) { + if (block->flag == 1) { size += block->size; } block = block->next; - } while(block != heap_ptr); + } while (block != heap_ptr); return size; } @@ -137,11 +148,11 @@ s32 HuMemUsedMemoryBlockGet(void *heap_ptr) struct memory_block *block = heap_ptr; s32 num_blocks = 0; do { - if(block->flag == 1) { + if (block->flag == 1) { num_blocks++; } block = block->next; - } while(block != heap_ptr); + } while (block != heap_ptr); return num_blocks; } @@ -159,45 +170,49 @@ void HuMemHeapDump(void *heap_ptr, s16 status) s32 num_unused_blocks = 0; u8 dump_type; - if(status < 0) { + if (status < 0) { dump_type = 10; - } else if(status == 0) { + } + else if (status == 0) { dump_type = 0; - } else { + } + else { dump_type = 1; } OSReport("======== HuMem heap dump %08x ========\n", heap_ptr); OSReport("MCB-----+Size----+MG+FL+Prev----+Next----+UNum----+Body----+Call----\n"); do { - if(dump_type == 10 || block->flag == dump_type) { - OSReport("%08x %08x %02x %02x %08x %08x %08x %08x %08x\n", block, block->size, block->magic, block->flag, - block->prev, block->next, block->num, BLOCK_GET_DATA(block), block->retaddr); + if (dump_type == 10 || block->flag == dump_type) { + OSReport("%08x %08x %02x %02x %08x %08x %08x %08x %08x\n", block, block->size, block->magic, block->flag, block->prev, block->next, + block->num, BLOCK_GET_DATA(block), block->retaddr); } - if(block->flag == 1) { + if (block->flag == 1) { size += block->size; num_blocks++; - } else { + } + else { inactive_size += block->size; num_unused_blocks++; } - + block = block->next; - } while(block != heap_ptr); - OSReport("MCB:%d(%d/%d) MEM:%08x(%08x/%08x)\n", num_blocks+num_unused_blocks, num_blocks, num_unused_blocks, - size+inactive_size, size, inactive_size); + } while (block != heap_ptr); + OSReport("MCB:%d(%d/%d) MEM:%08x(%08x/%08x)\n", num_blocks + num_unused_blocks, num_blocks, num_unused_blocks, size + inactive_size, size, + inactive_size); OSReport("======== HuMem heap dump %08x end =====\n", heap_ptr); } s32 HuMemMemorySizeGet(void *ptr) { struct memory_block *block; - if(!ptr) { + if (!ptr) { return 0; } block = DATA_GET_BLOCK(ptr); - if(block->flag == 1 && block->magic == 165) { - return block->size-32; - } else { + if (block->flag == 1 && block->magic == 165) { + return block->size - BLOCK_ALIGNMENT; + } + else { return 0; } } diff --git a/src/game/messdata.c b/src/game/messdata.c index b2d2c25a..b106d259 100644 --- a/src/game/messdata.c +++ b/src/game/messdata.c @@ -1,5 +1,7 @@ #include "dolphin.h" +#include + static void *MessData_MesDataGet(void *messdata, u32 id) { s32 i; @@ -7,22 +9,50 @@ static void *MessData_MesDataGet(void *messdata, u32 id) u16 *banks; u16 bank; s32 *data; +#ifdef TARGET_PC + s32 ofs; + u16 bank_pc; +#endif bank = id >> 16; data = messdata; max_bank = *data; +#ifdef TARGET_PC + byteswap_s32(&max_bank); +#endif data++; +#ifdef TARGET_PC + ofs = *data; + byteswap_s32(&ofs); + banks = (u16 *)(((u8 *)messdata) + ofs); +#else banks = (u16 *)(((u8 *)messdata)+(*data)); - for(i=max_bank; i != 0; i--, banks += 2) { +#endif + for(i = max_bank; i != 0; i--, banks += 2) { +#ifdef TARGET_PC + bank_pc = *banks; + byteswap_u16(&bank_pc); + if(bank_pc == bank) { + break; + } +#else if(*banks == bank) { break; } +#endif } - if(i == 0) { + if (i == 0) { return NULL; - } else { - data += banks[1]; - return (((u8 *)messdata)+(*data)); } +#ifdef TARGET_PC + bank_pc = banks[1]; + byteswap_u16(&bank_pc); + ofs = data[bank_pc]; + byteswap_s32(&ofs); + return (((u8 *)messdata) + ofs); +#else + data += banks[1]; + return (((u8 *)messdata) + (*data)); +#endif } static void *_MessData_MesPtrGet(void *messbank, u32 id) @@ -30,16 +60,28 @@ static void *_MessData_MesPtrGet(void *messbank, u32 id) u16 index; s32 max_index; s32 *data; - +#ifdef TARGET_PC + s32 ofs; +#endif + index = id & 0xFFFF; data = messbank; max_index = *data; +#if TARGET_PC + byteswap_s32(&max_index); +#endif data++; if(max_index <= index) { return NULL; } else { data = data+index; +#ifdef TARGET_PC + ofs = *data; + byteswap_s32(&ofs); + return (((u8 *)messbank)+(ofs)); +#else return (((u8 *)messbank)+(*data)); +#endif } } diff --git a/src/game/minigame_seq.c b/src/game/minigame_seq.c index f74d4bf4..c0dd07a7 100644 --- a/src/game/minigame_seq.c +++ b/src/game/minigame_seq.c @@ -1,4 +1,5 @@ #include "game/armem.h" +#include "game/audio.h" #include "game/disp.h" #include "game/gamework_data.h" #include "game/hsfman.h" @@ -33,7 +34,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 }, @@ -752,7 +753,7 @@ static char seqFontKanaTbl[] = { "アイウエオカキク" static char seqFontNumTbl[] = "0123456789"; -static s32 *letterBufTbl[5] = {}; +static s32 *letterBufTbl[5] = {NULL, NULL, NULL, NULL, NULL}; static char wordStartE[] = "START!"; diff --git a/src/game/objdll.c b/src/game/objdll.c index c1414129..4ba3a938 100644 --- a/src/game/objdll.c +++ b/src/game/objdll.c @@ -5,6 +5,10 @@ typedef s32 (*DLLProlog)(void); typedef void (*DLLEpilog)(void); +#ifdef TARGET_PC +typedef void (*DLLObjectSetup)(void); +#endif + omDllData *omDLLinfoTbl[OM_DLL_MAX]; static FileListEntry *omDLLFileList; @@ -31,6 +35,9 @@ s32 omDLLStart(s16 overlay, s16 flag) dllno = omDLLSearch(overlay); if(dllno >= 0 && !flag) { omDllData *dll = omDLLinfoTbl[dllno]; +#ifdef TARGET_PC + OSReport("objdll>Already Loaded %s\n", dll->name); +#else OSReport("objdll>Already Loaded %s(%08x %08x)\n", dll->name, dll->module, dll->bss); omDLLInfoDump(&dll->module->info); @@ -38,6 +45,7 @@ s32 omDLLStart(s16 overlay, s16 flag) memset(dll->bss, 0, dll->module->bssSize); HuMemDCFlushAll(); dll->ret = ((DLLProlog)dll->module->prolog)(); +#endif OSReport("objdll> %s prolog end\n", dll->name); return dllno; } else { @@ -80,8 +88,10 @@ void omDLLEnd(s16 dllno, s16 flag) } else { omDllData *dll; dll = omDLLinfoTbl[dllno]; +#ifdef __MWERKS__ OSReport("objdll>Call Epilog\n"); ((DLLEpilog)dll->module->epilog)(); +#endif OSReport("objdll>End DLL stayed:%s\n", omDLLinfoTbl[dllno]->name); } OSReport("objdll>End DLL finish\n"); @@ -95,6 +105,12 @@ omDllData *omDLLLink(omDllData **dll_ptr, s16 overlay, s16 flag) dll = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(omDllData)); *dll_ptr = dll; dll->name = dllFile->name; +#ifdef _WIN32 + dll->hModule = LoadLibrary(dllFile->name); + if (dll->hModule == NULL) { + OSReport("objdll>++++++++++++++++ DLL Link Failed\n"); + } +#else dll->module = HuDvdDataReadDirect(dllFile->name, HEAP_SYSTEM); dll->bss = HuMemDirectMalloc(HEAP_SYSTEM, dll->module->bssSize); if(OSLink(&dll->module->info, dll->bss) != TRUE) { @@ -103,9 +119,17 @@ omDllData *omDLLLink(omDllData **dll_ptr, s16 overlay, s16 flag) omDLLInfoDump(&dll->module->info); omDLLHeaderDump(dll->module); OSReport("objdll>LinkOK %08x %08x\n", dll->module, dll->bss); +#endif if(flag == 1) { OSReport("objdll> %s prolog start\n", dllFile->name); +#ifdef _WIN32 + { + DLLObjectSetup objectSetup = (DLLObjectSetup)GetProcAddress(dll->hModule, "ObjectSetup"); + objectSetup(); + } +#else dll->ret = ((DLLProlog)dll->module->prolog)(); +#endif OSReport("objdll> %s prolog end\n", dllFile->name); } return dll; @@ -114,6 +138,9 @@ omDllData *omDLLLink(omDllData **dll_ptr, s16 overlay, s16 flag) void omDLLUnlink(omDllData *dll_ptr, s16 flag) { OSReport("odjdll>Unlink DLL:%s\n", dll_ptr->name); +#ifdef _WIN32 + FreeLibrary(dll_ptr->hModule); +#else if(flag == 1) { OSReport("objdll>Unlink DLL epilog\n"); ((DLLEpilog)dll_ptr->module->epilog)(); @@ -124,6 +151,7 @@ void omDLLUnlink(omDllData *dll_ptr, s16 flag) } HuMemDirectFree(dll_ptr->bss); HuMemDirectFree(dll_ptr->module); +#endif HuMemDirectFree(dll_ptr); } @@ -169,4 +197,4 @@ void omDLLHeaderDump(OSModuleHeader *module) OSReport(" epilog func:0x%08x\n", module->epilog); OSReport(" unresolved func:0x%08x\n", module->unresolved); OSReport("================================\n"); -} \ No newline at end of file +} diff --git a/src/game/objmain.c b/src/game/objmain.c index 39bc9e12..55abeee3 100644 --- a/src/game/objmain.c +++ b/src/game/objmain.c @@ -1,12 +1,16 @@ #include "game/audio.h" #include "game/chrman.h" #include "game/esprite.h" +#include "game/flag.h" #include "game/hsfdraw.h" #include "game/hsfman.h" -#include "game/printfunc.h" #include "game/object.h" +#include #include "game/pad.h" -#include "game/flag.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 @@ -33,17 +37,22 @@ typedef struct om_obj_man { omObjData *omDBGSysKeyObj; Process *omwatchproc; OverlayID omnextovl; -OverlayID omcurovl; +SHARED_SYM OverlayID omcurovl; s32 omcurdll; -s32 omovlhisidx; -s32 omovlevtno; +SHARED_SYM s32 omovlhisidx; +SHARED_SYM s32 omovlevtno; s32 omnextovlevtno; -u32 omovlstat; +SHARED_SYM u32 omovlstat; static s32 omnextovlstat; char omUPauseFlag; -s16 omSysExitReq; +SHARED_SYM s16 omSysExitReq; s16 omdispinfo; +#ifdef TARGET_PC +OverlayID pcOvlToKill = OVL_INVALID; +s16 pcOvlKillArg = 0; +#endif + static omOvlHisData omovlhis[OM_OVL_HIS_MAX]; u8 omSysPauseEnableFlag = TRUE; @@ -66,9 +75,15 @@ void omMasterInit(s32 prio, FileListEntry *ovl_list, s32 ovl_count, OverlayID st static void omWatchOverlayProc(void) { - while(1) { - if(omcurovl == OVL_INVALID) { - if(omnextovl >= 0 && fadeStat == 0) { + 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); HuMemHeapDump(HuMemHeapPtrGet(HEAP_SYSTEM), -1); @@ -85,22 +100,25 @@ static void omWatchOverlayProc(void) omovlevtno = omnextovlevtno; omovlstat = omnextovlstat; omnextovl = OVL_INVALID; - if(_CheckFlag(FLAG_ID_MAKE(1, 12))) { + if (_CheckFlag(FLAG_ID_MAKE(1, 12))) { MGSeqPracticeInit(); } omSysPauseEnable(TRUE); omcurdll = omDLLStart(omcurovl, 0); OSReport("objman>ObjectSetup end\n"); - if(omcurovl != OVL_INVALID) { + if (omcurovl != OVL_INVALID) { goto watch_child; - } else { + } + else { continue; } - } else { + } + else { HuPrcVSleep(); } - } else { - watch_child: + } + else { + watch_child: HuPrcChildWatch(); } } @@ -109,20 +127,21 @@ static void omWatchOverlayProc(void) void omOvlCallEx(OverlayID overlay, s16 arg2, s32 event, s32 stat) { OSReport("objman>Call New Ovl %d(%d)\n", overlay, arg2); - if(omovlhisidx >= OM_OVL_HIS_MAX) { + if (omovlhisidx >= OM_OVL_HIS_MAX) { OSReport("objman>OVL Call over error\n"); return; } omovlhis[++omovlhisidx].overlay = overlay; omovlhis[omovlhisidx].event = event; omovlhis[omovlhisidx].stat = stat; + omOvlGotoEx(overlay, arg2, event, stat); } void omOvlGotoEx(OverlayID overlay, s16 arg2, s32 event, s32 stat) { omprevovl = omcurovl; - if(omcurovl >= 0) { + if (omcurovl >= 0) { omOvlKill(arg2); } omnextovl = overlay; @@ -134,7 +153,7 @@ void omOvlReturnEx(s16 level, s16 arg2) { omovlhisidx -= level; OSReport("objman>Ovl Return %d=%d(%d)\n", level, omovlhisidx, arg2); - if(omovlhisidx < 0) { + if (omovlhisidx < 0) { OSReport("objman>OVL under error\n"); omovlhisidx = 0; } @@ -157,7 +176,13 @@ void omOvlKill(s16 arg) HuAudFXListnerKill(); 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; } @@ -165,11 +190,11 @@ void omOvlKill(s16 arg) void omOvlHisChg(s32 level, OverlayID overlay, s32 event, s32 stat) { omOvlHisData *history; - if(omovlhisidx-level < 0 || omovlhisidx-level >= OM_OVL_HIS_MAX) { + if (omovlhisidx - level < 0 || omovlhisidx - level >= OM_OVL_HIS_MAX) { OSReport("objman> omOvlHisChg: overlay 実行履歴の範囲外を変更しようとしました\n"); return; } - history = &omovlhis[omovlhisidx-level]; + history = &omovlhis[omovlhisidx - level]; history->overlay = overlay; history->event = event; history->stat = stat; @@ -177,11 +202,11 @@ void omOvlHisChg(s32 level, OverlayID overlay, s32 event, s32 stat) omOvlHisData *omOvlHisGet(s32 level) { - if(omovlhisidx-level < 0 || omovlhisidx-level >= OM_OVL_HIS_MAX) { + if (omovlhisidx - level < 0 || omovlhisidx - level >= OM_OVL_HIS_MAX) { OSReport("objman> omOvlHisGet: overlay 実行履歴の範囲外を参照しようとしました\n"); return NULL; } - return &omovlhis[omovlhisidx-level]; + return &omovlhis[omovlhisidx - level]; } Process *omInitObjMan(s16 max_objs, s32 prio) @@ -196,7 +221,7 @@ Process *omInitObjMan(s16 max_objs, s32 prio) max_objs += 2; omSysExitReq = FALSE; process = HuPrcChildCreate(omMain, prio, 16384, 0, omwatchproc); - HuPrcSetStat(process, PROCESS_STAT_PAUSE_EN|PROCESS_STAT_UPAUSE_EN); + HuPrcSetStat(process, PROCESS_STAT_PAUSE_EN | PROCESS_STAT_UPAUSE_EN); objman = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(omObjMan), MEMORY_DEFAULT_NUM); objman->max_objs = max_objs; process->user_data = objman; @@ -205,24 +230,24 @@ Process *omInitObjMan(s16 max_objs, s32 prio) objman->next_idx = 0; objman->obj_last = -1; objman->obj_first = -1; - obj_all = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(omObjData), MEMORY_DEFAULT_NUM); - objman->obj = obj_all; - group_all = HuMemDirectMallocNum(HEAP_SYSTEM, OM_MAX_GROUPS*sizeof(omObjGroup), MEMORY_DEFAULT_NUM); + obj_all = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs * sizeof(omObjData), MEMORY_DEFAULT_NUM); + objman->obj = obj_all; + group_all = HuMemDirectMallocNum(HEAP_SYSTEM, OM_MAX_GROUPS * sizeof(omObjGroup), MEMORY_DEFAULT_NUM); objman->group = group_all; - for(i=0; istat = 1; - obj->prio = obj->prev =obj->next = -1; + obj->prio = obj->prev = obj->next = -1; obj->unk10 = 0; obj->trans.x = obj->trans.y = obj->trans.z = obj->rot.x = obj->rot.y = obj->rot.z = 0.0f; obj->scale.x = obj->scale.y = obj->scale.z = 1.0f; obj->model = obj->motion = NULL; obj->func = obj->data = NULL; - obj->next_idx = i+1; + obj->next_idx = i + 1; obj->mtncnt = 0; obj->motion = NULL; } - for(i=0; iDestory 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; s16 next_idx; omObjMan *objman = objman_process->user_data; omObjData *obj_base = objman->obj; - if(objman->num_objs == objman->max_objs) { + if (objman->num_objs == objman->max_objs) { return NULL; } next_idx = objman->next_idx; @@ -258,26 +283,29 @@ omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt, object->next_idx_alloc = next_idx; object->prio = prio; omInsertObj(objman_process, object); - if(mdlcnt) { - object->model = HuMemDirectMallocNum(HEAP_SYSTEM, mdlcnt*sizeof(s16), MEMORY_DEFAULT_NUM); + if (mdlcnt) { + object->model = HuMemDirectMallocNum(HEAP_SYSTEM, mdlcnt * sizeof(s16), MEMORY_DEFAULT_NUM); object->mdlcnt = mdlcnt; - for(i=0; imodel[i] = -1; } - } else { + } + else { object->model = NULL; object->mdlcnt = 0; } - if(mtncnt) { - object->motion = HuMemDirectMallocNum(HEAP_SYSTEM, mtncnt*sizeof(s16), MEMORY_DEFAULT_NUM); + if (mtncnt) { + object->motion = HuMemDirectMallocNum(HEAP_SYSTEM, mtncnt * sizeof(s16), MEMORY_DEFAULT_NUM); object->mtncnt = mtncnt; - } else { + } + else { object->motion = NULL; object->mtncnt = 0; } - if(group >= 0) { + if (group >= 0) { omAddMember(objman_process, group, object); - } else { + } + else { object->group = group; object->group_idx = 0; } @@ -302,31 +330,33 @@ static void omInsertObj(Process *objman_process, omObjData *object) s16 prio = object->prio; s16 obj_idx; s16 prev_idx; - if(objman->obj_first == -1) { + if (objman->obj_first == -1) { object->prev = -1; object->next = -1; objman->obj_first = next_idx_alloc; objman->obj_last = next_idx_alloc; - (void)objman; //HACK for matching + (void)objman; // HACK for matching return; } - for(obj_idx = objman->obj_first; obj_idx != -1; obj_idx = obj_new->next) { + for (obj_idx = objman->obj_first; obj_idx != -1; obj_idx = obj_new->next) { obj_new = &obj_all[obj_idx]; - if(obj_new->prio <= prio) { + if (obj_new->prio <= prio) { break; } prev_idx = obj_idx; } - if(obj_idx != -1) { + if (obj_idx != -1) { object->prev = obj_new->prev; object->next = obj_idx; - if(obj_new->prev != -1) { + if (obj_new->prev != -1) { obj_all[obj_new->prev].next = next_idx_alloc; - } else { + } + else { objman->obj_first = next_idx_alloc; } obj_new->prev = next_idx_alloc; - } else { + } + else { object->next = -1; object->prev = prev_idx; obj_new->next = next_idx_alloc; @@ -338,7 +368,7 @@ void omAddMember(Process *objman_process, u16 group, omObjData *object) { omObjMan *objman = objman_process->user_data; omObjGroup *group_ptr = &objman->group[group]; - if(group_ptr->num_objs != group_ptr->max_objs) { + if (group_ptr->num_objs != group_ptr->max_objs) { object->group = group; object->group_idx = group_ptr->next_idx; group_ptr->obj[group_ptr->next_idx] = object; @@ -352,40 +382,41 @@ void omDelObjEx(Process *objman_process, omObjData *object) omObjMan *objman = objman_process->user_data; omObjData *obj_all = objman->obj; s16 next_idx_alloc = object->next_idx_alloc; - if(objman->num_objs == 0 || object->stat == 1) { + if (objman->num_objs == 0 || object->stat == 1) { return; } objman->num_objs--; - if(object->group >= 0) { + if (object->group >= 0) { omDelMember(objman_process, object); } - if(object->motion != NULL) { + if (object->motion != NULL) { HuMemDirectFree(object->motion); object->motion = NULL; } - if(object->model != NULL) { + if (object->model != NULL) { HuMemDirectFree(object->model); object->model = NULL; } - if(object->data != NULL) { + if (object->data != NULL) { HuMemDirectFree(object->data); object->data = NULL; } object->stat = OM_STAT_DELETED; - if(object->next >= 0) { + if (object->next >= 0) { obj_all[object->next].prev = object->prev; } - if(object->prev >= 0) { + if (object->prev >= 0) { obj_all[object->prev].next = object->next; } - if(objman->num_objs != 0) { - if(object->prev < 0) { + if (objman->num_objs != 0) { + if (object->prev < 0) { objman->obj_first = obj_all[object->next].next_idx_alloc; } - if(object->next < 0) { + if (object->next < 0) { objman->obj_last = obj_all[object->prev].next_idx_alloc; } - } else { + } + else { objman->obj_first = objman->obj_last = -1; } object->next_idx = objman->next_idx; @@ -394,7 +425,7 @@ void omDelObjEx(Process *objman_process, omObjData *object) void omDelMember(Process *objman_process, omObjData *object) { - if(object->group != -1) { + if (object->group != -1) { omObjMan *objman = objman_process->user_data; omObjData *obj_all = objman->obj; omObjGroup *group = &objman->group[object->group]; @@ -411,20 +442,20 @@ void omMakeGroupEx(Process *objman_process, u16 group, u16 max_objs) s32 i; omObjMan *objman = objman_process->user_data; omObjGroup *group_ptr = &objman->group[group]; - if(group_ptr->obj != NULL) { + if (group_ptr->obj != NULL) { HuMemDirectFree(group_ptr->obj); } - if(group_ptr->next != NULL) { + if (group_ptr->next != NULL) { HuMemDirectFree(group_ptr->next); } group_ptr->next_idx = 0; group_ptr->max_objs = max_objs; group_ptr->num_objs = 0; - group_ptr->obj = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(omObjData *), MEMORY_DEFAULT_NUM); - group_ptr->next = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(u16), MEMORY_DEFAULT_NUM); - for(i=0; iobj = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs * sizeof(omObjData *), MEMORY_DEFAULT_NUM); + group_ptr->next = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs * sizeof(u16), MEMORY_DEFAULT_NUM); + for (i = 0; i < max_objs; i++) { group_ptr->obj[i] = NULL; - group_ptr->next[i] = i+1; + group_ptr->next[i] = i + 1; } } @@ -473,38 +504,38 @@ void omMain(void) omObjData *object; s16 obj_index; omDLLDBGOut(); - while(1) { - if(omdispinfo) { + while (1) { + if (omdispinfo) { float scale = 1.5f; GXColor color; color.a = 96; color.r = 0; color.g = 0; color.b = 255; - printWin(7, 23, 128*scale, 40*scale, &color); + printWin(7, 23, 128 * scale, 40 * scale, &color); fontcolor = FONT_COLOR_YELLOW; print8(8, 24, scale, "\xFD\x01H:%08lX(%ld)", HuMemUsedMallocSizeGet(HEAP_SYSTEM), HuMemUsedMallocBlockGet(HEAP_SYSTEM)); - print8(8, 24+(8*scale), scale, "\xFD\x01M:%08lX(%ld)", HuMemUsedMallocSizeGet(HEAP_DATA), HuMemUsedMallocBlockGet(HEAP_DATA)); - print8(8, 24+(16*scale), scale, "\xFD\x01OBJ:%d/%d", objman->num_objs, objman->max_objs); - print8(8, 24+(24*scale), scale, "\xFD\x01OVL:%ld(%ld<%ld)", omovlhisidx, omcurovl, omprevovl); - print8(8, 24+(32*scale), scale, "\xFD\x01POL:%ld", totalPolyCnted); + print8(8, 24 + (8 * scale), scale, "\xFD\x01M:%08lX(%ld)", HuMemUsedMallocSizeGet(HEAP_DATA), HuMemUsedMallocBlockGet(HEAP_DATA)); + print8(8, 24 + (16 * scale), scale, "\xFD\x01OBJ:%d/%d", objman->num_objs, objman->max_objs); + print8(8, 24 + (24 * scale), scale, "\xFD\x01OVL:%ld(%ld<%ld)", omovlhisidx, omcurovl, omprevovl); + print8(8, 24 + (32 * scale), scale, "\xFD\x01POL:%ld", totalPolyCnted); } obj_index = objman->obj_last; - while(obj_index != -1) { + while (obj_index != -1) { object = &obj_all[obj_index]; obj_index = object->prev; - if((object->stat & (OM_STAT_DELETED|OM_STAT_DISABLED)) == 0) { - if(object->func != NULL && (object->stat & (0x40|0x8|OM_STAT_PAUSED)) == 0) { + if ((object->stat & (OM_STAT_DELETED | OM_STAT_DISABLED)) == 0) { + if (object->func != NULL && (object->stat & (0x40 | 0x8 | OM_STAT_PAUSED)) == 0) { object->func(object); } - if(omcurovl == -1 || objman->obj_last == -1) { + if (omcurovl == -1 || objman->obj_last == -1) { break; } - if((object->stat & (OM_STAT_DELETED|OM_STAT_DISABLED)) == 0) { - if((obj_all[obj_index].stat & (OM_STAT_DELETED|OM_STAT_DISABLED)) != 0) { + if ((object->stat & (OM_STAT_DELETED | OM_STAT_DISABLED)) == 0) { + if ((obj_all[obj_index].stat & (OM_STAT_DELETED | OM_STAT_DISABLED)) != 0) { obj_index = object->prev; } - if(object->model != NULL && object->model[0] != -1 && !(object->stat & OM_STAT_MODEL_PAUSED)) { + if (object->model != NULL && object->model[0] != -1 && !(object->stat & OM_STAT_MODEL_PAUSED)) { Hu3DModelPosSet(object->model[0], object->trans.x, object->trans.y, object->trans.z); Hu3DModelRotSet(object->model[0], object->rot.x, object->rot.y, object->rot.z); Hu3DModelScaleSet(object->model[0], object->scale.x, object->scale.y, object->scale.z); @@ -516,7 +547,7 @@ void omMain(void) } } -//Dummy function to force string literals in binary +// Dummy function to force string literals in binary static void omDumpObj(Process *objman_process) { omObjMan *objman = objman_process->user_data; @@ -524,14 +555,12 @@ static void omDumpObj(Process *objman_process) s32 i; OSReport("=================== 現在登録されている OBJECT ==================\n"); OSReport("STAT PRI GRPN MEMN PROG (TRA) (ROT) (SCA) mdlcnt mtncnt work[0] work[1] work[2] work[3] *data\n"); - for(i=0; imax_objs; i++) { + for (i = 0; i < objman->max_objs; i++) { omObjData *object = &obj_all[i]; - OSReport("%04d:%04X %04X %d %d %08X (%.2f %.2f %.2f) (%.2f %.2f %.2f) (%.2f %.2f %.2f) %d %d %08X %08X %08X %08X %08X\n", - object->stat, object->stat, object->prio, object->group, object->unk10, object->func, - object->trans.x, object->trans.y, object->trans.z, - object->rot.x, object->rot.y, object->rot.z, - object->scale.x, object->scale.y, object->scale.z, - object->mdlcnt, object->mtncnt, object->work[0], object->work[1], object->work[2], object->work[3], object->data); + OSReport("%04d:%04X %04X %d %d %08X (%.2f %.2f %.2f) (%.2f %.2f %.2f) (%.2f %.2f %.2f) %d %d %08X %08X %08X %08X %08X\n", object->stat, + object->stat, object->prio, object->group, object->unk10, object->func, object->trans.x, object->trans.y, object->trans.z, object->rot.x, + object->rot.y, object->rot.z, object->scale.x, object->scale.y, object->scale.z, object->mdlcnt, object->mtncnt, object->work[0], + object->work[1], object->work[2], object->work[3], object->data); } OSReport("================================================================\n"); } @@ -541,15 +570,16 @@ void omAllPause(BOOL pause) Process *objman_process = HuPrcCurrentGet(); omObjMan *objman = objman_process->user_data; s32 i; - if(pause) { - for(i=0; imax_objs; i++) { - if((objman->obj[i].stat & (OM_STAT_DELETED|OM_STAT_NOPAUSE)) == 0) { + if (pause) { + for (i = 0; i < objman->max_objs; i++) { + if ((objman->obj[i].stat & (OM_STAT_DELETED | OM_STAT_NOPAUSE)) == 0) { omSetStatBit(&objman->obj[i], OM_STAT_PAUSED); } } - } else { - for(i=0; imax_objs; i++) { - if((objman->obj[i].stat & (OM_STAT_DELETED|OM_STAT_NOPAUSE)) == 0) { + } + else { + for (i = 0; i < objman->max_objs; i++) { + if ((objman->obj[i].stat & (OM_STAT_DELETED | OM_STAT_NOPAUSE)) == 0) { omResetStatBit(&objman->obj[i], OM_STAT_PAUSED); } } @@ -558,9 +588,10 @@ void omAllPause(BOOL pause) char omPauseChk(void) { - if(omDBGSysKeyObj == NULL) { + if (omDBGSysKeyObj == NULL) { return 0; - } else { + } + else { return omDBGSysKeyObj->work[0] & 0x1; } } diff --git a/src/game/objsub.c b/src/game/objsub.c index b00631c4..faf45970 100644 --- a/src/game/objsub.c +++ b/src/game/objsub.c @@ -1,11 +1,13 @@ #include "game/objsub.h" #include "game/data.h" #include "game/gamework_data.h" +#include "game/hsfman.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 +1164,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 e64fdd34..b03102e9 100644 --- a/src/game/ovllist.c +++ b/src/game/ovllist.c @@ -1,11 +1,22 @@ #include "game/dvd.h" #include "game/object.h" -#define OVL_DEFINE(name, path) { path, 0 }, +#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 FileListEntry _ovltbl[OVL_COUNT+1] = { #include "ovl_table.h" { NULL, -1 } }; -#undef OVL_DEFINE \ No newline at end of file +#undef OVL_DEFINE diff --git a/src/game/pad.c b/src/game/pad.c index cded2f4f..1b828789 100644 --- a/src/game/pad.c +++ b/src/game/pad.c @@ -2,6 +2,9 @@ #include "game/msm.h" #include "game/pad.h" +#ifdef TARGET_PC +#include +#endif typedef struct pad_rumble { s16 duration; @@ -16,17 +19,17 @@ static void PadADConv(s16 pad, PADStatus *status); static int padStatErrOld[4]; static PadRumble rumbleData[4]; -u16 HuPadBtn[4]; -u16 HuPadBtnDown[4]; -u16 HuPadBtnRep[4]; -s8 HuPadStkX[4]; -s8 HuPadStkY[4]; -s8 HuPadSubStkX[4]; -s8 HuPadSubStkY[4]; -u8 HuPadTrigL[4]; -u8 HuPadTrigR[4]; -u8 HuPadDStk[4]; -u8 HuPadDStkRep[4]; +SHARED_SYM u16 HuPadBtn[4]; +SHARED_SYM u16 HuPadBtnDown[4]; +SHARED_SYM u16 HuPadBtnRep[4]; +SHARED_SYM s8 HuPadStkX[4]; +SHARED_SYM s8 HuPadStkY[4]; +SHARED_SYM s8 HuPadSubStkX[4]; +SHARED_SYM s8 HuPadSubStkY[4]; +SHARED_SYM u8 HuPadTrigL[4]; +SHARED_SYM u8 HuPadTrigR[4]; +SHARED_SYM u8 HuPadDStk[4]; +SHARED_SYM u8 HuPadDStkRep[4]; s8 HuPadErr[4]; u16 _PadBtn[4]; u16 _PadBtnDown[4]; @@ -254,4 +257,4 @@ s16 HuPadStatGet(s16 pad) u32 HuPadRumbleGet(void) { return RumbleBit; -} \ No newline at end of file +} diff --git a/src/game/printfunc.c b/src/game/printfunc.c index 4f85f5a9..a63b3c8b 100644 --- a/src/game/printfunc.c +++ b/src/game/printfunc.c @@ -1,10 +1,10 @@ -#include "dolphin.h" #include "game/printfunc.h" -#include "game/init.h" +#include "dolphin.h" #include "game/disp.h" +#include "game/init.h" -#include "stdio.h" #include "stdarg.h" +#include "stdio.h" extern u8 ank8x8_4b[]; @@ -24,38 +24,23 @@ 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; static void WireDraw(void); -static GXColor ATTRIBUTE_ALIGN(32) fcoltbl[16] = { - { 0, 0, 0, 255 }, - { 0, 0, 128, 255 }, - { 128, 0, 0, 255 }, - { 128, 0, 128, 255 }, - { 0, 128, 0, 255 }, - { 0, 128, 128, 255 }, - { 128, 128, 0, 255 }, - { 128, 128, 128, 255 }, - { 128, 128, 128, 128 }, - { 0, 0, 255, 255 }, - { 255, 0, 0, 255 }, - { 255, 0, 255, 255 }, - { 0, 255, 0, 255 }, - { 0, 255, 255, 255 }, - { 255, 255, 0, 255 }, - { 255, 255, 255, 255 } -}; +static GXColor ATTRIBUTE_ALIGN(32) fcoltbl[16] = { { 0, 0, 0, 255 }, { 0, 0, 128, 255 }, { 128, 0, 0, 255 }, { 128, 0, 128, 255 }, { 0, 128, 0, 255 }, + { 0, 128, 128, 255 }, { 128, 128, 0, 255 }, { 128, 128, 128, 255 }, { 128, 128, 128, 128 }, { 0, 0, 255, 255 }, { 255, 0, 0, 255 }, + { 255, 0, 255, 255 }, { 0, 255, 0, 255 }, { 0, 255, 255, 255 }, { 255, 255, 0, 255 }, { 255, 255, 255, 255 } }; void pfInit(void) { int i; fontcolor = 15; empstrline = 0; - + for (i = 0; i < 256; i++) { strline[i].str[0] = 0; } @@ -68,7 +53,7 @@ void pfClsScr(void) empstrline = 0; strlinecnt = 0; for (i = 0; i < 256; i++) { - strline[i].empstrline_next = i+1; + strline[i].empstrline_next = i + 1; strline[i].type = 0; if (strline[i].str[0] != 0) { strline[i].str[0] = 0; @@ -84,7 +69,7 @@ s16 print8(s16 x, s16 y, float scale, char *str, ...) s16 ret; va_list list; strline_curr = &strline[empstrline]; - if(strlinecnt >= 256) { + if (strlinecnt >= 256) { return -1; } va_start(list, str); @@ -98,7 +83,7 @@ s16 print8(s16 x, s16 y, float scale, char *str, ...) strline_curr->y = y; strline_curr->scale = scale; dst = strline_curr->str; - while(*src) { + while (*src) { *dst++ = *src++; } *dst = 0; @@ -112,7 +97,7 @@ s16 printWin(s16 x, s16 y, s16 w, s16 h, GXColor *color) s16 ret; char *src = pfStrBuf; strline_curr = &strline[empstrline]; - if(strlinecnt >= 256) { + if (strlinecnt >= 256) { return -1; } strlinecnt++; @@ -137,9 +122,9 @@ void pfDrawFonts(void) Mtx modelview; int i; s16 x, y, w, h; - + u16 strline_count = strlinecnt; - if(saftyFrameF) { + if (saftyFrameF) { WireDraw(); } MTXOrtho(proj, 0, HU_FB_HEIGHT, 0, HU_FB_WIDTH, 0, 10); @@ -156,7 +141,7 @@ void pfDrawFonts(void) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_CLR0, fcoltbl, sizeof(GXColor)); + GXSETARRAY(GX_VA_CLR0, fcoltbl, sizeof(fcoltbl), sizeof(GXColor)); GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE); GXInvalidateTexAll(); GXInitTexObj(&font_tex, ank8x8_4b, 128, 128, GX_TF_I4, GX_CLAMP, GX_CLAMP, GX_FALSE); @@ -173,10 +158,10 @@ void pfDrawFonts(void) GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); GXSetAlphaUpdate(GX_TRUE); - for(i=0; i<256; i++) { + for (i = 0; i < 256; i++) { x = strline[i].x; y = strline[i].y; - if(strline[i].type == 1) { + if (strline[i].type == 1) { w = strline[i].w; h = strline[i].h; GXClearVtxDesc(); @@ -192,9 +177,9 @@ void pfDrawFonts(void) GXSetNumTexGens(0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition2s16(x, y); - GXPosition2s16(x+w, y); - GXPosition2s16(x+w, y+h); - GXPosition2s16(x, y+h); + GXPosition2s16(x + w, y); + GXPosition2s16(x + w, y + h); + GXPosition2s16(x, y + h); GXEnd(); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); @@ -203,14 +188,15 @@ void pfDrawFonts(void) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_CLR0, fcoltbl, sizeof(GXColor)); + GXSETARRAY(GX_VA_CLR0, fcoltbl, sizeof(fcoltbl), sizeof(GXColor)); GXSetNumTevStages(1); GXSetNumTexGens(1); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); GXSetTevOp(GX_TEVSTAGE0, GX_MODULATE); - } else { - if(strline[i].str[0] != '\0') { + } + else { + if (strline[i].str[0] != '\0') { float shadow_ofs_x, shadow_ofs_y; float char_w; float char_h; @@ -219,79 +205,80 @@ void pfDrawFonts(void) u16 color; s16 shadow_color; float scale; - char_w = char_h = 8.0f*strline[i].scale; + char_w = char_h = 8.0f * strline[i].scale; str = strline[i].str; color = strline[i].color; shadow_color = -1; scale = 1.0f; - while(*str) { + while (*str) { char c = *str++; - switch(c) { + switch (c) { case 255: c = *str++; - scale = c/16.0f; - char_w = 8.0f*strline[i].scale*scale; - char_h = 8.0f*strline[i].scale*scale; + scale = c / 16.0f; + char_w = 8.0f * strline[i].scale * scale; + char_h = 8.0f * strline[i].scale * scale; break; - + case 254: - color = (*str++)-1; + color = (*str++) - 1; break; - + case 253: - shadow_color = (*str++)-1; - shadow_ofs_x = 1.3333333f*strline[i].scale*scale; - shadow_ofs_y = 1.3333333f*strline[i].scale*scale; + shadow_color = (*str++) - 1; + shadow_ofs_x = 1.3333333f * strline[i].scale * scale; + shadow_ofs_y = 1.3333333f * strline[i].scale * scale; break; - + default: - texcoord_x = (c%16)/16.0f; - texcoord_y = ((c/16)/16.0f)+(1/128.0f); - if(shadow_color < 0) { + texcoord_x = (c % 16) / 16.0f; + texcoord_y = ((c / 16) / 16.0f) + (1 / 128.0f); + if (shadow_color < 0) { GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3s16(x, y, 0); GXColor1x8(color); GXTexCoord2f32(texcoord_x, texcoord_y); - GXPosition3s16(x+char_w, y, 0); + GXPosition3s16(x + char_w, y, 0); GXColor1x8(color); - GXTexCoord2f32(texcoord_x+(1/16.0f), texcoord_y); - GXPosition3s16(x+char_w, y+char_h, 0); + GXTexCoord2f32(texcoord_x + (1 / 16.0f), texcoord_y); + GXPosition3s16(x + char_w, y + char_h, 0); GXColor1x8(color); - GXTexCoord2f32(texcoord_x+(1/16.0f), texcoord_y+(1/16.0f)); - GXPosition3s16(x, y+char_h, 0); + GXTexCoord2f32(texcoord_x + (1 / 16.0f), texcoord_y + (1 / 16.0f)); + GXPosition3s16(x, y + char_h, 0); GXColor1x8(color); - GXTexCoord2f32(texcoord_x, texcoord_y+(1/16.0f)); + GXTexCoord2f32(texcoord_x, texcoord_y + (1 / 16.0f)); GXEnd(); - } else { + } + else { GXBegin(GX_QUADS, GX_VTXFMT0, 8); - GXPosition3s16(x+shadow_ofs_x, y+shadow_ofs_y, 0); + GXPosition3s16(x + shadow_ofs_x, y + shadow_ofs_y, 0); GXColor1x8(shadow_color); GXTexCoord2f32(texcoord_x, texcoord_y); - GXPosition3s16(x+char_w+shadow_ofs_x, y+shadow_ofs_y, 0); + GXPosition3s16(x + char_w + shadow_ofs_x, y + shadow_ofs_y, 0); GXColor1x8(shadow_color); - GXTexCoord2f32(texcoord_x+(1/16.0f), texcoord_y); - GXPosition3s16(x+char_w+shadow_ofs_x, y+char_h+shadow_ofs_y, 0); + GXTexCoord2f32(texcoord_x + (1 / 16.0f), texcoord_y); + GXPosition3s16(x + char_w + shadow_ofs_x, y + char_h + shadow_ofs_y, 0); GXColor1x8(shadow_color); - GXTexCoord2f32(texcoord_x+(1/16.0f), texcoord_y+(1/16.0f)); - GXPosition3s16(x+shadow_ofs_x, y+char_h+shadow_ofs_y, 0); + GXTexCoord2f32(texcoord_x + (1 / 16.0f), texcoord_y + (1 / 16.0f)); + GXPosition3s16(x + shadow_ofs_x, y + char_h + shadow_ofs_y, 0); GXColor1x8(shadow_color); - GXTexCoord2f32(texcoord_x, texcoord_y+(1/16.0f)); + GXTexCoord2f32(texcoord_x, texcoord_y + (1 / 16.0f)); GXPosition3s16(x, y, 0); GXColor1x8(color); GXTexCoord2f32(texcoord_x, texcoord_y); - GXPosition3s16(x+char_w, y, 0); + GXPosition3s16(x + char_w, y, 0); GXColor1x8(color); - GXTexCoord2f32(texcoord_x+(1/16.0f), texcoord_y); - GXPosition3s16(x+char_w, y+char_h, 0); + GXTexCoord2f32(texcoord_x + (1 / 16.0f), texcoord_y); + GXPosition3s16(x + char_w, y + char_h, 0); GXColor1x8(color); - GXTexCoord2f32(texcoord_x+(1/16.0f), texcoord_y+(1/16.0f)); - GXPosition3s16(x, y+char_h, 0); + GXTexCoord2f32(texcoord_x + (1 / 16.0f), texcoord_y + (1 / 16.0f)); + GXPosition3s16(x, y + char_h, 0); GXColor1x8(color); - GXTexCoord2f32(texcoord_x, texcoord_y+(1/16.0f)); + GXTexCoord2f32(texcoord_x, texcoord_y + (1 / 16.0f)); GXEnd(); } x += char_w; - if(x > HU_FB_WIDTH) { + if (x > HU_FB_WIDTH) { x = 0; y += char_h; } @@ -301,6 +288,9 @@ void pfDrawFonts(void) } } } +#ifdef TARGET_PC + GXDestroyTexObj(&font_tex); +#endif } #define SAFETY_W 16 @@ -312,9 +302,10 @@ static void WireDraw(void) Mtx modelview; MTXOrtho(proj, 0, HU_DISP_HEIGHT, 0, HU_DISP_WIDTH, 0, 10); GXSetProjection(proj, GX_ORTHOGRAPHIC); - if(RenderMode->field_rendering) { + if (RenderMode->field_rendering) { GXSetViewportJitter(0, 0, HU_FB_WIDTH, HU_FB_HEIGHT, 0, 1, VIGetNextField()); - } else { + } + else { GXSetViewport(0, 0, HU_FB_WIDTH, HU_FB_HEIGHT, 0, 1); } GXSetScissor(0, 0, HU_FB_WIDTH, HU_FB_HEIGHT); @@ -338,19 +329,19 @@ static void WireDraw(void) GXBegin(GX_LINES, 0, 8); GXPosition2f32(SAFETY_W, SAFETY_H); GXColor3u8(255, 0, 0); - GXPosition2f32(SAFETY_W, HU_DISP_HEIGHT-SAFETY_H); + GXPosition2f32(SAFETY_W, HU_DISP_HEIGHT - SAFETY_H); GXColor3u8(255, 0, 0); GXPosition2f32(SAFETY_W, SAFETY_H); GXColor3u8(255, 0, 0); - GXPosition2f32(HU_DISP_WIDTH-SAFETY_W, SAFETY_H); + GXPosition2f32(HU_DISP_WIDTH - SAFETY_W, SAFETY_H); GXColor3u8(255, 0, 0); - GXPosition2f32(HU_DISP_WIDTH-SAFETY_W, HU_DISP_HEIGHT-SAFETY_H); + GXPosition2f32(HU_DISP_WIDTH - SAFETY_W, HU_DISP_HEIGHT - SAFETY_H); GXColor3u8(255, 0, 0); - GXPosition2f32(HU_DISP_WIDTH-SAFETY_W, SAFETY_H); + GXPosition2f32(HU_DISP_WIDTH - SAFETY_W, SAFETY_H); GXColor3u8(255, 0, 0); - GXPosition2f32(HU_DISP_WIDTH-SAFETY_W, HU_DISP_HEIGHT-SAFETY_H); + GXPosition2f32(HU_DISP_WIDTH - SAFETY_W, HU_DISP_HEIGHT - SAFETY_H); GXColor3u8(255, 0, 0); - GXPosition2f32(SAFETY_W, HU_DISP_HEIGHT-SAFETY_H); + GXPosition2f32(SAFETY_W, HU_DISP_HEIGHT - SAFETY_H); GXColor3u8(255, 0, 0); GXEnd(); } diff --git a/src/game/process.c b/src/game/process.c index b62b74fc..902eea3d 100644 --- a/src/game/process.c +++ b/src/game/process.c @@ -1,6 +1,10 @@ #include "game/process.h" -#include "game/memory.h" #include "dolphin/os.h" +#include "game/memory.h" + +#ifdef __MWERKS__ +#include "game/jmp.h" +#endif #define FAKE_RETADDR 0xA5A5A5A5 @@ -9,7 +13,12 @@ #define EXEC_CHILDWATCH 2 #define EXEC_KILLED 3 +#ifdef TARGET_PC +static cothread_t processthread; +static u8 thread_arg; +#else static jmp_buf processjmpbuf; +#endif static Process *processtop; static Process *processcur; static u16 processcnt; @@ -21,8 +30,9 @@ void HuPrcInit(void) processtop = NULL; } -static void LinkProcess(Process** root, Process* process) { - Process* src_process = *root; +static void LinkProcess(Process **root, Process *process) +{ + Process *src_process = *root; if (src_process && (src_process->prio >= process->prio)) { while (src_process->next && src_process->next->prio >= process->prio) { @@ -35,7 +45,8 @@ static void LinkProcess(Process** root, Process* process) { if (process->next) { process->next->prev = process; } - } else { + } + else { process->next = (*root); process->prev = NULL; *root = process; @@ -44,13 +55,15 @@ static void LinkProcess(Process** root, Process* process) { } } } -static void UnlinkProcess(Process **root, Process *process) { +static void UnlinkProcess(Process **root, Process *process) +{ if (process->next) { process->next->prev = process->prev; } if (process->prev) { process->prev->next = process->next; - } else { + } + else { *root = process->next; } } @@ -60,13 +73,16 @@ Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_siz Process *process; s32 alloc_size; void *heap; - if(stack_size == 0) { + if (stack_size == 0) { stack_size = 2048; } - alloc_size = HuMemMemoryAllocSizeGet(sizeof(Process)) - +HuMemMemoryAllocSizeGet(stack_size) - +HuMemMemoryAllocSizeGet(extra_size); - if(!(heap = HuMemDirectMalloc(HEAP_SYSTEM, alloc_size))) { +#ifdef TARGET_PC + stack_size *= 2; + alloc_size = HuMemMemoryAllocSizeGet(sizeof(Process)) + HuMemMemoryAllocSizeGet(extra_size); +#else + alloc_size = HuMemMemoryAllocSizeGet(sizeof(Process)) + HuMemMemoryAllocSizeGet(stack_size) + HuMemMemoryAllocSizeGet(extra_size); +#endif + if (!(heap = HuMemDirectMalloc(HEAP_SYSTEM, alloc_size))) { OSReport("process> malloc error size %d\n", alloc_size); return NULL; } @@ -77,10 +93,14 @@ Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_siz process->stat = 0; process->prio = prio; process->sleep_time = 0; - process->base_sp = ((u32)HuMemMemoryAlloc(heap, stack_size, FAKE_RETADDR))+stack_size-8; +#ifdef TARGET_PC + process->thread = co_create(stack_size, func); +#else + process->base_sp = ((uintptr_t)HuMemMemoryAlloc(heap, stack_size, FAKE_RETADDR)) + stack_size - 8; gcsetjmp(&process->jump); process->jump.lr = (u32)func; process->jump.sp = process->base_sp; +#endif process->dtor = NULL; process->user_data = NULL; LinkProcess(&processtop, process); @@ -93,7 +113,7 @@ Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_siz void HuPrcChildLink(Process *parent, Process *child) { HuPrcChildUnlink(child); - if(parent->child) { + if (parent->child) { parent->child->first_child = child; } child->next_child = parent->child; @@ -104,13 +124,14 @@ void HuPrcChildLink(Process *parent, Process *child) void HuPrcChildUnlink(Process *process) { - if(process->parent) { - if(process->next_child) { + if (process->parent) { + if (process->next_child) { process->next_child->first_child = process->first_child; } - if(process->first_child) { + if (process->first_child) { process->first_child->next_child = process->next_child; - } else { + } + else { process->parent->child = process->next_child; } process->parent = NULL; @@ -127,11 +148,18 @@ Process *HuPrcChildCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extr void HuPrcChildWatch() { Process *curr = HuPrcCurrentGet(); - if(curr->child) { + if (curr->child) { curr->exec = EXEC_CHILDWATCH; - if(!gcsetjmp(&curr->jump)) { + +#ifdef TARGET_PC + thread_arg = 1; + co_switch(processthread); +#else + if (gcsetjmp(&curr->jump) == 0) + { gclongjmp(&processjmpbuf, 1); } +#endif } } @@ -142,18 +170,19 @@ Process *HuPrcCurrentGet() static s32 SetKillStatusProcess(Process *process) { - if(process->exec != EXEC_KILLED) { + if (process->exec != EXEC_KILLED) { HuPrcWakeup(process); process->exec = EXEC_KILLED; return 0; - } else { + } + else { return -1; } } s32 HuPrcKill(Process *process) { - if(process == NULL) { + if (process == NULL) { process = HuPrcCurrentGet(); } HuPrcChildKill(process); @@ -164,8 +193,8 @@ s32 HuPrcKill(Process *process) void HuPrcChildKill(Process *process) { Process *child = process->child; - while(child) { - if(child->child) { + while (child) { + if (child->child) { HuPrcChildKill(child); } SetKillStatusProcess(child); @@ -176,12 +205,16 @@ void HuPrcChildKill(Process *process) static void gcTerminateProcess(Process *process) { - if(process->dtor) { + if (process->dtor) { process->dtor(); } UnlinkProcess(&processtop, process); processcnt--; +#ifdef TARGET_PC + thread_arg = 2; +#else gclongjmp(&processjmpbuf, 2); +#endif } void HuPrcEnd() @@ -195,13 +228,18 @@ void HuPrcEnd() void HuPrcSleep(s32 time) { Process *process = HuPrcCurrentGet(); - if(time != 0 && process->exec != EXEC_KILLED) { + if (time != 0 && process->exec != EXEC_KILLED) { process->exec = EXEC_SLEEP; process->sleep_time = time; } - if(!gcsetjmp(&process->jump)) { +#ifdef TARGET_PC + thread_arg = 1; + co_switch(processthread); +#else + if (gcsetjmp(&process->jump) == 0) { gclongjmp(&processjmpbuf, 1); } +#endif } void HuPrcVSleep() @@ -230,54 +268,98 @@ void HuPrcCall(s32 tick) Process *process; s32 ret; processcur = processtop; - ret = gcsetjmp(&processjmpbuf); - while(1) { - switch(ret) { +#ifdef TARGET_PC + thread_arg = ret = 0; + processthread = co_active(); + while (1) { + ret = thread_arg; + switch (ret) { case 2: + co_delete(processcur->thread); +#else + ret = gcsetjmp(&processjmpbuf); + while (1) { + switch (ret) { + case 2: +#endif HuMemDirectFree(processcur->heap); case 1: - if(((u8 *)(processcur->heap))[4] != 165) { + #ifdef NON_MATCHING + // avoid dereferencing NULL + if (!processcur) { + break; + } + #endif + // memory_block->magic + if (((u8 *)(processcur->heap))[4] != 165) { printf("stack overlap error.(process pointer %x)\n", processcur); - while(1); - } else { + while (1) + ; + } + else { processcur = processcur->next; } break; } process = processcur; - if(!process) { + if (!process) { return; } +#ifdef __MWERKS__ + // unused procfunc = process->jump.lr; - if((process->stat & (PROCESS_STAT_PAUSE|PROCESS_STAT_UPAUSE)) && process->exec != EXEC_KILLED) { +#endif + if ((process->stat & (PROCESS_STAT_PAUSE | PROCESS_STAT_UPAUSE)) && process->exec != EXEC_KILLED) { +#ifdef TARGET_PC + thread_arg = 1; +#endif ret = 1; continue; } - switch(process->exec) { + switch (process->exec) { case EXEC_SLEEP: - if(process->sleep_time > 0) { + if (process->sleep_time > 0) { process->sleep_time -= tick; - if(process->sleep_time <= 0) { + if (process->sleep_time <= 0) { process->sleep_time = 0; process->exec = EXEC_NORMAL; } } +#ifdef TARGET_PC + thread_arg = 1; +#endif ret = 1; break; - + case EXEC_CHILDWATCH: - if(process->child) { + if (process->child) { +#ifdef TARGET_PC + thread_arg = 1; +#endif ret = 1; - } else { + } + else { process->exec = EXEC_NORMAL; +#ifdef TARGET_PC + thread_arg = 0; +#endif ret = 0; } break; - + case EXEC_KILLED: +#ifdef TARGET_PC + HuPrcEnd(); + break; +#else process->jump.lr = (u32)HuPrcEnd; +#endif case EXEC_NORMAL: +#ifdef TARGET_PC + co_switch(process->thread); +#else gclongjmp(&process->jump, 1); +#endif break; } } @@ -307,20 +389,21 @@ void HuPrcResetStat(Process *process, u16 value) void HuPrcAllPause(s32 flag) { Process *process = processtop; - if(flag) { - while(process != NULL) { - if(!(process->stat & PROCESS_STAT_PAUSE_EN)) { + if (flag) { + while (process != NULL) { + if (!(process->stat & PROCESS_STAT_PAUSE_EN)) { HuPrcSetStat(process, PROCESS_STAT_PAUSE); } - + process = process->next; } - } else { - while(process != NULL) { - if(process->stat & PROCESS_STAT_PAUSE) { + } + else { + while (process != NULL) { + if (process->stat & PROCESS_STAT_PAUSE) { HuPrcResetStat(process, PROCESS_STAT_PAUSE); } - + process = process->next; } } @@ -329,21 +412,22 @@ void HuPrcAllPause(s32 flag) void HuPrcAllUPause(s32 flag) { Process *process = processtop; - if(flag) { - while(process != NULL) { - if(!(process->stat & PROCESS_STAT_UPAUSE_EN)) { + if (flag) { + while (process != NULL) { + if (!(process->stat & PROCESS_STAT_UPAUSE_EN)) { HuPrcSetStat(process, PROCESS_STAT_UPAUSE); } - - process = process->next; - } - } else { - while(process != NULL) { - if(process->stat & PROCESS_STAT_UPAUSE) { - HuPrcResetStat(process, PROCESS_STAT_UPAUSE); - } - + process = process->next; } } -} + else { + while (process != NULL) { + if (process->stat & PROCESS_STAT_UPAUSE) { + HuPrcResetStat(process, PROCESS_STAT_UPAUSE); + } + + process = process->next; + } + } +} \ No newline at end of file diff --git a/src/game/saveload.c b/src/game/saveload.c index df1e5d6e..b267efc6 100644 --- a/src/game/saveload.c +++ b/src/game/saveload.c @@ -5,12 +5,14 @@ #include "game/flag.h" #include "game/gamework_data.h" #include "game/pad.h" +#include "game/process.h" #include "game/sprite.h" #include "game/window.h" #include "stddef.h" #include "string.h" + #if VERSION_ENG #define SAVE_WRITE_BEGIN _SetFlag(FLAG_ID_MAKE(3, 0)); #define SAVE_WRITE_END _ClearFlag(FLAG_ID_MAKE(3, 0)); @@ -27,13 +29,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 +44,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 159b0f47..1a656295 100644 --- a/src/game/sprman.c +++ b/src/game/sprman.c @@ -4,6 +4,11 @@ #include "dolphin/mtx.h" +#include "port/byteswap.h" +#ifndef __MWERKS__ +#include "game/hsfdraw.h" +#endif + #define SPRITE_DIRTY_ATTR 0x1 #define SPRITE_DIRTY_XFORM 0x2 #define SPRITE_DIRTY_COLOR 0x4 @@ -212,27 +217,64 @@ AnimData *HuSprAnimRead(void *data) AnimBmpData *bmp; AnimBankData *bank; AnimPatData *pat; - - AnimData *anim = (AnimData *)data; - if((u32)anim->bank & 0xFFFF0000) { + + AnimData *anim = data; +#ifdef TARGET_PC + s16 j; + if (anim->valid == ANIM_DATA_ALLOCATION_VALID) { anim->useNum++; return anim; } - bank = (AnimBankData *)((u32)anim->bank+(u32)data); + anim = HuMemDirectMalloc(HEAP_DATA, sizeof(AnimData)); + byteswap_animdata(data, anim); + anim->valid = ANIM_DATA_ALLOCATION_VALID; +#else + if((uintptr_t)anim->bank & ~0xFFFF) { + anim->useNum++; + return anim; + } +#endif + bank = (void *)((uintptr_t)anim->bank+(uintptr_t)data); +#ifdef TARGET_PC + bank = HuMemDirectMalloc(HEAP_DATA, anim->bankNum * sizeof(AnimBankData)); + for(i=0; ibankNum; i++) { + byteswap_animbankdata(&((AnimBankData32b*)((uintptr_t)anim->bank+(uintptr_t)data))[i], &bank[i]); + } +#endif anim->bank = bank; - pat = (AnimPatData *)((u32)anim->pat+(u32)data); + pat = (void *)((uintptr_t)anim->pat+(uintptr_t)data); +#ifdef TARGET_PC + pat = HuMemDirectMalloc(HEAP_DATA, anim->patNum * sizeof(AnimPatData)); + for(i=0; ipatNum; i++) { + byteswap_animpatdata(&((AnimPatData32b*)((uintptr_t)anim->pat+(uintptr_t)data))[i], &pat[i]); + } +#endif anim->pat = pat; - bmp = (AnimBmpData *)((u32)anim->bmp+(u32)data); + bmp = (void *)((uintptr_t)anim->bmp+(uintptr_t)data); +#ifdef TARGET_PC + bmp = HuMemDirectMalloc(HEAP_DATA, anim->bmpNum * sizeof(AnimBmpData)); + 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++) { - bank->frame = (AnimFrameData *)((u32)bank->frame+(u32)data); + bank->frame = (AnimFrameData *)((uintptr_t)bank->frame+(uintptr_t)data); +#ifdef TARGET_PC + byteswap_animframedata(bank->frame); +#endif } for(i=0; ipatNum; i++, pat++) { - pat->layer = (AnimLayerData *)((u32)pat->layer+(u32)data); + pat->layer = (AnimLayerData *)((uintptr_t)pat->layer+(uintptr_t)data); +#ifdef TARGET_PC + for (j = 0; j < pat->layerNum; j++) { + byteswap_animlayerdata(&pat->layer[j]); + } +#endif } for(i=0; ibmpNum; i++, bmp++) { - bmp->palData = (void *)((u32)bmp->palData+(u32)data); - bmp->data = (void *)((u32)bmp->data+(u32)data); + bmp->palData = (void *)((uintptr_t)bmp->palData+(uintptr_t)data); + bmp->data = (void *)((uintptr_t)bmp->data+(uintptr_t)data); } anim->useNum = 0; return anim; @@ -401,6 +443,11 @@ void HuSprAnimKill(AnimData *anim) HuMemDirectFree(anim->bmp->palData); } } +#ifdef TARGET_PC + HuMemDirectFree(anim->bank); + HuMemDirectFree(anim->pat); + HuMemDirectFree(anim->bmp); +#endif HuMemDirectFree(anim); } } @@ -610,6 +657,15 @@ AnimData *HuSprAnimMake(s16 sizeX, s16 sizeY, s16 dataFmt) AnimBankData *bank; AnimData *new_anim; +#ifdef TARGET_PC + // as these are allocated in HuSprAnimRead, we need to do so here too so we don't get issues when freeing + anim = HuMemDirectMalloc(HEAP_DATA, sizeof(AnimData)); + anim->bank = bank = HuMemDirectMalloc(HEAP_DATA, sizeof(AnimBankData)); + bank->frame = frame = HuMemDirectMalloc(HEAP_DATA, sizeof(AnimFrameData)); + anim->pat = pat = HuMemDirectMalloc(HEAP_DATA, sizeof(AnimPatData)); + pat->layer = layer = HuMemDirectMalloc(HEAP_DATA, sizeof(AnimLayerData)); + anim->bmp = bmp = HuMemDirectMalloc(HEAP_DATA, sizeof(AnimBmpData)); +#else anim = new_anim = HuMemDirectMalloc(HEAP_DATA, sizeof(AnimData)+sizeof(AnimBankData)+sizeof(AnimFrameData) +sizeof(AnimPatData)+sizeof(AnimLayerData)+sizeof(AnimBmpData)); @@ -623,6 +679,7 @@ AnimData *HuSprAnimMake(s16 sizeX, s16 sizeY, s16 dataFmt) pat->layer = layer; bmp = temp = ((char *)temp+sizeof(AnimLayerData)); anim->bmp = bmp; +#endif anim->useNum = 0; anim->bankNum = 1; anim->patNum = 1; @@ -715,9 +772,9 @@ 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++; } -} \ No newline at end of file +} diff --git a/src/game/sprput.c b/src/game/sprput.c index c2b061b1..0bd57167 100644 --- a/src/game/sprput.c +++ b/src/game/sprput.c @@ -202,12 +202,18 @@ void HuSprTexLoad(AnimData *anim, short bmp, short slot, GXTexWrapMode wrap_s, G case ANIM_BMP_C8: GXInitTlutObj(&tlut_obj, bmp_ptr->palData, GX_TL_RGB5A3, bmp_ptr->palNum); GXLoadTlut(&tlut_obj, slot); +#ifdef TARGET_PC + GXDestroyTlutObj(&tlut_obj); +#endif GXInitTexObjCI(&tex_obj,bmp_ptr->data, sizeX, sizeY, GX_TF_C8, wrap_s, wrap_t, GX_FALSE, slot); break; case ANIM_BMP_C4: GXInitTlutObj(&tlut_obj, bmp_ptr->palData, GX_TL_RGB5A3, bmp_ptr->palNum); GXLoadTlut(&tlut_obj, slot); +#ifdef TARGET_PC + GXDestroyTlutObj(&tlut_obj); +#endif GXInitTexObjCI(&tex_obj,bmp_ptr->data, sizeX, sizeY, GX_TF_C4, wrap_s, wrap_t, GX_FALSE, slot); break; @@ -240,6 +246,9 @@ void HuSprTexLoad(AnimData *anim, short bmp, short slot, GXTexWrapMode wrap_s, G } GXInitTexObjLOD(&tex_obj, filter, filter, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1); GXLoadTexObj(&tex_obj, slot); +#ifdef TARGET_PC + GXDestroyTexObj(&tex_obj); +#endif } void HuSprExecLayerSet(short draw_no, short layer) @@ -252,4 +261,4 @@ static void HuSprLayerHook(short layer) { HuSprDispInit(); HuSprExec(HuSprLayerDrawNo[layer]); -} \ No newline at end of file +} diff --git a/src/game/sreset.c b/src/game/sreset.c index 10d49ef4..36b5810b 100644 --- a/src/game/sreset.c +++ b/src/game/sreset.c @@ -20,10 +20,10 @@ extern s32 HuDvdErrWait; -static s32 SR_PreRstChk[4] = {}; +static s32 SR_PreRstChk[4] = {0, 0, 0, 0}; #if VERSION_JP -static s32 padding[4] = {}; +static s32 padding[4] = {0, 0, 0, 0}; #endif #if VERSION_ENG diff --git a/src/game/thpmain.c b/src/game/thpmain.c index 082eb281..f9cf8d1a 100755 --- a/src/game/thpmain.c +++ b/src/game/thpmain.c @@ -243,15 +243,15 @@ static void THPViewSprFunc(HuSprite *arg0) sp8.b = arg0->b; sp8.a = arg0->a; if (arg0->z_rot != 0.0f) { - PSMTXRotAxisRad(sp18, &spC, MTXDegToRad(arg0->z_rot)); - PSMTXScale(sp48, arg0->scale_x, arg0->scale_y, 1.0f); - PSMTXConcat(sp18, sp48, sp48); + MTXRotAxisRad(sp18, &spC, MTXDegToRad(arg0->z_rot)); + MTXScale(sp48, arg0->scale_x, arg0->scale_y, 1.0f); + MTXConcat(sp18, sp48, sp48); } else { - PSMTXScale(sp48, arg0->scale_x, arg0->scale_y, 1.0f); + MTXScale(sp48, arg0->scale_x, arg0->scale_y, 1.0f); } mtxTransCat(sp48, arg0->x, arg0->y, 0.0f); - PSMTXConcat(*arg0->group_mtx, sp48, sp48); + MTXConcat(*arg0->group_mtx, sp48, sp48); temp_r30 = -((s32)audioTrack.unk00 / 2); temp_r29 = -((s32)audioTrack.unk04 / 2); GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE); diff --git a/src/game/window.c b/src/game/window.c index ac3be92e..43d56855 100644 --- a/src/game/window.c +++ b/src/game/window.c @@ -45,8 +45,8 @@ static void GetMesMaxSizeSub(u32 mess); static s32 GetMesMaxSizeSub2(WindowData *window, u8 *mess_data); void mtxTransCat(Mtx, float, float, float); -WindowData ATTRIBUTE_ALIGN(32) winData[32]; -u32 winKey[4]; +SHARED_SYM WindowData ATTRIBUTE_ALIGN(32) winData[32]; +static u32 winKey[4]; keyBufData winComKeyBuf[256]; static AnimData *iconAnim; @@ -54,7 +54,7 @@ static AnimData *cursorAnim; static AnimData *cardAnimA; static AnimData *cardAnimB; static Process *winProc; -void *messDataPtr; +SHARED_SYM void *messDataPtr; static s32 messDataNo; static s16 winMaxWidth; static s16 winMaxHeight; @@ -402,9 +402,14 @@ static void MesDispFunc(HuSprite *sprite) GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); +#ifdef TARGET_PC + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); +#else + //@bug: this passes GX_CLR_RGB but then uses GX_RGBA8 (should use either alpha variants of both or neither) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGB, GX_RGBA8, 0); +#endif GXSetCullMode(GX_CULL_NONE); GXSetNumTexGens(1); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); @@ -453,16 +458,16 @@ static void MesDispFunc(HuSprite *sprite) } GXPosition3f32(char_x + 1.0f, char_y, 0.0f); GXColor4u8(window->mess_pal[color][0], window->mess_pal[color][1], window->mess_pal[color][2], alpha); - GXPosition2f32(uv_minx, uv_miny); + GXTexCoord2f32(uv_minx, uv_miny); GXPosition3f32(char_x + char_w, char_y, 0.0f); GXColor4u8(window->mess_pal[color][0], window->mess_pal[color][1], window->mess_pal[color][2], alpha); - GXPosition2f32(uv_maxx, uv_miny); + GXTexCoord2f32(uv_maxx, uv_miny); GXPosition3f32(char_x + char_w, char_y + 24.0f, 0.0f); GXColor4u8(window->mess_pal[color][0], window->mess_pal[color][1], window->mess_pal[color][2], alpha); - GXPosition2f32(uv_maxx, uv_maxy); + GXTexCoord2f32(uv_maxx, uv_maxy); GXPosition3f32(char_x + 1.0f, char_y + 24.0f, 0.0f); GXColor4u8(window->mess_pal[color][0], window->mess_pal[color][1], window->mess_pal[color][2], alpha); - GXPosition2f32(uv_minx, uv_maxy); + GXTexCoord2f32(uv_minx, uv_maxy); } GXEnd(); mesCharCnt++; @@ -1898,7 +1903,7 @@ static void HuWinExCreatePortrait(s16 window, s16 portrait, float x, float y) WindowData *window_ptr; void *data; - data = HuAR_ARAMtoMRAMFileRead(winPortraitTbl[portrait], MEMORY_DEFAULT_NUM, 2); + data = HuAR_ARAMtoMRAMFileRead(winPortraitTbl[portrait], MEMORY_DEFAULT_NUM, HEAP_DATA); anim = HuSprAnimRead(data); window_ptr = &winData[window]; sprite = HuSprCreate(anim, window_ptr->prio - 1, 0); diff --git a/src/game/wipe.c b/src/game/wipe.c index aa7c1d9a..9ed4ffa3 100644 --- a/src/game/wipe.c +++ b/src/game/wipe.c @@ -9,7 +9,7 @@ s16 HuSysVWaitGet(s16 old); typedef s32 (*fadeFunc)(void); -WipeState wipeData; +SHARED_SYM WipeState wipeData; BOOL wipeFadeInF; static void WipeColorFill(GXColor color); @@ -330,4 +330,7 @@ static void WipeFrameStill(GXColor color) GXTexCoord2f32(0, 1); GXEnd(); GXSetChanMatColor(GX_COLOR0A0, colorN); +#ifdef TARGET_PC + GXDestroyTexObj(&tex); +#endif } diff --git a/src/port/OS.c b/src/port/OS.c new file mode 100644 index 00000000..2040968f --- /dev/null +++ b/src/port/OS.c @@ -0,0 +1,90 @@ +#include +#include + +#include + +#ifndef _WIN32 +#include +#include +#include +#if __APPLE__ +#include +#endif +#endif + +#ifdef _WIN32 +#include +#endif + +#if __APPLE__ +static u64 MachToDolphinNum; +static u64 MachToDolphinDenom; +#elif _WIN32 +static LARGE_INTEGER PerfFrequency; +#endif + +// Credits: Super Monkey Ball + +#define MEM_SIZE (64 * 1024 * 1024) + +u8 LC_CACHE_BASE[4096]; + +static u64 GetGCTicks() +{ +#if __APPLE__ + return mach_absolute_time() * MachToDolphinNum / MachToDolphinDenom; +#elif __linux__ || __FreeBSD__ + struct timespec tp; + clock_gettime(CLOCK_MONOTONIC, &tp); + + return ((tp.tv_sec * 1000000000ull) + tp.tv_nsec) * OS_CORE_CLOCK / 1000000000ull; +#elif _WIN32 + LARGE_INTEGER perf; + QueryPerformanceCounter(&perf); + perf.QuadPart *= OS_CORE_CLOCK; + perf.QuadPart /= PerfFrequency.QuadPart; + return perf.QuadPart; +#else + return 0; +#endif +} + +void OSInit() +{ + puts("OSInit is a stub"); + u8 *arena = malloc(MEM_SIZE); + + OSSetArenaLo(arena); + OSSetArenaHi(arena + MEM_SIZE); + + #if __APPLE__ + mach_timebase_info_data_t timebase; + mach_timebase_info(&timebase); + MachToDolphinNum = OS_CORE_CLOCK * timebase.numer; + MachToDolphinDenom = 1000000000ull * timebase.denom; +#elif _WIN32 + QueryPerformanceFrequency(&PerfFrequency); +#endif +} + +OSTime OSGetTime(void) +{ + return (OSTime)GetGCTicks(); +} + +OSTick OSGetTick(void) +{ + return (OSTick)GetGCTicks(); +} + +u32 OSGetPhysicalMemSize(void) +{ + puts("OSGetPhysicalMemSize is a stub"); + return MEM_SIZE; +} + +u32 OSGetConsoleSimulatedMemSize(void) +{ + puts("OSGetSimulatedMemSize is a stub"); + return MEM_SIZE; +} diff --git a/src/port/ar.c b/src/port/ar.c new file mode 100644 index 00000000..10c2fc37 --- /dev/null +++ b/src/port/ar.c @@ -0,0 +1,40 @@ +#include +#include +#include + +u8 ARAM[16 * 1024 * 1024]; + +u32 ARInit(u32 *stack_index_addr, u32 num_entries) +{ + puts("ARInit"); + return 0x4000; +} + +BOOL ARCheckInit() +{ + return TRUE; +} + +u32 ARGetSize() +{ + return sizeof(ARAM); +} + +void ARStartDMA(u32 type, uintptr_t mainmem_addr, u32 aram_addr, u32 length) +{ + switch (type) + { + case ARAM_DIR_MRAM_TO_ARAM: + memcpy(ARAM + aram_addr, (void *)mainmem_addr, length); + break; + case ARAM_DIR_ARAM_TO_MRAM: + memcpy((void *)mainmem_addr, ARAM + aram_addr, length); + break; + } +} + +u32 ARGetDMAStatus(void) +{ + puts("ARGetDMAStatus"); + return 0; +} diff --git a/src/port/arq.c b/src/port/arq.c new file mode 100644 index 00000000..c95bfbd1 --- /dev/null +++ b/src/port/arq.c @@ -0,0 +1,23 @@ +#include +#include +#include + +extern u8 ARAM[16 * 1024 * 1024]; + +void ARQPostRequest(ARQRequest *task, u32 owner, u32 type, u32 priority, + 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); + switch (type) + { + case ARQ_TYPE_MRAM_TO_ARAM: + memcpy(ARAM + dest, (void *)source, length); + callback((uintptr_t)task); + break; + case ARQ_TYPE_ARAM_TO_MRAM: + memcpy((void *)dest, ARAM + source, length); + callback((uintptr_t)task); + break; + } +} diff --git a/src/port/audio.c b/src/port/audio.c new file mode 100644 index 00000000..07a9dfcb --- /dev/null +++ b/src/port/audio.c @@ -0,0 +1,677 @@ +#include "game/audio.h" +#include "game/memory.h" +#include "game/msm.h" +#include "game/object.h" +#include "game/wipe.h" +#include "game/gamework_data.h" + +static int HuSePlay(int seId, MSM_SEPARAM *param); + +extern s16 omSysExitReq; + +s32 charVoiceGroupStat[8]; +static s32 sndFXBuf[64][2]; + +static s16 Hu3DAudVol; +static s16 sndGroupBak; +static s32 auxANoBak; +static s32 auxBNoBak; +static s8 HuAuxAVol; +static s8 HuAuxBVol; +float Snd3DBackSurDisOffset; +float Snd3DFrontSurDisOffset; +float Snd3DStartDisOffset; +float Snd3DSpeedOffset; +float Snd3DDistOffset; +s32 musicOffF; +u8 fadeStat; + +static char *lbl_8012E9AC[] = { + "sound/MPNGC02.son", + "sound/MPNGC16.son", + "" +}; + + +void HuAudInit(void) +{ + MSM_INIT msmInit; + MSM_ARAM msmAram; + + s32 result; + s16 i; + + msmInit.heap = HuMemDirectMalloc(HEAP_MUSIC, 0x13FC00); + msmInit.heapSize = 0x13FC00; + msmInit.msmPath = "/sound/mpgcsnd.msm"; + msmInit.pdtPath = "/sound/mpgcstr.pdt"; + msmInit.open = NULL; + msmInit.read = NULL; + msmInit.close = NULL; + msmAram.skipARInit = TRUE; + msmAram.aramEnd = 0x808000; + // result = msmSysInit(&msmInit, &msmAram); + + // if (result < 0) { + // OSReport("MSM(Sound Manager) Error:Error Code %d\n", result); + // while (1); + // } + if (OSGetSoundMode() == OS_SOUND_MODE_MONO) { + // msmSysSetOutputMode(SND_OUTPUTMODE_MONO); + } else { + // msmSysSetOutputMode(SND_OUTPUTMODE_SURROUND); + } + for (i = 0; i < 64; i++) { + sndFXBuf[i][0] = -1; + } + for (i = 0; i < 8; i++) { + charVoiceGroupStat[i] = 0; + } + sndGroupBak = -1; + auxANoBak = auxBNoBak = -1; + fadeStat = 0; + musicOffF = 0; +} + +s32 HuAudStreamPlay(char *name, BOOL flag) { + return 0; +} + +void HuAudStreamVolSet(s16 vol) { + // AISetStreamVolLeft(vol); + // AISetStreamVolRight(vol); + Hu3DAudVol = vol; +} + +void HuAudStreamPauseOn(void) { + // AISetStreamPlayState(0); +} + +void HuAudStreamPauseOff(void) { + // AISetStreamPlayState(1); +} + +void HuAudStreamFadeOut(s32 arg0) { +} + +void HuAudAllStop(void) { + HuAudSeqAllStop(); + HuAudFXAllStop(); + HuAudSStreamAllStop(); +} + +void HuAudFadeOut(s32 speed) { + HuAudFXAllStop(); + HuAudSeqAllFadeOut(speed); + HuAudSStreamAllFadeOut(speed); +} + +int HuAudFXPlay(int seId) +{ + return 5; +} + +int HuAudFXPlayVol(int seId, s16 vol) { + if (omSysExitReq != 0) { + return 0; + } + return HuAudFXPlayVolPan(seId, vol, MSM_PAN_CENTER); +} + +int HuAudFXPlayVolPan(int seId, s16 vol, s16 pan) +{ + MSM_SEPARAM seParam; + + if (omSysExitReq != 0) { + return 0; + } + seParam.flag = MSM_SEPARAM_VOL|MSM_SEPARAM_PAN; + seParam.vol = vol; + seParam.pan = pan; + return HuSePlay(seId, &seParam); +} + +void HuAudFXStop(int seNo) { + // msmSeStop(seNo, 0); +} + +void HuAudFXAllStop(void) { + // msmSeStopAll(0, 0); +} + +void HuAudFXFadeOut(int seNo, s32 speed) { + // msmSeStop(seNo, speed); +} + +void HuAudFXPanning(int seNo, s16 pan) { + MSM_SEPARAM seParam; + + if (omSysExitReq == 0) { + seParam.flag = MSM_SEPARAM_PAN; + seParam.pan = pan; + // msmSeSetParam(seNo, &seParam); + } +} + +void HuAudFXListnerSet(Vec *pos, Vec *heading, float sndDist, float sndSpeed) +{ + if(omSysExitReq) { + return; + } + HuAudFXListnerSetEX(pos, heading, + sndDist + Snd3DDistOffset, + sndSpeed + Snd3DSpeedOffset, + Snd3DStartDisOffset, + Snd3DFrontSurDisOffset + (0.25 * sndDist + Snd3DStartDisOffset), + Snd3DBackSurDisOffset + (0.25 * sndDist + Snd3DStartDisOffset)); +} + +void HuAudFXListnerSetEX(Vec *pos, Vec *heading, float sndDist, float sndSpeed, float startDis, float frontSurDis, float backSurDis) +{ + MSM_SELISTENER listener; + if(omSysExitReq) { + return; + } + listener.flag = MSM_LISTENER_STARTDIS|MSM_LISTENER_FRONTSURDIS|MSM_LISTENER_BACKSURDIS; + listener.startDis = startDis + Snd3DStartDisOffset; + listener.frontSurDis = frontSurDis + Snd3DFrontSurDisOffset; + listener.backSurDis = backSurDis + Snd3DBackSurDisOffset; + // msmSeSetListener(pos, heading, sndDist + Snd3DDistOffset, sndSpeed + Snd3DSpeedOffset, &listener); + OSReport("//////////////////////////////////\n"); + OSReport("sndDist %f\n", sndDist); + OSReport("sndSpeed %f\n", sndSpeed); + OSReport("startDis %f\n", listener.startDis); + OSReport("frontSurDis %f\n", listener.frontSurDis); + OSReport("backSurDis %f\n", listener.backSurDis); + OSReport("//////////////////////////////////\n"); +} + +void HuAudFXListnerUpdate(Vec *pos, Vec *heading) +{ + if (omSysExitReq == 0) { + // msmSeUpdataListener(pos, heading); + } +} + +int HuAudFXEmiterPlay(int seId, Vec *pos) +{ + MSM_SEPARAM seParam; + if(omSysExitReq) { + return 0; + } + seParam.flag = MSM_SEPARAM_POS; + seParam.pos.x = pos->x; + seParam.pos.y = pos->y; + seParam.pos.z = pos->z; + // return HuSePlay(seId, &seParam); + return 12; +} + +void HuAudFXEmiterUpDate(int seNo, Vec *pos) +{ + MSM_SEPARAM param; + if(omSysExitReq) { + return; + } + param.flag = MSM_SEPARAM_POS; + param.pos.x = pos->x; + param.pos.y = pos->y; + param.pos.z = pos->z; + // msmSeSetParam(seNo, ¶m); +} + +void HuAudFXListnerKill(void) { + // msmSeDelListener(); +} + +void HuAudFXPauseAll(s32 pause) { + // msmSePauseAll(pause, 0x64); +} + +s32 HuAudFXStatusGet(int seNo) { + // return msmSeGetStatus(seNo); + return 12; +} + +s32 HuAudFXPitchSet(int seNo, s16 pitch) +{ + MSM_SEPARAM param; + if(omSysExitReq) { + return 0; + } + param.flag = MSM_SEPARAM_PITCH; + param.pitch = pitch; + // return msmSeSetParam(seNo, ¶m); + return 12; +} + +s32 HuAudFXVolSet(int seNo, s16 vol) +{ + MSM_SEPARAM param; + + if(omSysExitReq) { + return 0; + } + param.flag = MSM_SEPARAM_VOL; + param.vol = vol; + // return msmSeSetParam(seNo, ¶m); + return 12; +} + +s32 HuAudSeqPlay(s16 musId) { + s32 channel = 0; + + if (musicOffF != 0 || omSysExitReq != 0) { + return 0; + } + // channel = msmMusPlay(musId, NULL); + return channel; +} + +void HuAudSeqStop(s32 musNo) { + if (musicOffF != 0 || omSysExitReq != 0) { + return; + } + // msmMusStop(musNo, 0); +} + +void HuAudSeqFadeOut(s32 musNo, s32 speed) { + if (musicOffF == 0) { + // msmMusStop(musNo, speed); + } +} + +void HuAudSeqAllFadeOut(s32 speed) { + s16 i; + + for (i = 0; i < 4; i++) { + // if (msmMusGetStatus(i) == 2) { + // msmMusStop(i, speed); + // } + } +} + +void HuAudSeqAllStop(void) { + // msmMusStopAll(0, 0); +} + +void HuAudSeqPauseAll(s32 pause) { + // msmMusPauseAll(pause, 0x64); +} + +void HuAudSeqPause(s32 musNo, s32 pause, s32 speed) { + if (musicOffF != 0 || omSysExitReq != 0) { + return; + } + // msmMusPause(musNo, pause, speed); +} + +s32 HuAudSeqMidiCtrlGet(s32 musNo, s8 channel, s8 ctrl) { + if (musicOffF != 0 || omSysExitReq != 0) { + return 0; + } + // return msmMusGetMidiCtrl(musNo, channel, ctrl); + return 12; +} + +s32 HuAudSStreamPlay(s16 streamId) { + MSM_STREAMPARAM param; + s32 result = 0; + + if (musicOffF != 0 || omSysExitReq != 0) { + return 0; + } + param.flag = MSM_STREAMPARAM_NONE ; + // result = msmStreamPlay(streamId, ¶m); + return result; +} + +void HuAudSStreamStop(s32 seNo) { + if (musicOffF == 0) { + // msmStreamStop(seNo, 0); + } +} + +void HuAudSStreamFadeOut(s32 seNo, s32 speed) { + if (musicOffF == 0) { + // msmStreamStop(seNo, speed); + } +} + +void HuAudSStreamAllFadeOut(s32 speed) { + // msmStreamStopAll(speed); +} + +void HuAudSStreamAllStop(void) { + // msmStreamStopAll(0); +} + +s32 HuAudSStreamStatGet(s32 seNo) { + return 12; + // return msmStreamGetStatus(seNo); +} + +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 }, + { OVL_M402, 19, 0, 3, 48, 32 }, + { OVL_M403, 20, 0, 1, -1, -1 }, + { OVL_M404, 21, 0, 1, -1, -1 }, + { OVL_M405, 22, 0, 1, 64, 32 }, + { OVL_M406, 23, 0, 1, -1, -1 }, + { OVL_M407, 24, 0, 1, -1, -1 }, + { OVL_M408, 25, 0, 1, -1, -1 }, + { OVL_M409, 26, 0, 4, -1, -1 }, + { OVL_M410, 27, 0, 1, -1, -1 }, + { OVL_M411, 28, 0, 1, -1, -1 }, + { OVL_M412, 29, 0, 1, -1, -1 }, + { OVL_M413, 30, 0, 1, -1, -1 }, + { OVL_M414, 31, 0, 1, -1, -1 }, + { OVL_M415, 32, 0, 1, -1, -1 }, + { OVL_M416, 33, 0, 1, -1, -1 }, + { OVL_M417, 34, 0, 1, -1, -1 }, + { OVL_M418, 35, 0, 1, 64, 64 }, + { OVL_M419, 36, 0, 6, -1, -1 }, + { OVL_M420, 37, 0, 1, -1, -1 }, + { OVL_M421, 38, 0, 1, -1, -1 }, + { OVL_M422, 39, 0, 1, -1, -1 }, + { OVL_M423, 40, 0, 1, -1, -1 }, + { OVL_M424, 41, 0, 1, -1, -1 }, + { OVL_M425, 42, 0, 1, -1, -1 }, + { OVL_M426, 43, 0, 1, -1, -1 }, + { OVL_M427, 44, 0, 1, 64, 72 }, + { OVL_M428, 45, 0, 1, -1, -1 }, + { OVL_M429, 46, 0, 1, -1, -1 }, + { OVL_M430, 47, 0, 1, -1, -1 }, + { OVL_M431, 48, 0, 1, -1, -1 }, + { OVL_M432, 49, 0, 1, 48, 32 }, + { OVL_M433, 50, 0, 1, -1, -1 }, + { OVL_M434, 51, 0, 1, -1, -1 }, + { OVL_M435, 52, 0, 9, 32, 64 }, + { OVL_M436, 53, 0, 10, 32, 64 }, + { OVL_M437, 54, 0, 1, 32, 64 }, + { OVL_M438, 55, 0, 11, -1, -1 }, + { OVL_M439, 56, 0, 12, 48, 32 }, + { OVL_M440, 57, 0, 1, -1, -1 }, + { OVL_M441, 58, 0, 1, -1, -1 }, + { OVL_M442, 59, 0, 1, -1, -1 }, + { OVL_M443, 60, 0, 1, -1, -1 }, + { OVL_M444, 61, 0, 1, -1, -1 }, + { OVL_M445, 62, 0, 1, -1, -1 }, + { OVL_M446, 63, 0, 1, -1, -1 }, + { OVL_M447, 64, 0, 1, -1, -1 }, + { OVL_M448, 65, 0, 1, -1, -1 }, + { OVL_M449, 66, 0, 1, -1, -1 }, + { OVL_M450, 67, 0, 13, 64, 64 }, + { OVL_M451, 68, 0, 1, -1, -1 }, + { OVL_M453, 69, 0, 1, -1, -1 }, + { OVL_M455, 70, 0, 1, -1, -1 }, + { OVL_M456, 71, 0, 1, -1, -1 }, + { OVL_M457, 72, 0, 14, 64, 32 }, + { OVL_M458, 73, 0, 15, 64, 32 }, + { OVL_M459, 74, 0, 1, -1, -1 }, + { OVL_M460, 75, 0, 1, -1, -1 }, + { OVL_M461, 76, 0, 1, -1, -1 }, + { OVL_M462, 77, 0, 1, -1, -1 }, + { OVL_M463, 78, 0, 1, -1, -1 }, + { OVL_MENT, -1, 0, 1, -1, -1 }, + { OVL_MGMODE, 1, 0, 1, -1, -1 }, + { OVL_MODESEL, 0, 0, 1, -1, -1 }, + { OVL_MODELTEST, 18, 0, 1, -1, -1 }, + { OVL_MSETUP, 0, 0, 1, -1, -1 }, + { OVL_MSTORY, 5, 0, 1, -1, -1 }, + { OVL_MSTORY2, 5, 0, 1, -1, -1 }, + { OVL_MSTORY3, 8, 0, 1, -1, -1 }, + { OVL_NIS, 9, 0, 1, -1, -1 }, + { OVL_OPTION, -1, 0, 1, -1, -1 }, + { OVL_PRESENT, -1, 0, 1, -1, -1 }, + { OVL_RESULT, -1, 0, 1, -1, -1 }, + { OVL_SAF, 0, 0, 2, 127, 127 }, + { OVL_SELMENU, 0, 0, 1, -1, -1 }, + { OVL_W01, 9, 0, 1, -1, -1 }, + { OVL_W02, 10, 0, 1, -1, -1 }, + { OVL_W03, 11, 0, 1, -1, -1 }, + { OVL_W04, 12, 0, 1, -1, -1 }, + { OVL_W05, 13, 0, 1, -1, -1 }, + { OVL_W06, 14, 0, 1, -1, -1 }, + { OVL_W10, 15, 0, 1, -1, -1 }, + { OVL_W20, 16, 0, 1, -1, -1 }, + { OVL_W21, 17, 0, 1, -1, -1 }, + { OVL_MPEX, 4, 0, 1, -1, -1 }, + { OVL_ZTAR, -1, 0, 1, -1, -1 }, + { OVL_E3SETUP, 0, 0, 1, -1, -1 }, + { OVL_STAFF, -1, 0, 1, -1, -1 }, + { OVL_INVALID, -1, 0, 1, 0, 0 } +}; + +void HuAudDllSndGrpSet(u16 ovl) { + SNDGRPTBL *sndGrp; + s16 grpSet; + + sndGrp = sndGrpTable; + while (1) { + if (sndGrp->ovl == ovl) { + grpSet = sndGrp->grpSet; + break; + } + if (sndGrp->ovl == OVL_INVALID) { + grpSet = 0x12; + break; + } + sndGrp++; + } + if (grpSet != -1) { + OSReport("SOUND ##########################\n"); + HuAudSndGrpSetSet(grpSet); + if (sndGrp->auxANo != auxANoBak || sndGrp->auxBNo != auxBNoBak) { + // msmSysSetAux(sndGrp->auxANo, sndGrp->auxBNo); + OSReport("Change AUX %d,%d\n", sndGrp->auxANo, sndGrp->auxBNo); + auxANoBak = sndGrp->auxANo; + auxBNoBak = sndGrp->auxBNo; + HuPrcVSleep(); + } + HuAudAUXVolSet(sndGrp->auxAVol, sndGrp->auxBVol); + OSReport("##########################\n"); + } +} + +void HuAudSndGrpSetSet(s16 dataSize) { +} + +void HuAudSndGrpSet(s16 grpId) { + void *buf; + + // buf = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(grpId)); + // msmSysLoadGroup(grpId, buf, 0); + HuMemDirectFree(buf); +} + +void HuAudSndCommonGrpSet(s16 grpId, s32 groupCheck) { + s16 err; + OSTick osTick; + void *buf; + s16 i; + + for (i = 0; i < 8; i++) { + charVoiceGroupStat[i] = 0; + } + // msmMusStopAll(1, 0); + // msmSeStopAll(1, 0); + osTick = OSGetTick(); + // while ((msmMusGetNumPlay(1) != 0 || msmSeGetNumPlay(1) != 0) + // && OSTicksToMilliseconds(OSGetTick() - osTick) < 500); + OSReport("CommonGrpSet %d\n", grpId); + // if (groupCheck != 0) { + // // err = msmSysDelGroupBase(0); + // if (err < 0) { + // OSReport("Del Group Error %d\n", err); + // } + // } + // buf = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(grpId)); + // msmSysLoadGroupBase(grpId, buf); + // HuMemDirectFree(buf); + sndGroupBak = -1; +} + +void HuAudAUXSet(s32 auxA, s32 auxB) { + if (auxA == -1) { + auxA = 0; + } + if (auxB == -1) { + auxB = 1; + } + // msmSysSetAux(auxA, auxB); +} + +void HuAudAUXVolSet(s8 auxA, s8 auxB) { + HuAuxAVol = auxA; + HuAuxBVol = auxB; +} + +void HuAudVoiceInit(s16 ovl) { + SNDGRPTBL *sndGrp; + OSTick osTick; + s16 numNotChars; + s16 grpId; + s16 temp_r25; + s16 character; + + void *buf; + s16 i; + + if (ovl != OVL_INVALID) { + sndGrp = sndGrpTable; + while (1) { + if (sndGrp->ovl == ovl && sndGrp->grpSet == -1) { + return; + } + if (sndGrp->ovl == OVL_INVALID) { + break; + } + sndGrp++; + } + } + for (i = numNotChars = 0; i < 4; i++) { + character = GWPlayerCfg[i].character; + if (character < 0 || character >= 8 || character == 0xFF || charVoiceGroupStat[character] != 0) { + numNotChars++; + } + } + if (numNotChars < 4) { + for (i = 0; i < 8; i++) { + charVoiceGroupStat[i] = 0; + } + // msmMusStopAll(1, 0); + // msmSeStopAll(1, 0); + osTick = OSGetTick(); + // while ((msmMusGetNumPlay(1) != 0 || msmSeGetNumPlay(1) != 0) + // && OSTicksToMilliseconds(OSGetTick() - osTick) < 500); + OSReport("############CharGrpSet\n"); + // temp_r25 = msmSysDelGroupBase(0); + if (temp_r25 < 0) { + OSReport("Del Group Error %d\n", temp_r25); + } else { + OSReport("Del Group OK\n"); + } + for (i = 0; i < 4; i++) { + character = GWPlayerCfg[i].character; + if (character >= 0 && character < 8 && character != 0xFF) { + charVoiceGroupStat[character] = 1; + grpId = character + 10; + // buf = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(grpId)); + #if VERSION_NTSC + // msmSysLoadGroupBase(grpId, buf); + #else + temp_r25 = msmSysLoadGroupBase(grpId, buf); + #endif + // HuMemDirectFree(buf); + } + } + sndGroupBak = -1; + } +} + +s32 HuAudPlayerVoicePlay(s16 player, s16 seId) { + s16 charNo = GWPlayerCfg[player].character; + + return HuAudCharVoicePlay(charNo, seId); +} + +s32 HuAudPlayerVoicePlayPos(s16 player, s16 seId, Vec *pos) { + s16 charNo = GWPlayerCfg[player].character; + + return HuAudCharVoicePlayPos(charNo, seId, pos); +} + +void HuAudPlayerVoicePlayEntry(s16 player, s16 seId) { + s16 charNo = GWPlayerCfg[player].character; + + HuAudCharVoicePlayEntry(charNo, seId); +} + +s32 HuAudCharVoicePlay(s16 charNo, s16 seId) +{ + MSM_SEPARAM param; + + // if (omSysExitReq != 0) { + // return 0; + // } + // seId += (charNo << 6); + // param.flag = MSM_SEPARAM_NONE; + // if (HuAuxAVol != -1) { + // param.flag |= MSM_SEPARAM_AUXVOLA; + // } + // if (HuAuxBVol != -1) { + // param.flag |= MSM_SEPARAM_AUXVOLB; + // } + // param.auxAVol = HuAuxAVol; + // param.auxBVol = HuAuxBVol; + return HuSePlay(seId, ¶m); +} + +s32 HuAudCharVoicePlayPos(s16 charNo, s16 seId, Vec *pos) { + MSM_SEPARAM param; + + // if (omSysExitReq != 0) { + // return 0; + // } + // seId += (charNo << 6); + // param.flag = MSM_SEPARAM_POS; + // if (HuAuxAVol != -1) { + // param.flag |= MSM_SEPARAM_AUXVOLA; + // } + // if (HuAuxBVol != -1) { + // param.flag |= MSM_SEPARAM_AUXVOLB; + // } + // param.auxAVol = HuAuxAVol; + // param.auxBVol = HuAuxBVol; + // param.pos.x = pos->x; + // param.pos.y = pos->y; + // param.pos.z = pos->z; + return HuSePlay(seId, ¶m); +} + +void HuAudCharVoicePlayEntry(s16 charNo, s16 seId) { + // int seNoTbl[MSM_ENTRY_SENO_MAX]; // size unknown (min: 30, max: 33) + // u16 id; + // u16 i; + + // seId += (charNo << 6); + // id = msmSeGetEntryID(seId, seNoTbl); + // for (i = 0; i < id; i++) { + // msmSeStop(seNoTbl[i], 0); + // } +} + +static int HuSePlay(int seId, MSM_SEPARAM *param) +{ + s32 result; + + // result = msmSePlay(seId, param); + // if (result < 0) { + // OSReport("#########SE Entry Error\n", seId, result); + // } + return 12; + // return result; +} diff --git a/src/port/byteswap.cpp b/src/port/byteswap.cpp new file mode 100644 index 00000000..d9fec8e0 --- /dev/null +++ b/src/port/byteswap.cpp @@ -0,0 +1,989 @@ +#include "game/hsfformat.h" +#include "game/hsfformat.h" +#include +#include +#include +#include +#include +#include + +extern "C" { +#include "port/byteswap.h" +} + +template [[nodiscard]] constexpr T bswap16(T val) noexcept +{ + static_assert(sizeof(T) == sizeof(u16)); + union { + u16 u; + T t; + } v { .t = val }; +#if __GNUC__ + v.u = __builtin_bswap16(v.u); +#elif _WIN32 + v.u = _byteswap_ushort(v.u); +#else + v.u = (v.u << 8) | ((v.u >> 8) & 0xFF); +#endif + return v.t; +} + +template [[nodiscard]] constexpr T bswap32(T val) noexcept +{ + static_assert(sizeof(T) == sizeof(u32)); + union { + u32 u; + T t; + } 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; +} + +static void bswap16_unaligned(u8 *ptr) +{ + u8 temp = ptr[0]; + ptr[0] = ptr[1]; + ptr[1] = temp; +} + +static void bswap32_unaligned(u8 *ptr) +{ + u8 temp = ptr[0]; + ptr[0] = ptr[3]; + ptr[3] = temp; + temp = ptr[1]; + ptr[1] = ptr[2]; + ptr[2] = temp; +} + +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 void bswap_flat(B &base, T *start, s32 count) +{ + T *objBase = start; + for (s32 i = 0; i < count; ++i) { + bswap(base, objBase[i]); + } +} +template void bswap(B &base, f32 &v) +{ + v = bswap32(v); +} +template void bswap(B &base, s32 &v) +{ + v = bswap32(v); +} +template void bswap(B &base, u32 &v) +{ + v = bswap32(v); +} +template void bswap(B &base, s16 &v) +{ + v = bswap16(v); +} +template void bswap(B &base, u16 &v) +{ + v = bswap16(v); +} +template void bswap(B &base, u8 &v) +{ + // no-op +} +template void bswap(B &base, s8 &v) +{ + // no-op +} +template void bswap(B &base, char &v) +{ + // no-op +} +template void bswap(B &base, Vec &vec) +{ + bswap(base, vec.x); + bswap(base, vec.y); + bswap(base, vec.z); +} +template void bswap(B &base, S16Vec &vec) +{ + bswap(base, vec.x); + bswap(base, vec.y); + bswap(base, vec.z); +} +template void bswap(B &base, Vec2f &vec) +{ + bswap(base, vec.x); + bswap(base, vec.y); +} + +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); + bswap(base, obj.patNum); + bswap(base, obj.bmpNum); + bswap(base, obj.useNum); + bswap(base, obj.bank); + bswap(base, obj.pat); + bswap(base, obj.bmp); + + dest.bankNum = obj.bankNum; + dest.patNum = obj.patNum; + dest.bmpNum = obj.bmpNum; + dest.useNum = obj.useNum; + 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) +{ + bswap(base, obj.timeNum); + bswap(base, obj.unk); + bswap(base, obj.frame); + + dest.timeNum = obj.timeNum; + dest.unk = obj.unk; + dest.frame = reinterpret_cast(static_cast(obj.frame)); +} + +template void bswap(B &base, AnimPatData32b &obj, AnimPatData &dest) +{ + bswap(base, obj.layerNum); + bswap(base, obj.centerX); + bswap(base, obj.centerY); + bswap(base, obj.sizeX); + bswap(base, obj.sizeY); + bswap(base, obj.layer); + + dest.layerNum = obj.layerNum; + dest.centerX = obj.centerX; + dest.centerY = obj.centerY; + dest.sizeX = obj.sizeX; + dest.sizeY = obj.sizeY; + dest.layer = reinterpret_cast(static_cast(obj.layer)); +} + +template void bswap(B &base, AnimBmpData32b &obj, AnimBmpData &dest) +{ + bswap(base, obj.pixSize); + bswap(base, obj.dataFmt); + bswap(base, obj.palNum); + bswap(base, obj.sizeX); + bswap(base, obj.sizeY); + bswap(base, obj.dataSize); + bswap(base, obj.palData); + bswap(base, obj.data); + + dest.pixSize = obj.pixSize; + dest.dataFmt = obj.dataFmt; + dest.palNum = obj.palNum; + dest.sizeX = obj.sizeX; + dest.sizeY = obj.sizeY; + dest.dataSize = obj.dataSize; + dest.palData = reinterpret_cast(static_cast(obj.palData)); + dest.data = reinterpret_cast(static_cast(obj.data)); +} + +template void bswap(B &base, AnimFrameData &obj) +{ + bswap(base, obj.pat); + bswap(base, obj.time); + bswap(base, obj.shiftX); + bswap(base, obj.shiftY); + bswap(base, obj.flip); + bswap(base, obj.pad); +} + +template void bswap(B &base, AnimLayerData &obj) +{ + bswap(base, obj.alpha); + bswap(base, obj.flip); + bswap(base, obj.bmpNo); + bswap(base, obj.startX); + bswap(base, obj.startY); + bswap(base, obj.sizeX); + bswap(base, obj.sizeY); + bswap(base, obj.shiftX); + bswap(base, obj.shiftY); + bswap_flat(base, obj.vtx, sizeof(obj.vtx) / sizeof(s16)); +} + +template void bswap(B &base, HsfSection &obj) +{ + bswap(base, obj.ofs); + bswap(base, obj.count); +} + +template void bswap(B &base, HsfHeader &obj) +{ + bswap(base, obj.scene); + bswap(base, obj.color); + bswap(base, obj.material); + bswap(base, obj.attribute); + bswap(base, obj.vertex); + bswap(base, obj.normal); + bswap(base, obj.st); + bswap(base, obj.face); + bswap(base, obj.object); + bswap(base, obj.bitmap); + bswap(base, obj.palette); + bswap(base, obj.motion); + bswap(base, obj.cenv); + bswap(base, obj.skeleton); + bswap(base, obj.part); + bswap(base, obj.cluster); + bswap(base, obj.shape); + bswap(base, obj.mapAttr); + bswap(base, obj.matrix); + bswap(base, obj.symbol); + bswap(base, obj.string); +} + +template void bswap(B &base, HsfCluster32b &obj, HsfCluster &dest) +{ + bswap(base, obj.name[0]); + bswap(base, obj.name[1]); + bswap(base, obj.targetName); + bswap(base, obj.part); + bswap(base, obj.index); + bswap_flat(base, obj.weight, sizeof(obj.weight) / sizeof(float)); + bswap(base, obj.type); + bswap(base, obj.vertexCnt); + bswap(base, obj.vertex); + + dest.name[0] = reinterpret_cast(static_cast(obj.name[0])); + dest.name[1] = reinterpret_cast(static_cast(obj.name[1])); + + dest.targetName = reinterpret_cast(static_cast(obj.targetName)); + dest.index = obj.index; + std::copy(std::begin(obj.weight), std::end(obj.weight), dest.weight); + + dest.adjusted = obj.adjusted; + dest.unk95 = obj.unk95; + dest.type = obj.type; + dest.vertexCnt = obj.vertexCnt; + dest.vertex = reinterpret_cast(static_cast(obj.vertex)); +} + +template void bswap(B &base, HsfAttribute32b &obj, HsfAttribute &dest) +{ + bswap(base, obj.name); + bswap(base, obj.unk04); + bswap(base, obj.unk0C); + bswap(base, obj.unk14); + bswap(base, obj.unk20); + bswap(base, obj.unk28); + bswap(base, obj.unk2C); + bswap(base, obj.unk30); + bswap(base, obj.unk34); + bswap(base, obj.wrap_s); + bswap(base, obj.wrap_t); + bswap(base, obj.unk78); + bswap(base, obj.flag); + bswap(base, obj.bitmap); + + 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); + dest.unk14 = obj.unk14; + std::copy(std::begin(obj.unk18), std::end(obj.unk18), dest.unk18); + dest.unk20 = obj.unk20; + std::copy(std::begin(obj.unk24), std::end(obj.unk24), dest.unk24); + dest.unk28 = obj.unk28; + dest.unk2C = obj.unk2C; + dest.unk30 = obj.unk30; + dest.unk34 = obj.unk34; + std::copy(std::begin(obj.unk38), std::end(obj.unk38), dest.unk38); + dest.wrap_s = obj.wrap_s; + dest.wrap_t = obj.wrap_t; + std::copy(std::begin(obj.unk6C), std::end(obj.unk6C), dest.unk6C); + dest.unk78 = obj.unk78; + dest.flag = obj.flag; + dest.bitmap = reinterpret_cast(static_cast(obj.bitmap)); +} + +template void bswap(B &base, HsfMaterial32b &obj, HsfMaterial &dest) +{ + bswap(base, obj.name); + bswap(base, obj.pass); + bswap(base, obj.hilite_scale); + bswap(base, obj.unk18); + bswap(base, obj.invAlpha); + bswap_flat(base, obj.unk20, sizeof(obj.unk20) / sizeof(float)); + bswap(base, obj.refAlpha); + bswap(base, obj.unk2C); + bswap(base, obj.flags); + bswap(base, obj.numAttrs); + bswap(base, obj.attrs); + + 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; + std::copy(std::begin(obj.litColor), std::end(obj.litColor), dest.litColor); + std::copy(std::begin(obj.color), std::end(obj.color), dest.color); + std::copy(std::begin(obj.shadowColor), std::end(obj.shadowColor), dest.shadowColor); + dest.hilite_scale = obj.hilite_scale; + dest.unk18 = obj.unk18; + dest.invAlpha = obj.invAlpha; + std::copy(std::begin(obj.unk20), std::end(obj.unk20), dest.unk20); + dest.refAlpha = obj.refAlpha; + dest.unk2C = obj.unk2C; + dest.flags = obj.flags; + dest.numAttrs = obj.numAttrs; + dest.attrs = reinterpret_cast(static_cast(obj.attrs)); +} + +template void bswap(B &base, HsfScene &obj) +{ + u32 fogType = static_cast(obj.fogType); + fogType = bswap32(fogType); + obj.fogType = static_cast(fogType); + bswap(base, obj.start); + bswap(base, obj.end); +} + +template void bswap(B &base, HsfBuffer32b &obj, HsfBuffer &dest) +{ + bswap(base, obj.name); + bswap(base, obj.count); + bswap(base, obj.data); + + dest.name = reinterpret_cast(static_cast(obj.name)); + dest.count = obj.count; + dest.data = reinterpret_cast(static_cast(obj.data)); +} + +template void bswap(B &base, HsfMatrix32b &obj, HsfMatrix &dest) +{ + bswap(base, obj.base_idx); + bswap(base, obj.count); + + dest.base_idx = obj.base_idx; + dest.count = obj.count; + + dest.data = reinterpret_cast(&obj + 1); + for (s32 i = 0; i < obj.count; i++) { + for (s32 j = 0; j < 3; j++) { + bswap_flat(base, dest.data[i][j], 4); + } + } +} + +template void bswap(B &base, HsfPalette32b &obj, HsfPalette &dest) +{ + bswap(base, obj.name); + bswap(base, obj.unk); + bswap(base, obj.palSize); + bswap(base, obj.data); + + dest.name = reinterpret_cast(static_cast(obj.name)); + dest.unk = obj.unk; + dest.palSize = obj.palSize; + dest.data = reinterpret_cast(static_cast(obj.data)); +} + +template void bswap(B &base, HsfPart32b &obj, HsfPart &dest) +{ + bswap(base, obj.name); + bswap(base, obj.count); + bswap(base, obj.vertex); + + dest.name = reinterpret_cast(static_cast(obj.name)); + dest.count = obj.count; + dest.vertex = reinterpret_cast(static_cast(obj.vertex)); +} + +template void bswap(B &base, HsfBitmap32b &obj, HsfBitmap &dest) +{ + bswap(base, obj.name); + bswap(base, obj.maxLod); + bswap(base, obj.sizeX); + bswap(base, obj.sizeY); + bswap(base, obj.palSize); + bswap(base, obj.palData); + bswap(base, obj.unk); + bswap(base, obj.data); + + dest.name = reinterpret_cast(static_cast(obj.name)); + dest.maxLod = obj.maxLod; + dest.dataFmt = obj.dataFmt; + dest.pixSize = obj.pixSize; + dest.sizeX = obj.sizeX; + dest.sizeY = obj.sizeY; + dest.palSize = obj.palSize; + dest.tint = obj.tint; + dest.palData = reinterpret_cast(static_cast(obj.palData)); + dest.unk = obj.unk; + dest.data = reinterpret_cast(static_cast(obj.data)); +} + +template void bswap(B &base, HsfMapAttr32b &obj, HsfMapAttr &dest) +{ + bswap(base, obj.minX); + bswap(base, obj.minZ); + bswap(base, obj.maxX); + bswap(base, obj.maxZ); + bswap(base, obj.data); + bswap(base, obj.dataLen); + + dest.minX = obj.minX; + dest.minZ = obj.minZ; + dest.maxX = obj.maxZ; + dest.data = reinterpret_cast(static_cast(obj.data)); + dest.dataLen = obj.dataLen; +} + +template void bswap(B &base, HsfTransform &obj) +{ + bswap(base, obj.pos); + bswap(base, obj.rot); + bswap(base, obj.scale); +} + +template void bswap(B &base, HsfSkeleton32b &obj, HsfSkeleton &dest) +{ + bswap(base, obj.name); + bswap(base, obj.transform); + + dest.name = reinterpret_cast(static_cast(obj.name)); + dest.transform = obj.transform; +} + +template void bswap(B &base, HsfShape32b &obj, HsfShape &dest) +{ + bswap(base, obj.name); + bswap(base, 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) +{ + bswap(base, obj.target); + bswap(base, obj.pos); + bswap(base, obj.posCnt); + bswap(base, obj.normal); + bswap(base, obj.normalCnt); +} + +template void bswap(B &base, HsfCenvDualWeight &obj) +{ + bswap(base, obj.weight); + bswap(base, obj.pos); + bswap(base, obj.posCnt); + bswap(base, obj.normal); + bswap(base, obj.normalCnt); +} + +template void bswap(B &base, HsfCenvDual32b &obj, HsfCenvDual &dest) +{ + bswap(base, obj.target1); + bswap(base, obj.target2); + bswap(base, obj.weightCnt); + bswap(base, obj.weight); + + dest.target1 = obj.target1; + dest.target2 = obj.target2; + dest.weightCnt = obj.weightCnt; + dest.weight = reinterpret_cast(static_cast(obj.weight)); +} + +template void bswap(B &base, HsfCenvMultiWeight &obj) +{ + bswap(base, obj.target); + bswap(base, obj.value); +} + +template void bswap(B &base, HsfCenvMulti32b &obj, HsfCenvMulti &dest) +{ + bswap(base, obj.weightCnt); + bswap(base, obj.pos); + bswap(base, obj.posCnt); + bswap(base, obj.normal); + bswap(base, obj.normalCnt); + bswap(base, obj.weight); + + dest.weightCnt = obj.weightCnt; + dest.pos = obj.pos; + dest.posCnt = obj.posCnt; + dest.normal = obj.normal; + dest.normalCnt = obj.normalCnt; + dest.weight = reinterpret_cast(static_cast(obj.weight)); +} + +template void bswap(B &base, HsfCenv32b &obj, HsfCenv &dest) +{ + bswap(base, obj.name); + bswap(base, obj.singleData); + bswap(base, obj.dualData); + bswap(base, obj.multiData); + bswap(base, obj.singleCount); + bswap(base, obj.dualCount); + bswap(base, obj.multiCount); + bswap(base, obj.vtxCount); + bswap(base, obj.copyCount); + + 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; + dest.vtxCount = obj.vtxCount; + dest.copyCount = obj.copyCount; +} + +template void bswap(B &base, HsfObjectData32b &obj, HsfObjectData &dest, u32 type) +{ + bswap(base, obj.parent); + bswap(base, obj.childrenCount); + bswap(base, obj.children); + bswap(base, obj.base); + bswap(base, obj.curr); + bswap(base, obj.face); + bswap(base, obj.vertex); + bswap(base, obj.normal); + bswap(base, obj.color); + bswap(base, obj.st); + bswap(base, obj.material); + bswap(base, obj.attribute); + bswap(base, obj.vertexShapeCnt); + bswap(base, obj.vertexShape); + bswap(base, obj.clusterCnt); + bswap(base, obj.cluster); + bswap(base, obj.cenvCnt); + bswap(base, obj.cenv); + bswap(base, obj.vtxtop); + bswap(base, obj.normtop); + + dest.parent = reinterpret_cast(static_cast(obj.parent)); + dest.childrenCount = obj.childrenCount; + dest.children = reinterpret_cast(static_cast(obj.children)); + dest.base = obj.base; + dest.curr = obj.curr; + 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(static_cast(obj.vertexShape)); + dest.clusterCnt = obj.clusterCnt; + dest.cluster = reinterpret_cast(static_cast(obj.cluster)); + dest.cenvCnt = obj.cenvCnt; + dest.cenv = reinterpret_cast(static_cast(obj.cenv)); + dest.vtxtop = reinterpret_cast(static_cast(obj.vtxtop)); + dest.normtop = reinterpret_cast(static_cast(obj.normtop)); + + switch (type) { + case HSF_OBJ_MESH: + bswap(base, obj.mesh.min); + bswap(base, obj.mesh.max); + bswap(base, obj.mesh.baseMorph); + bswap_flat(base, obj.mesh.morphWeight, std::size(obj.mesh.morphWeight)); + + dest.mesh.min = obj.mesh.min; + dest.mesh.max = obj.mesh.max; + dest.mesh.baseMorph = obj.mesh.baseMorph; + std::copy(std::begin(obj.mesh.morphWeight), std::end(obj.mesh.morphWeight), dest.mesh.morphWeight); + break; + case HSF_OBJ_REPLICA: + bswap(base, obj.replica); + + dest.replica = reinterpret_cast(static_cast(obj.replica)); + break; + default: + break; + } +} + +template void bswap(B &base, HsfObject32b &obj, HsfObject &dest) +{ + bswap(base, obj.name); + bswap(base, obj.type); + bswap(base, obj.constData); + bswap(base, obj.flags); + + dest.name = reinterpret_cast(static_cast(obj.name)); + dest.type = obj.type; + dest.constData = reinterpret_cast(static_cast(obj.constData)); + dest.flags = obj.flags; + + bswap(base, obj.data, dest.data, obj.type); +} + +template void bswap(B &base, HsfBitmapKey32b &obj, HsfBitmapKey &dest) +{ + bswap(base, obj.time); + bswap(base, obj.data); + + dest.time = obj.time; + dest.data = reinterpret_cast(static_cast(obj.data)); +} + +template void bswap(B &base, HsfTrack32b &obj, HsfTrack &dest) +{ + bswap(base, obj.target); + bswap(base, obj.curveType); + bswap(base, obj.numKeyframes); + + dest.type = obj.type; + dest.start = obj.start; + dest.target = obj.target; + dest.curveType = obj.curveType; + dest.numKeyframes = obj.numKeyframes; + + 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 { + bswap(base, obj.param); + bswap(base, obj.channel); + + dest.param = obj.param; + dest.channel = obj.channel; + } +} + +template void bswap(B &base, HsfMotion32b &obj, HsfMotion &dest) +{ + bswap(base, obj.name); + bswap(base, obj.numTracks); + bswap(base, obj.track); + bswap(base, obj.len); + + dest.name = reinterpret_cast(static_cast(obj.name)); + dest.numTracks = obj.numTracks; + dest.track = reinterpret_cast(static_cast(obj.track)); + dest.len = obj.len; +} + +template void bswap(B &base, HsfFace32b &obj, HsfFace &dest) +{ + bswap(base, obj.type); + bswap(base, obj.mat); + bswap(base, obj.nbt); + + dest.type = obj.type; + dest.mat = obj.mat; + dest.nbt = obj.nbt; + + if (obj.type == 4) { + bswap(base, obj.strip.count); + bswap(base, obj.strip.data); + bswap_flat(base, obj.strip.indices[0], 3 * 4); + + dest.strip.count = obj.strip.count; + 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 { + bswap_flat(base, obj.indices[0], 4 * 4); + std::copy(&obj.indices[0][0], &obj.indices[0][0] + 4 * 4, &dest.indices[0][0]); + } +} + +void byteswap_u16(u16 *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} + +void byteswap_s16(s16 *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} + +void byteswap_u32(u32 *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} + +void byteswap_s32(s32 *src) +{ + bswap(*src, *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); + bswap(*anim, *anim, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_animbankdata(AnimBankData32b *src, AnimBankData *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_animpatdata(AnimPatData32b *src, AnimPatData *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_animbmpdata(AnimBmpData32b *src, AnimBmpData *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_animframedata(AnimFrameData *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} + +void byteswap_animlayerdata(AnimLayerData *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} + +void byteswap_hsfheader(HsfHeader *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} + +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(HsfMatrix32b *src, HsfMatrix *dest) +{ + bswap(*src, *src, *dest); + 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_dual_weight(HsfCenvDualWeight *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} + +void byteswap_hsfcenv_dual(HsfCenvDual32b *src, HsfCenvDual *dest) +{ + bswap(*src, *src, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_hsfcenv_multi_weight(HsfCenvMultiWeight *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} + +void byteswap_hsfcenv_multi(HsfCenvMulti32b *src, HsfCenvMulti *dest) +{ + bswap(*src, *src, *dest); + 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(); +} \ No newline at end of file diff --git a/src/port/dvd.c b/src/port/dvd.c new file mode 100644 index 00000000..31795f2d --- /dev/null +++ b/src/port/dvd.c @@ -0,0 +1,168 @@ +// Credits: Super Monkey Ball + +#include +#include +#include +#include +#ifdef _WIN32 +#include +#include + +#else +#include +#endif +#include + +#ifndef PATH_MAX +#define PATH_MAX 256 +#endif + +static char (*s_pathEntries)[PATH_MAX] = NULL; +static int s_pathEntriesCount = 0; +static char s_rootDir[PATH_MAX]; + +void DVDInit(void) +{ + chdir("GMPE01_00/files"); + if (getcwd(s_rootDir, sizeof(s_rootDir)) == NULL) + exit(1); +} + +BOOL DVDChangeDir(char *dir) +{ + printf("DVDChangeDir: %s\n", dir); + if (dir[0] == '/') { + char path[PATH_MAX]; + if (snprintf(path, sizeof(path), "%s/%s", s_rootDir, dir) >= PATH_MAX) + return FALSE; + return chdir(path) == 0; + } + else + return chdir(dir) == 0; +} + +s32 DVDConvertPathToEntrynum(char *pathPtr) +{ + int i; + FILE *f; + char absolute[PATH_MAX]; + + printf("DVDConvertPathToEntrynum: %s\n", pathPtr); +#ifdef _WIN32 + if (GetFullPathNameA(pathPtr, sizeof(absolute), absolute, NULL) == 0) + return -1; +#else + if (realpath(pathPtr, absolute) == NULL) + return -1; +#endif + for (i = 0; i < s_pathEntriesCount; i++) { + if (strcmp(absolute, s_pathEntries[i]) == 0) + return i; + } + + if (strlen(absolute) + 1 > PATH_MAX) + return -1; + + // check if file exists + f = fopen(absolute, "rb"); + if (f == NULL) + return -1; + fclose(f); + + // add new entry + printf("size = %i\n", sizeof(*s_pathEntries)); + s_pathEntries = realloc(s_pathEntries, (s_pathEntriesCount + 1) * sizeof(*s_pathEntries)); + strcpy(s_pathEntries[s_pathEntriesCount], absolute); + return s_pathEntriesCount++; +} + +BOOL DVDOpen(char *fileName, DVDFileInfo *fileInfo) +{ + FILE *f; + + printf("DVDOpen: %s\n", fileName); + f = fopen(fileName, "rb"); + if (f == NULL) { + puts("open failed\n"); + return FALSE; + } + fileInfo->cb.addr = f; + fseek(f, 0, SEEK_END); + fileInfo->length = ftell(f); + return TRUE; +} + +BOOL DVDFastOpen(s32 entrynum, DVDFileInfo *fileInfo) +{ + printf("DVDFastOpen: %li\n", entrynum); + if (entrynum < s_pathEntriesCount) + return DVDOpen(s_pathEntries[entrynum], fileInfo); + return FALSE; +} + +BOOL DVDClose(DVDFileInfo *fileInfo) +{ + FILE *f = fileInfo->cb.addr; + + if (f != NULL) + fclose(f); + fileInfo->cb.addr = NULL; + return TRUE; +} + +BOOL DVDReadPrio(DVDFileInfo *fileInfo, void *addr, s32 length, s32 offset, s32 prio) +{ + FILE *f = fileInfo->cb.addr; + BOOL success; + + printf("DVDReadPrio: length %li, offset %li\n", length, offset); + fseek(f, offset, SEEK_SET); + success = (fread(addr, length, 1, f) == 1) || feof(f); + if (!success) + puts("read failed"); + return TRUE; +} + +BOOL DVDReadAsyncPrio(DVDFileInfo *fileInfo, void *addr, s32 length, s32 offset, DVDCallback callback, s32 prio) +{ + FILE *f = fileInfo->cb.addr; + BOOL success; + + printf("DVDReadAsyncPrio: length %li, offset %li\n", length, offset); + fseek(f, offset, SEEK_SET); + success = (fread(addr, length, 1, f) == 1) || feof(f); + if (!success) + puts("read failed"); + callback(success ? 0 : -1, fileInfo); + return TRUE; +} + +BOOL DVDOpenDir(char *dirName, DVDDir *dir) +{ + puts("DVDOpenDir is a stub"); + return FALSE; +} + +BOOL DVDCloseDir(DVDDir *dir) +{ + puts("DVDCloseDir is a stub"); + return FALSE; +} + +BOOL DVDReadDir(DVDDir *dir, DVDDirEntry *dirent) +{ + puts("DVDReadDir is a stub"); + return FALSE; +} + +s32 DVDGetDriveStatus(void) +{ + // puts("DVDGetDriveStatus is a stub"); + return 0; +} + +s32 DVDGetCommandBlockStatus(const DVDCommandBlock *block) +{ + // TODO + return 0; +} diff --git a/src/port/imgui.cpp b/src/port/imgui.cpp new file mode 100644 index 00000000..2b70dc04 --- /dev/null +++ b/src/port/imgui.cpp @@ -0,0 +1,268 @@ +#include "port/imgui.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#if _WIN32 +#include "Windows.h" +#endif + +static bool m_frameRate = true; +static bool m_pipelineInfo = true; +static bool m_graphicsBackend = true; +static int m_debugOverlayCorner = 0; // top-left + +using namespace std::string_literals; +using namespace std::string_view_literals; + +namespace aurora::gfx +{ +extern std::atomic_uint32_t queuedPipelines; +extern std::atomic_uint32_t createdPipelines; + +extern size_t g_drawCallCount; +extern size_t g_mergedDrawCallCount; +extern size_t g_lastVertSize; +extern size_t g_lastUniformSize; +extern size_t g_lastIndexSize; +extern size_t g_lastStorageSize; +} // namespace aurora::gfx + +static void SetOverlayWindowLocation(int corner) +{ + const ImGuiViewport *viewport = ImGui::GetMainViewport(); + ImVec2 workPos = viewport->WorkPos; // Use work area to avoid menu-bar/task-bar, if any! + ImVec2 workSize = viewport->WorkSize; + ImVec2 windowPos; + ImVec2 windowPosPivot; + constexpr float padding = 10.0f; + windowPos.x = (corner & 1) != 0 ? (workPos.x + workSize.x - padding) : (workPos.x + padding); + windowPos.y = (corner & 2) != 0 ? (workPos.y + workSize.y - padding) : (workPos.y + padding); + windowPosPivot.x = (corner & 1) != 0 ? 1.0f : 0.0f; + windowPosPivot.y = (corner & 2) != 0 ? 1.0f : 0.0f; + ImGui::SetNextWindowPos(windowPos, ImGuiCond_Always, windowPosPivot); +} + +static void ImGuiStringViewText(std::string_view text) +{ + // begin()/end() do not work on MSVC + ImGui::TextUnformatted(text.data(), text.data() + text.size()); +} + +static std::string BytesToString(size_t bytes) +{ + constexpr std::array suffixes{"B"sv, "KB"sv, "MB"sv, "GB"sv, "TB"sv, "PB"sv, "EB"sv}; + uint32_t s = 0; + auto count = static_cast(bytes); + while (count >= 1024.0 && s < 7) + { + s++; + count /= 1024.0; + } + if (count - floor(count) == 0.0) + { + return fmt::format(FMT_STRING("{}{}"), static_cast(count), suffixes[s]); + } + return fmt::format(FMT_STRING("{:.1f}{}"), count, suffixes[s]); +} + +void imgui_main(const AuroraInfo *info) +{ + + ImGuiIO &io = ImGui::GetIO(); + ImGuiWindowFlags windowFlags = ImGuiWindowFlags_NoDecoration | + ImGuiWindowFlags_AlwaysAutoResize | + ImGuiWindowFlags_NoFocusOnAppearing | ImGuiWindowFlags_NoNav; + if (m_debugOverlayCorner != -1) + { + SetOverlayWindowLocation(m_debugOverlayCorner); + windowFlags |= ImGuiWindowFlags_NoMove; + } + ImGui::SetNextWindowBgAlpha(0.65f); + if (ImGui::Begin("Debug Overlay", nullptr, windowFlags)) + { + bool hasPrevious = false; + if (m_frameRate) + { + if (hasPrevious) + { + ImGui::Separator(); + } + hasPrevious = true; + + ImGuiStringViewText(fmt::format(FMT_STRING("FPS: {:.1f}\n"), io.Framerate)); + } + if (m_graphicsBackend) + { + if (hasPrevious) + { + ImGui::Separator(); + } + hasPrevious = true; + + std::string_view backendString = "Unknown"sv; + switch (info->backend) + { + case BACKEND_D3D12: + backendString = "D3D12"sv; + break; + case BACKEND_METAL: + backendString = "Metal"sv; + break; + case BACKEND_VULKAN: + backendString = "Vulkan"sv; + break; + case BACKEND_OPENGL: + backendString = "OpenGL"sv; + break; + case BACKEND_OPENGLES: + backendString = "OpenGL ES"sv; + break; + case BACKEND_WEBGPU: + backendString = "WebGPU"sv; + break; + case BACKEND_NULL: + backendString = "Null"sv; + break; + } + ImGuiStringViewText(fmt::format(FMT_STRING("Backend: {}\n"), backendString)); + } + if (m_pipelineInfo) + { + if (hasPrevious) + { + ImGui::Separator(); + } + hasPrevious = true; + + ImGuiStringViewText( + fmt::format(FMT_STRING("Queued pipelines: {}\n"), aurora::gfx::queuedPipelines.load())); + ImGuiStringViewText( + fmt::format(FMT_STRING("Done pipelines: {}\n"), aurora::gfx::createdPipelines.load())); + ImGuiStringViewText( + fmt::format(FMT_STRING("Draw call count: {}\n"), aurora::gfx::g_drawCallCount)); + ImGuiStringViewText(fmt::format(FMT_STRING("Merged draw calls: {}\n"), + aurora::gfx::g_mergedDrawCallCount)); + ImGuiStringViewText(fmt::format(FMT_STRING("Vertex size: {}\n"), + BytesToString(aurora::gfx::g_lastVertSize))); + ImGuiStringViewText(fmt::format(FMT_STRING("Uniform size: {}\n"), + BytesToString(aurora::gfx::g_lastUniformSize))); + ImGuiStringViewText(fmt::format(FMT_STRING("Index size: {}\n"), + BytesToString(aurora::gfx::g_lastIndexSize))); + ImGuiStringViewText(fmt::format(FMT_STRING("Storage size: {}\n"), + BytesToString(aurora::gfx::g_lastStorageSize))); + ImGuiStringViewText(fmt::format( + FMT_STRING("Total: {}\n"), + BytesToString(aurora::gfx::g_lastVertSize + aurora::gfx::g_lastUniformSize + + aurora::gfx::g_lastIndexSize + aurora::gfx::g_lastStorageSize))); + } + } + ImGui::End(); +} + +class Limiter +{ + using delta_clock = std::chrono::high_resolution_clock; + using duration_t = std::chrono::nanoseconds; + + public: + void Reset() + { + m_oldTime = delta_clock::now(); + } + + void Sleep(duration_t targetFrameTime) + { + if (targetFrameTime.count() == 0) + { + return; + } + + auto start = delta_clock::now(); + duration_t adjustedSleepTime = SleepTime(targetFrameTime); + if (adjustedSleepTime.count() > 0) + { + NanoSleep(adjustedSleepTime); + duration_t overslept = TimeSince(start) - adjustedSleepTime; + if (overslept < duration_t{targetFrameTime}) + { + m_overheadTimes[m_overheadTimeIdx] = overslept; + m_overheadTimeIdx = (m_overheadTimeIdx + 1) % m_overheadTimes.size(); + } + } + Reset(); + } + + duration_t SleepTime(duration_t targetFrameTime) + { + const auto sleepTime = duration_t{targetFrameTime} - TimeSince(m_oldTime); + m_overhead = std::accumulate(m_overheadTimes.begin(), m_overheadTimes.end(), duration_t{}) / + m_overheadTimes.size(); + if (sleepTime > m_overhead) + { + return sleepTime - m_overhead; + } + return duration_t{0}; + } + + private: + delta_clock::time_point m_oldTime; + std::array m_overheadTimes{}; + size_t m_overheadTimeIdx = 0; + duration_t m_overhead = duration_t{0}; + + duration_t TimeSince(delta_clock::time_point start) + { + return std::chrono::duration_cast(delta_clock::now() - start); + } + +#if _WIN32 + bool m_initialized; + double m_countPerNs; + + void NanoSleep(const duration_t duration) + { + if (!m_initialized) + { + LARGE_INTEGER freq; + QueryPerformanceFrequency(&freq); + m_countPerNs = static_cast(freq.QuadPart) / 1000000000.0; + m_initialized = true; + } + + DWORD ms = std::chrono::duration_cast(duration).count(); + auto tickCount = + static_cast(static_cast(duration.count()) * m_countPerNs); + LARGE_INTEGER count; + QueryPerformanceCounter(&count); + if (ms > 10) + { + // Adjust for Sleep overhead + ::Sleep(ms - 10); + } + auto end = count.QuadPart + tickCount; + do + { + QueryPerformanceCounter(&count); + } while (count.QuadPart < end); + } +#else + void NanoSleep(const duration_t duration) + { + std::this_thread::sleep_for(duration); + } +#endif +}; + +static Limiter g_frameLimiter; +void frame_limiter() +{ + g_frameLimiter.Sleep( + std::chrono::duration_cast(std::chrono::seconds{1}) / 60); +} diff --git a/src/port/portmain.c b/src/port/portmain.c new file mode 100644 index 00000000..c024bd18 --- /dev/null +++ b/src/port/portmain.c @@ -0,0 +1,7 @@ +int game_main(int argc, char *argv[]); + + +int main(int argc, char *argv[]) +{ + game_main(argc, argv); +} diff --git a/src/port/stubs.c b/src/port/stubs.c new file mode 100644 index 00000000..e5442505 --- /dev/null +++ b/src/port/stubs.c @@ -0,0 +1,800 @@ +#include "dolphin/gx/GXVert.h" +#include +#include +#include +#include + +#include +#include +#include + +// Credits: Super Monkey Ball + +static VIRetraceCallback sVIRetraceCallback = NULL; + +void OSReport(const char *msg, ...) +{ + va_list args; + va_start(args, msg); + vprintf(msg, args); + va_end(args); +} + +u32 OSGetConsoleType() +{ + return OS_CONSOLE_RETAIL1; +} + +u32 OSGetSoundMode() +{ + return 2; +} + +s32 CARDCancel(CARDFileInfo *fileInfo) +{ + puts("CARDCancel is a stub"); + return 0; +} + +s32 CARDCheck(s32 chan) +{ + puts("CARDCheck is a stub"); + return 0; +} + +s32 CARDCheckAsync(s32 chan, CARDCallback callback) +{ + puts("CARDCheckAsync is a stub"); + return 0; +} + +s32 CARDClose(CARDFileInfo *fileInfo) +{ + puts("CARDClose is a stub"); + return 0; +} + +s32 CARDCreate(s32 chan, const char *fileName, u32 size, CARDFileInfo *fileInfo) +{ + puts("CARDCreate is a stub"); + return 0; +} + +s32 CARDCreateAsync(s32 chan, const char *fileName, u32 size, CARDFileInfo *fileInfo, CARDCallback callback) +{ + puts("CARDCreateAsync is a stub"); + return 0; +} + +s32 CARDDelete(s32 chan, const char *fileName) +{ + puts("CARDDelete is a stub"); + return 0; +} + +s32 CARDDeleteAsync(s32 chan, const char *fileName, CARDCallback callback) +{ + puts("CARDDeleteAsync is a stub"); + return 0; +} + +s32 CARDFastDeleteAsync(s32 chan, s32 fileNo, CARDCallback callback) +{ + puts("CARDFastDeleteAsync is a stub"); + return 0; +} + +s32 CARDFastOpen(s32 chan, s32 fileNo, CARDFileInfo *fileInfo) +{ + puts("CARDFastOpen is a stub"); + return 0; +} + +s32 CARDFormat(s32 chan) +{ + puts("CARDFormat is a stub"); + return 0; +} + +s32 CARDFreeBlocks(s32 chan, s32 *byteNotUsed, s32 *filesNotUsed) +{ + puts("CARDFreeBlocks is a stub"); + return 0; +} + +s32 CARDGetResultCode(s32 chan) +{ + puts("CARDGetResultCode is a stub"); + return 0; +} + +s32 CARDGetStatus(s32 chan, s32 fileNo, CARDStat *stat) +{ + puts("CARDGetStatus is a stub"); + return 0; +} + +s32 CARDGetSectorSize(s32 chan, u32 *size) +{ + puts("CARDGetSectorSize is a stub"); + return 0; +} + +void CARDInit() +{ + puts("CARDInit is a stub"); +} + +s32 CARDMount(s32 chan, void *workArea, CARDCallback detachCallback) +{ + puts("CARDMount is a stub"); + return 0; +} + +s32 CARDMountAsync(s32 chan, void *workArea, CARDCallback detachCallback, CARDCallback attachCallback) +{ + puts("CARDMountAsync is a stub"); + return 0; +} + +s32 CARDOpen(s32 chan, const char *fileName, CARDFileInfo *fileInfo) +{ + puts("CARDOpen is a stub"); + return 0; +} + +s32 CARDProbeEx(s32 chan, s32 *memSize, s32 *sectorSize) +{ + puts("CARDProbeEx is a stub"); + return 0; +} + +s32 CARDRead(CARDFileInfo *fileInfo, void *addr, s32 length, s32 offset) +{ + puts("CARDRead is a stub"); + return 0; +} + +s32 CARDReadAsync(CARDFileInfo *fileInfo, void *addr, s32 length, s32 offset, CARDCallback callback) +{ + puts("CARDReadAsync is a stub"); + return 0; +} + +s32 CARDRename(s32 chan, const char *oldName, const char *newName) +{ + puts("CARDRename is a stub"); + return 0; +} + +s32 CARDRenameAsync(s32 chan, const char *oldName, const char *newName, CARDCallback callback) +{ + puts("CARDRenameAsync is a stub"); + return 0; +} + +s32 CARDSetStatusAsync(s32 chan, s32 fileNo, CARDStat *stat, CARDCallback callback) +{ + puts("CARDSetStatusAsync is a stub"); + return 0; +} + +s32 CARDUnmount(s32 chan) +{ + puts("CARDUnmount is a stub"); + return 0; +} + +s32 CARDWrite(CARDFileInfo *fileInfo, const void *addr, s32 length, s32 offset) +{ + puts("CARDWrite is a stub"); + return 0; +} + +s32 CARDWriteAsync(CARDFileInfo *fileInfo, const void *addr, s32 length, s32 offset, CARDCallback callback) +{ + puts("CARDWriteAsync is a stub"); + 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"); +} + +void DCFlushRangeNoSync(void *addr, u32 nBytes) +{ + //puts("DCFlushRangeNoSync is a stub"); +} + +void DCInvalidateRange(void *addr, u32 nBytes) +{ + //puts("DCInvalidateRange is a stub"); +} + +void DCStoreRange(void *addr, u32 nBytes) +{ + //puts("DCStoreRange is a stub"); +} + +void DCStoreRangeNoSync(void *addr, u32 nBytes) +{ + //puts("DCStoreRangeNoSync is a stub"); +} + +void DEMOUpdateStats(unsigned char inc) +{ + puts("DEMOUpdateStats is a stub"); +} + +void DEMOPrintStats(void) +{ + puts("DEMOPrintStats is a stub"); +} + +s32 DVDCancel(DVDCommandBlock *block) +{ + puts("DVDCancel is a stub"); + return 0; +} + +void DVDReadAbsAsyncForBS(void *a, struct bb2struct *b, int c, int d, void (*e)()) +{ + puts("DVDReadAbsAsyncForBS is a stub"); +} + +void DVDReadDiskID(void *a, DVDDiskID *b, void (*c)()) +{ + puts("DVDReadDiskID is a stub"); +} + +void DVDReset() +{ + puts("DVDReset is a stub"); +} + +BOOL EXIDeselect(int chan) +{ + puts("EXIDeselect is a stub"); + return FALSE; +} + +BOOL EXIDma(int chan, void *buffer, s32 size, int d, int e) +{ + puts("EXIDma is a stub"); + return FALSE; +} + +BOOL EXIImm(int chan, u32 *b, int c, int d, int e) +{ + puts("EXIImm is a stub"); + return FALSE; +} + +BOOL EXILock(int chan, int b, int c) +{ + puts("EXILock is a stub"); + return FALSE; +} + +BOOL EXISelect(int chan, int b, int c) +{ + puts("EXISelect is a stub"); + return FALSE; +} + +BOOL EXISync(int chan) +{ + puts("EXISync is a stub"); + return FALSE; +} + +BOOL EXIUnlock(int chan) +{ + puts("EXIUnlock is a stub"); + return FALSE; +} + +void LCEnable() +{ + puts("LCEnable is a stub"); +} + +void OSClearContext(OSContext *context) +{ + puts("OSClearContext is a stub"); +} + +BOOL OSDisableInterrupts() +{ + puts("OSDisableInterrupts is a stub"); + return FALSE; +} + +void OSDumpContext(OSContext *context) +{ + puts("OSDumpContext is a stub"); +} + +OSThread *OSGetCurrentThread() +{ + puts("OSGetCurrentThread is a stub"); + return 0; +} + +u16 OSGetFontEncode() +{ + puts("OSGetFontEncode is a stub"); + return 0; +} + +char *OSGetFontTexture(char *string, void **image, s32 *x, s32 *y, s32 *width) +{ + puts("OSGetFontTexture is a stub"); + return 0; +} + +char *OSGetFontWidth(char *string, s32 *width) +{ + puts("OSGetFontWidth is a stub"); + return 0; +} + +BOOL OSGetResetButtonState() +{ + puts("OSGetResetButtonState is a stub"); + return FALSE; +} + +u32 OSGetStackPointer() +{ + puts("OSGetStackPointer is a stub"); + return 0; +} + +BOOL OSInitFont(OSFontHeader *fontData) +{ + puts("OSInitFont is a stub"); + return FALSE; +} + +BOOL OSLink(OSModuleInfo *newModule, void *bss) +{ + puts("OSLink is a stub"); + return TRUE; +} + +void OSLoadContext(OSContext *context) +{ + puts("OSLoadContext is a stub"); +} + +void OSResetSystem(int reset, u32 resetCode, BOOL forceMenu) +{ + puts("OSResetSystem is a stub"); +} + +BOOL OSRestoreInterrupts(BOOL level) +{ + puts("OSRestoreInterrupts is a stub"); + return FALSE; +} + +s32 OSResumeThread(OSThread *thread) +{ + puts("OSResumeThread is a stub"); + return 0; +} + +void OSSetCurrentContext(OSContext *context) +{ + puts("OSSetCurrentContext is a stub"); +} + +void OSSetStringTable(const void *stringTable) +{ + puts("OSSetStringTable is a stub"); +} + +s32 OSSuspendThread(OSThread *thread) +{ + puts("OSSuspendThread is a stub"); + return 0; +} + +void OSTicksToCalendarTime(OSTime ticks, OSCalendarTime *td) +{ + puts("OSTicksToCalendarTime is a stub"); +} + +BOOL OSUnlink(OSModuleInfo *oldModule) +{ + puts("OSUnlink is a stub"); + return FALSE; +} + +void OSWakeupThread(OSThreadQueue *queue) +{ + puts("OSWakeupThread is a stub"); +} + +void PPCHalt() +{ + puts("PPCHalt is a stub"); +} + +void SoundChoID(int a, int b) +{ + puts("SoundChoID is a stub"); +} + +void SoundPan(int a, int b, int c) +{ + puts("SoundPan is a stub"); +} + +void SoundPitch(u16 a, int b) +{ + puts("SoundPitch is a stub"); +} + +void SoundRevID(int a, int b) +{ + puts("SoundRevID is a stub"); +} + +void VIConfigure(const GXRenderModeObj *rm) +{ + puts("VIConfigure is a stub"); +} + +void VIConfigurePan(u16 xOrg, u16 yOrg, u16 width, u16 height) +{ + puts("VIConfigurePan is a stub"); +} + +u32 VIGetRetraceCount() +{ + // puts("VIGetRetraceCount is a stub"); + return 0; // TODO this might be important +} + +u32 VIGetNextField() +{ + puts("VIGetNextField is a stub"); + return 0; +} + +void VISetBlack(BOOL black) +{ + puts("VISetBlack is a stub"); +} + +void VISetNextFrameBuffer(void *fb) +{ + // puts("VISetNextFrameBuffer is a stub"); +} + +void VIWaitForRetrace() +{ +if (sVIRetraceCallback) +{ + sVIRetraceCallback(0); +} +} + +s32 __CARDFormatRegionAsync(int a, int b) +{ + puts("__CARDFormatRegionAsync is a stub"); + return 0; +} + +void __GXSetSUTexSize() +{ + puts("__GXSetSUTexSize is a stub"); +} + +void __GXSetVAT() +{ + puts("__GXSetVAT is a stub"); +} + +void __GXSetVCD() +{ + puts("__GXSetVCD is a stub"); +} + +void __GXUpdateBPMask() +{ + puts("__GXUpdateBPMask is a stub"); +} + +u32 __OSGetDIConfig() +{ + puts("__OSGetDIConfig is a stub"); + return 0; +} + +__OSInterruptHandler __OSSetInterruptHandler(__OSInterrupt interrupt, __OSInterruptHandler handler) +{ + puts("__OSSetInterruptHandler is a stub"); + return 0; +} + +OSInterruptMask __OSUnmaskInterrupts(OSInterruptMask mask) +{ + puts("__OSUnmaskInterrupts is a stub"); + return 0; +} + +void SISetSamplingRate(u32 msec) +{ + // Maybe we could include SI later + puts("SISetSamplingRate is a stub"); +} + +VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback callback) +{ +sVIRetraceCallback = callback; + return callback; +} + +void GXSetGPMetric(GXPerf0 perf0, GXPerf1 perf1) +{ + // puts("GXSetGPMetric is a stub"); +} + +void GXReadGPMetric(u32 *cnt0, u32 *cnt1) +{ + // puts("GXReadGPMetric is a stub"); +} + +void GXClearGPMetric(void) +{ + // puts("GXClearGPMetric is a stub"); +} + +void GXReadMemMetric( + u32 *cp_req, u32 *tc_req, u32 *cpu_rd_req, u32 *cpu_wr_req, u32 *dsp_req, u32 *io_req, u32 *vi_req, u32 *pe_req, u32 *rf_req, u32 *fi_req) +{ + // puts("GXReadMemMetric is a stub"); +} + +void GXClearMemMetric(void) +{ + // puts("GXClearMemMetric is a stub"); +} + +void GXClearVCacheMetric(void) +{ + // puts("GXClearVCacheMetric is a stub"); +} + +void GXReadPixMetric(u32 *top_pixels_in, u32 *top_pixels_out, u32 *bot_pixels_in, u32 *bot_pixels_out, u32 *clr_pixels_in, u32 *copy_clks) +{ + // puts("GXReadPixMetric is a stub"); +} + +void GXClearPixMetric(void) +{ + // puts("GXClearPixMetric is a stub"); +} + +void GXSetVCacheMetric(GXVCachePerf attr) +{ + // puts("GXSetVCacheMetric is a stub"); +} + +void GXReadVCacheMetric(u32 *check, u32 *miss, u32 *stall) +{ + // puts("GXReadVCacheMetric is a stub"); +} + +void GXSetDrawSync(u16 token) +{ + // puts("GXSetDrawSync is a stub"); +} + +GXDrawSyncCallback GXSetDrawSyncCallback(GXDrawSyncCallback cb) +{ + puts("GXSetDrawSyncCallback is a stub"); + // TODO + return cb; +} + +void PPCSync(void) +{ + //puts("PPCSync is a stub"); +} + +void GXUnknownu16(const u16 x) +{ + puts("GXUnknownu16 is a stub"); +} + +void GXWaitDrawDone(void) +{ + // puts("GXWaitDrawDone is a stub"); +} + +void GXSetTevIndTile(GXTevStageID tev_stage, GXIndTexStageID ind_stage, u16 tilesize_s, u16 tilesize_t, u16 tilespacing_s, u16 tilespacing_t, + GXIndTexFormat format, GXIndTexMtxID matrix_sel, GXIndTexBiasSel bias_sel, GXIndTexAlphaSel alpha_sel) +{ + // TODO + // puts("GXSetTevIndTile is a stub"); +} + +void GXResetWriteGatherPipe(void) +{ + // 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 +} + +// Hudson +void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { } + +void msmSysRegularProc(void) +{ +} + +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; +} + +s16 HuTHPSprCreateVol(char *path, s16 loop, s16 prio, float volume) +{ + return 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) +{ +} diff --git a/tools/extract_includes.py b/tools/extract_includes.py new file mode 100644 index 00000000..92e6d7ab --- /dev/null +++ b/tools/extract_includes.py @@ -0,0 +1,101 @@ +from dataclasses import dataclass +from pathlib import Path +from enum import Enum +import shutil + + +class BinaryType(Enum): + DOL = 0 + REL = 1 + + +@dataclass +class ExtractedInclude: + name: str + binary_type: BinaryType + from_file: Path + address: int + size: int + alignment: int + + +version = "GMPE01_00" + +assets_path = Path("assets") / version +build_path = Path("build") / version +orig_path = Path("orig") / version + +include_path = build_path / "include" +dol_path = orig_path / "sys" / "main.dol" +rels_path = orig_path / "files" / "dll" + +DOL_SHIFT = 0x80003000 +REL_SHIFT = -0x2B80 + +includes = [ + ExtractedInclude("ank8x8_4b", BinaryType.DOL, dol_path, 0x8011FE00, 0x2000, 32), + ExtractedInclude("Ascii8x8_1bpp", BinaryType.DOL, dol_path, 0x8012DCD7, 0x800, 1), + ExtractedInclude("coveropen_en", BinaryType.DOL, dol_path, 0x80132208, 0x1384, 4), + ExtractedInclude("fatalerror_en", BinaryType.DOL, dol_path, 0x8013358C, 0x1384, 4), + ExtractedInclude("hiliteData", BinaryType.DOL, dol_path, 0x8012C360, 0x480, 32), + ExtractedInclude("hiliteData2", BinaryType.DOL, dol_path, 0x8012C7E0, 0x480, 32), + ExtractedInclude("hiliteData3", BinaryType.DOL, dol_path, 0x8012CC60, 0x480, 32), + ExtractedInclude("hiliteData4", BinaryType.DOL, dol_path, 0x8012D0E0, 0x480, 32), + ExtractedInclude("loading_en", BinaryType.DOL, dol_path, 0x80134910, 0x1384, 4), + ExtractedInclude( + "nintendoData", BinaryType.REL, rels_path / "bootDll.rel", 0xA0, 0x307D, 32 + ), + ExtractedInclude("nodisc_en", BinaryType.DOL, dol_path, 0x80135C94, 0x1384, 4), + ExtractedInclude("refMapData0", BinaryType.DOL, dol_path, 0x801225A0, 0x1240, 32), + ExtractedInclude("refMapData1", BinaryType.DOL, dol_path, 0x801237E0, 0x1100, 32), + ExtractedInclude("refMapData2", BinaryType.DOL, dol_path, 0x801248E0, 0x2080, 32), + ExtractedInclude("refMapData3", BinaryType.DOL, dol_path, 0x80126960, 0x2080, 32), + ExtractedInclude("refMapData4", BinaryType.DOL, dol_path, 0x801289E0, 0x2080, 32), + ExtractedInclude("retryerror_en", BinaryType.DOL, dol_path, 0x80137018, 0x1384, 4), + ExtractedInclude("toonMapData", BinaryType.DOL, dol_path, 0x8012AA60, 0x880, 32), + ExtractedInclude("toonMapData2", BinaryType.DOL, dol_path, 0x8012B2E0, 0x1080, 32), + ExtractedInclude("wrongdisc_en", BinaryType.DOL, dol_path, 0x8013839C, 0x1384, 4), +] + +INCLUDE_PREAMBLE = """#ifndef ATTRIBUTE_ALIGN +#if defined(__MWERKS__) || defined(__GNUC__) +#define ATTRIBUTE_ALIGN(num) __attribute__((aligned(num))) +#elif defined(_MSC_VER) || defined(__INTELLISENSE__) +#define ATTRIBUTE_ALIGN(num) +#else +#error unknown compiler +#endif +#endif + +""" + + +if __name__ == "__main__": + Path(include_path).mkdir(parents=True, exist_ok=True) + # shutil.copyfile(assets_path / "include" / "macros.inc", include_path / "macros.inc") + # shutil.copyfile(assets_path / "config.json", build_path / "config.json") + for include in includes: + with open(include.from_file, "rb") as f_in: + with open(include_path / (include.name + ".inc"), "w+") as f_out: + n = include.size + addr = include.address - ( + DOL_SHIFT if include.binary_type == BinaryType.DOL else REL_SHIFT + ) + f_in.seek(addr) + f_out.write(INCLUDE_PREAMBLE) + f_out.write( + f"unsigned char {include.name}[] ATTRIBUTE_ALIGN({include.alignment}) = {{\n" + ) + + while n > 0: + chunk = f_in.read(min(16, n)) + f_out.write( + " " + + ", ".join( + [f"0x{val.upper()}" for val in chunk.hex(" ", 1).split()] + ) + + ",\n" + ) + n -= len(chunk) + + f_out.write("};\n")