From 9fb738e2ed66ec5fa18cb0749279dd300a5e87ff Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Tue, 1 Apr 2025 23:52:02 +0200 Subject: [PATCH 01/47] Add aurora --- .gitmodules | 3 +++ extern/aurora | 1 + 2 files changed, 4 insertions(+) create mode 160000 extern/aurora diff --git a/.gitmodules b/.gitmodules index 5bdca45d..33b7ff9a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "extern/musyx"] path = extern/musyx url = https://github.com/AxioDL/musyx +[submodule "extern/aurora"] + path = extern/aurora + url = https://github.com/encounter/aurora.git diff --git a/extern/aurora b/extern/aurora new file mode 160000 index 00000000..6f686121 --- /dev/null +++ b/extern/aurora @@ -0,0 +1 @@ +Subproject commit 6f6861215150abc4fa00197de43754525cac07a6 From ba0d7ef58c2f110a87c04df08154272fbf565c72 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Wed, 2 Apr 2025 00:41:07 +0200 Subject: [PATCH 02/47] Prototype fixes --- include/dolphin/demo/DEMOStats.h | 4 ++-- include/dolphin/vi.h | 1 + include/game/msm.h | 1 + include/game/sreset.h | 9 +++++++++ src/game/init.c | 5 ++++- src/game/main.c | 3 +++ 6 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 include/game/sreset.h 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/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/game/msm.h b/include/game/msm.h index e5106677..032b876c 100644 --- a/include/game/msm.h +++ b/include/game/msm.h @@ -185,6 +185,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/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/src/game/init.c b/src/game/init.c index 61315c66..39e190f2 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" @@ -295,4 +298,4 @@ static void LoadMemInfo() DVDClose(&file); OSDumpHeap(__OSCurrHeap); } -} \ No newline at end of file +} diff --git a/src/game/main.c b/src/game/main.c index 59390f8b..4fc6c048 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -10,8 +10,11 @@ #include "game/sprite.h" #include "game/hsfformat.h" #include "game/hsfman.h" +#include "game/minigame_seq.h" +#include "game/msm.h" #include "game/perf.h" #include "game/gamework.h" +#include "game/sreset.h" extern FileListEntry _ovltbl[]; u32 GlobalCounter; From 2509e0112577d9bebbd5176abb04e13f9e4543dd Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Wed, 2 Apr 2025 04:17:26 +0200 Subject: [PATCH 03/47] Initial aurora setup, doesn't build yet --- CMakeLists.txt | 30 +++++ README.md | 18 +-- configure.py | 3 + include/port/imgui.h | 18 +++ {include => libc}/ctype.h | 0 {include => libc}/float.h | 0 {include => libc}/math.h | 0 {include => libc}/stdarg.h | 0 {include => libc}/stddef.h | 0 {include => libc}/stdint.h | 0 {include => libc}/stdio.h | 0 {include => libc}/stdlib.h | 0 {include => libc}/string.h | 0 src/dolphin/os/OSAlloc.c | 7 + src/game/init.c | 3 + src/game/main.c | 93 ++++++++++++- src/port/imgui.cpp | 267 +++++++++++++++++++++++++++++++++++++ src/port/stubs.c | 0 18 files changed, 430 insertions(+), 9 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 include/port/imgui.h rename {include => libc}/ctype.h (100%) rename {include => libc}/float.h (100%) rename {include => libc}/math.h (100%) rename {include => libc}/stdarg.h (100%) rename {include => libc}/stddef.h (100%) rename {include => libc}/stdint.h (100%) rename {include => libc}/stdio.h (100%) rename {include => libc}/stdlib.h (100%) rename {include => libc}/string.h (100%) create mode 100644 src/port/imgui.cpp create mode 100644 src/port/stubs.c diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..e6455cd8 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,30 @@ +cmake_minimum_required(VERSION 3.13) +project(marioparty4 LANGUAGES C CXX) +set(CMAKE_C_STANDARD 11) +set(CMAKE_CXX_STANDARD 20) + +if (CMAKE_SYSTEM_NAME STREQUAL Linux) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas -Wno-unused-variable -Wno-unused-parameter") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -fsanitize=address -fsanitize-address-use-after-scope") + set(CMAKE_PREFIX_PATH /usr) + set(CMAKE_LIBRARY_ARCHITECTURE i386-linux-gnu) + set(CMAKE_LIBRARY_PATH "/usr/lib32" CACHE PATH "") + set(CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX 32) +endif () + +add_subdirectory(extern/aurora EXCLUDE_FROM_ALL) + +add_executable(marioparty4 + src/game/main.c + src/game/init.c +# libraries/dolphin_pc/GX.c +# libraries/dolphin_pc/vi.c +# libraries/dolphin_pc/pad_evdev.c +# libraries/dolphin_pc/pad_dinput.c +# src/port/byteswap.cpp + src/port/imgui.cpp + src/port/stubs.c + ) +target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=0) +target_include_directories(marioparty4 PRIVATE include) +target_link_libraries(marioparty4 PRIVATE aurora::aurora aurora::main) 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/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/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/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 100% rename from include/math.h rename to libc/math.h 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/src/dolphin/os/OSAlloc.c b/src/dolphin/os/OSAlloc.c index 32515afd..7f00ee63 100644 --- a/src/dolphin/os/OSAlloc.c +++ b/src/dolphin/os/OSAlloc.c @@ -137,6 +137,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; @@ -297,6 +300,9 @@ void *OSAllocFixed(void **rstart, void **rend) void OSFreeToHeap(int heap, void *ptr) { +#ifdef TARGET_PC + free(ptr); +#else struct HeapDesc *hd; struct Cell *cell; @@ -310,6 +316,7 @@ void OSFreeToHeap(int heap, void *ptr) 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) diff --git a/src/game/init.c b/src/game/init.c index 39e190f2..8fcc7b8b 100644 --- a/src/game/init.c +++ b/src/game/init.c @@ -50,6 +50,9 @@ void HuSysInit(GXRenderModeObj *mode) OSInit(); DVDInit(); VIInit(); + #if TARGET_PC + VISetWindowTitle("Mario Party 4"); + #endif PADInit(); #if VERSION_NTSC if(OSGetProgressiveMode() == 1 && VIGetDTVStatus() == 1) { diff --git a/src/game/main.c b/src/game/main.c index 4fc6c048..a7001979 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -16,6 +16,13 @@ #include "game/gamework.h" #include "game/sreset.h" +#ifdef TARGET_PC +#include "port/imgui.h" +#include +#include +#include +#endif + extern FileListEntry _ovltbl[]; u32 GlobalCounter; static u32 vcheck; @@ -40,8 +47,54 @@ static u32 fi_req; s32 HuDvdErrWait; s32 SystemInitF; -void main(void) +#ifdef TARGET_PC +#include +void aurora_log_callback(AuroraLogLevel level, 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]\n", levelStr, message); + if (level == LOG_FATAL) + { + fflush(out); + abort(); + } +} +#endif + +#ifdef TARGET_PC +int main(int argc, char* argv[]) +#else +void main(void) +#endif +{ +#ifdef AURORA + const AuroraInfo auroraInfo = aurora_initialize(argc, argv, + &(AuroraConfig){ + .appName = "Mario Party 4", + .logCallback = &aurora_log_callback, + }); +#endif u32 met0; u32 met1; s16 i; @@ -82,12 +135,33 @@ void main(void) 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(); @@ -95,10 +169,12 @@ void main(void) GXClearVCacheMetric(); GXClearPixMetric(); GXClearMemMetric(); + HuPerfBegin(0); Hu3DPreProc(); HuPadRead(); pfClsScr(); + HuPrcCall(1); MGSeqMain(); HuPerfBegin(1); @@ -106,8 +182,15 @@ void main(void) HuDvdErrorWatch(); WipeExecAlways(); HuPerfEnd(0); + pfDrawFonts(); HuPerfEnd(1); + +#ifdef TARGET_PC + imgui_main(&auroraInfo); + aurora_end_frame(); +#endif + msmMusFdoutEnd(); HuSysDoneRender(retrace); GXReadGPMetric(&met0, &met1); @@ -116,7 +199,15 @@ 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 + frame_limiter(); +#endif } + +#ifdef TARGET_PC + aurora_shutdown(); +#endif } void HuSysVWaitSet(s16 vcount) diff --git a/src/port/imgui.cpp b/src/port/imgui.cpp new file mode 100644 index 00000000..abfb7168 --- /dev/null +++ b/src/port/imgui.cpp @@ -0,0 +1,267 @@ +extern "C" +{ +#include "port/imgui.h" +} + +#include +#include +#include +#include +#include +#include +#include +#include + +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)); + ImGuiStringViewText( + fmt::format(FMT_STRING("Done pipelines: {}\n"), aurora::gfx::createdPipelines)); + 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/stubs.c b/src/port/stubs.c new file mode 100644 index 00000000..e69de29b From 84801ecdc71576c0d461a5eee17c65ee37da7788 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Wed, 2 Apr 2025 04:45:52 +0200 Subject: [PATCH 04/47] Add musyx and fix OSFastCast --- CMakeLists.txt | 3 ++- README.md | 2 +- include/dolphin/os/OSFastCast.h | 34 +++++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e6455cd8..c1d980c3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL Linux) endif () add_subdirectory(extern/aurora EXCLUDE_FROM_ALL) +add_subdirectory(extern/musyx EXCLUDE_FROM_ALL) add_executable(marioparty4 src/game/main.c @@ -27,4 +28,4 @@ add_executable(marioparty4 ) target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=0) target_include_directories(marioparty4 PRIVATE include) -target_link_libraries(marioparty4 PRIVATE aurora::aurora aurora::main) +target_link_libraries(marioparty4 PRIVATE aurora::aurora aurora::main musyx) diff --git a/README.md b/README.md index 06a57925..884478a1 100644 --- a/README.md +++ b/README.md @@ -98,4 +98,4 @@ After you got the GameCube build up and running for `GMPE01_00`: ``` Linux and MacOS, and x64 support is coming later. -- Open the solution in Visual Studio and build. +- Open the solution in Visual Studio and build. [Fix for UtilsVulkan.h](https://github.com/encounter/dawn-cmake/blob/f10e70a26db00bb89f88be4204cf49ffc869e194/src/dawn/native/vulkan/UtilsVulkan.h#L128-L132) 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); } From 5eb32764a59185abef2d0520d708f765488a5126 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Wed, 2 Apr 2025 04:52:55 +0200 Subject: [PATCH 05/47] Rename jmp_buf due to a name collision in STD --- include/game/jmp.h | 8 +-- include/game/process.h | 7 ++- src/game/jmp.c | 5 +- src/game/process.c | 126 ++++++++++++++++++++++------------------- 4 files changed, 79 insertions(+), 67 deletions(-) diff --git a/include/game/jmp.h b/include/game/jmp.h index 0aadbc43..9d9e0664 100755 --- a/include/game/jmp.h +++ b/include/game/jmp.h @@ -3,7 +3,7 @@ #include "dolphin.h" -typedef struct jump_buf { +typedef struct JMPBUF { u32 lr; u32 cr; u32 sp; @@ -11,9 +11,9 @@ typedef struct jump_buf { u32 pad; u32 regs[19]; double flt_regs[19]; -} jmp_buf; +} JMPBUF; -s32 gcsetjmp(jmp_buf *jump); -s32 gclongjmp(jmp_buf *jump, s32 status); +s32 gcsetjmp(JMPBUF *jump); +s32 gclongjmp(JMPBUF *jump, s32 status); #endif diff --git a/include/game/process.h b/include/game/process.h index 3bd6a297..f2515e29 100644 --- a/include/game/process.h +++ b/include/game/process.h @@ -1,8 +1,9 @@ #ifndef _GAME_PROCESS_H #define _GAME_PROCESS_H -#include "game/jmp.h" #include "dolphin/types.h" +#include "game/jmp.h" + #define PROCESS_STAT_PAUSE 0x1 #define PROCESS_STAT_UPAUSE 0x2 @@ -22,7 +23,7 @@ typedef struct process { u16 prio; s32 sleep_time; u32 base_sp; - jmp_buf jump; + JMPBUF jump; void (*dtor)(void); void *user_data; } Process; @@ -50,4 +51,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/src/game/jmp.c b/src/game/jmp.c index 8313bd8c..c16670de 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 JMPBUF *jump) +{ // clang-format off asm { mflr r5 @@ -36,7 +37,7 @@ s32 gcsetjmp(register jmp_buf *jump) { } // clang-format off -asm s32 gclongjmp(register jmp_buf *jump, register s32 status) { +asm s32 gclongjmp(register JMPBUF *jump, register s32 status) { nofralloc lwz r5, jump->lr lwz r6, jump->cr diff --git a/src/game/process.c b/src/game/process.c index b62b74fc..ccb93970 100644 --- a/src/game/process.c +++ b/src/game/process.c @@ -1,6 +1,7 @@ #include "game/process.h" -#include "game/memory.h" #include "dolphin/os.h" +#include "game/memory.h" + #define FAKE_RETADDR 0xA5A5A5A5 @@ -9,7 +10,7 @@ #define EXEC_CHILDWATCH 2 #define EXEC_KILLED 3 -static jmp_buf processjmpbuf; +static JMPBUF processjmpbuf; static Process *processtop; static Process *processcur; static u16 processcnt; @@ -21,8 +22,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 +37,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 +47,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 +65,11 @@ 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))) { + alloc_size = HuMemMemoryAllocSizeGet(sizeof(Process)) + HuMemMemoryAllocSizeGet(stack_size) + HuMemMemoryAllocSizeGet(extra_size); + if (!(heap = HuMemDirectMalloc(HEAP_SYSTEM, alloc_size))) { OSReport("process> malloc error size %d\n", alloc_size); return NULL; } @@ -77,7 +80,7 @@ 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; + process->base_sp = ((u32)HuMemMemoryAlloc(heap, stack_size, FAKE_RETADDR)) + stack_size - 8; gcsetjmp(&process->jump); process->jump.lr = (u32)func; process->jump.sp = process->base_sp; @@ -93,7 +96,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 +107,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,9 +131,9 @@ 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)) { + if (!gcsetjmp(&curr->jump)) { gclongjmp(&processjmpbuf, 1); } } @@ -142,18 +146,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 +169,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,7 +181,7 @@ void HuPrcChildKill(Process *process) static void gcTerminateProcess(Process *process) { - if(process->dtor) { + if (process->dtor) { process->dtor(); } UnlinkProcess(&processtop, process); @@ -195,11 +200,11 @@ 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)) { + if (!gcsetjmp(&process->jump)) { gclongjmp(&processjmpbuf, 1); } } @@ -231,49 +236,52 @@ void HuPrcCall(s32 tick) s32 ret; processcur = processtop; ret = gcsetjmp(&processjmpbuf); - while(1) { - switch(ret) { + while (1) { + switch (ret) { case 2: HuMemDirectFree(processcur->heap); case 1: - if(((u8 *)(processcur->heap))[4] != 165) { + 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; } procfunc = process->jump.lr; - if((process->stat & (PROCESS_STAT_PAUSE|PROCESS_STAT_UPAUSE)) && process->exec != EXEC_KILLED) { + if ((process->stat & (PROCESS_STAT_PAUSE | PROCESS_STAT_UPAUSE)) && process->exec != EXEC_KILLED) { 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; } } ret = 1; break; - + case EXEC_CHILDWATCH: - if(process->child) { + if (process->child) { ret = 1; - } else { + } + else { process->exec = EXEC_NORMAL; ret = 0; } break; - + case EXEC_KILLED: process->jump.lr = (u32)HuPrcEnd; case EXEC_NORMAL: @@ -307,20 +315,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,20 +338,21 @@ 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) { + } + else { + while (process != NULL) { + if (process->stat & PROCESS_STAT_UPAUSE) { HuPrcResetStat(process, PROCESS_STAT_UPAUSE); } - + process = process->next; } } From 1bd8f3e14ecb0767a3e14c8423c54115a37ddb0e Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Wed, 2 Apr 2025 07:25:18 +0200 Subject: [PATCH 06/47] We've got a window with game code commented out! --- CMakeLists.txt | 29 +++++++++++++++++++++-------- src/game/main.c | 42 +++++++++++++++++++++--------------------- src/port/imgui.cpp | 4 ++++ 3 files changed, 46 insertions(+), 29 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c1d980c3..7c723aca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,17 +15,30 @@ endif () add_subdirectory(extern/aurora EXCLUDE_FROM_ALL) add_subdirectory(extern/musyx EXCLUDE_FROM_ALL) -add_executable(marioparty4 +set(DOLPHIN_FILES + # libraries/dolphin_pc/GX.c + # libraries/dolphin_pc/vi.c + # libraries/dolphin_pc/pad_evdev.c + # libraries/dolphin_pc/pad_dinput.c +) + +set(GAME_FILES src/game/main.c - src/game/init.c -# libraries/dolphin_pc/GX.c -# libraries/dolphin_pc/vi.c -# libraries/dolphin_pc/pad_evdev.c -# libraries/dolphin_pc/pad_dinput.c -# src/port/byteswap.cpp + # src/game/init.c +) + +set(PORT_FILES + # src/port/byteswap.cpp src/port/imgui.cpp src/port/stubs.c - ) +) + +source_group("Dolphin" FILES ${DOLPHIN_FILES}) +source_group("Game" FILES ${GAME_FILES}) +source_group("Port" FILES ${PORT_FILES}) + +add_executable(marioparty4 ${DOLPHIN_FILES} ${GAME_FILES} ${PORT_FILES}) target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=0) +target_compile_definitions(musyx PRIVATE MUSY_VERSION_MAJOR=1 MUSY_VERSION_MINOR=5 MUSY_VERSION_PATCH=4) target_include_directories(marioparty4 PRIVATE include) target_link_libraries(marioparty4 PRIVATE aurora::aurora aurora::main musyx) diff --git a/src/game/main.c b/src/game/main.c index a7001979..9e0ed0c2 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -106,11 +106,11 @@ void main(void) HuDvdErrWait = 0; SystemInitF = 0; #if VERSION_NTSC - HuSysInit(&GXNtsc480IntDf); + //HuSysInit(&GXNtsc480IntDf); #else HuSysInit(&GXPal528IntDf); #endif - HuPrcInit(); + /*HuPrcInit(); HuPadInit(); GWInit(); pfInit(); @@ -133,7 +133,7 @@ void main(void) if (VIGetNextField() == 0) { OSReport("VI_FIELD_BELOW\n"); VIWaitForRetrace(); - } + }*/ while (1) { #ifdef TARGET_PC const AuroraEvent *event = aurora_update(); @@ -152,17 +152,17 @@ void main(void) break; } #endif - retrace = VIGetRetraceCount(); + /*retrace = VIGetRetraceCount(); if (HuSoftResetButtonCheck() != 0 || HuDvdErrWait != 0) { continue; - } - HuPerfZero(); + }*/ + //HuPerfZero(); - HuPerfBegin(2); + //HuPerfBegin(2); #ifdef TARGET_PC aurora_begin_frame(); #endif - HuSysBeforeRender(); + /* HuSysBeforeRender(); GXSetGPMetric(GX_PERF0_CLIP_VTX, GX_PERF1_VERTICES); GXClearGPMetric(); GXSetVCacheMetric(GX_VC_ALL); @@ -184,21 +184,21 @@ void main(void) HuPerfEnd(0); pfDrawFonts(); - HuPerfEnd(1); + HuPerfEnd(1);*/ #ifdef TARGET_PC imgui_main(&auroraInfo); aurora_end_frame(); #endif - msmMusFdoutEnd(); + /*msmMusFdoutEnd(); HuSysDoneRender(retrace); GXReadGPMetric(&met0, &met1); GXReadVCacheMetric(&vcheck, &vmiss, &vstall); GXReadPixMetric(&top_pixels_in, &top_pixels_out, &bot_pixels_in, &bot_pixels_out, &clr_pixels_in, &total_copy_clks); 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++; + GlobalCounter++;*/ #ifdef TARGET_PC frame_limiter(); @@ -210,16 +210,16 @@ void main(void) #endif } -void HuSysVWaitSet(s16 vcount) -{ - minimumVcount = vcount; - minimumVcountf = vcount; -} - -s16 HuSysVWaitGet(s16 param) -{ - return (s16) minimumVcount; -} +//void HuSysVWaitSet(s16 vcount) +//{ +// minimumVcount = vcount; +// minimumVcountf = vcount; +//} +// +//s16 HuSysVWaitGet(s16 param) +//{ +// return (s16) minimumVcount; +//} s32 rnd_seed = 0x0000D9ED; diff --git a/src/port/imgui.cpp b/src/port/imgui.cpp index abfb7168..0d40510a 100644 --- a/src/port/imgui.cpp +++ b/src/port/imgui.cpp @@ -12,6 +12,10 @@ extern "C" #include #include +#if _WIN32 +#include "Windows.h" +#endif + static bool m_frameRate = true; static bool m_pipelineInfo = true; static bool m_graphicsBackend = true; From 14918e187ebb0eb7c688931df81b253f226ccf3e Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Wed, 2 Apr 2025 08:11:55 +0200 Subject: [PATCH 07/47] Dvd and some progress --- .gitignore | 9 ++ .vscode/settings.json | 61 +------- CMakeLists.txt | 4 +- src/game/init.c | 334 +++++++++++++++++++++--------------------- src/game/main.c | 4 +- src/port/dvd.c | 149 +++++++++++++++++++ src/port/stubs.c | 20 +++ 7 files changed, 352 insertions(+), 229 deletions(-) create mode 100644 src/port/dvd.c diff --git a/.gitignore b/.gitignore index c8875b51..a23cdeee 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,12 @@ compile_commands.json # Miscellaneous /*.txt *.exe + +.clang-format +tools/ +*.svg +main.s +decompiled.c +debug_source.c +decompiled_common.c +build_iso.py diff --git a/.vscode/settings.json b/.vscode/settings.json index 1e7df332..dcf6fec4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -83,63 +83,4 @@ "compile_commands.json": true }, "cmake.ignoreCMakeListsMissing": true, - "editor.fontFamily": "Fira Code", - "editor.fontLigatures": true, - "C_Cpp_Runner.cCompilerPath": "gcc", - "C_Cpp_Runner.cppCompilerPath": "g++", - "C_Cpp_Runner.debuggerPath": "gdb", - "C_Cpp_Runner.cStandard": "", - "C_Cpp_Runner.cppStandard": "", - "C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/VR_NR/Community/VC/Auxiliary/Build/vcvarsall.bat", - "C_Cpp_Runner.useMsvc": false, - "C_Cpp_Runner.warnings": [ - "-Wall", - "-Wextra", - "-Wpedantic", - "-Wshadow", - "-Wformat=2", - "-Wcast-align", - "-Wconversion", - "-Wsign-conversion", - "-Wnull-dereference" - ], - "C_Cpp_Runner.msvcWarnings": [ - "/W4", - "/permissive-", - "/w14242", - "/w14287", - "/w14296", - "/w14311", - "/w14826", - "/w44062", - "/w44242", - "/w14905", - "/w14906", - "/w14263", - "/w44265", - "/w14928" - ], - "C_Cpp_Runner.enableWarnings": true, - "C_Cpp_Runner.warningsAsError": false, - "C_Cpp_Runner.compilerArgs": [], - "C_Cpp_Runner.linkerArgs": [], - "C_Cpp_Runner.includePaths": [], - "C_Cpp_Runner.includeSearch": [ - "*", - "**/*" - ], - "C_Cpp_Runner.excludeSearch": [ - "**/build", - "**/build/**", - "**/.*", - "**/.*/**", - "**/.vscode", - "**/.vscode/**" - ], - "C_Cpp_Runner.useAddressSanitizer": false, - "C_Cpp_Runner.useUndefinedSanitizer": false, - "C_Cpp_Runner.useLeakSanitizer": false, - "C_Cpp_Runner.showCompilationTime": false, - "C_Cpp_Runner.useLinkTimeOptimization": false, - "C_Cpp_Runner.msvcSecureNoWarnings": false -} \ No newline at end of file +} diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c723aca..c2948344 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,7 @@ add_subdirectory(extern/aurora EXCLUDE_FROM_ALL) add_subdirectory(extern/musyx EXCLUDE_FROM_ALL) set(DOLPHIN_FILES + # libraries/dolphin_pc/GX.c # libraries/dolphin_pc/vi.c # libraries/dolphin_pc/pad_evdev.c @@ -24,11 +25,12 @@ set(DOLPHIN_FILES set(GAME_FILES src/game/main.c - # src/game/init.c + src/game/init.c ) set(PORT_FILES # src/port/byteswap.cpp + src/port/dvd.c src/port/imgui.cpp src/port/stubs.c ) diff --git a/src/game/init.c b/src/game/init.c index 8fcc7b8b..59e2fe05 100644 --- a/src/game/init.c +++ b/src/game/init.c @@ -54,6 +54,7 @@ void HuSysInit(GXRenderModeObj *mode) VISetWindowTitle("Mario Party 4"); #endif PADInit(); + #if !TARGET_PC #if VERSION_NTSC if(OSGetProgressiveMode() == 1 && VIGetDTVStatus() == 1) { mode = &GXNtsc480Prog; @@ -61,28 +62,29 @@ void HuSysInit(GXRenderModeObj *mode) #else mode->efbHeight = 480; #endif - InitRenderMode(mode); - InitMem(); - VIConfigure(RenderMode); - #if VERSION_NTSC - VIConfigurePan(0, 0, 640, 480); #endif - DefaultFifo = OSAlloc(0x100000); - DefaultFifoObj = GXInit(DefaultFifo, 0x100000); - InitGX(); - InitVI(); - HuFaultInitXfbDirectDraw(RenderMode); - HuFaultSetXfbAddress(0, DemoFrameBuffer1); - HuFaultSetXfbAddress(1, DemoFrameBuffer2); - HuDvdErrDispInit(RenderMode, DemoFrameBuffer1, DemoFrameBuffer2); - rnd_temp = frand(); - HuMemInitAll(); - HuAudInit(); - HuARInit(); - minimumVcount = minimumVcountf = 1.0f; - worstVcount = 0; - OSInitFastCast(); - HuCardInit(); + InitRenderMode(mode); + InitMem(); + // VIConfigure(RenderMode); + // #if VERSION_NTSC + // VIConfigurePan(0, 0, 640, 480); + // #endif + // DefaultFifo = OSAlloc(0x100000); + // DefaultFifoObj = GXInit(DefaultFifo, 0x100000); + // InitGX(); + // InitVI(); + // HuFaultInitXfbDirectDraw(RenderMode); + // HuFaultSetXfbAddress(0, DemoFrameBuffer1); + // HuFaultSetXfbAddress(1, DemoFrameBuffer2); + // HuDvdErrDispInit(RenderMode, DemoFrameBuffer1, DemoFrameBuffer2); + // rnd_temp = frand(); + // HuMemInitAll(); + // HuAudInit(); + // HuARInit(); + // minimumVcount = minimumVcountf = 1.0f; + // worstVcount = 0; + // OSInitFastCast(); + // HuCardInit(); } static void InitRenderMode(GXRenderModeObj *mode) @@ -136,169 +138,169 @@ static void InitGX() static void InitMem() { - void *arena_lo = OSGetArenaLo(); - void *arena_hi = OSGetArenaHi(); - u32 fb_size = (u16)(((u16)RenderMode->fbWidth+15) & ~15)*RenderMode->xfbHeight*2; - u32 *fb1; - u32 *fb2; - u32 i; - DemoFrameBuffer1 = (void *)OSRoundUp32B((u32)arena_lo); - DemoFrameBuffer2 = (void *)OSRoundUp32B((u32)DemoFrameBuffer1+fb_size); - DemoCurrentBuffer = DemoFrameBuffer2; - #if VERSION_PAL - fb1 = DemoFrameBuffer1; - fb2 = DemoFrameBuffer2; - for(i=0; ifbWidth+15) & ~15)*RenderMode->xfbHeight*2; +// u32 *fb1; +// u32 *fb2; +// u32 i; +// DemoFrameBuffer1 = (void *)OSRoundUp32B((u32)arena_lo); +// DemoFrameBuffer2 = (void *)OSRoundUp32B((u32)DemoFrameBuffer1+fb_size); +// DemoCurrentBuffer = DemoFrameBuffer2; +// #if VERSION_PAL +// fb1 = DemoFrameBuffer1; +// fb2 = DemoFrameBuffer2; +// for(i=0; iviTVmode & 0x1; - if(interlace) { - VIWaitForRetrace(); - } +// u32 interlace; +// VISetNextFrameBuffer(DemoFrameBuffer1); +// DemoCurrentBuffer = DemoFrameBuffer2; +// VIFlush(); +// VIWaitForRetrace(); +// interlace = RenderMode->viTVmode & 0x1; +// if(interlace) { +// VIWaitForRetrace(); +// } } void HuSysBeforeRender() { - if(RenderMode->field_rendering) { - GXSetViewportJitter(0, 0, RenderMode->fbWidth, RenderMode->xfbHeight, 0, 1, VIGetNextField()); - } else { - GXSetViewport(0, 0, RenderMode->fbWidth, RenderMode->xfbHeight, 0, 1); - } - GXInvalidateVtxCache(); - GXInvalidateTexAll(); +// if(RenderMode->field_rendering) { +// GXSetViewportJitter(0, 0, RenderMode->fbWidth, RenderMode->xfbHeight, 0, 1, VIGetNextField()); +// } else { +// GXSetViewport(0, 0, RenderMode->fbWidth, RenderMode->xfbHeight, 0, 1); +// } +// GXInvalidateVtxCache(); +// GXInvalidateTexAll(); } void HuSysDoneRender(s32 retrace_count) { - s32 retrace_dist; - if(DemoStatEnable) { - GXDrawDone(); - DEMOUpdateStats(1); - DEMOPrintStats(); - GXDrawDone(); - DEMOUpdateStats(0); - } - GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); - GXSetColorUpdate(GX_TRUE); - GXDrawDone(); - GXCopyDisp(DemoCurrentBuffer, GX_TRUE); - if(minimumVcount != 0) { - retrace_dist = VIGetRetraceCount()-retrace_count; - if(worstVcount < retrace_dist) { - worstVcount = retrace_dist; - } - while(VIGetRetraceCount()-retrace_count < minimumVcount-1) { - VIWaitForRetrace(); - } - } - SwapBuffers(); +// s32 retrace_dist; +// if(DemoStatEnable) { +// GXDrawDone(); +// DEMOUpdateStats(1); +// DEMOPrintStats(); +// GXDrawDone(); +// DEMOUpdateStats(0); +// } +// GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); +// GXSetColorUpdate(GX_TRUE); +// GXDrawDone(); +// GXCopyDisp(DemoCurrentBuffer, GX_TRUE); +// if(minimumVcount != 0) { +// retrace_dist = VIGetRetraceCount()-retrace_count; +// if(worstVcount < retrace_dist) { +// worstVcount = retrace_dist; +// } +// while(VIGetRetraceCount()-retrace_count < minimumVcount-1) { +// VIWaitForRetrace(); +// } +// } +// SwapBuffers(); } static void SwapBuffers() { - VISetNextFrameBuffer(DemoCurrentBuffer); - if(FirstFrame) { - VISetBlack(GX_FALSE); - FirstFrame = FALSE; - } - VIFlush(); - VIWaitForRetrace(); - if(DemoCurrentBuffer == DemoFrameBuffer1) { - DemoCurrentBuffer = DemoFrameBuffer2; - } else { - DemoCurrentBuffer = DemoFrameBuffer1; - } +// VISetNextFrameBuffer(DemoCurrentBuffer); +// if(FirstFrame) { +// VISetBlack(GX_FALSE); +// FirstFrame = FALSE; +// } +// VIFlush(); +// VIWaitForRetrace(); +// if(DemoCurrentBuffer == DemoFrameBuffer1) { +// DemoCurrentBuffer = DemoFrameBuffer2; +// } else { +// DemoCurrentBuffer = DemoFrameBuffer1; +// } } static void LoadMemInfo() { - u32 size; - u32 copy_size; - u32 offset; - u32 entries; - u32 i; - void *arena_lo; - void *arena_hi; - void *alloc_max; - void *alloc_min; - - struct memory_info *buf_ptr; - DVDFileInfo file; - char buf[240]; - - OSReport("\nNow, try to find memory info file...\n\n"); - if(!DVDOpen("/meminfo.bin", &file)) { - OSReport("\nCan't find memory info file. Use /XXX toolname/ to maximize available\n"); - OSReport("memory space. For now, we only use the first %dMB.\n", (OSGetConsoleSimulatedMemSize()/1024)/1024); - arena_lo = OSGetArenaLo(); - 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); - OSSetCurrentHeap(OSCreateHeap(arena_lo, arena_hi)); - arena_lo = arena_hi; - OSSetArenaLo(arena_lo); - } else { - buf_ptr = (struct memory_info *)OSRoundUp32B((u32)buf); - alloc_max = OSGetArenaHi(); - alloc_min = (void *)(OSGetConsoleSimulatedMemSize()+0x80000000); - OSSetArenaHi((void *)(OSGetPhysicalMemSize()+0x80000000)); - arena_lo = OSGetArenaLo(); - 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); - OSSetCurrentHeap(OSCreateHeap(arena_lo, arena_hi)); - arena_lo = arena_hi; - OSSetArenaLo(arena_lo); - OSAllocFixed(&alloc_max, &alloc_min); - size = file.length; - offset = 0; - while(size) { - OSReport("loop\n"); - copy_size = (size < 32) ? size : 32; - if(DVDRead(&file, buf_ptr, OSRoundUp32B(copy_size), offset) < 0) { - OSPanic("init.c", ASSERT_LINE(576, 586), "An error occurred when issuing read to /meminfo.bin\n"); - } - entries = copy_size/sizeof(struct memory_info); - for(i=0; i +#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 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; +} diff --git a/src/port/stubs.c b/src/port/stubs.c index e69de29b..a6389fdc 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -0,0 +1,20 @@ +#include +#include +#include + +void OSInit() +{ + printf("OSInit is a stub\n"); +} + +void OSReport(const char *msg, ...) +{ + va_list args; + va_start(args, msg); + vprintf(msg, args); + va_end(args); +} + +void OSPanic(const char *file, int line, const char *msg, ...) { + printf("Panic in \"%s\" on line %d.\n", file, line); +} From 670a2c4c62a0c2f9893b1c17d3b47fa27909bb71 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Wed, 2 Apr 2025 10:19:16 +0200 Subject: [PATCH 08/47] Handle heap --- CMakeLists.txt | 15 +- src/dolphin/os/OS.c | 20 +- src/dolphin/os/OSAlloc.c | 8 - src/game/fault.c | 23 +- src/game/init.c | 258 +++++++++++----------- src/game/malloc.c | 18 +- src/port/OS.c | 41 ++++ src/port/ar.c | 24 ++ src/port/arq.c | 23 ++ src/port/dvd.c | 13 ++ src/port/stubs.c | 464 ++++++++++++++++++++++++++++++++++++++- 11 files changed, 746 insertions(+), 161 deletions(-) create mode 100644 src/port/OS.c create mode 100644 src/port/ar.c create mode 100644 src/port/arq.c diff --git a/CMakeLists.txt b/CMakeLists.txt index c2948344..ee8effb7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,22 +16,25 @@ add_subdirectory(extern/aurora EXCLUDE_FROM_ALL) add_subdirectory(extern/musyx EXCLUDE_FROM_ALL) set(DOLPHIN_FILES - - # libraries/dolphin_pc/GX.c - # libraries/dolphin_pc/vi.c - # libraries/dolphin_pc/pad_evdev.c - # libraries/dolphin_pc/pad_dinput.c + src/dolphin/os/OSAlloc.c + src/dolphin/os/OSArena.c ) set(GAME_FILES + src/game/fault.c + src/game/frand.c src/game/main.c + src/game/malloc.c + src/game/memory.c src/game/init.c ) set(PORT_FILES - # src/port/byteswap.cpp + src/port/ar.c + src/port/arq.c src/port/dvd.c src/port/imgui.cpp + src/port/OS.c src/port/stubs.c ) 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 7f00ee63..fbd29a87 100644 --- a/src/dolphin/os/OSAlloc.c +++ b/src/dolphin/os/OSAlloc.c @@ -166,7 +166,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) { @@ -312,7 +311,6 @@ 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); @@ -488,12 +486,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/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/init.c b/src/game/init.c index 59e2fe05..364b86f2 100644 --- a/src/game/init.c +++ b/src/game/init.c @@ -50,11 +50,11 @@ void HuSysInit(GXRenderModeObj *mode) OSInit(); DVDInit(); VIInit(); - #if TARGET_PC + #ifdef TARGET_PC VISetWindowTitle("Mario Party 4"); #endif PADInit(); - #if !TARGET_PC + #ifndef TARGET_PC #if VERSION_NTSC if(OSGetProgressiveMode() == 1 && VIGetDTVStatus() == 1) { mode = &GXNtsc480Prog; @@ -64,23 +64,23 @@ void HuSysInit(GXRenderModeObj *mode) #endif #endif InitRenderMode(mode); - InitMem(); - // VIConfigure(RenderMode); - // #if VERSION_NTSC - // VIConfigurePan(0, 0, 640, 480); - // #endif - // DefaultFifo = OSAlloc(0x100000); - // DefaultFifoObj = GXInit(DefaultFifo, 0x100000); - // InitGX(); - // InitVI(); - // HuFaultInitXfbDirectDraw(RenderMode); - // HuFaultSetXfbAddress(0, DemoFrameBuffer1); - // HuFaultSetXfbAddress(1, DemoFrameBuffer2); - // HuDvdErrDispInit(RenderMode, DemoFrameBuffer1, DemoFrameBuffer2); - // rnd_temp = frand(); - // HuMemInitAll(); + InitMem(); + VIConfigure(RenderMode); + #if VERSION_NTSC + VIConfigurePan(0, 0, 640, 480); + #endif + DefaultFifo = OSAlloc(0x100000); + DefaultFifoObj = GXInit(DefaultFifo, 0x100000); + InitGX(); + InitVI(); + HuFaultInitXfbDirectDraw(RenderMode); + HuFaultSetXfbAddress(0, DemoFrameBuffer1); + HuFaultSetXfbAddress(1, DemoFrameBuffer2); + HuDvdErrDispInit(RenderMode, DemoFrameBuffer1, DemoFrameBuffer2); + rnd_temp = frand(); + HuMemInitAll(); // HuAudInit(); - // HuARInit(); + //HuARInit(); // minimumVcount = minimumVcountf = 1.0f; // worstVcount = 0; // OSInitFastCast(); @@ -138,63 +138,63 @@ static void InitGX() static void InitMem() { -// void *arena_lo = OSGetArenaLo(); -// void *arena_hi = OSGetArenaHi(); -// u32 fb_size = (u16)(((u16)RenderMode->fbWidth+15) & ~15)*RenderMode->xfbHeight*2; -// u32 *fb1; -// u32 *fb2; -// u32 i; -// DemoFrameBuffer1 = (void *)OSRoundUp32B((u32)arena_lo); -// DemoFrameBuffer2 = (void *)OSRoundUp32B((u32)DemoFrameBuffer1+fb_size); -// DemoCurrentBuffer = DemoFrameBuffer2; -// #if VERSION_PAL -// fb1 = DemoFrameBuffer1; -// fb2 = DemoFrameBuffer2; -// for(i=0; ifbWidth+15) & ~15)*RenderMode->xfbHeight*2; + u32 *fb1; + u32 *fb2; + u32 i; + DemoFrameBuffer1 = (void *)OSRoundUp32B((u32)arena_lo); + DemoFrameBuffer2 = (void *)OSRoundUp32B((u32)DemoFrameBuffer1+fb_size); + DemoCurrentBuffer = DemoFrameBuffer2; + #if VERSION_PAL + fb1 = DemoFrameBuffer1; + fb2 = DemoFrameBuffer2; + for(i=0; iviTVmode & 0x1; -// if(interlace) { -// VIWaitForRetrace(); -// } + u32 interlace; + VISetNextFrameBuffer(DemoFrameBuffer1); + DemoCurrentBuffer = DemoFrameBuffer2; + VIFlush(); + VIWaitForRetrace(); + interlace = RenderMode->viTVmode & 0x1; + if(interlace) { + VIWaitForRetrace(); + } } void HuSysBeforeRender() { -// if(RenderMode->field_rendering) { -// GXSetViewportJitter(0, 0, RenderMode->fbWidth, RenderMode->xfbHeight, 0, 1, VIGetNextField()); -// } else { -// GXSetViewport(0, 0, RenderMode->fbWidth, RenderMode->xfbHeight, 0, 1); -// } -// GXInvalidateVtxCache(); -// GXInvalidateTexAll(); + if(RenderMode->field_rendering) { + GXSetViewportJitter(0, 0, RenderMode->fbWidth, RenderMode->xfbHeight, 0, 1, VIGetNextField()); + } else { + GXSetViewport(0, 0, RenderMode->fbWidth, RenderMode->xfbHeight, 0, 1); + } + GXInvalidateVtxCache(); + GXInvalidateTexAll(); } void HuSysDoneRender(s32 retrace_count) @@ -241,66 +241,66 @@ static void SwapBuffers() static void LoadMemInfo() { -// u32 size; -// u32 copy_size; -// u32 offset; -// u32 entries; -// u32 i; -// void *arena_lo; -// void *arena_hi; -// void *alloc_max; -// void *alloc_min; -// -// struct memory_info *buf_ptr; -// DVDFileInfo file; -// char buf[240]; -// -// OSReport("\nNow, try to find memory info file...\n\n"); -// if(!DVDOpen("/meminfo.bin", &file)) { -// OSReport("\nCan't find memory info file. Use /XXX toolname/ to maximize available\n"); -// OSReport("memory space. For now, we only use the first %dMB.\n", (OSGetConsoleSimulatedMemSize()/1024)/1024); -// arena_lo = OSGetArenaLo(); -// 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); -// OSSetCurrentHeap(OSCreateHeap(arena_lo, arena_hi)); -// arena_lo = arena_hi; -// OSSetArenaLo(arena_lo); -// } else { -// buf_ptr = (struct memory_info *)OSRoundUp32B((u32)buf); -// alloc_max = OSGetArenaHi(); -// alloc_min = (void *)(OSGetConsoleSimulatedMemSize()+0x80000000); -// OSSetArenaHi((void *)(OSGetPhysicalMemSize()+0x80000000)); -// arena_lo = OSGetArenaLo(); -// 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); -// OSSetCurrentHeap(OSCreateHeap(arena_lo, arena_hi)); -// arena_lo = arena_hi; -// OSSetArenaLo(arena_lo); -// OSAllocFixed(&alloc_max, &alloc_min); -// size = file.length; -// offset = 0; -// while(size) { -// OSReport("loop\n"); -// copy_size = (size < 32) ? size : 32; -// if(DVDRead(&file, buf_ptr, OSRoundUp32B(copy_size), offset) < 0) { -// OSPanic("init.c", ASSERT_LINE(576, 586), "An error occurred when issuing read to /meminfo.bin\n"); -// } -// entries = copy_size/sizeof(struct memory_info); -// for(i=0; i +#include + +#include + +// Credits: Super Monkey Ball + +#define MEM_SIZE (32 * 1024 * 1024) + +u8 LC_CACHE_BASE[4096]; + +void OSInit() +{ + puts("OSInit is a stub"); + u8 *arena = malloc(MEM_SIZE); + + OSSetArenaLo(arena); + OSSetArenaHi(arena + MEM_SIZE); +} + +OSTime OSGetTime(void) +{ + return 0; +} + +OSTick OSGetTick(void) +{ + return 0; +} + +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..3f628cd2 --- /dev/null +++ b/src/port/ar.c @@ -0,0 +1,24 @@ +#include +#include +#include + +u8 ARAM[16 * 1024 * 1024]; + +void ARStartDMA(u32 type, u32 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..36917a97 --- /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, + u32 source, u32 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((u32)task); + break; + case ARQ_TYPE_ARAM_TO_MRAM: + memcpy((void *)dest, ARAM + source, length); + callback((u32)task); + break; + } +} diff --git a/src/port/dvd.c b/src/port/dvd.c index 61ddfb38..9cef74d4 100644 --- a/src/port/dvd.c +++ b/src/port/dvd.c @@ -110,6 +110,19 @@ BOOL DVDClose(DVDFileInfo *fileInfo) 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; diff --git a/src/port/stubs.c b/src/port/stubs.c index a6389fdc..e405d81b 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -1,11 +1,9 @@ -#include +#include #include +#include #include -void OSInit() -{ - printf("OSInit is a stub\n"); -} +// Credits: Super Monkey Ball void OSReport(const char *msg, ...) { @@ -15,6 +13,458 @@ void OSReport(const char *msg, ...) va_end(args); } -void OSPanic(const char *file, int line, const char *msg, ...) { - printf("Panic in \"%s\" on line %d.\n", file, line); +u32 OSGetConsoleType() +{ + return OS_CONSOLE_RETAIL1; } + +s32 CARDCancel(CARDFileInfo *fileInfo) +{ + puts("CARDCancel 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 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 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; +} + +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 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 CARDWriteAsync(CARDFileInfo *fileInfo, const void *addr, s32 length, s32 offset, CARDCallback callback) +{ + puts("CARDWriteAsync is a stub"); + return 0; +} + +void C_MTXScale(Mtx m, f32 xS, f32 yS, f32 zS) +{ + *(volatile int *)0 = 0; + puts("C_MTXScale is a stub"); +} + +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"); +} + +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 FALSE; +} + +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 PSMTXIdentity(Mtx m) +{ + puts("PSMTXIdentity 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 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() +{ + puts("VIWaitForRetrace is a stub"); +} + +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; +} + +// Hudson +void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { } From 69ff202bae6dc6fb72a34d2f56bdd119a67d8891 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Wed, 2 Apr 2025 18:45:58 +0200 Subject: [PATCH 09/47] Add more stubs --- CMakeLists.txt | 1 + include/game/process.h | 7 +- src/game/init.c | 80 +++++++++--------- src/game/main.c | 185 ++++++++++++++++++++--------------------- src/game/process.c | 30 ++++++- src/port/stubs.c | 54 ++++++++++++ 6 files changed, 220 insertions(+), 137 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ee8effb7..50aaa17c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,7 @@ set(DOLPHIN_FILES ) set(GAME_FILES + src/game/card.c src/game/fault.c src/game/frand.c src/game/main.c diff --git a/include/game/process.h b/include/game/process.h index f2515e29..8d1b80f7 100644 --- a/include/game/process.h +++ b/include/game/process.h @@ -2,8 +2,13 @@ #define _GAME_PROCESS_H #include "dolphin/types.h" -#include "game/jmp.h" +#ifdef TARGET_PC +#include +typedef int JMPBUF; +#else +#include "game/jmp.h" +#endif #define PROCESS_STAT_PAUSE 0x1 #define PROCESS_STAT_UPAUSE 0x2 diff --git a/src/game/init.c b/src/game/init.c index 364b86f2..4a730fc8 100644 --- a/src/game/init.c +++ b/src/game/init.c @@ -79,12 +79,12 @@ void HuSysInit(GXRenderModeObj *mode) HuDvdErrDispInit(RenderMode, DemoFrameBuffer1, DemoFrameBuffer2); rnd_temp = frand(); HuMemInitAll(); - // HuAudInit(); - //HuARInit(); - // minimumVcount = minimumVcountf = 1.0f; - // worstVcount = 0; - // OSInitFastCast(); - // HuCardInit(); + HuAudInit(); + HuARInit(); + minimumVcount = minimumVcountf = 1.0f; + worstVcount = 0; + OSInitFastCast(); + HuCardInit(); } static void InitRenderMode(GXRenderModeObj *mode) @@ -199,44 +199,44 @@ void HuSysBeforeRender() void HuSysDoneRender(s32 retrace_count) { -// s32 retrace_dist; -// if(DemoStatEnable) { -// GXDrawDone(); -// DEMOUpdateStats(1); -// DEMOPrintStats(); -// GXDrawDone(); -// DEMOUpdateStats(0); -// } -// GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); -// GXSetColorUpdate(GX_TRUE); -// GXDrawDone(); -// GXCopyDisp(DemoCurrentBuffer, GX_TRUE); -// if(minimumVcount != 0) { -// retrace_dist = VIGetRetraceCount()-retrace_count; -// if(worstVcount < retrace_dist) { -// worstVcount = retrace_dist; -// } -// while(VIGetRetraceCount()-retrace_count < minimumVcount-1) { -// VIWaitForRetrace(); -// } -// } -// SwapBuffers(); + s32 retrace_dist; + if(DemoStatEnable) { + GXDrawDone(); + DEMOUpdateStats(1); + DEMOPrintStats(); + GXDrawDone(); + DEMOUpdateStats(0); + } + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetColorUpdate(GX_TRUE); + GXDrawDone(); + GXCopyDisp(DemoCurrentBuffer, GX_TRUE); + if(minimumVcount != 0) { + retrace_dist = VIGetRetraceCount()-retrace_count; + if(worstVcount < retrace_dist) { + worstVcount = retrace_dist; + } + while(VIGetRetraceCount()-retrace_count < minimumVcount-1) { + VIWaitForRetrace(); + } + } + SwapBuffers(); } static void SwapBuffers() { -// VISetNextFrameBuffer(DemoCurrentBuffer); -// if(FirstFrame) { -// VISetBlack(GX_FALSE); -// FirstFrame = FALSE; -// } -// VIFlush(); -// VIWaitForRetrace(); -// if(DemoCurrentBuffer == DemoFrameBuffer1) { -// DemoCurrentBuffer = DemoFrameBuffer2; -// } else { -// DemoCurrentBuffer = DemoFrameBuffer1; -// } + VISetNextFrameBuffer(DemoCurrentBuffer); + if(FirstFrame) { + VISetBlack(GX_FALSE); + FirstFrame = FALSE; + } + VIFlush(); + VIWaitForRetrace(); + if(DemoCurrentBuffer == DemoFrameBuffer1) { + DemoCurrentBuffer = DemoFrameBuffer2; + } else { + DemoCurrentBuffer = DemoFrameBuffer1; + } } static void LoadMemInfo() diff --git a/src/game/main.c b/src/game/main.c index c56ab575..c8119734 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -1,20 +1,20 @@ -#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" #ifdef TARGET_PC #include "port/imgui.h" @@ -53,29 +53,27 @@ void aurora_log_callback(AuroraLogLevel level, const char *message, unsigned int { 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; + 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]\n", levelStr, message); - if (level == LOG_FATAL) - { + if (level == LOG_FATAL) { fflush(out); abort(); } @@ -83,72 +81,69 @@ void aurora_log_callback(AuroraLogLevel level, const char *message, unsigned int #endif #ifdef TARGET_PC -int main(int argc, char* argv[]) +int 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, - }); + &(AuroraConfig) { + .appName = "Mario Party 4", + .logCallback = &aurora_log_callback, + }); #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 - /*HuPrcInit(); - HuPadInit(); - GWInit(); - pfInit(); - GlobalCounter = 0; - HuSprInit(); - Hu3DInit(); - HuDataInit(); - HuPerfInit(); - HuPerfCreate("USR0", 0xFF, 0xFF, 0xFF, 0xFF); - HuPerfCreate("USR1", 0, 0xFF, 0xFF, 0xFF); - WipeInit(RenderMode); - +#endif + //HuPrcInit(); + // HuPadInit(); + // GWInit(); + // pfInit(); + // GlobalCounter = 0; + // HuSprInit(); + // Hu3DInit(); + // HuDataInit(); + // HuPerfInit(); + // HuPerfCreate("USR0", 0xFF, 0xFF, 0xFF, 0xFF); + // HuPerfCreate("USR1", 0, 0xFF, 0xFF, 0xFF); + // WipeInit(RenderMode); + for (i = 0; i < 4; i++) { - GWPlayerCfg[i].character = -1; + // GWPlayerCfg[i].character = -1; } - - omMasterInit(0, _ovltbl, OVL_COUNT, OVL_BOOT); + + //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) - { + while (event != NULL && event->type != AURORA_NONE) { + if (event->type == AURORA_EXIT) { exiting = true; break; } ++event; } - if (exiting) - { + if (exiting) { break; } #endif @@ -156,35 +151,35 @@ void main(void) if (HuSoftResetButtonCheck() != 0 || HuDvdErrWait != 0) { continue; }*/ - //HuPerfZero(); + // HuPerfZero(); - //HuPerfBegin(2); + // HuPerfBegin(2); #ifdef TARGET_PC aurora_begin_frame(); #endif - /* HuSysBeforeRender(); - GXSetGPMetric(GX_PERF0_CLIP_VTX, GX_PERF1_VERTICES); - GXClearGPMetric(); - GXSetVCacheMetric(GX_VC_ALL); - GXClearVCacheMetric(); - GXClearPixMetric(); - GXClearMemMetric(); + /* HuSysBeforeRender(); + GXSetGPMetric(GX_PERF0_CLIP_VTX, GX_PERF1_VERTICES); + GXClearGPMetric(); + GXSetVCacheMetric(GX_VC_ALL); + GXClearVCacheMetric(); + GXClearPixMetric(); + GXClearMemMetric(); - HuPerfBegin(0); - Hu3DPreProc(); - HuPadRead(); - pfClsScr(); + HuPerfBegin(0); + Hu3DPreProc(); + HuPadRead(); + pfClsScr(); - HuPrcCall(1); - MGSeqMain(); - HuPerfBegin(1); - Hu3DExec(); - HuDvdErrorWatch(); - WipeExecAlways(); - HuPerfEnd(0); + HuPrcCall(1); + MGSeqMain(); + HuPerfBegin(1); + Hu3DExec(); + HuDvdErrorWatch(); + WipeExecAlways(); + HuPerfEnd(0); - pfDrawFonts(); - HuPerfEnd(1);*/ + pfDrawFonts(); + HuPerfEnd(1);*/ #ifdef TARGET_PC imgui_main(&auroraInfo); @@ -210,16 +205,16 @@ void main(void) #endif } -//void HuSysVWaitSet(s16 vcount) +// void HuSysVWaitSet(s16 vcount) //{ -// minimumVcount = vcount; -// minimumVcountf = vcount; -//} +// minimumVcount = vcount; +// minimumVcountf = vcount; +// } // -//s16 HuSysVWaitGet(s16 param) +// s16 HuSysVWaitGet(s16 param) //{ -// return (s16) minimumVcount; -//} +// return (s16) minimumVcount; +// } s32 rnd_seed = 0x0000D9ED; diff --git a/src/game/process.c b/src/game/process.c index ccb93970..cc13c72b 100644 --- a/src/game/process.c +++ b/src/game/process.c @@ -1,10 +1,14 @@ #include "game/process.h" #include "dolphin/os.h" +#include "game/jmp.h" #include "game/memory.h" - #define FAKE_RETADDR 0xA5A5A5A5 +#ifdef TARGET_PC +#include +#endif + #define EXEC_NORMAL 0 #define EXEC_SLEEP 1 #define EXEC_CHILDWATCH 2 @@ -81,9 +85,12 @@ Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_siz process->prio = prio; process->sleep_time = 0; process->base_sp = ((u32)HuMemMemoryAlloc(heap, stack_size, FAKE_RETADDR)) + stack_size - 8; +#ifdef TARGET_PC +#else 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); @@ -133,9 +140,12 @@ void HuPrcChildWatch() Process *curr = HuPrcCurrentGet(); if (curr->child) { curr->exec = EXEC_CHILDWATCH; +#ifdef TARGET_PC +#else if (!gcsetjmp(&curr->jump)) { gclongjmp(&processjmpbuf, 1); } +#endif } } @@ -186,7 +196,10 @@ static void gcTerminateProcess(Process *process) } UnlinkProcess(&processtop, process); processcnt--; +#ifdef TARGET_PC +#else gclongjmp(&processjmpbuf, 2); +#endif } void HuPrcEnd() @@ -204,9 +217,12 @@ void HuPrcSleep(s32 time) process->exec = EXEC_SLEEP; process->sleep_time = time; } +#ifdef TARGET_PC +#else if (!gcsetjmp(&process->jump)) { gclongjmp(&processjmpbuf, 1); } +#endif } void HuPrcVSleep() @@ -235,7 +251,10 @@ void HuPrcCall(s32 tick) Process *process; s32 ret; processcur = processtop; +#ifdef TARGET_PC +#else ret = gcsetjmp(&processjmpbuf); +#endif while (1) { switch (ret) { case 2: @@ -255,7 +274,10 @@ void HuPrcCall(s32 tick) if (!process) { return; } +#ifdef TARGET_PC +#else procfunc = process->jump.lr; +#endif if ((process->stat & (PROCESS_STAT_PAUSE | PROCESS_STAT_UPAUSE)) && process->exec != EXEC_KILLED) { ret = 1; continue; @@ -283,9 +305,15 @@ void HuPrcCall(s32 tick) break; case EXEC_KILLED: +#ifdef TARGET_PC +#else process->jump.lr = (u32)HuPrcEnd; +#endif case EXEC_NORMAL: +#ifdef TARGET_PC +#else gclongjmp(&process->jump, 1); +#endif break; } } diff --git a/src/port/stubs.c b/src/port/stubs.c index e405d81b..d9c1ed60 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -24,6 +24,12 @@ s32 CARDCancel(CARDFileInfo *fileInfo) return 0; } +s32 CARDCheck(s32 chan) +{ + puts("CARDCheck is a stub"); + return 0; +} + s32 CARDCheckAsync(s32 chan, CARDCallback callback) { puts("CARDCheckAsync is a stub"); @@ -36,6 +42,12 @@ s32 CARDClose(CARDFileInfo *fileInfo) 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"); @@ -66,6 +78,12 @@ s32 CARDFastOpen(s32 chan, s32 fileNo, CARDFileInfo *fileInfo) 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"); @@ -84,6 +102,12 @@ s32 CARDGetStatus(s32 chan, s32 fileNo, CARDStat *stat) return 0; } +s32 CARDGetSectorSize(s32 chan, u32 *size) +{ + puts("CARDGetSectorSize is a stub"); + return 0; +} + void CARDInit() { puts("CARDInit is a stub"); @@ -113,6 +137,12 @@ s32 CARDProbeEx(s32 chan, s32 *memSize, s32 *sectorSize) 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"); @@ -143,6 +173,12 @@ s32 CARDUnmount(s32 chan) 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"); @@ -175,6 +211,16 @@ void DCStoreRange(void *addr, u32 nBytes) puts("DCStoreRange 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"); @@ -401,6 +447,12 @@ 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"); @@ -468,3 +520,5 @@ OSInterruptMask __OSUnmaskInterrupts(OSInterruptMask mask) // Hudson void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { } +void HuAudInit() { } +void HuARInit() { } From 6e53c813fc73038c1f1b86ad494b95ffb226ef5a Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Wed, 2 Apr 2025 23:17:16 +0200 Subject: [PATCH 10/47] Update musyx --- extern/musyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/musyx b/extern/musyx index a170f2ef..a579f4d4 160000 --- a/extern/musyx +++ b/extern/musyx @@ -1 +1 @@ -Subproject commit a170f2ef4a3f51edb89bc792dff79d55b2c42a89 +Subproject commit a579f4d4abbac1c67fddf0d361291320f81a7b6c From 39549e415e5c9504434f962729af9cc68ad0405d Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Thu, 3 Apr 2025 14:01:35 +0200 Subject: [PATCH 11/47] Some process work --- extern/aurora | 1 - include/game/jmp.h | 12 ++++++++---- include/game/process.h | 7 +------ src/REL/m446Dll/main.c | 1 - src/game/main.c | 6 +++--- src/game/process.c | 12 ++++++------ 6 files changed, 18 insertions(+), 21 deletions(-) delete mode 160000 extern/aurora diff --git a/extern/aurora b/extern/aurora deleted file mode 160000 index 6f686121..00000000 --- a/extern/aurora +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6f6861215150abc4fa00197de43754525cac07a6 diff --git a/include/game/jmp.h b/include/game/jmp.h index 9d9e0664..a2c9c5a0 100755 --- a/include/game/jmp.h +++ b/include/game/jmp.h @@ -1,9 +1,12 @@ #ifndef _GAME_JMP_H #define _GAME_JMP_H +#ifdef TARGET_PC +#include +#else #include "dolphin.h" -typedef struct JMPBUF { +typedef struct jmp_buf { u32 lr; u32 cr; u32 sp; @@ -11,9 +14,10 @@ typedef struct JMPBUF { u32 pad; u32 regs[19]; double flt_regs[19]; -} JMPBUF; +} jmp_buf; -s32 gcsetjmp(JMPBUF *jump); -s32 gclongjmp(JMPBUF *jump, s32 status); +s32 gcsetjmp(jmp_buf *jump); +s32 gclongjmp(jmp_buf *jump, s32 status); #endif +#endif diff --git a/include/game/process.h b/include/game/process.h index 8d1b80f7..e51bdab7 100644 --- a/include/game/process.h +++ b/include/game/process.h @@ -3,12 +3,7 @@ #include "dolphin/types.h" -#ifdef TARGET_PC -#include -typedef int JMPBUF; -#else #include "game/jmp.h" -#endif #define PROCESS_STAT_PAUSE 0x1 #define PROCESS_STAT_UPAUSE 0x2 @@ -28,7 +23,7 @@ typedef struct process { u16 prio; s32 sleep_time; u32 base_sp; - JMPBUF jump; + jmp_buf jump; void (*dtor)(void); void *user_data; } Process; diff --git a/src/REL/m446Dll/main.c b/src/REL/m446Dll/main.c index b73f19e3..c094ea9d 100644 --- a/src/REL/m446Dll/main.c +++ b/src/REL/m446Dll/main.c @@ -5,7 +5,6 @@ #include "game/frand.h" #include "game/gamework_data.h" #include "game/hsfman.h" -#include "game/jmp.h" #include "game/minigame_seq.h" #include "game/window.h" #include "game/wipe.h" diff --git a/src/game/main.c b/src/game/main.c index c8119734..cbf96156 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -108,7 +108,7 @@ void main(void) #else HuSysInit(&GXPal528IntDf); #endif - //HuPrcInit(); + HuPrcInit(); // HuPadInit(); // GWInit(); // pfInit(); @@ -168,10 +168,10 @@ void main(void) HuPerfBegin(0); Hu3DPreProc(); HuPadRead(); - pfClsScr(); + pfClsScr();*/ HuPrcCall(1); - MGSeqMain(); + /* MGSeqMain(); HuPerfBegin(1); Hu3DExec(); HuDvdErrorWatch(); diff --git a/src/game/process.c b/src/game/process.c index cc13c72b..ec3e2993 100644 --- a/src/game/process.c +++ b/src/game/process.c @@ -14,7 +14,7 @@ #define EXEC_CHILDWATCH 2 #define EXEC_KILLED 3 -static JMPBUF processjmpbuf; +static jmp_buf processjmpbuf; static Process *processtop; static Process *processcur; static u16 processcnt; @@ -142,7 +142,7 @@ void HuPrcChildWatch() curr->exec = EXEC_CHILDWATCH; #ifdef TARGET_PC #else - if (!gcsetjmp(&curr->jump)) { + if (gcsetjmp(&curr->jump) == 0) { gclongjmp(&processjmpbuf, 1); } #endif @@ -219,7 +219,7 @@ void HuPrcSleep(s32 time) } #ifdef TARGET_PC #else - if (!gcsetjmp(&process->jump)) { + if (gcsetjmp(&process->jump) == 0) { gclongjmp(&processjmpbuf, 1); } #endif @@ -274,8 +274,8 @@ void HuPrcCall(s32 tick) if (!process) { return; } -#ifdef TARGET_PC -#else +#ifdef __MWERKS__ + // unused procfunc = process->jump.lr; #endif if ((process->stat & (PROCESS_STAT_PAUSE | PROCESS_STAT_UPAUSE)) && process->exec != EXEC_KILLED) { @@ -296,7 +296,7 @@ void HuPrcCall(s32 tick) case EXEC_CHILDWATCH: if (process->child) { - ret = 1; + ret = 1; } else { process->exec = EXEC_NORMAL; From bc6dbf02542bf854cc23e394f30688a51619dc72 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Thu, 3 Apr 2025 19:20:28 +0200 Subject: [PATCH 12/47] Implement setjmp on PC --- CMakeLists.txt | 1 + extern/aurora | 1 + include/dolphin/types.h | 2 + include/game/jmp.h | 150 ++++++++++++++++++++++++++++++++++++++++ include/game/process.h | 4 ++ src/game/memory.c | 10 +-- src/game/process.c | 50 +++++--------- 7 files changed, 180 insertions(+), 38 deletions(-) create mode 160000 extern/aurora diff --git a/CMakeLists.txt b/CMakeLists.txt index 50aaa17c..5552ebf9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,6 +28,7 @@ set(GAME_FILES src/game/malloc.c src/game/memory.c src/game/init.c + src/game/process.c ) set(PORT_FILES diff --git a/extern/aurora b/extern/aurora new file mode 160000 index 00000000..6f686121 --- /dev/null +++ b/extern/aurora @@ -0,0 +1 @@ +Subproject commit 6f6861215150abc4fa00197de43754525cac07a6 diff --git a/include/dolphin/types.h b/include/dolphin/types.h index 822ec081..cd351fbb 100644 --- a/include/dolphin/types.h +++ b/include/dolphin/types.h @@ -20,6 +20,8 @@ typedef unsigned char u8; typedef unsigned short int u16; typedef unsigned long u32; typedef unsigned long long int u64; + +typedef u32 size_t; #endif typedef volatile u8 vu8; diff --git a/include/game/jmp.h b/include/game/jmp.h index a2c9c5a0..29fe0a3b 100755 --- a/include/game/jmp.h +++ b/include/game/jmp.h @@ -3,6 +3,150 @@ #ifdef TARGET_PC #include +#include + + +#define SETJMP setjmp +#define LONGJMP longjmp + +#ifndef _JMP_BUF_DEFINED +#if defined(_M_IX86) || defined(__i386__) +typedef struct __JUMP_BUFFER { + uint32_t Ebp; + uint32_t Ebx; + uint32_t Edi; + uint32_t Esi; + uint32_t Esp; + uint32_t Eip; + uint32_t Registration; + uint32_t TryLevel; + uint32_t Cookie; + uint32_t UnwindFunc; + uint32_t UnwindData[6]; +} _JUMP_BUFFER; +#elif defined(_M_X64) || defined(__x86_64__) +#ifndef SETJMP_FLOAT128 +// TODO do we need to align this? +typedef struct _SETJMP_FLOAT128 { + uint64_t Part[2]; +} SETJMP_FLOAT128; +#endif +typedef struct _JUMP_BUFFER { + uint64_t Frame; + uint64_t Rbx; + uint64_t Rsp; + uint64_t Rbp; + uint64_t Rsi; + uint64_t Rdi; + uint64_t R12; + uint64_t R13; + uint64_t R14; + uint64_t R15; + uint64_t Rip; + uint32_t MxCsr; + uint16_t FpCsr; + uint16_t Spare; + + SETJMP_FLOAT128 Xmm6; + SETJMP_FLOAT128 Xmm7; + SETJMP_FLOAT128 Xmm8; + SETJMP_FLOAT128 Xmm9; + SETJMP_FLOAT128 Xmm10; + SETJMP_FLOAT128 Xmm11; + SETJMP_FLOAT128 Xmm12; + SETJMP_FLOAT128 Xmm13; + SETJMP_FLOAT128 Xmm14; + SETJMP_FLOAT128 Xmm15; +} _JUMP_BUFFER; +#elif defined(_M_ARM) || defined(__arm__) +typedef struct _JUMP_BUFFER { + uint32_t Frame; + + uint32_t R4; + uint32_t R5; + uint32_t R6; + uint32_t R7; + uint32_t R8; + uint32_t R9; + uint32_t R10; + uint32_t R11; + + uint32_t Sp; + uint32_t Pc; + uint32_t Fpscr; + uint32_t long D[8]; // D8-D15 VFP/NEON regs +} _JUMP_BUFFER; +#elif defined(_M_ARM64) || defined(__arch64__) +typedef struct _JUMP_BUFFER { + uint64_t Frame; + uint64_t Reserved; + uint64_t X19; // x19 -- x28: callee saved registers + uint64_t X20; + uint64_t X21; + uint64_t X22; + uint64_t X23; + uint64_t X24; + uint64_t X25; + uint64_t X26; + uint64_t X27; + uint64_t X28; + uint64_t Fp; // x29 frame pointer + uint64_t Lr; // x30 link register + uint64_t Sp; // x31 stack pointer + uint32_t Fpcr; // fp control register + uint32_t Fpsr; // fp status register + + double D[8]; // D8-D15 FP regs +} _JUMP_BUFFER; +#elif defined(__riscv) +typedef struct _JUMP_BUFFER { + uint32_t ra; + uint32_t sp; + uint32_t s0; + uint32_t s1; + uint32_t s2; + uint32_t s3; + uint32_t s4; + uint32_t s5; + uint32_t s6; + uint32_t s7; + uint32_t s8; + uint32_t s9; + uint32_t s10; + uint32_t s11; + + #if __riscv_xlen == 64 + uint64_t fs0; + uint64_t fs1; + uint64_t fs2; + uint64_t fs3; + uint64_t fs4; + uint64_t fs5; + uint64_t fs6; + uint64_t fs7; + uint64_t fs8; + uint64_t fs9; + uint64_t fs10; + uint64_t fs11; + #endif +} _JUMP_BUFFER; +#endif +#endif + +#if defined(_M_IX86) || defined(__i386__) || defined(_M_X64) || defined(__x86_64__) +#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Eip = (size_t)func +#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Esp = (size_t)sp +#elif defined(_M_ARM) || defined(__arm__) +#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Pc = (size_t)func +#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (size_t)sp +#elif defined(_M_ARM64) || defined(__arch64__) +#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Lr = (size_t)func +#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (size_t)sp +#elif defined(__riscv) +#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Lr = (size_t)func +#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (size_t)sp +#endif + #else #include "dolphin.h" @@ -19,5 +163,11 @@ typedef struct jmp_buf { s32 gcsetjmp(jmp_buf *jump); s32 gclongjmp(jmp_buf *jump, s32 status); +#define SETJMP(jump) gcsetjmp(&(jump)) +#define SETJMP(jump, status) gclongjump(&(jump), (status)) + +#define SETJMP_SET_IP(jump, func) jmp_buf->lr = (u32)func +#define SETJMP_SET_IP(jump, sp) jmp_buf->sp = (u32)sp #endif + #endif diff --git a/include/game/process.h b/include/game/process.h index e51bdab7..c8b43d89 100644 --- a/include/game/process.h +++ b/include/game/process.h @@ -5,6 +5,10 @@ #include "game/jmp.h" +#ifdef TARGET_PC +#include +#endif + #define PROCESS_STAT_PAUSE 0x1 #define PROCESS_STAT_UPAUSE 0x2 #define PROCESS_STAT_PAUSE_EN 0x4 diff --git a/src/game/memory.c b/src/game/memory.c index d7c0374d..9a2cd504 100644 --- a/src/game/memory.c +++ b/src/game/memory.c @@ -31,17 +31,17 @@ 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, u32 num, size_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, size_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, u32 num, size_t retaddr) { s32 alloc_size = MEM_ALLOC_SIZE(size); struct memory_block *block = heap_ptr; @@ -72,7 +72,7 @@ static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, u32 num, u32 retaddr) return NULL; } -void HuMemMemoryFreeNum(void *heap_ptr, u32 num, u32 retaddr) +void HuMemMemoryFreeNum(void *heap_ptr, u32 num, size_t retaddr) { struct memory_block *block = heap_ptr; do { @@ -90,7 +90,7 @@ static void HuMemTailMemoryAlloc2() //Required for string literal OSReport("memory allocation(tail) error.\n"); } -void HuMemMemoryFree(void *ptr, u32 retaddr) +void HuMemMemoryFree(void *ptr, size_t retaddr) { struct memory_block *block; if(!ptr) { diff --git a/src/game/process.c b/src/game/process.c index ec3e2993..e2d423ab 100644 --- a/src/game/process.c +++ b/src/game/process.c @@ -84,13 +84,10 @@ 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 -#else - gcsetjmp(&process->jump); - process->jump.lr = (u32)func; - process->jump.sp = process->base_sp; -#endif + process->base_sp = ((size_t)HuMemMemoryAlloc(heap, stack_size, FAKE_RETADDR)) + stack_size - 8; + SETJMP(process->jump); + SETJMP_SET_IP(process->jump, func); + SETJMP_SET_SP(process->jump, process->base_sp); process->dtor = NULL; process->user_data = NULL; LinkProcess(&processtop, process); @@ -140,12 +137,10 @@ void HuPrcChildWatch() Process *curr = HuPrcCurrentGet(); if (curr->child) { curr->exec = EXEC_CHILDWATCH; -#ifdef TARGET_PC -#else - if (gcsetjmp(&curr->jump) == 0) { - gclongjmp(&processjmpbuf, 1); + if (SETJMP(curr->jump) == 0) + { + LONGJMP(processjmpbuf, 1); } -#endif } } @@ -196,10 +191,7 @@ static void gcTerminateProcess(Process *process) } UnlinkProcess(&processtop, process); processcnt--; -#ifdef TARGET_PC -#else - gclongjmp(&processjmpbuf, 2); -#endif + longjmp(processjmpbuf, 2); } void HuPrcEnd() @@ -217,12 +209,9 @@ void HuPrcSleep(s32 time) process->exec = EXEC_SLEEP; process->sleep_time = time; } -#ifdef TARGET_PC -#else - if (gcsetjmp(&process->jump) == 0) { - gclongjmp(&processjmpbuf, 1); + if (SETJMP(process->jump) == 0) { + LONGJMP(processjmpbuf, 1); } -#endif } void HuPrcVSleep() @@ -251,15 +240,15 @@ void HuPrcCall(s32 tick) Process *process; s32 ret; processcur = processtop; -#ifdef TARGET_PC -#else - ret = gcsetjmp(&processjmpbuf); -#endif + ret = setjmp(processjmpbuf); while (1) { switch (ret) { case 2: HuMemDirectFree(processcur->heap); case 1: + #ifdef TARGET_PC + processcur = processcur->next; + #else if (((u8 *)(processcur->heap))[4] != 165) { printf("stack overlap error.(process pointer %x)\n", processcur); while (1) @@ -268,6 +257,7 @@ void HuPrcCall(s32 tick) else { processcur = processcur->next; } + #endif break; } process = processcur; @@ -305,15 +295,9 @@ void HuPrcCall(s32 tick) break; case EXEC_KILLED: -#ifdef TARGET_PC -#else - process->jump.lr = (u32)HuPrcEnd; -#endif + SETJMP_SET_IP(process->jump, HuPrcEnd); case EXEC_NORMAL: -#ifdef TARGET_PC -#else - gclongjmp(&process->jump, 1); -#endif + LONGJMP(process->jump, 1); break; } } From bf958a1f2978595a2675c76e3c2a21b50f7a92eb Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Thu, 3 Apr 2025 19:22:36 +0200 Subject: [PATCH 13/47] Correct risc's setjmp --- include/game/jmp.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/game/jmp.h b/include/game/jmp.h index 29fe0a3b..3569a306 100755 --- a/include/game/jmp.h +++ b/include/game/jmp.h @@ -143,8 +143,8 @@ typedef struct _JUMP_BUFFER { #define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Lr = (size_t)func #define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (size_t)sp #elif defined(__riscv) -#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Lr = (size_t)func -#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (size_t)sp +#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->ra = (size_t)func +#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->sp = (size_t)sp #endif #else From 8000ff491a621b024f4b569bb633239e98dfbd71 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Thu, 3 Apr 2025 23:11:54 +0200 Subject: [PATCH 14/47] Fix types and aarch --- include/game/jmp.h | 4 ++-- include/game/memory.h | 10 +++++----- src/game/memory.c | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/game/jmp.h b/include/game/jmp.h index 3569a306..cc3da85a 100755 --- a/include/game/jmp.h +++ b/include/game/jmp.h @@ -76,7 +76,7 @@ typedef struct _JUMP_BUFFER { uint32_t Fpscr; uint32_t long D[8]; // D8-D15 VFP/NEON regs } _JUMP_BUFFER; -#elif defined(_M_ARM64) || defined(__arch64__) +#elif defined(_M_ARM64) || defined(__aarch64__) typedef struct _JUMP_BUFFER { uint64_t Frame; uint64_t Reserved; @@ -139,7 +139,7 @@ typedef struct _JUMP_BUFFER { #elif defined(_M_ARM) || defined(__arm__) #define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Pc = (size_t)func #define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (size_t)sp -#elif defined(_M_ARM64) || defined(__arch64__) +#elif defined(_M_ARM64) || defined(__aarch64__) #define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Lr = (size_t)func #define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (size_t)sp #elif defined(__riscv) diff --git a/include/game/memory.h b/include/game/memory.h index 95728bde..c5978975 100644 --- a/include/game/memory.h +++ b/include/game/memory.h @@ -28,14 +28,14 @@ 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, size_t retaddr); +void *HuMemMemoryAllocNum(void *heap_ptr, s32 size, u32 num, size_t retaddr); +void HuMemMemoryFree(void *ptr, size_t retaddr); +void HuMemMemoryFreeNum(void *heap_ptr, u32 num, size_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/src/game/memory.c b/src/game/memory.c index 9a2cd504..77b0a569 100644 --- a/src/game/memory.c +++ b/src/game/memory.c @@ -13,10 +13,10 @@ struct memory_block { struct memory_block *prev; struct memory_block *next; u32 num; - u32 retaddr; + size_t retaddr; }; -static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, u32 num, u32 retaddr); +static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, u32 num, size_t retaddr); void *HuMemHeapInit(void *ptr, s32 size) { From 30d80d66a0a1ebf98f80f1f2edb47b25a56bba7e Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Thu, 3 Apr 2025 23:35:53 +0200 Subject: [PATCH 15/47] Change some size_t usage to uintptr_t --- include/dolphin/types.h | 1 + include/game/memory.h | 8 ++++---- src/game/memory.c | 14 +++++++------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/include/dolphin/types.h b/include/dolphin/types.h index cd351fbb..db8b9b8c 100644 --- a/include/dolphin/types.h +++ b/include/dolphin/types.h @@ -22,6 +22,7 @@ typedef unsigned long u32; typedef unsigned long long int u64; typedef u32 size_t; +typedef u32 uintptr_t; #endif typedef volatile u8 vu8; diff --git a/include/game/memory.h b/include/game/memory.h index c5978975..a32b1a84 100644 --- a/include/game/memory.h +++ b/include/game/memory.h @@ -28,10 +28,10 @@ u32 HuMemHeapSizeGet(HeapID heap); void *HuMemHeapPtrGet(HeapID heap); void *HuMemHeapInit(void *ptr, s32 size); -void *HuMemMemoryAlloc(void *heap_ptr, s32 size, size_t retaddr); -void *HuMemMemoryAllocNum(void *heap_ptr, s32 size, u32 num, size_t retaddr); -void HuMemMemoryFree(void *ptr, size_t retaddr); -void HuMemMemoryFreeNum(void *heap_ptr, u32 num, size_t retaddr); +void *HuMemMemoryAlloc(void *heap_ptr, s32 size, uintptr_t retaddr); +void *HuMemMemoryAllocNum(void *heap_ptr, s32 size, u32 num, uintptr_t retaddr); +void HuMemMemoryFree(void *ptr, uintptr_t retaddr); +void HuMemMemoryFreeNum(void *heap_ptr, u32 num, uintptr_t retaddr); s32 HuMemUsedMemorySizeGet(void *heap_ptr); s32 HuMemUsedMemoryBlockGet(void *heap_ptr); s32 HuMemMemorySizeGet(void *ptr); diff --git a/src/game/memory.c b/src/game/memory.c index 77b0a569..908c294f 100644 --- a/src/game/memory.c +++ b/src/game/memory.c @@ -13,10 +13,10 @@ struct memory_block { struct memory_block *prev; struct memory_block *next; u32 num; - size_t retaddr; + uintptr_t retaddr; }; -static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, u32 num, size_t retaddr); +static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, u32 num, uintptr_t retaddr); void *HuMemHeapInit(void *ptr, s32 size) { @@ -31,17 +31,17 @@ void *HuMemHeapInit(void *ptr, s32 size) return block; } -void *HuMemMemoryAllocNum(void *heap_ptr, s32 size, u32 num, size_t retaddr) +void *HuMemMemoryAllocNum(void *heap_ptr, s32 size, u32 num, uintptr_t retaddr) { return HuMemMemoryAlloc2(heap_ptr, size, num, retaddr); } -void *HuMemMemoryAlloc(void *heap_ptr, s32 size, size_t 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, size_t retaddr) +static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, u32 num, uintptr_t retaddr) { s32 alloc_size = MEM_ALLOC_SIZE(size); struct memory_block *block = heap_ptr; @@ -72,7 +72,7 @@ static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, u32 num, size_t retaddr return NULL; } -void HuMemMemoryFreeNum(void *heap_ptr, u32 num, size_t retaddr) +void HuMemMemoryFreeNum(void *heap_ptr, u32 num, uintptr_t retaddr) { struct memory_block *block = heap_ptr; do { @@ -90,7 +90,7 @@ static void HuMemTailMemoryAlloc2() //Required for string literal OSReport("memory allocation(tail) error.\n"); } -void HuMemMemoryFree(void *ptr, size_t retaddr) +void HuMemMemoryFree(void *ptr, uintptr_t retaddr) { struct memory_block *block; if(!ptr) { From 4438f7d9c833a77b5ae9538881acd38a741f7a78 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Fri, 4 Apr 2025 00:47:03 +0200 Subject: [PATCH 16/47] jmp fixes and be matching again move to aurora fork --- CMakeLists.txt | 3 +++ extern/aurora | 2 +- include/game/jmp.h | 6 +++--- src/game/flag.c | 7 +++++-- src/game/jmp.c | 4 ++-- src/game/main.c | 20 ++++++++++---------- src/game/process.c | 6 +++--- src/port/stubs.c | 18 ++++++++++++++++++ 8 files changed, 45 insertions(+), 21 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5552ebf9..1c9388b6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,11 +23,14 @@ set(DOLPHIN_FILES set(GAME_FILES src/game/card.c src/game/fault.c + src/game/flag.c src/game/frand.c + src/game/gamework.c src/game/main.c src/game/malloc.c src/game/memory.c src/game/init.c + src/game/pad.c src/game/process.c ) diff --git a/extern/aurora b/extern/aurora index 6f686121..f713ca67 160000 --- a/extern/aurora +++ b/extern/aurora @@ -1 +1 @@ -Subproject commit 6f6861215150abc4fa00197de43754525cac07a6 +Subproject commit f713ca675055fa522bf44e2d326eb3e7941ec381 diff --git a/include/game/jmp.h b/include/game/jmp.h index cc3da85a..4ead22aa 100755 --- a/include/game/jmp.h +++ b/include/game/jmp.h @@ -164,10 +164,10 @@ s32 gcsetjmp(jmp_buf *jump); s32 gclongjmp(jmp_buf *jump, s32 status); #define SETJMP(jump) gcsetjmp(&(jump)) -#define SETJMP(jump, status) gclongjump(&(jump), (status)) +#define LONGJMP(jump, status) gclongjmp(&(jump), (status)) -#define SETJMP_SET_IP(jump, func) jmp_buf->lr = (u32)func -#define SETJMP_SET_IP(jump, sp) jmp_buf->sp = (u32)sp +#define SETJMP_SET_IP(jump, func) jump.lr = (u32)func +#define SETJMP_SET_SP(jump, stack_ptr) jump.sp = (u32)stack_ptr #endif #endif 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/jmp.c b/src/game/jmp.c index c16670de..4da43088 100755 --- a/src/game/jmp.c +++ b/src/game/jmp.c @@ -1,6 +1,6 @@ #include "game/jmp.h" -s32 gcsetjmp(register JMPBUF *jump) +s32 gcsetjmp(register jmp_buf *jump) { // clang-format off asm { @@ -37,7 +37,7 @@ s32 gcsetjmp(register JMPBUF *jump) } // clang-format off -asm s32 gclongjmp(register JMPBUF *jump, register s32 status) { +asm s32 gclongjmp(register jmp_buf *jump, register s32 status) { nofralloc lwz r5, jump->lr lwz r6, jump->cr diff --git a/src/game/main.c b/src/game/main.c index cbf96156..4aecaf09 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -205,16 +205,16 @@ void main(void) #endif } -// void HuSysVWaitSet(s16 vcount) -//{ -// minimumVcount = vcount; -// minimumVcountf = vcount; -// } -// -// s16 HuSysVWaitGet(s16 param) -//{ -// return (s16) minimumVcount; -// } +void HuSysVWaitSet(s16 vcount) +{ + minimumVcount = vcount; + minimumVcountf = vcount; +} + +s16 HuSysVWaitGet(s16 param) +{ + return (s16) minimumVcount; +} s32 rnd_seed = 0x0000D9ED; diff --git a/src/game/process.c b/src/game/process.c index e2d423ab..4a85475b 100644 --- a/src/game/process.c +++ b/src/game/process.c @@ -84,7 +84,7 @@ 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 = ((size_t)HuMemMemoryAlloc(heap, stack_size, FAKE_RETADDR)) + stack_size - 8; + process->base_sp = ((uintptr_t)HuMemMemoryAlloc(heap, stack_size, FAKE_RETADDR)) + stack_size - 8; SETJMP(process->jump); SETJMP_SET_IP(process->jump, func); SETJMP_SET_SP(process->jump, process->base_sp); @@ -191,7 +191,7 @@ static void gcTerminateProcess(Process *process) } UnlinkProcess(&processtop, process); processcnt--; - longjmp(processjmpbuf, 2); + LONGJMP(processjmpbuf, 2); } void HuPrcEnd() @@ -240,7 +240,7 @@ void HuPrcCall(s32 tick) Process *process; s32 ret; processcur = processtop; - ret = setjmp(processjmpbuf); + ret = SETJMP(processjmpbuf); while (1) { switch (ret) { case 2: diff --git a/src/port/stubs.c b/src/port/stubs.c index d9c1ed60..7b2a770b 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -518,6 +518,24 @@ OSInterruptMask __OSUnmaskInterrupts(OSInterruptMask mask) return 0; } +void SISetSamplingRate(u32 msec) +{ + // Maybe we could include SI later + puts("SISetSamplingRate is a stub"); +} + +VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback callback) +{ + puts("VISetPostRetraceCallback is a stub"); + // TODO + return callback; +} + +void msmSysRegularProc(void) +{ + puts("msmSysRegularProc is a stub"); +} + // Hudson void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { } void HuAudInit() { } From a443a0a7c7119ee4fc13957c6a70fd16d7eb29dd Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Fri, 4 Apr 2025 01:31:35 +0200 Subject: [PATCH 17/47] GXSETARRAY macro and used that at some places --- include/dolphin/gx/GXGeometry.h | 2 ++ src/REL/m405Dll/main.c | 2 +- src/REL/m406Dll/map.c | 12 ++++++------ src/game/hsfanim.c | 7 ++++--- src/game/printfunc.c | 4 ++-- 5 files changed, 15 insertions(+), 12 deletions(-) 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/src/REL/m405Dll/main.c b/src/REL/m405Dll/main.c index 0eade3f2..8eafe1d9 100755 --- a/src/REL/m405Dll/main.c +++ b/src/REL/m405Dll/main.c @@ -1002,7 +1002,7 @@ 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), 0xC); GXSetCullMode(GX_CULL_BACK); GXCallDisplayList(lbl_1_bss_5AC.unk24, lbl_1_bss_5AC.unk28); GXSetNumIndStages(0); diff --git a/src/REL/m406Dll/map.c b/src/REL/m406Dll/map.c index e995e73a..47ff2ff0 100644 --- a/src/REL/m406Dll/map.c +++ b/src/REL/m406Dll/map.c @@ -1111,19 +1111,19 @@ 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); + GXSETARRAY(GX_VA_CLR0, var_r31->unk_90, var_r31->unk_80 * sizeof(GXColor), sizeof(GXColor)); GXCallDisplayList(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)); + 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)); GXCallDisplayList(var_r31->unk_A4, var_r31->unk_A0); } } diff --git a/src/game/hsfanim.c b/src/game/hsfanim.c index b5a73d37..1db1cd21 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" @@ -824,13 +825,13 @@ 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); + GXSETARRAY(GX_VA_POS, temp_r31->unk_4C, temp_r31->unk_30 * 4, 0xC); 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, 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); + GXSETARRAY(GX_VA_TEX0, baseST, sizeof(baseST), 8); GXCallDisplayList(temp_r31->unk_50, temp_r31->unk_40); } if (shadowModelDrawF == 0) { diff --git a/src/game/printfunc.c b/src/game/printfunc.c index 4f85f5a9..9be9b5df 100644 --- a/src/game/printfunc.c +++ b/src/game/printfunc.c @@ -156,7 +156,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); @@ -203,7 +203,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)); GXSetNumTevStages(1); GXSetNumTexGens(1); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); From a978d8d3256dd1d2d0deba805434acb0d6e952b9 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Fri, 4 Apr 2025 02:46:07 +0200 Subject: [PATCH 18/47] Remove accidentally pushed .gitignore --- .gitignore | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.gitignore b/.gitignore index a23cdeee..c8875b51 100644 --- a/.gitignore +++ b/.gitignore @@ -34,12 +34,3 @@ compile_commands.json # Miscellaneous /*.txt *.exe - -.clang-format -tools/ -*.svg -main.s -decompiled.c -debug_source.c -decompiled_common.c -build_iso.py From e40e69e1d8ec133e92096e5391291bdf8696de40 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Fri, 4 Apr 2025 03:05:51 +0200 Subject: [PATCH 19/47] Add C mtx and vec functions Include printfunc (lots of GX is missing for it) --- CMakeLists.txt | 7 +- include/dolphin/mtx.h | 4 + src/dolphin/mtx/mtx44.c | 6 +- src/dolphin/mtx/vec.c | 182 +++++++++++++++++++++++++++++++--------- src/game/main.c | 14 ++-- src/game/printfunc.c | 157 +++++++++++++++++----------------- src/port/stubs.c | 6 -- 7 files changed, 240 insertions(+), 136 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c9388b6..ac68a440 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,12 +18,16 @@ add_subdirectory(extern/musyx EXCLUDE_FROM_ALL) set(DOLPHIN_FILES src/dolphin/os/OSAlloc.c src/dolphin/os/OSArena.c + src/dolphin/mtx/mtx.c + src/dolphin/mtx/mtx44.c + src/dolphin/mtx/vec.c ) set(GAME_FILES src/game/card.c src/game/fault.c src/game/flag.c + src/game/font.c src/game/frand.c src/game/gamework.c src/game/main.c @@ -31,6 +35,7 @@ set(GAME_FILES src/game/memory.c src/game/init.c src/game/pad.c + src/game/printfunc.c src/game/process.c ) @@ -50,5 +55,5 @@ source_group("Port" FILES ${PORT_FILES}) add_executable(marioparty4 ${DOLPHIN_FILES} ${GAME_FILES} ${PORT_FILES}) target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=0) target_compile_definitions(musyx PRIVATE MUSY_VERSION_MAJOR=1 MUSY_VERSION_MINOR=5 MUSY_VERSION_PATCH=4) -target_include_directories(marioparty4 PRIVATE include) +target_include_directories(marioparty4 PRIVATE include build/GMPE01_00/include) target_link_libraries(marioparty4 PRIVATE aurora::aurora aurora::main musyx) diff --git a/include/dolphin/mtx.h b/include/dolphin/mtx.h index 49dc1b7e..5382dbc5 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 diff --git a/src/dolphin/mtx/mtx44.c b/src/dolphin/mtx/mtx44.c index a6c2faa9..4c1e577d 100644 --- a/src/dolphin/mtx/mtx44.c +++ b/src/dolphin/mtx/mtx44.c @@ -74,9 +74,10 @@ void C_MTXOrtho(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f) m[3][3] = 1.0f; } +#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 +96,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/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/game/main.c b/src/game/main.c index 4aecaf09..195995d7 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -109,10 +109,10 @@ void main(void) HuSysInit(&GXPal528IntDf); #endif HuPrcInit(); - // HuPadInit(); - // GWInit(); - // pfInit(); - // GlobalCounter = 0; + HuPadInit(); + GWInit(); + pfInit(); + GlobalCounter = 0; // HuSprInit(); // Hu3DInit(); // HuDataInit(); @@ -125,7 +125,7 @@ void main(void) // GWPlayerCfg[i].character = -1; } - //omMasterInit(0, _ovltbl, OVL_COUNT, OVL_BOOT); + // omMasterInit(0, _ovltbl, OVL_COUNT, OVL_BOOT); VIWaitForRetrace(); if (VIGetNextField() == 0) { @@ -170,7 +170,7 @@ void main(void) HuPadRead(); pfClsScr();*/ - HuPrcCall(1); + HuPrcCall(1); /* MGSeqMain(); HuPerfBegin(1); Hu3DExec(); @@ -213,7 +213,7 @@ void HuSysVWaitSet(s16 vcount) s16 HuSysVWaitGet(s16 param) { - return (s16) minimumVcount; + return (s16)minimumVcount; } s32 rnd_seed = 0x0000D9ED; diff --git a/src/game/printfunc.c b/src/game/printfunc.c index 9be9b5df..daeb0513 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[]; @@ -31,31 +31,16 @@ 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); @@ -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(); @@ -191,10 +176,13 @@ void pfDrawFonts(void) GXSetNumTevStages(1); GXSetNumTexGens(0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); +#ifdef __MWERKS__ + // TODO PC 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); +#endif GXEnd(); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); @@ -209,8 +197,9 @@ void pfDrawFonts(void) 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 +208,83 @@ 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); +#ifdef __MWERKS__ + // TODO PC + 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(); } +#endif x += char_w; - if(x > HU_FB_WIDTH) { + if (x > HU_FB_WIDTH) { x = 0; y += char_h; } @@ -312,9 +305,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); @@ -336,21 +330,24 @@ static void WireDraw(void) MTXIdentity(modelview); GXLoadPosMtxImm(modelview, GX_PNMTX0); GXBegin(GX_LINES, 0, 8); +#ifdef __MWERKS__ + // TODO PC 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); +#endif GXEnd(); } diff --git a/src/port/stubs.c b/src/port/stubs.c index 7b2a770b..eb8dc7a0 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -185,12 +185,6 @@ s32 CARDWriteAsync(CARDFileInfo *fileInfo, const void *addr, s32 length, s32 off return 0; } -void C_MTXScale(Mtx m, f32 xS, f32 yS, f32 zS) -{ - *(volatile int *)0 = 0; - puts("C_MTXScale is a stub"); -} - void DCFlushRange(void *addr, u32 nBytes) { puts("DCFlushRange is a stub"); From ed2a2225d70ef94c917db031be7c395205ed47b1 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Fri, 4 Apr 2025 03:06:47 +0200 Subject: [PATCH 20/47] Add script to extact .inc files from the game --- tools/extract_includes.py | 101 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 tools/extract_includes.py 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") From caea40c6aac97a6a636f6be85945cafa3fd4fc79 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Fri, 4 Apr 2025 04:05:31 +0200 Subject: [PATCH 21/47] "various changes to get it building for mac, as well as 64-bit" from zestydev --- CMakeLists.txt | 23 +++++ include/dolphin/os/OSAlloc.h | 8 +- include/game/gamework_data.h | 170 +++++++++++++++++------------------ src/dolphin/os/OSAlloc.c | 47 +++++----- src/dolphin/si/SIBios.c | 2 +- src/game/frand.c | 4 +- src/game/gamework.c | 7 ++ src/game/init.c | 28 ++++-- src/game/memory.c | 81 +++++++++-------- src/game/pad.c | 5 +- src/port/imgui.cpp | 3 - 11 files changed, 216 insertions(+), 162 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ac68a440..cb232671 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,18 @@ 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 build type to Debug if not specified +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Debug) +endif() + if (CMAKE_SYSTEM_NAME STREQUAL Linux) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas -Wno-unused-variable -Wno-unused-parameter") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -fsanitize=address -fsanitize-address-use-after-scope") @@ -12,6 +22,10 @@ if (CMAKE_SYSTEM_NAME STREQUAL Linux) set(CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX 32) endif () +if(APPLE) + add_compile_options(-Wno-declaration-after-statement) +endif () + add_subdirectory(extern/aurora EXCLUDE_FROM_ALL) add_subdirectory(extern/musyx EXCLUDE_FROM_ALL) @@ -52,6 +66,15 @@ 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 "-std=c89 -Dinline=") +endforeach() +foreach(file ${GAME_FILES}) +set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-std=c89 -Dinline=") +endforeach() +endif () + add_executable(marioparty4 ${DOLPHIN_FILES} ${GAME_FILES} ${PORT_FILES}) target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=0) target_compile_definitions(musyx PRIVATE MUSY_VERSION_MAJOR=1 MUSY_VERSION_MINOR=5 MUSY_VERSION_PATCH=4) 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/game/gamework_data.h b/include/game/gamework_data.h index f26f62dc..8550f6ca 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,8 +141,8 @@ 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; @@ -196,8 +196,9 @@ static inline s32 GWRumbleGet(void) static inline void GWRumbleSet(s32 value) { GWGameStat.rumble = value; - if(value == 0) { - HuPadRumbleAllStop(); + if (value == 0) { + // TODO: get rumble working + // HuPadRumbleAllStop(); } } @@ -206,7 +207,6 @@ static inline s32 GWBonusStarGet(void) return GWSystem.bonus_star; } - static inline s32 GWMGExplainGet(void) { return GWSystem.explain_mg; @@ -250,9 +250,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 +265,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 +275,7 @@ static inline void GWMessSpeedSet(s32 value) case 2: GWSystem.mess_delay = 64; break; - + case 1: GWSystem.mess_delay = 48; break; @@ -284,7 +284,7 @@ static inline void GWMessSpeedSet(s32 value) GWSystem.mess_delay = 120; break; } - #endif +#endif } static inline void GWSaveModeSet(s32 value) @@ -367,7 +367,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/src/dolphin/os/OSAlloc.c b/src/dolphin/os/OSAlloc.c index fbd29a87..9c8ae8cd 100644 --- a/src/dolphin/os/OSAlloc.c +++ b/src/dolphin/os/OSAlloc.c @@ -1,6 +1,7 @@ #include #include #include +#include #define ALIGNMENT 32 @@ -203,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]; @@ -245,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 = (intptr_t)((char *)cellEnd - (char *)end); newCell->next = cell->next; if (newCell->next) { newCell->next->prev = newCell; @@ -292,9 +293,9 @@ 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) @@ -336,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; @@ -348,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) & 0xFFFFFFFFFFFFFFE0); ArenaStart = arenaStart; - ArenaEnd = (void *)((u32)arenaEnd & 0xFFFFFFE0); - ASSERTMSG1(0x2A4, ((u32)ArenaEnd - (u32)ArenaStart) >= 0x40U, "OSInitAlloc(): too small range."); + ArenaEnd = (void *)((uintptr_t)arenaEnd & 0xFFFFFFFFFFFFFFE0); + 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; + uintptr_t 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; 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/frand.c b/src/game/frand.c index 69e83264..d997320f 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..5c19db71 100644 --- a/src/game/gamework.c +++ b/src/game/gamework.c @@ -39,6 +39,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/init.c b/src/game/init.c index 4a730fc8..aef6a721 100644 --- a/src/game/init.c +++ b/src/game/init.c @@ -140,12 +140,17 @@ 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; +#ifdef TARGET_PC + DemoFrameBuffer1 = (void *)arena_lo; + DemoFrameBuffer2 = (void *)((uintptr_t)DemoFrameBuffer1 + fb_size); +#else DemoFrameBuffer1 = (void *)OSRoundUp32B((u32)arena_lo); - DemoFrameBuffer2 = (void *)OSRoundUp32B((u32)DemoFrameBuffer1+fb_size); + DemoFrameBuffer2 = (void *)OSRoundUp32B((u32)DemoFrameBuffer1 + fb_size); +#endif DemoCurrentBuffer = DemoFrameBuffer2; #if VERSION_PAL fb1 = DemoFrameBuffer1; @@ -156,17 +161,26 @@ static void InitMem() DCStoreRangeNoSync(DemoFrameBuffer1, fb_size); DCStoreRangeNoSync(DemoFrameBuffer2, fb_size); #endif - arena_lo = (void *)OSRoundUp32B((u32)DemoFrameBuffer2+fb_size); +#ifdef TARGET_PC + arena_lo = (void *)((uintptr_t)DemoFrameBuffer2 + fb_size); +#else + arena_lo = (void *)OSRoundUp32B((u32)DemoFrameBuffer2 + fb_size); +#endif OSSetArenaLo(arena_lo); if(OSGetConsoleType() == OS_CONSOLE_DEVHW1 && OSGetPhysicalMemSize() != 0x400000 && OSGetConsoleSimulatedMemSize() < 0x1800000) { LoadMemInfo(); } else { +#ifdef TARGET_PC arena_lo = OSGetArenaLo(); arena_hi = OSGetArenaHi(); - arena_lo = OSInitAlloc(arena_lo, arena_hi, 1); - OSSetArenaLo(arena_lo); +#else arena_lo = (void *)OSRoundUp32B((u32)arena_lo); arena_hi = (void *)OSRoundDown32B((u32)arena_hi); +#endif + arena_lo = OSInitAlloc(arena_lo, arena_hi, 1); + OSSetArenaLo(arena_lo); + arena_lo = (void *)arena_lo; + arena_hi = (void *)arena_hi; OSSetCurrentHeap(currentHeapHandle = OSCreateHeap(arena_lo, arena_hi)); arena_lo = arena_hi; OSSetArenaLo(arena_lo); diff --git a/src/game/memory.c b/src/game/memory.c index 908c294f..03f793b4 100644 --- a/src/game/memory.c +++ b/src/game/memory.c @@ -1,10 +1,10 @@ #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 DATA_GET_BLOCK(ptr) ((struct memory_block *)(((char *)(ptr)) - 32)) +#define BLOCK_GET_DATA(block) (((char *)(block)) + 32) -#define MEM_ALLOC_SIZE(size) (((size)+63) & 0xFFFFFFE0) +#define MEM_ALLOC_SIZE(size) (((size) + 63) & 0xFFFFFFE0) struct memory_block { s32 size; @@ -46,10 +46,14 @@ static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, u32 num, uintptr_t reta 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 > 32u) { +#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,7 +70,7 @@ static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, u32 num, uintptr_t reta 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; @@ -77,15 +81,14 @@ void HuMemMemoryFreeNum(void *heap_ptr, u32 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"); } @@ -93,23 +96,23 @@ static void HuMemTailMemoryAlloc2() //Required for string literal 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 +127,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 +140,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 +162,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 - 32; + } + else { return 0; } } diff --git a/src/game/pad.c b/src/game/pad.c index cded2f4f..3fa8da4f 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; @@ -254,4 +257,4 @@ s16 HuPadStatGet(s16 pad) u32 HuPadRumbleGet(void) { return RumbleBit; -} \ No newline at end of file +} diff --git a/src/port/imgui.cpp b/src/port/imgui.cpp index 0d40510a..51bf83a2 100644 --- a/src/port/imgui.cpp +++ b/src/port/imgui.cpp @@ -1,7 +1,4 @@ -extern "C" -{ #include "port/imgui.h" -} #include #include From 6a92b96c64540a410da4187c22df642faa002ae9 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Fri, 4 Apr 2025 17:37:42 +0200 Subject: [PATCH 22/47] Change aurora remote to fork --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 33b7ff9a..cc9bd6cc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -3,4 +3,4 @@ url = https://github.com/AxioDL/musyx [submodule "extern/aurora"] path = extern/aurora - url = https://github.com/encounter/aurora.git + url = https://github.com/dbalatoni13/aurora.git From aad91097cddd38da3b683253b78af8caa3abe5f7 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Fri, 4 Apr 2025 17:41:55 +0200 Subject: [PATCH 23/47] Use macro for some MTX functions --- src/REL/m406Dll/map.c | 8 +- src/REL/m409Dll/main.c | 4 +- src/REL/m417Dll/water.c | 4 +- src/REL/m423Dll/main.c | 4 +- src/REL/m425Dll/thwomp.c | 6 +- src/REL/m426Dll/main.c | 6 +- src/REL/m427Dll/map.c | 10 +- src/REL/m427Dll/player.c | 2 +- src/REL/m428Dll/player.c | 4 +- src/REL/m431Dll/main.c | 4 +- src/REL/m438Dll/fire.c | 691 ++++++++++++++++++++++----------------- src/REL/m440Dll/main.c | 4 +- src/REL/m442Dll/main.c | 4 +- src/REL/m450Dll/main.c | 6 +- src/game/EnvelopeExec.c | 126 +++---- src/game/board/battle.c | 2 +- src/game/board/item.c | 2 +- src/game/board/lottery.c | 564 ++++++++++++++------------------ src/game/board/pause.c | 342 +++++++++++-------- src/game/board/shop.c | 310 +++++++++--------- src/game/board/star.c | 223 ++++++------- src/game/board/ui.c | 616 +++++++++++++++++----------------- src/game/board/view.c | 189 ++++++----- src/game/chrman.c | 2 +- src/game/hsfanim.c | 20 +- src/game/hsfdraw.c | 226 ++++++------- src/game/hsfex.c | 6 +- src/game/hsfman.c | 30 +- src/game/hsfmotion.c | 8 + src/game/mapspace.c | 40 +-- src/game/thpmain.c | 10 +- 31 files changed, 1777 insertions(+), 1696 deletions(-) diff --git a/src/REL/m406Dll/map.c b/src/REL/m406Dll/map.c index 47ff2ff0..fe4bb35e 100644 --- a/src/REL/m406Dll/map.c +++ b/src/REL/m406Dll/map.c @@ -2956,7 +2956,7 @@ void fn_1_BC18(ModelData *arg0, float (*arg1)[4]) if (HmfInverseMtxF3X3(arg1, sp128) == 0) { MTXIdentity(sp128); } - PSMTXReorder(sp128, sp8); + Reorder(sp128, sp8); if (var_r31->unk_4C) { var_r18 = var_r31->unk_4C; var_r18(arg0, var_r31, arg1); @@ -2964,7 +2964,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); + ROMultVecArray(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; @@ -3169,7 +3169,7 @@ void fn_1_C86C(ModelData *arg0, Mtx arg1) if (HmfInverseMtxF3X3(arg1, sp9C) == 0) { MTXIdentity(sp9C); } - PSMTXReorder(sp9C, spC); + Reorder(sp9C, spC); if (var_r31->unk_4C) { var_r23 = var_r31->unk_4C; var_r23(arg0, var_r31, arg1); @@ -3177,7 +3177,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); + ROMultVecArray(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; diff --git a/src/REL/m409Dll/main.c b/src/REL/m409Dll/main.c index 70955a13..2788d424 100644 --- a/src/REL/m409Dll/main.c +++ b/src/REL/m409Dll/main.c @@ -1385,7 +1385,7 @@ void fn_1_602C(ModelData *arg0, f32 (*arg1)[4]) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetArray(GX_VA_TEX0, temp_r30->unk20, 8); fn_1_40A4(arg1, sp128); - PSMTXReorder(sp128, spF8); + Reorder(sp128, spF8); if (((u8)omPauseChk() == 0) && (temp_r30->unkC)) { var_r23 = temp_r30->unkC; var_r23(arg0, temp_r30, arg1); @@ -1393,7 +1393,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); + ROMultVecArray(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) { diff --git a/src/REL/m417Dll/water.c b/src/REL/m417Dll/water.c index 85cdcaea..ad4fe401 100644 --- a/src/REL/m417Dll/water.c +++ b/src/REL/m417Dll/water.c @@ -574,8 +574,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); + Reorder(spC8, sp38); + ROMultVecArray(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)); diff --git a/src/REL/m423Dll/main.c b/src/REL/m423Dll/main.c index 4590b4a0..e0299aa4 100755 --- a/src/REL/m423Dll/main.c +++ b/src/REL/m423Dll/main.c @@ -5148,7 +5148,7 @@ void fn_1_11900(ModelData *arg0, Mtx arg1) if (HmfInverseMtxF3X3(arg1, sp128) == 0) { MTXIdentity(sp128); } - PSMTXReorder(sp128, sp8); + Reorder(sp128, sp8); if (temp_r31->unk4C) { var_r18 = temp_r31->unk4C; var_r18(arg0, temp_r31, arg1); @@ -5156,7 +5156,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); + ROMultVecArray(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; diff --git a/src/REL/m425Dll/thwomp.c b/src/REL/m425Dll/thwomp.c index 3f02dce6..c6c3f9b8 100644 --- a/src/REL/m425Dll/thwomp.c +++ b/src/REL/m425Dll/thwomp.c @@ -2131,7 +2131,7 @@ void fn_1_101C4(ModelData *var_r29, Mtx var_r28) if (HmfInverseMtxF3X3(var_r28, sp50) == 0) { MTXIdentity(sp50); } - PSMTXReorder(sp50, sp20); + Reorder(sp50, sp20); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); @@ -2694,7 +2694,7 @@ void fn_1_11EE0(ModelData *var_r24, Mtx var_r21) if (HmfInverseMtxF3X3(var_r21, sp128) == 0) { MTXIdentity(sp128); } - PSMTXReorder(sp128, &sp8[0]); + Reorder(sp128, &sp8[0]); if (var_r31->unk_4C) { var_r18 = var_r31->unk_4C; var_r18(var_r24, var_r31, var_r21); @@ -2702,7 +2702,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); + ROMultVecArray(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; diff --git a/src/REL/m426Dll/main.c b/src/REL/m426Dll/main.c index 9a80a823..ee504757 100644 --- a/src/REL/m426Dll/main.c +++ b/src/REL/m426Dll/main.c @@ -3045,7 +3045,7 @@ void fn_1_80DC(ModelData *arg0, Mtx arg1) if (!HmfInverseMtxF3X3(arg1, sp128)) { MTXIdentity(sp128); } - PSMTXReorder(sp128, sp8); + Reorder(sp128, sp8); if (var_r31->unk_4C) { var_r18 = var_r31->unk_4C; var_r18(arg0, var_r31, arg1); @@ -3053,7 +3053,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); + ROMultVecArray(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; @@ -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); diff --git a/src/REL/m427Dll/map.c b/src/REL/m427Dll/map.c index fa191ed6..9341db4e 100644 --- a/src/REL/m427Dll/map.c +++ b/src/REL/m427Dll/map.c @@ -3028,7 +3028,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); + Reorder(sp128, spF8); if ((omPauseChk() == 0) && (var_r30->unk_0C)) { var_r23 = var_r30->unk_0C; var_r23(model, var_r30, matrix); @@ -3036,7 +3036,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); + ROMultVecArray(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; @@ -3058,9 +3058,9 @@ void fn_1_DCD4(ModelData *model, Mtx matrix) } 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); + RotRad(spC8, 0x5A, MTXDegToRad(var_r29->unk_44)); + Concat(sp128, spC8, sp98); + MultVecArray(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++); diff --git a/src/REL/m427Dll/player.c b/src/REL/m427Dll/player.c index fe097531..5f361789 100644 --- a/src/REL/m427Dll/player.c +++ b/src/REL/m427Dll/player.c @@ -1645,7 +1645,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); + InvXpose(matrix, sp70); GXLoadNrmMtxImm(sp70, 0); GXSetNumTevStages(1); GXSetNumTexGens(1); diff --git a/src/REL/m428Dll/player.c b/src/REL/m428Dll/player.c index 4964e8a5..27b4cc43 100644 --- a/src/REL/m428Dll/player.c +++ b/src/REL/m428Dll/player.c @@ -3109,7 +3109,7 @@ void fn_1_134C0(ModelData *var_r23, Mtx var_r22) if (HmfInverseMtxF3X3(var_r22, &sp128[0]) == 0) { MTXIdentity(sp128); } - PSMTXReorder(sp128, sp8); + Reorder(sp128, sp8); if (var_r31->unk_4C) { var_r18 = var_r31->unk_4C; var_r18(var_r23, var_r31, var_r22); @@ -3117,7 +3117,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); + ROMultVecArray(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; diff --git a/src/REL/m431Dll/main.c b/src/REL/m431Dll/main.c index 4aec497d..59ca57b5 100644 --- a/src/REL/m431Dll/main.c +++ b/src/REL/m431Dll/main.c @@ -2095,7 +2095,7 @@ void fn_1_72B4(ModelData *model, Mtx mtx) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetArray(GX_VA_TEX0, temp_r30->unk20, sizeof(HsfVector2f)); fn_1_79FC(mtx, sp128); - PSMTXReorder(sp128, spF8); + Reorder(sp128, spF8); if (!omPauseChk() && temp_r30->unkC) { temp_r23 = temp_r30->unkC; temp_r23(model, temp_r30, mtx); @@ -2103,7 +2103,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); + ROMultVecArray(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; diff --git a/src/REL/m438Dll/fire.c b/src/REL/m438Dll/fire.c index 349febca..fd63cd89 100644 --- a/src/REL/m438Dll/fire.c +++ b/src/REL/m438Dll/fire.c @@ -7,17 +7,18 @@ 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); @@ -27,11 +28,11 @@ void fn_1_E658(s16 arg0, s16 arg1) { lbl_1_bss_DE4.unk_32 = arg1; var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(M438UnkStruct3), 0x10000000); 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 +40,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 +50,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 +64,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); + Scale(sp90, arg0->unk_24.x, arg0->unk_24.y, arg0->unk_24.z); + Concat(sp60, sp90, sp90); mtxTransCat(sp90, arg0->unk_0C.x, arg0->unk_0C.y, arg0->unk_0C.z); - PSMTXConcat(Hu3DCameraMtx, sp90, spC0); + Concat(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); + Copy(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 +86,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 +141,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); + Scale(sp90, arg0->unk_24.x, arg0->unk_24.y, arg0->unk_24.z); + Concat(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); + Concat(Hu3DCameraMtx, sp90, sp30); + Inverse(Hu3DCameraMtx, sp60); + Concat(sp60, sp30, sp60); + Concat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp90); + Concat(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 +156,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 +169,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 +184,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); + Concat(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) { + RotRad(sp90, 0x59, MTXDegToRad(CRot.y)); + Concat(sp90, sp60, sp60); + } + Scale(sp90, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); + Trans(sp30, var_r31->unk_24.x, var_r31->unk_24.y, var_r31->unk_24.z); + Concat(sp90, sp30, sp90); + Concat(sp60, sp90, sp90); mtxTransCat(sp90, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); - PSMTXConcat(Hu3DCameraMtx, sp90, spF0); + Concat(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); + Identity(sp90); } - PSMTXConcat(sp90, sp60, sp60); - } else if (var_r31->unk_31 == 1) { - PSMTXRotRad(sp90, 0x59, MTXDegToRad(CRot.y)); - PSMTXConcat(sp90, sp60, sp60); + Concat(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) { + RotRad(sp90, 0x59, MTXDegToRad(CRot.y)); + Concat(sp90, sp60, sp60); + } + Scale(sp90, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); + Trans(sp30, var_r31->unk_24.x, var_r31->unk_24.y, var_r31->unk_24.z); + Concat(sp90, sp30, sp90); + Concat(sp60, sp90, sp90); mtxTransCat(sp90, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); - PSMTXConcat(spC0, sp90, spF0); + Concat(spC0, sp90, spF0); break; } GXLoadPosMtxImm(spF0, 0); - PSMTXInverse(spF0, sp90); - PSMTXTranspose(sp90, sp60); + Inverse(spF0, sp90); + Transpose(sp90, sp60); GXLoadNrmMtxImm(sp60, 0); GXSetChanAmbColor(GX_COLOR0A0, var_r31->unk_50); GXSetChanMatColor(GX_COLOR0A0, var_r31->unk_54); @@ -230,7 +238,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 +247,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) { @@ -272,59 +282,66 @@ void fn_1_E790(M438UnkStruct2* arg0) { } } -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); + Inverse(arg1, sp38); + Transpose(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), 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 +351,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), 0x10000000); + 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 +368,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), 0x10000000U); + 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 +386,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; - + Vec *var_r31; + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(Vec), 0x10000000); - + for (var_r29 = 0; var_r29 < arg1; var_r31++, arg2++, var_r29++) { var_r31->x = arg2->x; var_r31->y = arg2->y; @@ -380,13 +400,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), 0x10000000); + 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 +416,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 +440,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 +452,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 +494,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 +545,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 +562,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"); @@ -584,15 +609,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 +630,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,14 +643,14 @@ 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; } @@ -639,9 +664,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 +676,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 +699,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 +711,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,25 +720,28 @@ 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; @@ -719,14 +749,16 @@ s16 fn_1_10910(u32 arg0, s16 arg1, s16 arg2) { var_r30 = HuSprAnimMake(arg1, arg2, 2); var_r30->bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg2 * (arg1 * 2), 0x10000000); arg1 = arg2 = 0; - } else { + } + else { var_r30 = HuSprAnimRead(HuDataReadNum(arg0, 0x10000000)); } 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 +780,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); + Identity(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; + 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 +813,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 +829,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 +874,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 +913,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 +941,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 +962,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 +980,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 +995,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 +1011,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 +1028,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 +1043,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 +1059,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 +1076,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 +1092,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 +1109,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 +1124,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 +1140,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 +1157,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 +1172,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 +1188,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 +1205,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 +1220,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 +1236,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 +1253,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 +1263,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 +1277,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 +1292,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 +1302,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 +1331,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 +1346,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 +1364,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 +1381,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 +1399,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 +1413,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 +1428,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 +1442,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 +1457,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 +1471,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 +1486,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 +1500,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 +1514,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 +1532,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 +1546,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 +1560,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 +1579,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 +1593,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 +1607,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 +1626,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/m440Dll/main.c b/src/REL/m440Dll/main.c index db82808e..1839e30f 100644 --- a/src/REL/m440Dll/main.c +++ b/src/REL/m440Dll/main.c @@ -2460,7 +2460,7 @@ void fn_1_9C04(ModelData *arg0, Mtx arg1) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetArray(GX_VA_TEX0, temp_r30->unk20, 8); fn_1_9344(arg1, sp128); - PSMTXReorder(sp128, spF8); + Reorder(sp128, spF8); if (((u8)omPauseChk() == 0) && (temp_r30->unkC)) { var_r23 = temp_r30->unkC; var_r23(arg0, temp_r30, arg1); @@ -2468,7 +2468,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); + ROMultVecArray(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) { diff --git a/src/REL/m442Dll/main.c b/src/REL/m442Dll/main.c index 53dd649a..950180a0 100644 --- a/src/REL/m442Dll/main.c +++ b/src/REL/m442Dll/main.c @@ -1531,8 +1531,8 @@ void fn_1_485C(ModelData *model, Mtx mtx) 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); + Reorder(spA0, sp70); + ROMultVecArray(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++) { diff --git a/src/REL/m450Dll/main.c b/src/REL/m450Dll/main.c index 4610c4b3..0a6a3222 100644 --- a/src/REL/m450Dll/main.c +++ b/src/REL/m450Dll/main.c @@ -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); + Reorder(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); + ROMultVecArray(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; @@ -5048,7 +5048,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; diff --git a/src/game/EnvelopeExec.c b/src/game/EnvelopeExec.c index 53a9d990..83da92b1 100644 --- a/src/game/EnvelopeExec.c +++ b/src/game/EnvelopeExec.c @@ -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,7 +167,7 @@ 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) { @@ -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/board/battle.c b/src/game/board/battle.c index 2ba67445..acf10777 100755 --- a/src/game/board/battle.c +++ b/src/game/board/battle.c @@ -478,7 +478,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/item.c b/src/game/board/item.c index d2341c9c..80edbf0d 100755 --- a/src/game/board/item.c +++ b/src/game/board/item.c @@ -1035,7 +1035,7 @@ static void ExecItemSwap(void) } BoardModelRotGet(suitMdl, &sp3C); Hu3DCameraSet(0, sp108); - PSMTXInverse(sp108, spD8); + Inverse(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/lottery.c b/src/game/board/lottery.c index f64992f4..32b6ce49 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,15 +20,6 @@ #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" @@ -109,104 +109,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 +173,8 @@ void BoardLotteryExec(void) { BoardRollDispSet(1); } -void BoardLotteryInit(void) { +void BoardLotteryInit(void) +{ Vec sp14; Vec sp8; s32 i; @@ -247,73 +202,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 +262,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 +301,8 @@ static void KillModel(void) { BoardModelVisibilitySet(BoardLotteryHostGet(), 0); } -void BoardLotteryKill(void) { +void BoardLotteryKill(void) +{ if (lotteryProc) { HuPrcKill(lotteryProc); } @@ -400,7 +312,8 @@ void BoardLotteryKill(void) { } } -static void DestroyLottery(void) { +static void DestroyLottery(void) +{ s32 i; for (i = 0; i < 4; i++) { @@ -421,7 +334,8 @@ static void DestroyLottery(void) { lotteryProc = NULL; } -static void ExecLottery(void) { +static void ExecLottery(void) +{ Vec sp38; Vec sp2C; Vec sp20; @@ -472,7 +386,8 @@ static void ExecLottery(void) { if (GWPlayer[temp_r31].com) { if (BoardPlayerCoinsGet(temp_r31) >= 5) { BoardComKeySetLeft(); - } else { + } + else { BoardComKeySetRight(); } } @@ -512,7 +427,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 +477,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 +488,8 @@ static void ExecLottery(void) { var_r25 = BoardRandMod(100) & 0xFF; if (var_r25 < 50) { ExecBallGame(); - } else { + } + else { ExecScratch(); } ExecPrize(); @@ -601,7 +519,8 @@ static void ExecLottery(void) { HuPrcEnd(); } -static void DoMiniJumpUp(s32 arg0) { +static void DoMiniJumpUp(s32 arg0) +{ Mtx sp34; Vec sp28; Vec sp1C; @@ -629,7 +548,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 +563,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 +582,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 +603,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 +614,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 +633,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 +645,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 +702,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 +735,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 +752,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 +768,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 +790,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 +861,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 +900,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 +913,8 @@ static void ExecBallGame(void) { LotteryInlineFunc00(0, 1); } -static void SetBallPrize(void) { +static void SetBallPrize(void) +{ Process *sp8; s32 temp_r31; @@ -1004,11 +922,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 +939,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 +964,19 @@ static void ExecBallPrize(void) { temp_r29 = ballMdl[currPrize & 3]; BoardModelPosGet(lotteryMdl[0], &sp30); BoardModelRotGet(lotteryMdl[0], &sp18); - PSMTXRotRad(sp6C, 'Y', MTXDegToRad(sp18.y)); + RotRad(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); + Trans(sp3C, temp_r3->data.curr.pos.x, temp_r3->data.curr.pos.y + 210.0f, temp_r3->data.curr.pos.z + -40.0f); + Concat(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); + MultVec(sp6C, &sp24, &sp24); var_f29 = 0.0f; var_f30 = 1.8f; temp_f27 = 0.016666668f; @@ -1084,62 +1006,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 +1067,8 @@ static void ExecScratchTicket(s32 arg0) { comInputPos = 0; if (BoardRandMod(100) < 50) { comInputDrawP = comInputDraw1; - } else { + } + else { comInputDrawP = comInputDraw2; } temp_r27 = HuAudFXPlay(0x335); @@ -1217,7 +1107,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 +1150,8 @@ static void ExecScratch(void) { BoardFilterFadeOut(30); } -static void KillScratch(void) { +static void KillScratch(void) +{ if (ticketSprGrp != -1) { HuSprGrpKill(ticketSprGrp); ticketSprGrp = -1; @@ -1270,7 +1162,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 +1191,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 +1203,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 +1214,8 @@ static void HideScratchSpr(void) { } } -static void InitScratchSpr(void) { +static void InitScratchSpr(void) +{ Vec sp18; Vec spC; omObjData *temp_r31; @@ -1361,7 +1257,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 +1268,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 +1335,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 +1358,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 +1380,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 +1397,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 +1422,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 +1439,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 +1459,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 +1484,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 +1554,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 +1571,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 +1587,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 +1617,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 +1640,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 +1652,8 @@ static void ExecCoinPrize(void) { } } -static void ExecItemPrize(void) { +static void ExecItemPrize(void) +{ Vec sp20; Vec sp14; float temp_f29; @@ -1748,10 +1665,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 +1693,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 +1720,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 +1730,8 @@ static void KillCoin(void) { } } -static void ExecPrize(void) { +static void ExecPrize(void) +{ Vec sp14; Vec sp8; s16 var_r29; @@ -1865,7 +1782,8 @@ static void ExecPrize(void) { if (var_r24 < 3) { var_r29 = 7; var_r26 = 80; - } else { + } + else { var_r29 = 8; } break; @@ -1890,11 +1808,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 +1831,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 +1851,8 @@ static void ExecPrize(void) { case 2: if (var_r24 < 3) { ExecItemPrize(); - } else { + } + else { var_r31 = 3; } break; @@ -1948,7 +1869,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 +1885,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 +1898,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 +1909,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 +1925,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/pause.c b/src/game/board/pause.c index 3ca8058a..39152e13 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,7 @@ #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" + typedef struct { struct { @@ -39,7 +40,6 @@ typedef struct { u32 unk0C; } ConfigWork; - static void PauseExit(void); static void PauseProcess(void); static void CreatePauseScreen(void); @@ -91,56 +91,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 +120,8 @@ void BoardPauseStart(void) { HuPrcDestructorSet2(mainProcess, PauseExit); } -static void PauseExit(void) { +static void PauseExit(void) +{ if (pauseQuitF == 0) { BoardRollWinDispSet(1); BoardRollDispSet(1); @@ -160,7 +130,8 @@ static void PauseExit(void) { BoardLast5GfxShowSet(1); HuAudFXPauseAll(0); HuAudSeqPauseAll(0); - } else { + } + else { BoardConfettiKill(); BoardAudSeqFadeOutAll(); HuAudAllStop(); @@ -173,7 +144,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 +154,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 +165,8 @@ static void PauseExit(void) { mainProcess = NULL; } -static void PauseProcess(void) { +static void PauseProcess(void) +{ s32 temp_r31; pauseQuitF = 0; @@ -222,14 +196,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 +270,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 +312,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 +415,8 @@ void CreatePauseScreen(void) { SetBoxVisible(0); } -static void DeletePauseScreen(void) { +static void DeletePauseScreen(void) +{ ConfigWork *temp_r30; Mtx sp8; s32 i; @@ -461,7 +441,7 @@ static void DeletePauseScreen(void) { HuSprGrpKill(pauseCursorPos); pauseCursorPos = -1; } - PSMTXIdentity(sp8); + Identity(sp8); BoardModelLayerSet(hostMdl, hostOldLayer); BoardModelVisibilitySet(hostMdl, 1); BoardModelMtxSet(hostMdl, &sp8); @@ -471,7 +451,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 +460,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 +560,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 +573,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 +587,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 +600,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 +629,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 +666,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 +685,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 +715,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 +739,8 @@ static void PauseQuitProcess(void) { HuPrcEnd(); } -static void DeletePauseQuit(void) { +static void DeletePauseQuit(void) +{ if (quitWin != -1) { HuWinExCleanup(quitWin); quitWin = -1; @@ -757,7 +749,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 +770,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 +812,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 +830,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 +845,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 +859,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 +880,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 +894,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 +905,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 +922,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 +944,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 +953,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 +977,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 +1016,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 +1045,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 +1077,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 +1111,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 +1123,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 +1147,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 +1184,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 +1218,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 +1246,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 +1283,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 +1296,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 +1314,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 +1339,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 +1355,8 @@ static void DeletePauseControlWin(void) { } } -static s32 WaitPauseInput(void) { +static s32 WaitPauseInput(void) +{ s32 var_r28; s32 var_r31; u32 temp_r30; @@ -1327,7 +1364,8 @@ static s32 WaitPauseInput(void) { mainScreenF = 1; if (GWBoardGet() == 7 || GWBoardGet() == 8) { var_r28 = 1; - } else { + } + else { var_r28 = 0; } HuWinDispOn(controlWin); @@ -1344,13 +1382,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 +1408,8 @@ static s32 WaitPauseInput(void) { return var_r31; } -static void ShowPauseConfig(void) { +static void ShowPauseConfig(void) +{ float var_f31; float var_f30; @@ -1383,7 +1424,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 +1433,8 @@ static void ShowPauseConfig(void) { } } -static void CreatePadConfigSprite(void) { +static void CreatePadConfigSprite(void) +{ float temp_f31; float temp_f30; s32 var_r29; @@ -1415,7 +1458,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 +1471,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 +1482,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 +1491,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 +1507,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 +1547,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 +1559,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 +1568,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); + RotRad(spB0, 'x', MTXDegToRad(sp14.x)); + RotRad(sp80, 'y', MTXDegToRad(sp14.y)); + RotRad(sp50, 'x', MTXDegToRad(arg0)); + RotRad(sp20, 'y', MTXDegToRad(arg1)); + Concat(sp80, spB0, sp80); + Concat(sp50, sp20, sp20); + Concat(sp80, sp20, arg2); } diff --git a/src/game/board/shop.c b/src/game/board/shop.c index 47b332c3..1a70c74d 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,6 +12,15 @@ #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" @@ -103,39 +104,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 +125,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 +157,8 @@ void BoardShopInit(void) { BoardModelVisibilitySet(hostMdl, 0); } -void BoardShopKill(void) { +void BoardShopKill(void) +{ s32 i; s32 j; @@ -190,7 +172,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 +187,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 +213,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 +300,8 @@ static void ExecShop(void) { if (var_r29 > BoardPlayerCoinsGet(shopPlayer)) { BoardWinChoiceDisable(i); choiceEnableTbl[i] = 0; - } else { + } + else { choiceEnableTbl[i] = 1; } } @@ -332,7 +318,8 @@ static void ExecShop(void) { HuPrcSleep(0xF); if (itemCurChoice == -1 || itemCurChoice == 5 || itemCurChoice == 0x7F) { PauseShopWin(); - } else { + } + else { PauseShopWin(); while (!BoardStatusStopCheck(shopPlayer)) { HuPrcVSleep(); @@ -346,7 +333,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 +379,8 @@ static void ExecShop(void) { HuPrcEnd(); } -static void DestroyShop(void) { +static void DestroyShop(void) +{ s16 temp_r30; s32 i; @@ -413,7 +402,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 +433,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 +449,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 +465,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 +480,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 +510,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 +537,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); + RotRad(sp48, 'y', MTXDegToRad(arg0->rot.y)); + RotRad(sp18, 'x', MTXDegToRad(spC.x + 10.0f)); + Concat(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 +548,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 +576,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 +602,7 @@ void StartItemGive(void) { BoardModelMotionStart(itemMdl, 0, 0); BoardModelMotionSpeedSet(itemMdl, 0.0f); BoardModelPosGet(itemMdl, &sp14); - PSMTXIdentity(sp20); + Identity(sp20); BoardModelMtxSet(itemMdl, &sp20); OSs16tof32(&angleVal, &temp_r30->scale.z); temp_r30->scale.z = -temp_r30->scale.z / 40.0f; @@ -621,7 +618,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 +651,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 +664,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 +693,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 +708,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 +736,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 +749,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 +781,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 +826,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 +835,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 +847,8 @@ static void GetDefaultShopItems(s32 arg0) { } } -static void SortShopItems(void) { +static void SortShopItems(void) +{ s32 sp8[5]; s32 var_r29; s32 i; @@ -880,7 +871,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 +902,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 +917,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 +948,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 +963,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; s16 i; - #if VERSION_PAL - for(i=0; i<6; i++) { +#if VERSION_PAL + 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 +999,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 +1032,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 +1048,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 +1057,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 +1080,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 +1109,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 +1125,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 +1166,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/star.c b/src/game/board/star.c index 3f2a0ba5..6f3c94e5 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,6 +12,16 @@ #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 "ext_math.h" @@ -74,77 +75,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 +106,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 +127,8 @@ void BoardStarExec(s32 arg0, s32 arg1) { } } -static void ExecStar(void) { +static void ExecStar(void) +{ Vec sp24; Vec sp18; Vec spC; @@ -215,22 +170,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 +209,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 +244,8 @@ static void ExecStar(void) { if (GWPlayer[temp_r31].com) { if (BoardPlayerCoinsGet(temp_r31) >= 20) { BoardComKeySetUp(); - } else { + } + else { BoardComKeySetDown(); } } @@ -325,7 +284,7 @@ static void ExecStar(void) { break; } } -block_A: + block_A: temp_r29 = starMesTbl1[temp_r27] + 3; BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar()); BoardWinWait(); @@ -381,7 +340,8 @@ block_B: HuPrcEnd(); } -static void DestroyStar(void) { +static void DestroyStar(void) +{ s32 i; _ClearFlag(0x10017); @@ -394,7 +354,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 +368,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 +393,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 +409,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 +429,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 +447,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 +457,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 +472,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 +487,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 +498,8 @@ static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1) { } } -static void StopGiveStar(void) { +static void StopGiveStar(void) +{ GiveStarWork *temp_r31; if (giveStarObj) { @@ -538,7 +508,8 @@ static void StopGiveStar(void) { } } -static void InitGiveStarEffect(void) { +static void InitGiveStarEffect(void) +{ s16 temp_r3; void *var_r30; @@ -553,7 +524,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 +533,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 +549,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 +559,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 +607,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 +618,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 +647,8 @@ void BoardStarShowNext(s32 arg0) { while (WipeStatGet() != 0) { HuPrcVSleep(); } - } else { + } + else { HuPrcSleep(18); } BoardStatusItemSet(0); @@ -703,14 +682,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 +699,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); + RotRad(sp5C, 'y', MTXDegToRad(10.0f)); + RotRad(sp8C, 'x', MTXDegToRad(sp2C.x)); + Concat(sp8C, sp5C, spBC); BoardModelMtxSet(BoardStarHostMdlGet(), &spBC); BoardModelRotSet(BoardStarHostMdlGet(), 0.0f, 0.0f, 0.0f); BoardModelScaleSet(BoardStarHostMdlGet(), 0.09f, 0.09f, 0.09f); @@ -735,7 +716,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 +731,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 +748,7 @@ void BoardStarShowNext(s32 arg0) { HuPrcVSleep(); } BoardViewWait(); - PSMTXIdentity(spBC); + Identity(spBC); BoardModelMtxSet(BoardStarHostMdlGet(), &spBC); HideNextHost(1); while (showNextObj) { @@ -786,7 +769,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 +799,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/ui.c b/src/game/board/ui.c index ff2a9066..c9aee2ce 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,7 @@ #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 +165,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 +232,8 @@ void BoardStatusShowSetAll(s32 arg0) { } } -void BoardStatusItemSet(s32 arg0) { +void BoardStatusItemSet(s32 arg0) +{ UnkUiStatusStruct *temp_r31; s32 i; s32 j; @@ -332,11 +253,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 +271,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 +283,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 +297,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 +309,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 +330,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 +347,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 +380,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 +405,8 @@ void BoardStatusHammerKill(s32 arg0) { } } -void BoardStatusKill(void) { +void BoardStatusKill(void) +{ UnkUiStatusStruct *temp_r31; s32 i; @@ -486,7 +422,8 @@ void BoardStatusKill(void) { } } -void BoardStatusCreate(void) { +void BoardStatusCreate(void) +{ s32 i; memset(uiStatus, 0, 0x70); @@ -512,28 +449,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 +479,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 +515,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 +532,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 +554,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 +573,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 +584,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 +594,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 +606,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 +617,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 +643,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 +684,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 +700,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 +721,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 +735,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 +751,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 +760,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 +773,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 +791,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 +802,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 +854,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 +883,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 +892,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 +908,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 +922,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 +937,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 +948,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 +960,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 +975,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 +990,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 +1015,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 +1027,8 @@ static void ItemUseProc(void) { itemTeam = GWPlayerTeamGet(itemPlayer); if (GWTeamGet()) { itemTeamF = 1; - } else { + } + else { itemTeamF = 0; } for (i = 0; i < 4; i++) { @@ -1135,7 +1095,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 +1132,8 @@ static void FinishItemUse(s16 arg0, s32 arg1) { } } -static void DestroyItemUse(void) { +static void DestroyItemUse(void) +{ s32 i; CharModelLayerSetAll(1); @@ -1183,7 +1145,8 @@ static void DestroyItemUse(void) { itemUseProc = NULL; } -void BoardMakeRandomItem(void) { +void BoardMakeRandomItem(void) +{ s32 chosenItemIndex; s32 i; @@ -1196,30 +1159,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 +1200,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 +1221,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 +1237,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 +1246,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 +1263,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 +1299,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 +1315,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 +1342,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 +1362,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 +1386,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 +1407,8 @@ static void MakeItemPickSpace(UnkUiWork03 *arg0) { arg0->unk03 = 90; } } - } else { + } + else { if (arg0->unk03 > 0) { arg0->unk03 -= 6; if (arg0->unk03 < 0) { @@ -1451,7 +1429,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 +1441,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 +1486,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 +1495,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 +1508,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 +1541,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 +1579,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 +1588,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 +1610,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 +1619,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 +1642,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 +1692,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 +1710,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 +1733,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 +1751,8 @@ static void UpdateItemPickup(omObjData *arg0) { } } -static BOOL CheckItemWindow(void) { +static BOOL CheckItemWindow(void) +{ UnkUiWork01 *temp_r31; if (pickerObj == 0) { @@ -1762,12 +1761,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 +1777,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 +1802,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 +1815,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 +1854,8 @@ static void CreateItemWindow(s32 arg0, s32 arg1) { } } -static BOOL CheckItemWindowSlide(void) { +static BOOL CheckItemWindowSlide(void) +{ UnkUiWork04 *temp_r31; if (itemWindowObj == 0) { @@ -1861,7 +1865,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 +1875,8 @@ static void KillItemWindow(void) { } } -static void SetItemWindowCurr(s32 arg0) { +static void SetItemWindowCurr(s32 arg0) +{ UnkUiWork04 *temp_r31; UnkUiWindowStruct *temp_r30; @@ -1886,7 +1892,8 @@ static void SetItemWindowCurr(s32 arg0) { } } -static void UpdateItemWindow(omObjData *arg0) { +static void UpdateItemWindow(omObjData *arg0) +{ Vec sp20; Vec sp14; Vec sp8; @@ -1914,14 +1921,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 +1946,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); + RotRad(sp2C, 'y', MTXDegToRad(arg0->trans.x)); + RotRad(sp5C, 'x', MTXDegToRad(sp8.x + 10.0f)); + Concat(sp5C, sp2C, sp2C); BoardModelMtxSet(temp_r31->unk06[i], &sp2C); BoardModelRotSet(temp_r31->unk06[i], 0.0f, 0.0f, 0.0f); } @@ -1949,14 +1958,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 +1975,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 +1996,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..423109d8 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,7 @@ #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 +55,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 +102,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 +126,15 @@ static inline void BoardViewInlineFunc00(Vec *arg0, Vec *arg1, u16 arg2) { } } -void BoardViewFocusSet(Vec *arg0, u16 arg1) { +void BoardViewFocusSet(Vec *arg0, u16 arg1) +{ u16 var_r31; if (BoardPauseDisableGet() == 0) { BoardPauseDisableSet(1); pauseDisableF = 1; - } else { + } + else { pauseDisableF = 0; } focusDestroyF = 1; @@ -164,13 +142,15 @@ void BoardViewFocusSet(Vec *arg0, u16 arg1) { HuPrcSleep(2); } -void BoardViewMoveStart(Vec *arg0, Vec *arg1, u16 arg2) { +void BoardViewMoveStart(Vec *arg0, Vec *arg1, u16 arg2) +{ u16 var_r31; if (BoardPauseDisableGet() == 0) { BoardPauseDisableSet(1); pauseDisableF = 1; - } else { + } + else { pauseDisableF = 0; } viewProc = HuPrcChildCreate(ExecStarView, 0x200A, 0x3800, 0, boardMainProc); @@ -180,26 +160,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 +199,8 @@ void BoardViewMapExec(s32 arg0) { } } -static void ExecMapView(void) { +static void ExecMapView(void) +{ Vec spC; float var_f29; float temp_f28; @@ -240,7 +226,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 +261,8 @@ static void ExecMapView(void) { HuPrcEnd(); } -static void ExecStarView(void) { +static void ExecStarView(void) +{ Vec sp8; float temp_f30; @@ -307,7 +295,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 +327,8 @@ static void ExecOverheadView(void) { HuPrcEnd(); } -static void DestroyView(void) { +static void DestroyView(void) +{ if (focusMdl != -1) { BoardModelKill(focusMdl); focusMdl = -1; @@ -355,7 +345,8 @@ static void DestroyView(void) { viewProc = NULL; } -static void SetTargetView(void) { +static void SetTargetView(void) +{ Vec sp14; Vec sp8; @@ -370,7 +361,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 +378,8 @@ static void SetTargetView(void) { } } -static void DestroyFocus(void) { +static void DestroyFocus(void) +{ if (focusMdl != -1) { BoardModelKill(focusMdl); focusMdl = -1; @@ -396,7 +389,8 @@ static void DestroyFocus(void) { BoardCameraMoveSet(1); } -static void CreateButtonWin(void) { +static void CreateButtonWin(void) +{ float sp8[2]; float posX; float posY; @@ -404,39 +398,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 +440,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 +461,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 +495,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 +537,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 +548,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 +564,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 +573,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 +593,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); + RotRad(sp5C, 'x', MTXDegToRad(sp8.x)); + RotRad(sp2C, 'y', MTXDegToRad(sp8.y)); + Concat(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/chrman.c b/src/game/chrman.c index e98f50e1..0bfd8d99 100755 --- a/src/game/chrman.c +++ b/src/game/chrman.c @@ -1421,7 +1421,7 @@ 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 < 32; var_r28++) { if (itemHookProcess[var_r28] == temp_r25) { diff --git a/src/game/hsfanim.c b/src/game/hsfanim.c index 1db1cd21..fe07cfd4 100755 --- a/src/game/hsfanim.c +++ b/src/game/hsfanim.c @@ -316,7 +316,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) { @@ -349,7 +349,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); } } @@ -401,7 +401,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; } @@ -687,16 +687,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) { @@ -722,9 +722,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++); @@ -800,7 +800,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); diff --git a/src/game/hsfdraw.c b/src/game/hsfdraw.c index fce142dd..a31149c0 100755 --- a/src/game/hsfdraw.c +++ b/src/game/hsfdraw.c @@ -123,7 +123,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]; @@ -139,7 +139,7 @@ void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2) { for (i = 0; i < 8; i++) { BmpPtrBak[i] = (HsfAttribute*) -1; } - PSMTXCopy(arg1, MTXBuf[0]); + MTXCopy(arg1, MTXBuf[0]); scaleBuf[0] = *arg2; MTXIdx = 1; CancelTRXF = 0; @@ -220,12 +220,12 @@ 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]); + MTXConcat(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); + 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,29 +234,29 @@ 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); + MTXCopy(MTXBuf[MTXIdx], temp_r29->matrix); } MTXIdx++; var_r18 = 1; } 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); + 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)) { @@ -268,11 +268,11 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { } 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; @@ -377,8 +377,8 @@ s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2) { 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]; @@ -795,7 +795,7 @@ 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++; @@ -935,12 +935,12 @@ 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); + 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 { @@ -953,13 +953,13 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { 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); + 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); + 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); @@ -1056,7 +1056,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, GX_TEXMTX7, GX_MTX2x4); var_r31++; @@ -1131,7 +1131,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { 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); + 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); @@ -1139,7 +1139,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { temp_r23 = (u16) var_r30; var_r30++; } else if (temp_r28->unk00 & 1) { - PSMTXScale(sp54, temp_r28->unk2C, temp_r28->unk30, 1.0f); + 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]); @@ -1152,12 +1152,12 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { } } 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); + 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 { @@ -1298,11 +1298,11 @@ 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++; @@ -1320,7 +1320,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) { @@ -1551,11 +1551,11 @@ 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); } @@ -1854,10 +1854,10 @@ static void objNull(ModelData *arg0, HsfObject *arg1) { 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; @@ -1893,10 +1893,10 @@ static void objRoot(ModelData *arg0, HsfObject *arg1) { 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; @@ -1932,10 +1932,10 @@ static void objJoint(ModelData *arg0, HsfObject *arg1) { 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; @@ -1970,10 +1970,10 @@ static void objMap(ModelData *arg0, HsfObject *arg1) { } 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; @@ -2004,10 +2004,10 @@ static void objReplica(ModelData *arg0, HsfObject *arg1) { 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; @@ -2112,13 +2112,13 @@ void Hu3DDrawPost(void) { 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 { @@ -2126,13 +2126,13 @@ void Hu3DDrawPost(void) { } 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 +2142,32 @@ 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); + 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); + 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; @@ -2250,14 +2250,14 @@ 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 { @@ -2265,13 +2265,13 @@ static void ObjDraw(HsfDrawObject *arg0) { } 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 +2281,32 @@ 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); + 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); + 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; @@ -2857,16 +2857,16 @@ 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); } } @@ -2875,17 +2875,17 @@ void mtxRot(Mtx arg0, float arg1, float arg2, float arg3) { Mtx sp8; if (arg1 != 0.0f) { - PSMTXRotRad(arg0, 'X', MTXDegToRad(arg1)); + MTXRotRad(arg0, 'X', MTXDegToRad(arg1)); } else { - PSMTXIdentity(arg0); + 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); } } @@ -2980,8 +2980,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; @@ -2997,10 +2997,10 @@ void Hu3DModelObjMtxGet(s16 arg0, char *arg1, Mtx arg2) { 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); } @@ -3042,10 +3042,10 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) { 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 { @@ -3068,11 +3068,11 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) { } 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 +3082,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 +3101,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; } @@ -3143,10 +3143,10 @@ void PGObjReplica(ModelData *arg0, HsfObject *arg1) { 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); @@ -3208,7 +3208,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..467def93 100644 --- a/src/game/hsfex.c +++ b/src/game/hsfex.c @@ -441,8 +441,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 +460,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/hsfman.c b/src/game/hsfman.c index b455a0cf..0b3eace2 100644 --- a/src/game/hsfman.c +++ b/src/game/hsfman.c @@ -181,14 +181,14 @@ void Hu3DExec(void) { 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) { @@ -250,8 +250,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++; @@ -396,7 +396,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))) { @@ -471,7 +471,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; } @@ -519,7 +519,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; } @@ -1828,8 +1828,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); @@ -1937,7 +1937,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(); @@ -1984,11 +1984,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); } } @@ -2018,7 +2018,7 @@ 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); diff --git a/src/game/hsfmotion.c b/src/game/hsfmotion.c index e21ad90f..010b5fb1 100644 --- a/src/game/hsfmotion.c +++ b/src/game/hsfmotion.c @@ -843,7 +843,11 @@ void Hu3DSubMotionExec(s16 arg0) { } } +#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) { @@ -1234,7 +1238,11 @@ float GetLinear(s32 arg0, float arg1[][2], float arg2) { return arg1[arg0 - 1][1]; } +#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; diff --git a/src/game/mapspace.c b/src/game/mapspace.c index f04e7c16..ac8cba65 100755 --- a/src/game/mapspace.c +++ b/src/game/mapspace.c @@ -94,8 +94,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 +142,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 +151,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 +205,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 +224,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 +711,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 +724,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 +742,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 +893,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/thpmain.c b/src/game/thpmain.c index d31d4639..2a2e0291 100755 --- a/src/game/thpmain.c +++ b/src/game/thpmain.c @@ -241,15 +241,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); From c272403fe0cfa9df1e686b353af814992e18a4cf Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Fri, 4 Apr 2025 17:42:15 +0200 Subject: [PATCH 24/47] Move M_PI to ext_math.h --- include/ext_math.h | 4 +++- libc/math.h | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/ext_math.h b/include/ext_math.h index e979909d..6ac8e0e6 100644 --- a/include/ext_math.h +++ b/include/ext_math.h @@ -4,6 +4,8 @@ #include "math.h" #include "dolphin/mtx.h" +#define M_PI 3.141592653589793 + typedef struct vec2f { float x; float y; @@ -33,7 +35,7 @@ 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); #endif #endif diff --git a/libc/math.h b/libc/math.h index 5ac49892..5722be26 100644 --- a/libc/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 From cb9b14841b57b97fc3f79a43a70631425b8fbc6d Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Fri, 4 Apr 2025 17:50:48 +0200 Subject: [PATCH 25/47] Remove FaceDraw from the header and more stubs --- include/dolphin/mtx.h | 14 +++++++ include/game/hsfdraw.h | 1 - src/port/stubs.c | 95 ++++++++++++++++++++++++++++++++++++++---- 3 files changed, 100 insertions(+), 10 deletions(-) diff --git a/include/dolphin/mtx.h b/include/dolphin/mtx.h index 5382dbc5..2dd4c4d3 100644 --- a/include/dolphin/mtx.h +++ b/include/dolphin/mtx.h @@ -306,6 +306,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/game/hsfdraw.h b/include/game/hsfdraw.h index d3b46df6..a99d0bb1 100755 --- a/include/game/hsfdraw.h +++ b/include/game/hsfdraw.h @@ -56,7 +56,6 @@ 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); HsfConstData *ObjConstantMake(HsfObject *arg0, u32 arg1); diff --git a/src/port/stubs.c b/src/port/stubs.c index eb8dc7a0..a76721a5 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -1,3 +1,4 @@ +#include "dolphin/gx/GXVert.h" #include #include #include @@ -205,6 +206,11 @@ 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"); @@ -406,11 +412,6 @@ void PPCHalt() puts("PPCHalt is a stub"); } -void PSMTXIdentity(Mtx m) -{ - puts("PSMTXIdentity is a stub"); -} - void SoundChoID(int a, int b) { puts("SoundChoID is a stub"); @@ -525,12 +526,88 @@ VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback callback) return callback; } -void msmSysRegularProc(void) +void GXSetGPMetric(GXPerf0 perf0, GXPerf1 perf1) { - puts("msmSysRegularProc is a stub"); + 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 GXColor3u8(u8 r, u8 g, u8 b) +{ + // TODO + GXColor4u8(r, g, b, 255); } // Hudson void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { } -void HuAudInit() { } -void HuARInit() { } + +void HuAudInit(void) { } + +void HuARInit(void) { } + +void msmSysRegularProc(void) +{ + puts("msmSysRegularProc is a stub"); +} From 4713782189ea11652754686c2bd352e3969d6ea8 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Fri, 4 Apr 2025 19:32:40 +0200 Subject: [PATCH 26/47] Uncomment stuff from main and add c files to cmake --- CMakeLists.txt | 18 +++++++++++++----- src/game/main.c | 30 +++++++++++++++--------------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cb232671..48a3ecab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,11 +30,12 @@ add_subdirectory(extern/aurora EXCLUDE_FROM_ALL) add_subdirectory(extern/musyx EXCLUDE_FROM_ALL) set(DOLPHIN_FILES - src/dolphin/os/OSAlloc.c - src/dolphin/os/OSArena.c - src/dolphin/mtx/mtx.c - src/dolphin/mtx/mtx44.c - src/dolphin/mtx/vec.c + src/dolphin/mtx/mtx.c + src/dolphin/mtx/mtx44.c + src/dolphin/mtx/vec.c + src/dolphin/os/OSAlloc.c + src/dolphin/os/OSArena.c + src/dolphin/os/OSStopwatch.c ) set(GAME_FILES @@ -43,12 +44,19 @@ set(GAME_FILES src/game/flag.c src/game/font.c src/game/frand.c + src/game/hsfanim.c + src/game/hsfdraw.c + src/game/hsfman.c + src/game/hsfmotion.c src/game/gamework.c src/game/main.c src/game/malloc.c src/game/memory.c src/game/init.c + src/game/sprman.c + src/game/sprput.c src/game/pad.c + src/game/perf.c src/game/printfunc.c src/game/process.c ) diff --git a/src/game/main.c b/src/game/main.c index 195995d7..039fcd55 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -116,13 +116,13 @@ void main(void) // HuSprInit(); // Hu3DInit(); // HuDataInit(); - // HuPerfInit(); + HuPerfInit(); // HuPerfCreate("USR0", 0xFF, 0xFF, 0xFF, 0xFF); // HuPerfCreate("USR1", 0, 0xFF, 0xFF, 0xFF); // WipeInit(RenderMode); for (i = 0; i < 4; i++) { - // GWPlayerCfg[i].character = -1; + GWPlayerCfg[i].character = -1; } // omMasterInit(0, _ovltbl, OVL_COUNT, OVL_BOOT); @@ -151,24 +151,24 @@ void main(void) if (HuSoftResetButtonCheck() != 0 || HuDvdErrWait != 0) { continue; }*/ - // HuPerfZero(); + HuPerfZero(); - // HuPerfBegin(2); + HuPerfBegin(2); #ifdef TARGET_PC aurora_begin_frame(); #endif - /* HuSysBeforeRender(); - GXSetGPMetric(GX_PERF0_CLIP_VTX, GX_PERF1_VERTICES); - GXClearGPMetric(); - GXSetVCacheMetric(GX_VC_ALL); - GXClearVCacheMetric(); - GXClearPixMetric(); - GXClearMemMetric(); + // HuSysBeforeRender(); + GXSetGPMetric(GX_PERF0_CLIP_VTX, GX_PERF1_VERTICES); + GXClearGPMetric(); + GXSetVCacheMetric(GX_VC_ALL); + GXClearVCacheMetric(); + GXClearPixMetric(); + GXClearMemMetric(); - HuPerfBegin(0); - Hu3DPreProc(); - HuPadRead(); - pfClsScr();*/ + HuPerfBegin(0); + Hu3DPreProc(); + HuPadRead(); + pfClsScr(); HuPrcCall(1); /* MGSeqMain(); From b942deb12bccaf743edbe146172e9183590b0a29 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Fri, 4 Apr 2025 20:40:22 +0200 Subject: [PATCH 27/47] More MTX functions and fix gxsetarrays --- src/REL/m405Dll/main.c | 2 +- src/dolphin/mtx/mtx.c | 54 ++++++++++++++++++++++++++++++++++++++++++ src/game/hsfanim.c | 4 ++-- src/game/hsfdraw.c | 36 ++++++++++++++-------------- 4 files changed, 75 insertions(+), 21 deletions(-) diff --git a/src/REL/m405Dll/main.c b/src/REL/m405Dll/main.c index 8eafe1d9..0b34e53d 100755 --- a/src/REL/m405Dll/main.c +++ b/src/REL/m405Dll/main.c @@ -1002,7 +1002,7 @@ 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, 900 * sizeof(Vec), 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); GXSetNumIndStages(0); diff --git a/src/dolphin/mtx/mtx.c b/src/dolphin/mtx/mtx.c index 558d4d03..0408ee6a 100644 --- a/src/dolphin/mtx/mtx.c +++ b/src/dolphin/mtx/mtx.c @@ -1298,3 +1298,57 @@ void C_MTXLightOrtho(Mtx m, f32 t, f32 b, f32 l, f32 r, float scaleS, float scal m[2][2] = 0.0f; m[2][3] = 1.0f; } + +#ifdef TARGET_PC +void C_MTXReorder(const Mtx src, ROMtx dest) +{ + u32 i, j; + for (i = 0; i < 3; j++) { + for (int j = 0; j < 4; j++) { + dest[j][i] = src[i][j]; + } + } +} + +void C_MTXMultVec(const Mtx m, const Vec *in, Vec *out) +{ + out->x = m[0][0] * in->x + m[0][1] * in->y + m[0][2] * in->z + m[0][3]; + out->y = m[1][0] * in->x + m[1][1] * in->y + m[1][2] * in->z + m[1][3]; + out->z = m[2][0] * in->x + m[2][1] * in->y + m[2][2] * in->z + m[2][3]; +} + +void C_MTXMultVecArray(const Mtx m, const Vec *srcBase, Vec *dstBase, u32 count) +{ + u32 i; + for (i = 0; i < count; i++) { + dstBase[i].x = m[0][0] * srcBase[i].x + m[0][1] * srcBase[i].y + m[0][2] * srcBase[i].z + m[0][3]; + dstBase[i].y = m[1][0] * srcBase[i].x + m[1][1] * srcBase[i].y + m[1][2] * srcBase[i].z + m[1][3]; + dstBase[i].z = m[2][0] * srcBase[i].x + m[2][1] * srcBase[i].y + m[2][2] * srcBase[i].z + m[2][3]; + } +} + +void C_MTXROMultVecArray(const ROMtx m, const Vec *srcBase, Vec *dstBase, u32 count) +{ + u32 i; + for (u32 i = 0; i < count; ++i) { + Vec* src = &srcBase[i]; + Vec* dst = &dstBase[i]; + + // 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 mtx, const Vec* in, Vec* out) { + float x = in->x; + float y = in->y; + float z = in->z; + + out->x = mtx[0][0] * x + mtx[0][1] * y + mtx[0][2] * z; + out->y = mtx[1][0] * x + mtx[1][1] * y + mtx[1][2] * z; + out->z = mtx[2][0] * x + mtx[2][1] * y + mtx[2][2] * z; +} + +#endif diff --git a/src/game/hsfanim.c b/src/game/hsfanim.c index fe07cfd4..6d13b267 100755 --- a/src/game/hsfanim.c +++ b/src/game/hsfanim.c @@ -825,10 +825,10 @@ 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, temp_r31->unk_30 * 4, 0xC); + 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, temp_r31->unk_30, 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, sizeof(baseST), 8); diff --git a/src/game/hsfdraw.c b/src/game/hsfdraw.c index a31149c0..5dd8c0ff 100755 --- a/src/game/hsfdraw.c +++ b/src/game/hsfdraw.c @@ -483,19 +483,19 @@ 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); + GXSETARRAY(GX_VA_NRM, temp_r28->data.normal->data, temp_r28->data.vertex->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.vertex->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.vertex->count * sizeof(GXColor), sizeof(GXColor)); } GXSetZCompLoc(1); } @@ -556,7 +556,7 @@ 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); @@ -564,19 +564,19 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { 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); + 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); } @@ -1644,19 +1644,19 @@ 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); + GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.vertex->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.vertex->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.vertex->count * sizeof(GXColor), sizeof(GXColor)); } GXSetZCompLoc(1); } @@ -1677,7 +1677,7 @@ 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); @@ -1685,19 +1685,19 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) { 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); + GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.vertex->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.vertex->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.vertex->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.vertex->count * sizeof(GXColor), sizeof(GXColor)); } GXSetZCompLoc(0); } From 6a27eb73567ca47630e2540ea8c1a5983f329686 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Sat, 5 Apr 2025 14:17:27 +0200 Subject: [PATCH 28/47] Add more files --- CMakeLists.txt | 7 ++++ src/dolphin/mtx/mtx.c | 2 +- src/game/main.c | 38 +++++++++---------- src/game/printfunc.c | 9 ----- src/game/wipe.c | 2 + src/port/dvd.c | 5 +++ src/port/stubs.c | 86 +++++++++++++++++++++++++++++++++++++++++-- 7 files changed, 117 insertions(+), 32 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 48a3ecab..6b0ff80c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,12 +40,17 @@ set(DOLPHIN_FILES set(GAME_FILES src/game/card.c + src/game/ClusterExec.c + src/game/data.c + src/game/EnvelopeExec.c src/game/fault.c src/game/flag.c src/game/font.c src/game/frand.c src/game/hsfanim.c src/game/hsfdraw.c + src/game/hsfex.c + src/game/hsfload.c src/game/hsfman.c src/game/hsfmotion.c src/game/gamework.c @@ -53,12 +58,14 @@ set(GAME_FILES src/game/malloc.c src/game/memory.c src/game/init.c + src/game/ShapeExec.c src/game/sprman.c src/game/sprput.c src/game/pad.c src/game/perf.c src/game/printfunc.c src/game/process.c + src/game/wipe.c ) set(PORT_FILES diff --git a/src/dolphin/mtx/mtx.c b/src/dolphin/mtx/mtx.c index 0408ee6a..0d661294 100644 --- a/src/dolphin/mtx/mtx.c +++ b/src/dolphin/mtx/mtx.c @@ -1345,7 +1345,7 @@ void C_MTXMultVecSR(const Mtx mtx, const Vec* in, Vec* out) { float x = in->x; float y = in->y; float z = in->z; - + out->x = mtx[0][0] * x + mtx[0][1] * y + mtx[0][2] * z; out->y = mtx[1][0] * x + mtx[1][1] * y + mtx[1][2] * z; out->z = mtx[2][0] * x + mtx[2][1] * y + mtx[2][2] * z; diff --git a/src/game/main.c b/src/game/main.c index 039fcd55..47dbb915 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -113,13 +113,13 @@ void main(void) GWInit(); pfInit(); GlobalCounter = 0; - // HuSprInit(); - // Hu3DInit(); - // HuDataInit(); + HuSprInit(); + Hu3DInit(); + HuDataInit(); HuPerfInit(); - // HuPerfCreate("USR0", 0xFF, 0xFF, 0xFF, 0xFF); - // HuPerfCreate("USR1", 0, 0xFF, 0xFF, 0xFF); - // WipeInit(RenderMode); + HuPerfCreate("USR0", 0xFF, 0xFF, 0xFF, 0xFF); + HuPerfCreate("USR1", 0, 0xFF, 0xFF, 0xFF); + WipeInit(RenderMode); for (i = 0; i < 4; i++) { GWPlayerCfg[i].character = -1; @@ -147,17 +147,17 @@ void main(void) break; } #endif - /*retrace = VIGetRetraceCount(); + retrace = VIGetRetraceCount(); if (HuSoftResetButtonCheck() != 0 || HuDvdErrWait != 0) { continue; - }*/ + } HuPerfZero(); HuPerfBegin(2); #ifdef TARGET_PC aurora_begin_frame(); #endif - // HuSysBeforeRender(); + HuSysBeforeRender(); GXSetGPMetric(GX_PERF0_CLIP_VTX, GX_PERF1_VERTICES); GXClearGPMetric(); GXSetVCacheMetric(GX_VC_ALL); @@ -171,29 +171,29 @@ void main(void) pfClsScr(); HuPrcCall(1); - /* MGSeqMain(); - HuPerfBegin(1); - Hu3DExec(); - HuDvdErrorWatch(); - WipeExecAlways(); - HuPerfEnd(0); + MGSeqMain(); + HuPerfBegin(1); + Hu3DExec(); + HuDvdErrorWatch(); + WipeExecAlways(); + HuPerfEnd(0); - pfDrawFonts(); - HuPerfEnd(1);*/ + pfDrawFonts(); + HuPerfEnd(1); #ifdef TARGET_PC imgui_main(&auroraInfo); aurora_end_frame(); #endif - /*msmMusFdoutEnd(); + msmMusFdoutEnd(); HuSysDoneRender(retrace); GXReadGPMetric(&met0, &met1); GXReadVCacheMetric(&vcheck, &vmiss, &vstall); GXReadPixMetric(&top_pixels_in, &top_pixels_out, &bot_pixels_in, &bot_pixels_out, &clr_pixels_in, &total_copy_clks); 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++;*/ + GlobalCounter++; #ifdef TARGET_PC frame_limiter(); diff --git a/src/game/printfunc.c b/src/game/printfunc.c index daeb0513..7211f4e5 100644 --- a/src/game/printfunc.c +++ b/src/game/printfunc.c @@ -176,13 +176,10 @@ void pfDrawFonts(void) GXSetNumTevStages(1); GXSetNumTexGens(0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); -#ifdef __MWERKS__ - // TODO PC GXPosition2s16(x, y); GXPosition2s16(x + w, y); GXPosition2s16(x + w, y + h); GXPosition2s16(x, y + h); -#endif GXEnd(); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); @@ -236,8 +233,6 @@ void pfDrawFonts(void) default: texcoord_x = (c % 16) / 16.0f; texcoord_y = ((c / 16) / 16.0f) + (1 / 128.0f); -#ifdef __MWERKS__ - // TODO PC if (shadow_color < 0) { GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3s16(x, y, 0); @@ -282,7 +277,6 @@ void pfDrawFonts(void) GXTexCoord2f32(texcoord_x, texcoord_y + (1 / 16.0f)); GXEnd(); } -#endif x += char_w; if (x > HU_FB_WIDTH) { x = 0; @@ -330,8 +324,6 @@ static void WireDraw(void) MTXIdentity(modelview); GXLoadPosMtxImm(modelview, GX_PNMTX0); GXBegin(GX_LINES, 0, 8); -#ifdef __MWERKS__ - // TODO PC GXPosition2f32(SAFETY_W, SAFETY_H); GXColor3u8(255, 0, 0); GXPosition2f32(SAFETY_W, HU_DISP_HEIGHT - SAFETY_H); @@ -348,6 +340,5 @@ static void WireDraw(void) GXColor3u8(255, 0, 0); GXPosition2f32(SAFETY_W, HU_DISP_HEIGHT - SAFETY_H); GXColor3u8(255, 0, 0); -#endif GXEnd(); } diff --git a/src/game/wipe.c b/src/game/wipe.c index aa7c1d9a..2445cc5c 100644 --- a/src/game/wipe.c +++ b/src/game/wipe.c @@ -111,9 +111,11 @@ void WipeExecAlways(void) void WipeCreate(s16 mode, s16 type, s16 duration) { WipeState *wipe; +#ifdef __MWERKS__ // TODO PC if(_CheckFlag(FLAG_ID_MAKE(1, 11)) && boardTutorialF) { return; } +#endif wipe = &wipeData; if(wipe->stat) { return; diff --git a/src/port/dvd.c b/src/port/dvd.c index 9cef74d4..f1b67228 100644 --- a/src/port/dvd.c +++ b/src/port/dvd.c @@ -160,3 +160,8 @@ s32 DVDGetDriveStatus(void) // puts("DVDGetDriveStatus is a stub"); return 0; } + +void HuDvdErrorWatch(void) +{ + +} diff --git a/src/port/stubs.c b/src/port/stubs.c index a76721a5..fb01acc1 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -531,7 +531,7 @@ void GXSetGPMetric(GXPerf0 perf0, GXPerf1 perf1) puts("GXSetGPMetric is a stub"); } -void GXReadGPMetric(u32* cnt0, u32* cnt1) +void GXReadGPMetric(u32 *cnt0, u32 *cnt1) { puts("GXReadGPMetric is a stub"); } @@ -557,7 +557,7 @@ 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) +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"); } @@ -572,7 +572,7 @@ void GXSetVCacheMetric(GXVCachePerf attr) puts("GXSetVCacheMetric is a stub"); } -void GXReadVCacheMetric(u32* check, u32* miss, u32* stall) +void GXReadVCacheMetric(u32 *check, u32 *miss, u32 *stall) { puts("GXReadVCacheMetric is a stub"); } @@ -600,6 +600,71 @@ void GXColor3u8(u8 r, u8 g, u8 b) GXColor4u8(r, g, b, 255); } +void GXNormal1x16(u16 index) +{ + puts("GXNormal1x16 is a stub"); +} + +void GXColor1x16(u16 index) +{ + puts("GXColor1x16 is a stub"); +} + +void GXTexCoord1x16(u16 index) +{ + puts("GXTexCoord1x16 is a stub"); +} + +void GXUnknownu16(const u16 x) +{ + puts("GXUnknownu16 is a stub"); +} + +void GXNormal3s16(s16 x, s16 y, s16 z) +{ + puts("GXNormal3s16 is a stub"); +} + +void GXPosition2u16(const u16 x, const u16 y) +{ + puts("GXPosition2u16 is a stub"); +} + +void GXPosition2f32(const f32 x, const f32 y) +{ + puts("GXPosition2f32 is a stub"); +} + +void GXPosition2s16(const s16 x, const s16 y) +{ + puts("GXPosition2s16 is a stub"); +} + +void GXColor1x8(u8 index) { + puts("GXColor1x8 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) +{ + puts("GXSetTevIndTile is a stub"); +} + +void GXSetTexCoordScaleManually(GXTexCoordID coord, u8 enable, u16 ss, u16 ts) +{ + puts("GXSetTexCoordScaleManually is a stub"); +} + +void GXResetWriteGatherPipe(void) +{ + puts("GXResetWriteGatherPipe is a stub"); +} + // Hudson void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { } @@ -611,3 +676,18 @@ void msmSysRegularProc(void) { puts("msmSysRegularProc is a stub"); } + +void msmMusFdoutEnd(void) +{ + puts("msmMusFdoutEnd is a stub"); +} + +s32 HuSoftResetButtonCheck(void) +{ + puts("HuSoftResetButtonCheck is a stub"); +} + +void MGSeqMain(void) +{ + puts("MGSeqMain is a stub"); +} From 1acc0961d45b3b0144b9ea829324903fcc760911 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Sat, 5 Apr 2025 14:38:14 +0200 Subject: [PATCH 29/47] Some fixups --- config/GMPE01_00/rels/resultDll/symbols.txt | 2 +- src/REL/m406Dll/map.c | 8 +-- src/REL/m407dll/player.c | 2 +- src/REL/m409Dll/main.c | 4 +- src/REL/m417Dll/water.c | 4 +- src/REL/m423Dll/main.c | 4 +- src/REL/m425Dll/thwomp.c | 6 +- src/REL/m426Dll/main.c | 4 +- src/REL/m427Dll/map.c | 10 ++-- src/REL/m427Dll/player.c | 2 +- src/REL/m428Dll/player.c | 4 +- src/REL/m431Dll/main.c | 4 +- src/REL/m438Dll/fire.c | 66 ++++++++++----------- src/REL/m440Dll/main.c | 4 +- src/REL/m442Dll/main.c | 4 +- src/REL/m450Dll/main.c | 4 +- src/dolphin/os/OSAlloc.c | 2 +- src/game/board/item.c | 2 +- src/game/board/lottery.c | 8 +-- src/game/board/pause.c | 17 +++--- src/game/board/shop.c | 9 ++- src/game/board/star.c | 9 ++- src/game/board/ui.c | 7 +-- src/game/board/view.c | 7 +-- src/game/data.c | 4 +- src/game/main.c | 2 +- src/port/stubs.c | 11 +++- 27 files changed, 107 insertions(+), 103 deletions(-) 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/src/REL/m406Dll/map.c b/src/REL/m406Dll/map.c index fe4bb35e..d91ac7d3 100644 --- a/src/REL/m406Dll/map.c +++ b/src/REL/m406Dll/map.c @@ -2956,7 +2956,7 @@ void fn_1_BC18(ModelData *arg0, float (*arg1)[4]) if (HmfInverseMtxF3X3(arg1, sp128) == 0) { MTXIdentity(sp128); } - Reorder(sp128, sp8); + MTXReorder(sp128, sp8); if (var_r31->unk_4C) { var_r18 = var_r31->unk_4C; var_r18(arg0, var_r31, arg1); @@ -2964,7 +2964,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; - ROMultVecArray(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; @@ -3169,7 +3169,7 @@ void fn_1_C86C(ModelData *arg0, Mtx arg1) if (HmfInverseMtxF3X3(arg1, sp9C) == 0) { MTXIdentity(sp9C); } - Reorder(sp9C, spC); + MTXReorder(sp9C, spC); if (var_r31->unk_4C) { var_r23 = var_r31->unk_4C; var_r23(arg0, var_r31, arg1); @@ -3177,7 +3177,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; - ROMultVecArray(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; diff --git a/src/REL/m407dll/player.c b/src/REL/m407dll/player.c index 0557ca80..4e649770 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" diff --git a/src/REL/m409Dll/main.c b/src/REL/m409Dll/main.c index 2788d424..9913f787 100644 --- a/src/REL/m409Dll/main.c +++ b/src/REL/m409Dll/main.c @@ -1385,7 +1385,7 @@ void fn_1_602C(ModelData *arg0, f32 (*arg1)[4]) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetArray(GX_VA_TEX0, temp_r30->unk20, 8); fn_1_40A4(arg1, sp128); - Reorder(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 +1393,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; - ROMultVecArray(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) { diff --git a/src/REL/m417Dll/water.c b/src/REL/m417Dll/water.c index ad4fe401..3838293e 100644 --- a/src/REL/m417Dll/water.c +++ b/src/REL/m417Dll/water.c @@ -574,8 +574,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); - Reorder(spC8, sp38); - ROMultVecArray(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)); diff --git a/src/REL/m423Dll/main.c b/src/REL/m423Dll/main.c index e0299aa4..10927b93 100755 --- a/src/REL/m423Dll/main.c +++ b/src/REL/m423Dll/main.c @@ -5148,7 +5148,7 @@ void fn_1_11900(ModelData *arg0, Mtx arg1) if (HmfInverseMtxF3X3(arg1, sp128) == 0) { MTXIdentity(sp128); } - Reorder(sp128, sp8); + MTXReorder(sp128, sp8); if (temp_r31->unk4C) { var_r18 = temp_r31->unk4C; var_r18(arg0, temp_r31, arg1); @@ -5156,7 +5156,7 @@ void fn_1_11900(ModelData *arg0, Mtx arg1) var_r29 = temp_r31->unk3C; var_r30 = temp_r31->unk40; var_r28 = temp_r31->unk44; - ROMultVecArray(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; diff --git a/src/REL/m425Dll/thwomp.c b/src/REL/m425Dll/thwomp.c index c6c3f9b8..02278006 100644 --- a/src/REL/m425Dll/thwomp.c +++ b/src/REL/m425Dll/thwomp.c @@ -2131,7 +2131,7 @@ void fn_1_101C4(ModelData *var_r29, Mtx var_r28) if (HmfInverseMtxF3X3(var_r28, sp50) == 0) { MTXIdentity(sp50); } - Reorder(sp50, sp20); + MTXReorder(sp50, sp20); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); @@ -2694,7 +2694,7 @@ void fn_1_11EE0(ModelData *var_r24, Mtx var_r21) if (HmfInverseMtxF3X3(var_r21, sp128) == 0) { MTXIdentity(sp128); } - Reorder(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 +2702,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; - ROMultVecArray(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; diff --git a/src/REL/m426Dll/main.c b/src/REL/m426Dll/main.c index ee504757..88ce4890 100644 --- a/src/REL/m426Dll/main.c +++ b/src/REL/m426Dll/main.c @@ -3045,7 +3045,7 @@ void fn_1_80DC(ModelData *arg0, Mtx arg1) if (!HmfInverseMtxF3X3(arg1, sp128)) { MTXIdentity(sp128); } - Reorder(sp128, sp8); + MTXReorder(sp128, sp8); if (var_r31->unk_4C) { var_r18 = var_r31->unk_4C; var_r18(arg0, var_r31, arg1); @@ -3053,7 +3053,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; - ROMultVecArray(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; diff --git a/src/REL/m427Dll/map.c b/src/REL/m427Dll/map.c index 9341db4e..5920f4b2 100644 --- a/src/REL/m427Dll/map.c +++ b/src/REL/m427Dll/map.c @@ -3028,7 +3028,7 @@ void fn_1_DCD4(ModelData *model, Mtx matrix) sp128[0][3] = 0.0f; sp128[1][3] = 0.0f; sp128[2][3] = 0.0f; - Reorder(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 +3036,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; - ROMultVecArray(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; @@ -3058,9 +3058,9 @@ void fn_1_DCD4(ModelData *model, Mtx matrix) } else { fn_1_E420(&var_r30->unk_2C, &sp38, &var_r29->unk_48, 4); - RotRad(spC8, 0x5A, MTXDegToRad(var_r29->unk_44)); - Concat(sp128, spC8, sp98); - MultVecArray(sp98, &sp38, &sp8, 4); + MTXRotRad(spC8, 0x5A, MTXDegToRad(var_r29->unk_44)); + MTXConcat(sp128, spC8, sp98); + MTXMultVecArray(sp98, &sp38, &sp8, 4); PSVECAdd(&sp8, &var_r29->unk_54, var_r31++); PSVECAdd(&sp14, &var_r29->unk_54, var_r31++); PSVECAdd(&sp20, &var_r29->unk_54, var_r31++); diff --git a/src/REL/m427Dll/player.c b/src/REL/m427Dll/player.c index 5f361789..b87789dd 100644 --- a/src/REL/m427Dll/player.c +++ b/src/REL/m427Dll/player.c @@ -1645,7 +1645,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); - InvXpose(matrix, sp70); + MTXInvXpose(matrix, sp70); GXLoadNrmMtxImm(sp70, 0); GXSetNumTevStages(1); GXSetNumTexGens(1); diff --git a/src/REL/m428Dll/player.c b/src/REL/m428Dll/player.c index 27b4cc43..d9dcedb7 100644 --- a/src/REL/m428Dll/player.c +++ b/src/REL/m428Dll/player.c @@ -3109,7 +3109,7 @@ void fn_1_134C0(ModelData *var_r23, Mtx var_r22) if (HmfInverseMtxF3X3(var_r22, &sp128[0]) == 0) { MTXIdentity(sp128); } - Reorder(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 +3117,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; - ROMultVecArray(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; diff --git a/src/REL/m431Dll/main.c b/src/REL/m431Dll/main.c index 59ca57b5..6244ca54 100644 --- a/src/REL/m431Dll/main.c +++ b/src/REL/m431Dll/main.c @@ -2095,7 +2095,7 @@ void fn_1_72B4(ModelData *model, Mtx mtx) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetArray(GX_VA_TEX0, temp_r30->unk20, sizeof(HsfVector2f)); fn_1_79FC(mtx, sp128); - Reorder(sp128, spF8); + MTXReorder(sp128, spF8); if (!omPauseChk() && temp_r30->unkC) { temp_r23 = temp_r30->unkC; temp_r23(model, temp_r30, mtx); @@ -2103,7 +2103,7 @@ void fn_1_72B4(ModelData *model, Mtx mtx) temp_r29 = temp_r30->unk18; temp_r31 = temp_r30->unk1C; temp_r27 = temp_r30->unk20; - ROMultVecArray(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; diff --git a/src/REL/m438Dll/fire.c b/src/REL/m438Dll/fire.c index fd63cd89..739a356a 100644 --- a/src/REL/m438Dll/fire.c +++ b/src/REL/m438Dll/fire.c @@ -64,17 +64,17 @@ void fn_1_E790(M438UnkStruct2 *arg0) s32 var_r19; mtxRot(sp60, arg0->unk_18.x, arg0->unk_18.y, arg0->unk_18.z); - Scale(sp90, arg0->unk_24.x, arg0->unk_24.y, arg0->unk_24.z); - Concat(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); - Concat(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]]; - Copy(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: @@ -141,14 +141,14 @@ void fn_1_E790(M438UnkStruct2 *arg0) break; case 4: mtxRot(sp60, arg0->unk_18.x, arg0->unk_18.y, arg0->unk_18.z); - Scale(sp90, arg0->unk_24.x, arg0->unk_24.y, arg0->unk_24.z); - Concat(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); - Concat(Hu3DCameraMtx, sp90, sp30); - Inverse(Hu3DCameraMtx, sp60); - Concat(sp60, sp30, sp60); - Concat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp90); - Concat(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); @@ -184,42 +184,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) { - Concat(lbl_1_bss_DE4.unk_00, sp60, sp60); + MTXConcat(lbl_1_bss_DE4.unk_00, sp60, sp60); } else if (var_r31->unk_31 == 1) { - RotRad(sp90, 0x59, MTXDegToRad(CRot.y)); - Concat(sp90, sp60, sp60); + MTXRotRad(sp90, 0x59, MTXDegToRad(CRot.y)); + MTXConcat(sp90, sp60, sp60); } - Scale(sp90, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); - Trans(sp30, var_r31->unk_24.x, var_r31->unk_24.y, var_r31->unk_24.z); - Concat(sp90, sp30, sp90); - Concat(sp60, sp90, sp90); + 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); - Concat(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) { - Identity(sp90); + MTXIdentity(sp90); } - Concat(sp90, sp60, sp60); + MTXConcat(sp90, sp60, sp60); } else if (var_r31->unk_31 == 1) { - RotRad(sp90, 0x59, MTXDegToRad(CRot.y)); - Concat(sp90, sp60, sp60); + MTXRotRad(sp90, 0x59, MTXDegToRad(CRot.y)); + MTXConcat(sp90, sp60, sp60); } - Scale(sp90, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); - Trans(sp30, var_r31->unk_24.x, var_r31->unk_24.y, var_r31->unk_24.z); - Concat(sp90, sp30, sp90); - Concat(sp60, sp90, sp90); + 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); - Concat(spC0, sp90, spF0); + MTXConcat(spC0, sp90, spF0); break; } GXLoadPosMtxImm(spF0, 0); - Inverse(spF0, sp90); - Transpose(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); @@ -291,8 +291,8 @@ void fn_1_F538(ModelData *arg0, Mtx arg1) var_r31 = lbl_1_bss_DE4.unk_40; GXLoadPosMtxImm(arg1, 0); - Inverse(arg1, sp38); - Transpose(sp38, sp8); + MTXInverse(arg1, sp38); + MTXTranspose(sp38, sp8); GXLoadNrmMtxImm(sp8, 0); HmfInverseMtxF3X3(Hu3DCameraMtx, lbl_1_bss_DE4.unk_00); @@ -780,7 +780,7 @@ 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; - Identity(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; } diff --git a/src/REL/m440Dll/main.c b/src/REL/m440Dll/main.c index 1839e30f..b961d16b 100644 --- a/src/REL/m440Dll/main.c +++ b/src/REL/m440Dll/main.c @@ -2460,7 +2460,7 @@ void fn_1_9C04(ModelData *arg0, Mtx arg1) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetArray(GX_VA_TEX0, temp_r30->unk20, 8); fn_1_9344(arg1, sp128); - Reorder(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 +2468,7 @@ void fn_1_9C04(ModelData *arg0, Mtx arg1) var_r29 = temp_r30->unk18; var_r31 = temp_r30->unk1C; var_r27 = temp_r30->unk20; - ROMultVecArray(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) { diff --git a/src/REL/m442Dll/main.c b/src/REL/m442Dll/main.c index 950180a0..e7ccd667 100644 --- a/src/REL/m442Dll/main.c +++ b/src/REL/m442Dll/main.c @@ -1531,8 +1531,8 @@ void fn_1_485C(ModelData *model, Mtx mtx) GXSetProjection(sp40, GX_PERSPECTIVE); MTXInverse(mtx, spA0); spA0[0][3] = spA0[1][3] = spA0[2][3] = 0.0f; - Reorder(spA0, sp70); - ROMultVecArray(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++) { diff --git a/src/REL/m450Dll/main.c b/src/REL/m450Dll/main.c index 0a6a3222..84bd07f6 100644 --- a/src/REL/m450Dll/main.c +++ b/src/REL/m450Dll/main.c @@ -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; - Reorder(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; - ROMultVecArray(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; diff --git a/src/dolphin/os/OSAlloc.c b/src/dolphin/os/OSAlloc.c index 9c8ae8cd..a44fdc69 100644 --- a/src/dolphin/os/OSAlloc.c +++ b/src/dolphin/os/OSAlloc.c @@ -246,7 +246,7 @@ void *OSAllocFixed(void **rstart, void **rend) ASSERTMSG(0x1F3, MINOBJSIZE <= (char *)cellEnd - (char *)end); newCell = (struct Cell *)end; - newCell->size = (intptr_t)((char *)cellEnd - (char *)end); + newCell->size = (uintptr_t)((char *)cellEnd - (char *)end); newCell->next = cell->next; if (newCell->next) { newCell->next->prev = newCell; diff --git a/src/game/board/item.c b/src/game/board/item.c index 80edbf0d..cf77d6ec 100755 --- a/src/game/board/item.c +++ b/src/game/board/item.c @@ -1035,7 +1035,7 @@ static void ExecItemSwap(void) } BoardModelRotGet(suitMdl, &sp3C); Hu3DCameraSet(0, sp108); - Inverse(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/lottery.c b/src/game/board/lottery.c index 32b6ce49..d780c496 100755 --- a/src/game/board/lottery.c +++ b/src/game/board/lottery.c @@ -964,19 +964,19 @@ static void ExecBallPrize(void) temp_r29 = ballMdl[currPrize & 3]; BoardModelPosGet(lotteryMdl[0], &sp30); BoardModelRotGet(lotteryMdl[0], &sp18); - RotRad(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; - Trans(sp3C, temp_r3->data.curr.pos.x, temp_r3->data.curr.pos.y + 210.0f, temp_r3->data.curr.pos.z + -40.0f); - Concat(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; - MultVec(sp6C, &sp24, &sp24); + MTXMultVec(sp6C, &sp24, &sp24); var_f29 = 0.0f; var_f30 = 1.8f; temp_f27 = 0.016666668f; diff --git a/src/game/board/pause.c b/src/game/board/pause.c index 39152e13..c019f6a4 100755 --- a/src/game/board/pause.c +++ b/src/game/board/pause.c @@ -18,7 +18,6 @@ #include "game/window.h" #include "game/wipe.h" - typedef struct { struct { u8 unk00_field0 : 1; @@ -441,7 +440,7 @@ static void DeletePauseScreen(void) HuSprGrpKill(pauseCursorPos); pauseCursorPos = -1; } - Identity(sp8); + MTXIdentity(sp8); BoardModelLayerSet(hostMdl, hostOldLayer); BoardModelVisibilitySet(hostMdl, 1); BoardModelMtxSet(hostMdl, &sp8); @@ -1568,11 +1567,11 @@ static void RotateBox(float arg0, float arg1, Mtx arg2) Mtx sp20; BoardCameraRotGet(&sp14); - RotRad(spB0, 'x', MTXDegToRad(sp14.x)); - RotRad(sp80, 'y', MTXDegToRad(sp14.y)); - RotRad(sp50, 'x', MTXDegToRad(arg0)); - RotRad(sp20, 'y', MTXDegToRad(arg1)); - Concat(sp80, spB0, sp80); - Concat(sp50, sp20, sp20); - Concat(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/shop.c b/src/game/board/shop.c index 1a70c74d..0f5d714d 100755 --- a/src/game/board/shop.c +++ b/src/game/board/shop.c @@ -21,7 +21,6 @@ #include "game/process.h" #include "game/sprite.h" - #include "dolphin.h" #include "ext_math.h" @@ -537,9 +536,9 @@ static void UpdateShopWin(omObjData *arg0) } arg0->rot.y = BoardDAngleCalc(arg0->rot.y + 2.0f); BoardCameraRotGet(&spC); - RotRad(sp48, 'y', MTXDegToRad(arg0->rot.y)); - RotRad(sp18, 'x', MTXDegToRad(spC.x + 10.0f)); - Concat(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); @@ -602,7 +601,7 @@ void StartItemGive(void) BoardModelMotionStart(itemMdl, 0, 0); BoardModelMotionSpeedSet(itemMdl, 0.0f); BoardModelPosGet(itemMdl, &sp14); - Identity(sp20); + MTXIdentity(sp20); BoardModelMtxSet(itemMdl, &sp20); OSs16tof32(&angleVal, &temp_r30->scale.z); temp_r30->scale.z = -temp_r30->scale.z / 40.0f; diff --git a/src/game/board/star.c b/src/game/board/star.c index 6f3c94e5..a91518f9 100755 --- a/src/game/board/star.c +++ b/src/game/board/star.c @@ -22,7 +22,6 @@ #include "game/window.h" #include "game/wipe.h" - #include "ext_math.h" typedef struct { @@ -699,9 +698,9 @@ void BoardStarShowNext(s32 arg0) Hu3D2Dto3D(&sp44, 1, &sp44); BoardModelPosSetV(BoardStarHostMdlGet(), &sp44); BoardCameraRotGet(&sp2C); - RotRad(sp5C, 'y', MTXDegToRad(10.0f)); - RotRad(sp8C, 'x', MTXDegToRad(sp2C.x)); - Concat(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); @@ -748,7 +747,7 @@ void BoardStarShowNext(s32 arg0) HuPrcVSleep(); } BoardViewWait(); - Identity(spBC); + MTXIdentity(spBC); BoardModelMtxSet(BoardStarHostMdlGet(), &spBC); HideNextHost(1); while (showNextObj) { diff --git a/src/game/board/ui.c b/src/game/board/ui.c index c9aee2ce..f0ff4717 100755 --- a/src/game/board/ui.c +++ b/src/game/board/ui.c @@ -19,7 +19,6 @@ #include "game/sprite.h" #include "game/window.h" - #include "ext_math.h" typedef struct { @@ -1946,9 +1945,9 @@ static void UpdateItemWindow(omObjData *arg0) Hu3D2Dto3D(&sp14, 1, &sp14); BoardModelPosSetV(temp_r31->unk06[i], &sp14); BoardCameraRotGet(&sp8); - RotRad(sp2C, 'y', MTXDegToRad(arg0->trans.x)); - RotRad(sp5C, 'x', MTXDegToRad(sp8.x + 10.0f)); - Concat(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); } diff --git a/src/game/board/view.c b/src/game/board/view.c index 423109d8..5af81958 100755 --- a/src/game/board/view.c +++ b/src/game/board/view.c @@ -9,7 +9,6 @@ #include "game/sprite.h" #include "game/wipe.h" - #include "game/board/main.h" #include "game/board/model.h" #include "game/board/player.h" @@ -593,9 +592,9 @@ static void UpdateOverheadView(omObjData *arg0) sp20.y = var_r29[1]; sp20.z = 1000.0f; BoardCameraRotGet(&sp8); - RotRad(sp5C, 'x', MTXDegToRad(sp8.x)); - RotRad(sp2C, 'y', MTXDegToRad(sp8.y)); - Concat(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); diff --git a/src/game/data.c b/src/game/data.c index f76419c5..24373a3b 100644 --- a/src/game/data.c +++ b/src/game/data.c @@ -279,8 +279,8 @@ 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; + uintptr_t *temp_ptr; + temp_ptr = (uintptr_t *)PTR_OFFSET(read_stat->dir, (file_num * 4))+1; read_stat->file = PTR_OFFSET(read_stat->dir, *temp_ptr); temp_ptr = read_stat->file; read_stat->raw_len = *temp_ptr++; diff --git a/src/game/main.c b/src/game/main.c index 47dbb915..29f1b24f 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -125,7 +125,7 @@ void main(void) GWPlayerCfg[i].character = -1; } - // omMasterInit(0, _ovltbl, OVL_COUNT, OVL_BOOT); + omMasterInit(0, _ovltbl, OVL_COUNT, OVL_BOOT); VIWaitForRetrace(); if (VIGetNextField() == 0) { diff --git a/src/port/stubs.c b/src/port/stubs.c index fb01acc1..17f6410d 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -4,6 +4,9 @@ #include #include +#include +#include + // Credits: Super Monkey Ball void OSReport(const char *msg, ...) @@ -640,7 +643,8 @@ void GXPosition2s16(const s16 x, const s16 y) puts("GXPosition2s16 is a stub"); } -void GXColor1x8(u8 index) { +void GXColor1x8(u8 index) +{ puts("GXColor1x8 is a stub"); } @@ -691,3 +695,8 @@ void MGSeqMain(void) { puts("MGSeqMain is a stub"); } + +void omMasterInit(s32 prio, FileListEntry *ovl_list, s32 ovl_count, OverlayID start_ovl) +{ + puts("omMasterInit is a stub"); +} From 30c462a8ef5d8044ff5bff0f581e0df71310bba6 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Sat, 5 Apr 2025 15:09:21 +0200 Subject: [PATCH 30/47] Recover matching status --- include/dolphin/os.h | 4 ++-- include/game/gamework_data.h | 4 ++-- src/dolphin/os/OSAlloc.c | 6 +++--- src/game/init.c | 24 +++++------------------- 4 files changed, 12 insertions(+), 26 deletions(-) diff --git a/include/dolphin/os.h b/include/dolphin/os.h index d255bb04..bfe75527 100644 --- a/include/dolphin/os.h +++ b/include/dolphin/os.h @@ -57,8 +57,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/game/gamework_data.h b/include/game/gamework_data.h index 8550f6ca..86b03fd7 100644 --- a/include/game/gamework_data.h +++ b/include/game/gamework_data.h @@ -197,8 +197,8 @@ static inline void GWRumbleSet(s32 value) { GWGameStat.rumble = value; if (value == 0) { - // TODO: get rumble working - // HuPadRumbleAllStop(); + // TODO PC: get rumble working + HuPadRumbleAllStop(); } } diff --git a/src/dolphin/os/OSAlloc.c b/src/dolphin/os/OSAlloc.c index a44fdc69..db41789a 100644 --- a/src/dolphin/os/OSAlloc.c +++ b/src/dolphin/os/OSAlloc.c @@ -350,16 +350,16 @@ void *OSInitAlloc(void *arenaStart, void *arenaEnd, int maxHeaps) } __OSCurrHeap = -1; arenaStart = (void *)((uintptr_t)((char *)HeapArray + arraySize)); - arenaStart = (void *)(((uintptr_t)arenaStart + 0x1F) & 0xFFFFFFFFFFFFFFE0); + arenaStart = (void *)(((uintptr_t)arenaStart + 0x1F) & ~0x1F); ArenaStart = arenaStart; - ArenaEnd = (void *)((uintptr_t)arenaEnd & 0xFFFFFFFFFFFFFFE0); + ArenaEnd = (void *)((uintptr_t)arenaEnd & ~0x1F); ASSERTMSG1(0x2A4, ((uintptr_t)ArenaEnd - (uintptr_t)ArenaStart) >= 0x40U, "OSInitAlloc(): too small range."); return arenaStart; } uintptr_t OSCreateHeap(void *start, void *end) { - uintptr_t heap; + s32 heap; struct HeapDesc *hd; struct Cell *cell; diff --git a/src/game/init.c b/src/game/init.c index aef6a721..3deb6725 100644 --- a/src/game/init.c +++ b/src/game/init.c @@ -144,13 +144,8 @@ static void InitMem() uintptr_t *fb1; uintptr_t *fb2; u32 i; -#ifdef TARGET_PC - DemoFrameBuffer1 = (void *)arena_lo; - DemoFrameBuffer2 = (void *)((uintptr_t)DemoFrameBuffer1 + fb_size); -#else - DemoFrameBuffer1 = (void *)OSRoundUp32B((u32)arena_lo); - DemoFrameBuffer2 = (void *)OSRoundUp32B((u32)DemoFrameBuffer1 + fb_size); -#endif + DemoFrameBuffer1 = (void *)OSRoundUp32B((uintptr_t)arena_lo); + DemoFrameBuffer2 = (void *)OSRoundUp32B((uintptr_t)DemoFrameBuffer1 + fb_size); DemoCurrentBuffer = DemoFrameBuffer2; #if VERSION_PAL fb1 = DemoFrameBuffer1; @@ -161,26 +156,17 @@ static void InitMem() DCStoreRangeNoSync(DemoFrameBuffer1, fb_size); DCStoreRangeNoSync(DemoFrameBuffer2, fb_size); #endif -#ifdef TARGET_PC - arena_lo = (void *)((uintptr_t)DemoFrameBuffer2 + fb_size); -#else - arena_lo = (void *)OSRoundUp32B((u32)DemoFrameBuffer2 + fb_size); -#endif + arena_lo = (void *)OSRoundUp32B((uintptr_t)DemoFrameBuffer2 + fb_size); OSSetArenaLo(arena_lo); if(OSGetConsoleType() == OS_CONSOLE_DEVHW1 && OSGetPhysicalMemSize() != 0x400000 && OSGetConsoleSimulatedMemSize() < 0x1800000) { LoadMemInfo(); } else { -#ifdef TARGET_PC arena_lo = OSGetArenaLo(); arena_hi = OSGetArenaHi(); -#else - arena_lo = (void *)OSRoundUp32B((u32)arena_lo); - arena_hi = (void *)OSRoundDown32B((u32)arena_hi); -#endif arena_lo = OSInitAlloc(arena_lo, arena_hi, 1); OSSetArenaLo(arena_lo); - arena_lo = (void *)arena_lo; - arena_hi = (void *)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); From c54fd002ecd1b5a3b9b7e373dce56c8abeb02dbf Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Sun, 6 Apr 2025 00:17:58 +0200 Subject: [PATCH 31/47] Increase memory size --- src/port/OS.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/port/OS.c b/src/port/OS.c index d5203ad8..02850565 100644 --- a/src/port/OS.c +++ b/src/port/OS.c @@ -5,7 +5,7 @@ // Credits: Super Monkey Ball -#define MEM_SIZE (32 * 1024 * 1024) +#define MEM_SIZE (64 * 1024 * 1024) u8 LC_CACHE_BASE[4096]; From 3b31d9fcfc67d60bb4863644af3090c8a9687984 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Sun, 6 Apr 2025 00:19:49 +0200 Subject: [PATCH 32/47] Port HuSprAnimRead --- CMakeLists.txt | 4 + include/dolphin/types.h | 2 +- include/port/byteswap.h | 22 +++ src/game/init.c | 2 +- src/game/main.c | 2 +- src/game/sprman.c | 57 ++++++- src/port/ar.c | 17 ++ src/port/byteswap.cpp | 352 ++++++++++++++++++++++++++++++++++++++++ src/port/dvd.c | 5 +- src/port/stubs.c | 7 +- 10 files changed, 454 insertions(+), 16 deletions(-) create mode 100644 include/port/byteswap.h create mode 100644 src/port/byteswap.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b0ff80c..49180e9b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,9 +39,12 @@ set(DOLPHIN_FILES ) set(GAME_FILES + src/game/armem.c src/game/card.c src/game/ClusterExec.c src/game/data.c + src/game/decode.c + src/game/dvd.c src/game/EnvelopeExec.c src/game/fault.c src/game/flag.c @@ -71,6 +74,7 @@ set(GAME_FILES set(PORT_FILES src/port/ar.c src/port/arq.c + src/port/byteswap.cpp src/port/dvd.c src/port/imgui.cpp src/port/OS.c diff --git a/include/dolphin/types.h b/include/dolphin/types.h index db8b9b8c..b4d273b4 100644 --- a/include/dolphin/types.h +++ b/include/dolphin/types.h @@ -67,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/port/byteswap.h b/include/port/byteswap.h new file mode 100644 index 00000000..59df1f70 --- /dev/null +++ b/include/port/byteswap.h @@ -0,0 +1,22 @@ +#ifndef _SRC_BYTESWAP_H_ +#define _SRC_BYTESWAP_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include "game/animdata.h" + +void byteswap_animdata(void *src, AnimData* dest); +void byteswap_animbankdata(void *src, AnimBankData *dest); +void byteswap_animpatdata(void *src, AnimPatData *dest); +void byteswap_animbmpdata(void *src, AnimBmpData *dest); +void byteswap_animframedata(AnimFrameData *src); +void byteswap_animlayerdata(AnimLayerData *src); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/game/init.c b/src/game/init.c index 3deb6725..10979b1c 100644 --- a/src/game/init.c +++ b/src/game/init.c @@ -54,7 +54,7 @@ void HuSysInit(GXRenderModeObj *mode) VISetWindowTitle("Mario Party 4"); #endif PADInit(); - #ifndef TARGET_PC + #ifdef __MWERKS__ #if VERSION_NTSC if(OSGetProgressiveMode() == 1 && VIGetDTVStatus() == 1) { mode = &GXNtsc480Prog; diff --git a/src/game/main.c b/src/game/main.c index 29f1b24f..09931a38 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -125,7 +125,7 @@ void main(void) GWPlayerCfg[i].character = -1; } - omMasterInit(0, _ovltbl, OVL_COUNT, OVL_BOOT); + //omMasterInit(0, _ovltbl, OVL_COUNT, OVL_BOOT); VIWaitForRetrace(); if (VIGetNextField() == 0) { diff --git a/src/game/sprman.c b/src/game/sprman.c index 159b0f47..043abc36 100644 --- a/src/game/sprman.c +++ b/src/game/sprman.c @@ -3,6 +3,9 @@ #include "game/init.h" #include "dolphin/mtx.h" +#include + +#include "port/byteswap.h" #define SPRITE_DIRTY_ATTR 0x1 #define SPRITE_DIRTY_XFORM 0x2 @@ -212,27 +215,58 @@ AnimData *HuSprAnimRead(void *data) AnimBmpData *bmp; AnimBankData *bank; AnimPatData *pat; +#ifdef TARGET_PC + AnimBmpData *bmp2; + AnimBankData *bank2; + AnimPatData *pat2; +#endif +#ifdef TARGET_PC + AnimData *anim = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimData), MEMORY_DEFAULT_NUM); + byteswap_animdata(data, anim); +#else AnimData *anim = (AnimData *)data; - if((u32)anim->bank & 0xFFFF0000) { +#endif + if((uintptr_t)anim->bank & ~0xFFFF) { anim->useNum++; return anim; } - bank = (AnimBankData *)((u32)anim->bank+(u32)data); + bank = (AnimBankData *)((uintptr_t)anim->bank+(uintptr_t)data); +#ifdef TARGET_PC + bank2 = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimBankData), MEMORY_DEFAULT_NUM); + byteswap_animbankdata(bank, bank2); + bank = bank2; +#endif anim->bank = bank; - pat = (AnimPatData *)((u32)anim->pat+(u32)data); + pat = (AnimPatData *)((uintptr_t)anim->pat+(uintptr_t)data); +#ifdef TARGET_PC + pat2 = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimPatData), MEMORY_DEFAULT_NUM); + byteswap_animpatdata(pat, pat2); + pat = pat2; +#endif anim->pat = pat; - bmp = (AnimBmpData *)((u32)anim->bmp+(u32)data); + bmp = (AnimBmpData *)((uintptr_t)anim->bmp+(uintptr_t)data); +#ifdef TARGET_PC + bmp2 = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimBmpData), MEMORY_DEFAULT_NUM); + byteswap_animbmpdata(bmp, bmp2); + bmp = bmp2; +#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 + byteswap_animlayerdata(pat->layer); +#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 +435,11 @@ void HuSprAnimKill(AnimData *anim) HuMemDirectFree(anim->bmp->palData); } } +#ifdef TARGET_PC + HuMemDirectFree(anim->bank); + HuMemDirectFree(anim->pat); + HuMemDirectFree(anim->bmp); +#endif HuMemDirectFree(anim); } } @@ -720,4 +759,4 @@ void AnimDebug(AnimData *anim) 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/port/ar.c b/src/port/ar.c index 3f628cd2..b7ae0092 100644 --- a/src/port/ar.c +++ b/src/port/ar.c @@ -4,6 +4,23 @@ u8 ARAM[16 * 1024 * 1024]; +u32 ARInit(u32 *stack_index_addr, u32 num_entries) +{ + puts("ARInit"); + return 0x4000; +} + +BOOL ARCheckInit() +{ + return TRUE; +} + +u32 ARGetSize() +{ + // TODO + return 0x8000; +} + void ARStartDMA(u32 type, u32 mainmem_addr, u32 aram_addr, u32 length) { switch (type) diff --git a/src/port/byteswap.cpp b/src/port/byteswap.cpp new file mode 100644 index 00000000..547dedcb --- /dev/null +++ b/src/port/byteswap.cpp @@ -0,0 +1,352 @@ +#include +#include +#include +#include +#include +#include + +extern "C" +{ +#include "port/byteswap.h" + +typedef struct AnimData32b { + s16 bankNum; + s16 patNum; + s16 bmpNum; + s16 useNum; + + u32 bank; + u32 pat; + u32 bmp; +} AnimData32b; + +typedef struct AnimBankData32b { + s16 timeNum; + s16 unk; + u32 frame; +} AnimBankData32b; + +typedef struct AnimPatData32b { + s16 layerNum; + s16 centerX; + s16 centerY; + s16 sizeX; + s16 sizeY; + u32 layer; +} AnimPatData32b; + +typedef struct AnimBmpData32b { + u8 pixSize; + u8 dataFmt; + s16 palNum; + s16 sizeX; + s16 sizeY; + u32 dataSize; + u32 palData; + u32 data; +} AnimBmpData32b; + +} + +template [[nodiscard]] constexpr T bswap16(T val) noexcept +{ + 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); +#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)); +} +template T *offset_ptr(B &base, T *ptr, void *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, 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(obj.bank); + dest.pat = reinterpret_cast(obj.pat); + dest.bmp = reinterpret_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(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(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(obj.palData); + dest.data = reinterpret_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)); +} + +void byteswap_animdata(void *src, AnimData *dest) +{ + auto *anim = reinterpret_cast(src); + bswap(*anim, *anim, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_animbankdata(void *src, AnimBankData *dest) +{ + auto *bank = reinterpret_cast(src); + bswap(*bank, *bank, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_animpatdata(void *src, AnimPatData *dest) +{ + auto *pat = reinterpret_cast(src); + bswap(*pat, *pat, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_animbmpdata(void *src, AnimBmpData *dest) +{ + auto *bmp = reinterpret_cast(src); + bswap(*bmp, *bmp, *dest); + sVisitedPtrs.clear(); +} + +void byteswap_animframedata(AnimFrameData *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} + +void byteswap_animlayerdata(AnimLayerData *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} diff --git a/src/port/dvd.c b/src/port/dvd.c index f1b67228..31795f2d 100644 --- a/src/port/dvd.c +++ b/src/port/dvd.c @@ -161,7 +161,8 @@ s32 DVDGetDriveStatus(void) return 0; } -void HuDvdErrorWatch(void) +s32 DVDGetCommandBlockStatus(const DVDCommandBlock *block) { - + // TODO + return 0; } diff --git a/src/port/stubs.c b/src/port/stubs.c index 17f6410d..52c6fe0a 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -669,13 +669,15 @@ void GXResetWriteGatherPipe(void) puts("GXResetWriteGatherPipe is a stub"); } +void ARQInit(void) { + puts("ARQInit is a stub"); +} + // Hudson void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { } void HuAudInit(void) { } -void HuARInit(void) { } - void msmSysRegularProc(void) { puts("msmSysRegularProc is a stub"); @@ -689,6 +691,7 @@ void msmMusFdoutEnd(void) s32 HuSoftResetButtonCheck(void) { puts("HuSoftResetButtonCheck is a stub"); + return 0; } void MGSeqMain(void) From d3b45cf2b4bfeaae6b284acf13bdbf2d187f9c04 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Sun, 6 Apr 2025 06:30:30 +0200 Subject: [PATCH 33/47] Implemented rel building and loading --- CMakeLists.txt | 23 +- dol.def | 27 + include/dolphin/os.h | 2 +- include/game/gamework_data.h | 12 +- include/game/object.h | 33 +- include/ovl_table.h | 206 ++--- include/version.h | 11 + src/REL/bootDll/main.c | 1360 +++++++++++++++++----------------- src/game/gamework.c | 14 +- src/game/main.c | 2 +- src/game/objdll.c | 31 +- src/game/objmain.c | 228 +++--- src/game/ovllist.c | 8 +- src/port/stubs.c | 10 +- 14 files changed, 1045 insertions(+), 922 deletions(-) create mode 100644 dol.def diff --git a/CMakeLists.txt b/CMakeLists.txt index 49180e9b..41d2ddcc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,27 +40,32 @@ set(DOLPHIN_FILES set(GAME_FILES src/game/armem.c + src/game/audio.c src/game/card.c src/game/ClusterExec.c src/game/data.c src/game/decode.c src/game/dvd.c src/game/EnvelopeExec.c + src/game/esprite.c src/game/fault.c src/game/flag.c src/game/font.c src/game/frand.c + src/game/gamework.c src/game/hsfanim.c src/game/hsfdraw.c src/game/hsfex.c src/game/hsfload.c src/game/hsfman.c src/game/hsfmotion.c - src/game/gamework.c + src/game/init.c src/game/main.c src/game/malloc.c src/game/memory.c - src/game/init.c + src/game/objdll.c + src/game/objmain.c + src/game/ovllist.c src/game/ShapeExec.c src/game/sprman.c src/game/sprput.c @@ -94,8 +99,20 @@ set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-std=c89 -Dinline= endforeach() endif () +# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rdynamic") + add_executable(marioparty4 ${DOLPHIN_FILES} ${GAME_FILES} ${PORT_FILES}) -target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=0) +set_property(TARGET marioparty4 PROPERTY ENABLE_EXPORTS ON) +target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=0 TARGET_MAIN) target_compile_definitions(musyx PRIVATE MUSY_VERSION_MAJOR=1 MUSY_VERSION_MINOR=5 MUSY_VERSION_PATCH=4) target_include_directories(marioparty4 PRIVATE include build/GMPE01_00/include) +if (MSVC) +target_link_options(marioparty4 PRIVATE "/DEF:${CMAKE_SOURCE_DIR}/dol.def") +endif () target_link_libraries(marioparty4 PRIVATE aurora::aurora aurora::main musyx) + +add_library(bootDll SHARED src/REL/bootDll/main.c src/REL/bootDll/language.c) +target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=0 TARGET_REL) +target_include_directories(bootDll PRIVATE include build/GMPE01_00/include) +set_target_properties(bootDll PROPERTIES LINK_FLAGS "/EXPORT:ObjectSetup") +target_link_libraries(bootDll PRIVATE musyx marioparty4) diff --git a/dol.def b/dol.def new file mode 100644 index 00000000..cef22cf5 --- /dev/null +++ b/dol.def @@ -0,0 +1,27 @@ +EXPORTS + OSReport + OSGetTick + HuMemDirectMalloc + HuMemDirectFree + HuDataSelHeapReadNum + HuDecodeData + Hu3DBGColorSet + Hu3DModelCreate + Hu3DModelAttrSet + Hu3DModelAttrReset + Hu3DCameraCreate + Hu3DCameraPerspectiveSet + Hu3DCameraViewportSet + Hu3DCameraPosSet + Hu3DModelCameraInfoSet + Hu3DModelLightInfoSet + HuPrcEnd + HuPrcCreate + HuPrcCurrentGet + HuPrcSleep + HuPrcVSleep + omOvlCallEx + omOvlReturnEx + omOvlHisChg + omOvlHisGet + omInitObjMan diff --git a/include/dolphin/os.h b/include/dolphin/os.h index bfe75527..02750f79 100644 --- a/include/dolphin/os.h +++ b/include/dolphin/os.h @@ -225,7 +225,7 @@ BOOL OSRestoreInterrupts(BOOL level); #endif // _DEBUG -void OSReport(const char *msg, ...); +__declspec(dllexport) void OSReport(const char *msg, ...); void OSPanic(const char *file, int line, const char *msg, ...); void OSFatal(GXColor fg, GXColor bg, const char *msg); diff --git a/include/game/gamework_data.h b/include/game/gamework_data.h index 86b03fd7..87033ede 100644 --- a/include/game/gamework_data.h +++ b/include/game/gamework_data.h @@ -145,13 +145,13 @@ typedef struct game_stat { /* 0x110 */ PauseBackupConfig party_pause; } GameStat; -extern s16 GwLanguage; -extern s16 GwLanguageSave; +SHARED_SYM extern s16 GwLanguage; +SHARED_SYM extern s16 GwLanguageSave; -extern PlayerConfig GWPlayerCfg[4]; -extern PlayerState GWPlayer[4]; -extern SystemState GWSystem; -extern GameStat GWGameStat; +SHARED_SYM extern PlayerConfig GWPlayerCfg[4]; +SHARED_SYM extern PlayerState GWPlayer[4]; +SHARED_SYM extern SystemState GWSystem; +SHARED_SYM extern GameStat GWGameStat; static inline s32 GWPlayerCfgGroupGet(s32 player) { diff --git a/include/game/object.h b/include/game/object.h index 69f4cb6b..8c022103 100644 --- a/include/game/object.h +++ b/include/game/object.h @@ -5,6 +5,10 @@ #include "game/process.h" #include "game/dvd.h" +#ifdef _WIN32 +#include +#endif + #define OM_DLL_MAX 20 #define OVL_DEFINE(name, path) name, @@ -60,9 +64,14 @@ typedef struct om_obj_data { typedef struct om_dll_data { char *name; +#if _WIN32 + HMODULE hModule; +#else OSModuleHeader *module; void *bss; s32 ret; +#endif + } omDllData; void omMasterInit(s32 prio, FileListEntry *ovl_list, s32 ovl_count, OverlayID start_ovl); @@ -112,26 +121,26 @@ void omSysPauseCtrl(s16 flag); extern omObjData *omDBGSysKeyObj; extern Process *omwatchproc; extern OverlayID omnextovl; -extern OverlayID omcurovl; +SHARED_SYM extern OverlayID omcurovl; extern s32 omcurdll; -extern s32 omovlhisidx; -extern s32 omovlevtno; +SHARED_SYM extern s32 omovlhisidx; +SHARED_SYM extern s32 omovlevtno; extern s32 omnextovlevtno; -extern u32 omovlstat; +SHARED_SYM extern u32 omovlstat; extern char omUPauseFlag; -extern s16 omSysExitReq; +SHARED_SYM extern s16 omSysExitReq; extern s16 omdispinfo; extern u8 omSysPauseEnableFlag; extern OverlayID omprevovl; extern omDllData *omDLLinfoTbl[OM_DLL_MAX]; -extern Vec CRot; -extern Vec Center; -extern float CZoom; -extern Vec CRotM[16]; -extern Vec CenterM[16]; -extern float CZoomM[16]; -extern s16 omDBGMenuButton; +SHARED_SYM extern Vec CRot; +SHARED_SYM extern Vec Center; +SHARED_SYM extern float CZoom; +SHARED_SYM extern Vec CRotM[16]; +SHARED_SYM extern Vec CenterM[16]; +SHARED_SYM extern float CZoomM[16]; +SHARED_SYM extern s16 omDBGMenuButton; #endif diff --git a/include/ovl_table.h b/include/ovl_table.h index fe695ea9..d391d305 100644 --- a/include/ovl_table.h +++ b/include/ovl_table.h @@ -1,108 +1,108 @@ #include "version.h" -OVL_DEFINE(OVL__MINI, "dll/_minigameDLL.rel") -OVL_DEFINE(OVL_BOOT, "dll/bootdll.rel") -OVL_DEFINE(OVL_E3SETUP, "dll/e3setupDLL.rel") -OVL_DEFINE(OVL_INST, "dll/instdll.rel") -OVL_DEFINE(OVL_M300, "dll/m300dll.rel") -OVL_DEFINE(OVL_M302, "dll/m302dll.rel") -OVL_DEFINE(OVL_M303, "dll/m303dll.rel") -OVL_DEFINE(OVL_M330, "dll/m330dll.rel") -OVL_DEFINE(OVL_M333, "dll/m333dll.rel") -OVL_DEFINE(OVL_M401, "dll/m401dll.rel") -OVL_DEFINE(OVL_M402, "dll/m402dll.rel") -OVL_DEFINE(OVL_M403, "dll/m403dll.rel") -OVL_DEFINE(OVL_M404, "dll/m404dll.rel") -OVL_DEFINE(OVL_M405, "dll/m405dll.rel") -OVL_DEFINE(OVL_M406, "dll/m406dll.rel") -OVL_DEFINE(OVL_M407, "dll/m407dll.rel") -OVL_DEFINE(OVL_M408, "dll/m408dll.rel") -OVL_DEFINE(OVL_M409, "dll/m409dll.rel") -OVL_DEFINE(OVL_M410, "dll/m410dll.rel") -OVL_DEFINE(OVL_M411, "dll/m411dll.rel") -OVL_DEFINE(OVL_M412, "dll/m412dll.rel") -OVL_DEFINE(OVL_M413, "dll/m413dll.rel") -OVL_DEFINE(OVL_M414, "dll/m414dll.rel") -OVL_DEFINE(OVL_M415, "dll/m415dll.rel") -OVL_DEFINE(OVL_M416, "dll/m416dll.rel") -OVL_DEFINE(OVL_M417, "dll/m417dll.rel") -OVL_DEFINE(OVL_M418, "dll/m418dll.rel") -OVL_DEFINE(OVL_M419, "dll/m419dll.rel") -OVL_DEFINE(OVL_M420, "dll/m420dll.rel") -OVL_DEFINE(OVL_M421, "dll/m421dll.rel") -OVL_DEFINE(OVL_M422, "dll/m422dll.rel") -OVL_DEFINE(OVL_M423, "dll/m423dll.rel") -OVL_DEFINE(OVL_M424, "dll/m424dll.rel") -OVL_DEFINE(OVL_M425, "dll/m425dll.rel") -OVL_DEFINE(OVL_M426, "dll/m426dll.rel") -OVL_DEFINE(OVL_M427, "dll/m427dll.rel") -OVL_DEFINE(OVL_M428, "dll/m428dll.rel") -OVL_DEFINE(OVL_M429, "dll/m429dll.rel") -OVL_DEFINE(OVL_M430, "dll/m430dll.rel") -OVL_DEFINE(OVL_M431, "dll/m431dll.rel") -OVL_DEFINE(OVL_M432, "dll/m432dll.rel") -OVL_DEFINE(OVL_M433, "dll/m433dll.rel") -OVL_DEFINE(OVL_M434, "dll/m434dll.rel") -OVL_DEFINE(OVL_M435, "dll/m435dll.rel") -OVL_DEFINE(OVL_M436, "dll/m436dll.rel") -OVL_DEFINE(OVL_M437, "dll/m437dll.rel") -OVL_DEFINE(OVL_M438, "dll/m438dll.rel") -OVL_DEFINE(OVL_M439, "dll/m439dll.rel") -OVL_DEFINE(OVL_M440, "dll/m440dll.rel") -OVL_DEFINE(OVL_M441, "dll/m441dll.rel") -OVL_DEFINE(OVL_M442, "dll/m442dll.rel") -OVL_DEFINE(OVL_M443, "dll/m443dll.rel") -OVL_DEFINE(OVL_M444, "dll/m444dll.rel") -OVL_DEFINE(OVL_M445, "dll/m445dll.rel") -OVL_DEFINE(OVL_M446, "dll/m446dll.rel") -OVL_DEFINE(OVL_M447, "dll/m447dll.rel") -OVL_DEFINE(OVL_M448, "dll/m448dll.rel") -OVL_DEFINE(OVL_M449, "dll/m449dll.rel") -OVL_DEFINE(OVL_M450, "dll/m450dll.rel") -OVL_DEFINE(OVL_M451, "dll/m451dll.rel") -OVL_DEFINE(OVL_M453, "dll/m453dll.rel") -OVL_DEFINE(OVL_M455, "dll/m455dll.rel") -OVL_DEFINE(OVL_M456, "dll/m456dll.rel") -OVL_DEFINE(OVL_M457, "dll/m457dll.rel") -OVL_DEFINE(OVL_M458, "dll/m458dll.rel") -OVL_DEFINE(OVL_M459, "dll/m459dll.rel") -OVL_DEFINE(OVL_M460, "dll/m460dll.rel") -OVL_DEFINE(OVL_M461, "dll/m461dll.rel") -OVL_DEFINE(OVL_M462, "dll/m462dll.rel") -OVL_DEFINE(OVL_M463, "dll/m463dll.rel") -OVL_DEFINE(OVL_MENT, "dll/mentdll.rel") +OVL_DEFINE(OVL__MINI, "_minigameDLL") +OVL_DEFINE(OVL_BOOT, "bootdll") +OVL_DEFINE(OVL_E3SETUP, "e3setupDLL") +OVL_DEFINE(OVL_INST, "instdll") +OVL_DEFINE(OVL_M300, "m300dll") +OVL_DEFINE(OVL_M302, "m302dll") +OVL_DEFINE(OVL_M303, "m303dll") +OVL_DEFINE(OVL_M330, "m330dll") +OVL_DEFINE(OVL_M333, "m333dll") +OVL_DEFINE(OVL_M401, "m401dll") +OVL_DEFINE(OVL_M402, "m402dll") +OVL_DEFINE(OVL_M403, "m403dll") +OVL_DEFINE(OVL_M404, "m404dll") +OVL_DEFINE(OVL_M405, "m405dll") +OVL_DEFINE(OVL_M406, "m406dll") +OVL_DEFINE(OVL_M407, "m407dll") +OVL_DEFINE(OVL_M408, "m408dll") +OVL_DEFINE(OVL_M409, "m409dll") +OVL_DEFINE(OVL_M410, "m410dll") +OVL_DEFINE(OVL_M411, "m411dll") +OVL_DEFINE(OVL_M412, "m412dll") +OVL_DEFINE(OVL_M413, "m413dll") +OVL_DEFINE(OVL_M414, "m414dll") +OVL_DEFINE(OVL_M415, "m415dll") +OVL_DEFINE(OVL_M416, "m416dll") +OVL_DEFINE(OVL_M417, "m417dll") +OVL_DEFINE(OVL_M418, "m418dll") +OVL_DEFINE(OVL_M419, "m419dll") +OVL_DEFINE(OVL_M420, "m420dll") +OVL_DEFINE(OVL_M421, "m421dll") +OVL_DEFINE(OVL_M422, "m422dll") +OVL_DEFINE(OVL_M423, "m423dll") +OVL_DEFINE(OVL_M424, "m424dll") +OVL_DEFINE(OVL_M425, "m425dll") +OVL_DEFINE(OVL_M426, "m426dll") +OVL_DEFINE(OVL_M427, "m427dll") +OVL_DEFINE(OVL_M428, "m428dll") +OVL_DEFINE(OVL_M429, "m429dll") +OVL_DEFINE(OVL_M430, "m430dll") +OVL_DEFINE(OVL_M431, "m431dll") +OVL_DEFINE(OVL_M432, "m432dll") +OVL_DEFINE(OVL_M433, "m433dll") +OVL_DEFINE(OVL_M434, "m434dll") +OVL_DEFINE(OVL_M435, "m435dll") +OVL_DEFINE(OVL_M436, "m436dll") +OVL_DEFINE(OVL_M437, "m437dll") +OVL_DEFINE(OVL_M438, "m438dll") +OVL_DEFINE(OVL_M439, "m439dll") +OVL_DEFINE(OVL_M440, "m440dll") +OVL_DEFINE(OVL_M441, "m441dll") +OVL_DEFINE(OVL_M442, "m442dll") +OVL_DEFINE(OVL_M443, "m443dll") +OVL_DEFINE(OVL_M444, "m444dll") +OVL_DEFINE(OVL_M445, "m445dll") +OVL_DEFINE(OVL_M446, "m446dll") +OVL_DEFINE(OVL_M447, "m447dll") +OVL_DEFINE(OVL_M448, "m448dll") +OVL_DEFINE(OVL_M449, "m449dll") +OVL_DEFINE(OVL_M450, "m450dll") +OVL_DEFINE(OVL_M451, "m451dll") +OVL_DEFINE(OVL_M453, "m453dll") +OVL_DEFINE(OVL_M455, "m455dll") +OVL_DEFINE(OVL_M456, "m456dll") +OVL_DEFINE(OVL_M457, "m457dll") +OVL_DEFINE(OVL_M458, "m458dll") +OVL_DEFINE(OVL_M459, "m459dll") +OVL_DEFINE(OVL_M460, "m460dll") +OVL_DEFINE(OVL_M461, "m461dll") +OVL_DEFINE(OVL_M462, "m462dll") +OVL_DEFINE(OVL_M463, "m463dll") +OVL_DEFINE(OVL_MENT, "mentdll") #if VERSION_JP -OVL_DEFINE(OVL_MGMODE, "dll/mgmodedll.rel") -OVL_DEFINE(OVL_MODELTEST, "dll/modeltestdll.rel") -OVL_DEFINE(OVL_MODESEL, "dll/modeseldll.rel") -OVL_DEFINE(OVL_MOVIE, "dll/moviedll.rel") +OVL_DEFINE(OVL_MGMODE, "mgmodedll") +OVL_DEFINE(OVL_MODELTEST, "modeltestdll") +OVL_DEFINE(OVL_MODESEL, "modeseldll") +OVL_DEFINE(OVL_MOVIE, "moviedll") #else -OVL_DEFINE(OVL_MESS, "dll/messdll.rel") -OVL_DEFINE(OVL_MGMODE, "dll/mgmodedll.rel") -OVL_DEFINE(OVL_MODELTEST, "dll/modeltestdll.rel") -OVL_DEFINE(OVL_MODESEL, "dll/modeseldll.rel") +OVL_DEFINE(OVL_MESS, "messdll") +OVL_DEFINE(OVL_MGMODE, "mgmodedll") +OVL_DEFINE(OVL_MODELTEST, "modeltestdll") +OVL_DEFINE(OVL_MODESEL, "modeseldll") #endif -OVL_DEFINE(OVL_MPEX, "dll/mpexdll.rel") -OVL_DEFINE(OVL_MSETUP, "dll/msetupdll.rel") -OVL_DEFINE(OVL_MSTORY2, "dll/mstory2dll.rel") -OVL_DEFINE(OVL_MSTORY3, "dll/mstory3dll.rel") -OVL_DEFINE(OVL_MSTORY4, "dll/mstory4dll.rel") -OVL_DEFINE(OVL_MSTORY, "dll/mstorydll.rel") -OVL_DEFINE(OVL_NIS, "dll/nisdll.rel") -OVL_DEFINE(OVL_OPTION, "dll/option.rel") -OVL_DEFINE(OVL_PRESENT, "dll/present.rel") -OVL_DEFINE(OVL_RESULT, "dll/resultdll.rel") -OVL_DEFINE(OVL_SAF, "dll/safdll.rel") -OVL_DEFINE(OVL_SELMENU, "dll/selmenuDLL.rel") -OVL_DEFINE(OVL_STAFF, "dll/staffdll.rel") -OVL_DEFINE(OVL_SUBCHRSEL, "dll/subchrseldll.rel") -OVL_DEFINE(OVL_W01, "dll/w01dll.rel") -OVL_DEFINE(OVL_W02, "dll/w02dll.rel") -OVL_DEFINE(OVL_W03, "dll/w03dll.rel") -OVL_DEFINE(OVL_W04, "dll/w04dll.rel") -OVL_DEFINE(OVL_W05, "dll/w05dll.rel") -OVL_DEFINE(OVL_W06, "dll/w06dll.rel") -OVL_DEFINE(OVL_W10, "dll/w10dll.rel") -OVL_DEFINE(OVL_W20, "dll/w20dll.rel") -OVL_DEFINE(OVL_W21, "dll/w21dll.rel") -OVL_DEFINE(OVL_ZTAR, "dll/ztardll.rel") +OVL_DEFINE(OVL_MPEX, "mpexdll") +OVL_DEFINE(OVL_MSETUP, "msetupdll") +OVL_DEFINE(OVL_MSTORY2, "mstory2dll") +OVL_DEFINE(OVL_MSTORY3, "mstory3dll") +OVL_DEFINE(OVL_MSTORY4, "mstory4dll") +OVL_DEFINE(OVL_MSTORY, "mstorydll") +OVL_DEFINE(OVL_NIS, "nisdll") +OVL_DEFINE(OVL_OPTION, "option") +OVL_DEFINE(OVL_PRESENT, "present") +OVL_DEFINE(OVL_RESULT, "resultdll") +OVL_DEFINE(OVL_SAF, "safdll") +OVL_DEFINE(OVL_SELMENU, "selmenuDLL") +OVL_DEFINE(OVL_STAFF, "staffdll") +OVL_DEFINE(OVL_SUBCHRSEL, "subchrseldll") +OVL_DEFINE(OVL_W01, "w01dll") +OVL_DEFINE(OVL_W02, "w02dll") +OVL_DEFINE(OVL_W03, "w03dll") +OVL_DEFINE(OVL_W04, "w04dll") +OVL_DEFINE(OVL_W05, "w05dll") +OVL_DEFINE(OVL_W06, "w06dll") +OVL_DEFINE(OVL_W10, "w10dll") +OVL_DEFINE(OVL_W20, "w20dll") +OVL_DEFINE(OVL_W21, "w21dll") +OVL_DEFINE(OVL_ZTAR, "ztardll") diff --git a/include/version.h b/include/version.h index 209a7d53..de3a0e84 100644 --- a/include/version.h +++ b/include/version.h @@ -21,4 +21,15 @@ #define REFRESH_RATE 60 #endif +#if _WIN32 +#ifdef TARGET_MAIN +#define SHARED_SYM __declspec(dllexport) +#else +#define SHARED_SYM __declspec(dllimport) +#endif + +#else + #define SHARED_SYM +#endif + #endif diff --git a/src/REL/bootDll/main.c b/src/REL/bootDll/main.c index ee8b1b04..a3dc0d93 100644 --- a/src/REL/bootDll/main.c +++ b/src/REL/bootDll/main.c @@ -82,706 +82,706 @@ void ObjectSetup(void) #endif } -#if VERSION_PAL -s32 LanguageBootGet(void); -BOOL LanguageMenuExec(void); -#endif + #if VERSION_PAL + s32 LanguageBootGet(void); + BOOL LanguageMenuExec(void); + #endif -void BootExec(void) -{ - AnimData *data; - s16 group; - s16 sprite_nintendo; - s16 sprite_hudson; - s16 i; - OSTick tick_prev; - Process *curr = HuPrcCurrentGet(); - #if VERSION_NTSC - if (omovlevtno == 0) { - BootProgExec(); - } - #else - if(SystemInitF == FALSE) { - GwLanguage = LanguageBootGet(); - if(GwLanguage == -1) { - if(LanguageMenuExec()) { - SystemInitF = TRUE; - } - } else { - GWLanguageSet(GwLanguage); - } - } - #endif - group = HuSprGrpCreate(2); - data = HuSprAnimRead(NintendoDataDecode()); - sprite_nintendo = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 0, sprite_nintendo); - HuSprPosSet(group, 0, 288, 240); - HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); - if (omovlevtno != 0) { - HuAudSndGrpSetSet(0); - data = HuSprAnimReadFile(TITLE_HUDSON_ANM); - sprite_hudson = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 1, sprite_hudson); - HuSprPosSet(group, 1, 288, 240); - HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); - HuWinInit(1); - BootTitleCreate(); - SystemInitF = 1; - } - else { - s16 group_thp; - BOOL skip_wait; - float win_size[2]; - s16 sprite_thp; - for (i = 0; i < 4; i++) { - GWPlayerCfg[i].pad_idx = i; - } - #if VERSION_PAL - if(SystemInitF) { - data = HuSprAnimReadFile(TITLE_HUDSON_ANM); - sprite_hudson = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 1, sprite_hudson); - HuSprPosSet(group, 1, 288, 240); - HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); - HuAudSndGrpSetSet(0); - BootTitleCreate(); - HuWinInit(1); - } - #endif - repeat: - HuSprAttrReset(group, 0, HUSPR_ATTR_DISPOFF); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - WipeColorSet(255, 255, 255); - if (!SystemInitF) { - tick_prev = OSGetTick(); - CharManInit(); - HuWindowInit(); - MGSeqInit(); - HuWinInit(1); - BootTitleCreate(); - data = HuSprAnimReadFile(TITLE_HUDSON_ANM); - sprite_hudson = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 1, sprite_hudson); - HuSprPosSet(group, 1, 288, 240); - HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); - while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { - HuPrcVSleep(); - } - } - else { - for (i = 0; i < 180; i++) { - #if VERSION_NTSC - if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { - break; - } - #else - if (initLanguageF && (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A))) { - break; - } - #endif - HuPrcVSleep(); - } - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrReset(group, 1, HUSPR_ATTR_DISPOFF); - HuPrcSleep(60); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - if (!SystemInitF) { - void *group_samp; - tick_prev = OSGetTick(); - group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0)); - msmSysLoadGroup(0, group_samp, 0); - HuMemDirectFree(group_samp); - while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { - HuPrcVSleep(); - } - } - else { - for (i = 0; i < 180; i++) { - #if VERSION_NTSC - if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { - break; - } - #else - if (initLanguageF && (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A))) { - break; - } - #endif - HuPrcVSleep(); - } - } - #if VERSION_PAL - initLanguageF = TRUE; - #endif - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - tick_prev = OSGetTick(); - if (!SystemInitF) { - HuAudSndGrpSetSet(0); - SystemInitF = 1; - } - while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 1000) { - HuPrcVSleep(); - } - HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); - group_thp = HuSprGrpCreate(1); - sprite_thp = HuTHPSprCreateVol("movie/opmov_a00.thp", 0, 100, 122); - HuSprGrpMemberSet(group_thp, 0, sprite_thp); - HuSprPosSet(group_thp, 0, 288, 240); - HuWinMesMaxSizeBetGet(win_size, MAKE_MESSID(54, 0), MAKE_MESSID(54, 4)); - demoWinId = HuWinCreate(-10000, 448 - win_size[1], win_size[0], win_size[1], 0); - HuWinMesSpeedSet(demoWinId, 0); - HuWinBGTPLvlSet(demoWinId, 0); - HuWinPriSet(demoWinId, 10); - HuWinAttrSet(demoWinId, 0x800); - HuPrcSleep(5); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); - while (WipeStatGet()) { - HuPrcVSleep(); - } - skip_wait = FALSE; - while (!HuTHPEndCheck()) { - UpdateDemoMess(); - if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { - skip_wait = TRUE; - break; - } - HuPrcVSleep(); - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - HuWinKill(demoWinId); - HuTHPClose(); - HuPrcVSleep(); - HuSprGrpKill(group_thp); - if (!skip_wait) { - HuPrcSleep(60); - } - skip_wait = FALSE; - } - if (!BootTitleExec()) { - HuPrcSleep(60); - goto repeat; - } - WipeColorSet(255, 255, 255); - HuAudSStreamAllFadeOut(500); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - HuPrcVSleep(); - if (omSysExitReq) { - omOvlReturnEx(1, 1); - } - else { - omOvlCallEx(OVL_MODESEL, 1, 0, 0); - } - for (i = 0; i < 4; i++) { - GWPlayerCfg[i].character = -1; - } - HuPrcEnd(); - do { - HuPrcVSleep(); - } while (1); -} + void BootExec(void) + { + AnimData *data; + s16 group; + s16 sprite_nintendo; + s16 sprite_hudson; + s16 i; + OSTick tick_prev; + Process *curr = HuPrcCurrentGet(); + #if VERSION_NTSC + if (omovlevtno == 0) { + BootProgExec(); + } + #else + if(SystemInitF == FALSE) { + GwLanguage = LanguageBootGet(); + if(GwLanguage == -1) { + if(LanguageMenuExec()) { + SystemInitF = TRUE; + } + } else { + GWLanguageSet(GwLanguage); + } + } + #endif + group = HuSprGrpCreate(2); + data = HuSprAnimRead(NintendoDataDecode()); + sprite_nintendo = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 0, sprite_nintendo); + HuSprPosSet(group, 0, 288, 240); + HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); + if (omovlevtno != 0) { + HuAudSndGrpSetSet(0); + data = HuSprAnimReadFile(TITLE_HUDSON_ANM); + sprite_hudson = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 1, sprite_hudson); + HuSprPosSet(group, 1, 288, 240); + HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); + HuWinInit(1); + BootTitleCreate(); + SystemInitF = 1; + } + else { + s16 group_thp; + BOOL skip_wait; + float win_size[2]; + s16 sprite_thp; + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].pad_idx = i; + } + #if VERSION_PAL + if(SystemInitF) { + data = HuSprAnimReadFile(TITLE_HUDSON_ANM); + sprite_hudson = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 1, sprite_hudson); + HuSprPosSet(group, 1, 288, 240); + HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); + HuAudSndGrpSetSet(0); + BootTitleCreate(); + HuWinInit(1); + } + #endif + repeat: + HuSprAttrReset(group, 0, HUSPR_ATTR_DISPOFF); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + WipeColorSet(255, 255, 255); + if (!SystemInitF) { + tick_prev = OSGetTick(); + CharManInit(); + HuWindowInit(); + MGSeqInit(); + HuWinInit(1); + BootTitleCreate(); + data = HuSprAnimReadFile(TITLE_HUDSON_ANM); + sprite_hudson = HuSprCreate(data, 0, 0); + HuSprGrpMemberSet(group, 1, sprite_hudson); + HuSprPosSet(group, 1, 288, 240); + HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); + while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { + HuPrcVSleep(); + } + } + else { + for (i = 0; i < 180; i++) { + #if VERSION_NTSC + if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { + break; + } + #else + if (initLanguageF && (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A))) { + break; + } + #endif + HuPrcVSleep(); + } + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(group, 1, HUSPR_ATTR_DISPOFF); + HuPrcSleep(60); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + if (!SystemInitF) { + void *group_samp; + tick_prev = OSGetTick(); + group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0)); + msmSysLoadGroup(0, group_samp, 0); + HuMemDirectFree(group_samp); + while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { + HuPrcVSleep(); + } + } + else { + for (i = 0; i < 180; i++) { + #if VERSION_NTSC + if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { + break; + } + #else + if (initLanguageF && (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A))) { + break; + } + #endif + HuPrcVSleep(); + } + } + #if VERSION_PAL + initLanguageF = TRUE; + #endif + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + tick_prev = OSGetTick(); + if (!SystemInitF) { + HuAudSndGrpSetSet(0); + SystemInitF = 1; + } + while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 1000) { + HuPrcVSleep(); + } + HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); + group_thp = HuSprGrpCreate(1); + sprite_thp = HuTHPSprCreateVol("movie/opmov_a00.thp", 0, 100, 122); + HuSprGrpMemberSet(group_thp, 0, sprite_thp); + HuSprPosSet(group_thp, 0, 288, 240); + HuWinMesMaxSizeBetGet(win_size, MAKE_MESSID(54, 0), MAKE_MESSID(54, 4)); + demoWinId = HuWinCreate(-10000, 448 - win_size[1], win_size[0], win_size[1], 0); + HuWinMesSpeedSet(demoWinId, 0); + HuWinBGTPLvlSet(demoWinId, 0); + HuWinPriSet(demoWinId, 10); + HuWinAttrSet(demoWinId, 0x800); + HuPrcSleep(5); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet()) { + HuPrcVSleep(); + } + skip_wait = FALSE; + while (!HuTHPEndCheck()) { + UpdateDemoMess(); + if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { + skip_wait = TRUE; + break; + } + HuPrcVSleep(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuWinKill(demoWinId); + HuTHPClose(); + HuPrcVSleep(); + HuSprGrpKill(group_thp); + if (!skip_wait) { + HuPrcSleep(60); + } + skip_wait = FALSE; + } + if (!BootTitleExec()) { + HuPrcSleep(60); + goto repeat; + } + WipeColorSet(255, 255, 255); + HuAudSStreamAllFadeOut(500); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuPrcVSleep(); + if (omSysExitReq) { + omOvlReturnEx(1, 1); + } + else { + omOvlCallEx(OVL_MODESEL, 1, 0, 0); + } + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].character = -1; + } + HuPrcEnd(); + do { + HuPrcVSleep(); + } while (1); + } -static s16 demoMessTimeTbl[] = { - 1686, - 1785, - 1850, - 1936, - 1993, - 2097, - 2135, - 2245, - 2258, - 2320, - -1, - -1, -}; + static s16 demoMessTimeTbl[] = { + 1686, + 1785, + 1850, + 1936, + 1993, + 2097, + 2135, + 2245, + 2258, + 2320, + -1, + -1, + }; -static void UpdateDemoMess(void) -{ - int frame = HuTHPFrameGet(); - int i; - for (i = 0; demoMessTimeTbl[i * 2] != -1; i++) { - if (frame == demoMessTimeTbl[i * 2]) { - HuWinMesSet(demoWinId, MAKE_MESSID(54, i)); - } - if (frame == demoMessTimeTbl[(i * 2) + 1]) { - HuWinHomeClear(demoWinId); - } - } -} + static void UpdateDemoMess(void) + { + int frame = HuTHPFrameGet(); + int i; + for (i = 0; demoMessTimeTbl[i * 2] != -1; i++) { + if (frame == demoMessTimeTbl[i * 2]) { + HuWinMesSet(demoWinId, MAKE_MESSID(54, i)); + } + if (frame == demoMessTimeTbl[(i * 2) + 1]) { + HuWinHomeClear(demoWinId); + } + } + } -#if VERSION_NTSC +// #if VERSION_NTSC -static u16 progPosTbl[] = { 236, 313, 353, 313 }; +// static u16 progPosTbl[] = { 236, 313, 353, 313 }; -void BootProgExec(void) -{ - s16 i; - s16 option; - s16 group; - s16 sprite; - AnimData *data; - option = 0; - if (OSGetResetCode() != OS_RESET_RESTART) { - return; - } - if (VIGetDTVStatus() != VI_NON_INTERLACE) { - OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); - return; - } - if (OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_OFF && !(HU_PAD_BTN_ALL & PAD_BUTTON_B)) { - return; - } - if (OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_ON) { - VIConfigure(&GXNtsc480IntDf); - VIFlush(); - } - group = HuSprGrpCreate(3); - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CHOOSE_ANM); - sprite = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 0, sprite); - HuSprPosSet(group, 0, 288, 240); - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_ON_ANM); - sprite = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 1, sprite); - HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_OFF_ANM); - sprite = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 2, sprite); - HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); - HuSprAttrSet(group, 2, HUSPR_ATTR_DISPOFF); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - for (i = 0; i < 600; i++) { - if (HU_PAD_DSTK_ALL & (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT)) { - option ^= 1; - HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); - i = 0; - } - if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { - HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); - HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); - HuSprAttrReset(group, 2, HUSPR_ATTR_DISPOFF); - break; - } - HuPrcVSleep(); - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); - while (WipeStatGet()) { - HuPrcVSleep(); - } - if (!option) { - OSSetProgressiveMode(OS_PROGRESSIVE_MODE_ON); - VIConfigure(&GXNtsc480Prog); - VIFlush(); - HuPrcSleep(100); - } - else { - OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); - } - HuSprGrpKill(group); - group = HuSprGrpCreate(1); - if (!option) { - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_ON_ANM); - } - else { - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_OFF_ANM); - } - sprite = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 0, sprite); - HuSprPosSet(group, 0, 288, 240); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); - while (WipeStatGet()) { - HuPrcVSleep(); - } - HuPrcSleep(60); - for (i = 0; i < 180; i++) { - if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { - break; - } - HuPrcVSleep(); - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - HuSprGrpKill(group); - HuPrcSleep(30); -} +// void BootProgExec(void) +// { +// s16 i; +// s16 option; +// s16 group; +// s16 sprite; +// AnimData *data; +// option = 0; +// if (OSGetResetCode() != OS_RESET_RESTART) { +// return; +// } +// if (VIGetDTVStatus() != VI_NON_INTERLACE) { +// OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); +// return; +// } +// if (OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_OFF && !(HU_PAD_BTN_ALL & PAD_BUTTON_B)) { +// return; +// } +// if (OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_ON) { +// VIConfigure(&GXNtsc480IntDf); +// VIFlush(); +// } +// group = HuSprGrpCreate(3); +// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CHOOSE_ANM); +// sprite = HuSprCreate(data, 0, 0); +// HuSprGrpMemberSet(group, 0, sprite); +// HuSprPosSet(group, 0, 288, 240); +// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_ON_ANM); +// sprite = HuSprCreate(data, 0, 0); +// HuSprGrpMemberSet(group, 1, sprite); +// HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); +// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_OFF_ANM); +// sprite = HuSprCreate(data, 0, 0); +// HuSprGrpMemberSet(group, 2, sprite); +// HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); +// HuSprAttrSet(group, 2, HUSPR_ATTR_DISPOFF); +// WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); +// while (WipeStatGet()) { +// HuPrcVSleep(); +// } +// for (i = 0; i < 600; i++) { +// if (HU_PAD_DSTK_ALL & (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT)) { +// option ^= 1; +// HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); +// i = 0; +// } +// if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { +// HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); +// HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); +// HuSprAttrReset(group, 2, HUSPR_ATTR_DISPOFF); +// break; +// } +// HuPrcVSleep(); +// } +// WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); +// while (WipeStatGet()) { +// HuPrcVSleep(); +// } +// if (!option) { +// OSSetProgressiveMode(OS_PROGRESSIVE_MODE_ON); +// VIConfigure(&GXNtsc480Prog); +// VIFlush(); +// HuPrcSleep(100); +// } +// else { +// OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); +// } +// HuSprGrpKill(group); +// group = HuSprGrpCreate(1); +// if (!option) { +// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_ON_ANM); +// } +// else { +// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_OFF_ANM); +// } +// sprite = HuSprCreate(data, 0, 0); +// HuSprGrpMemberSet(group, 0, sprite); +// HuSprPosSet(group, 0, 288, 240); +// WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); +// while (WipeStatGet()) { +// HuPrcVSleep(); +// } +// HuPrcSleep(60); +// for (i = 0; i < 180; i++) { +// if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { +// break; +// } +// HuPrcVSleep(); +// } +// WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); +// while (WipeStatGet()) { +// HuPrcVSleep(); +// } +// HuSprGrpKill(group); +// HuPrcSleep(30); +// } -#endif +// #endif -static u16 debugCamTbl[] = { 1, 2 }; +// static u16 debugCamTbl[] = { 1, 2 }; -void DebugCamOutView(omObjData *obj) -{ - s16 i; - for (i = 0; i < 1; i++) { - Vec pos, target, up; - float x, y, z; +// void DebugCamOutView(omObjData *obj) +// { +// s16 i; +// for (i = 0; i < 1; i++) { +// Vec pos, target, up; +// float x, y, z; - x = debugCamRot[i].x; - y = debugCamRot[i].y; - z = debugCamRot[i].z; +// x = debugCamRot[i].x; +// y = debugCamRot[i].y; +// z = debugCamRot[i].z; - pos.x = (((sind(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].x); - pos.y = (-sind(x) * debugCamZoom[i]) + debugCamPos[i].y; - pos.z = ((cosd(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].z; - target.x = debugCamPos[i].x; - target.y = debugCamPos[i].y; - target.z = debugCamPos[i].z; - up.x = sind(y) * sind(x); - up.y = cosd(x); - up.z = cosd(y) * sind(x); - Hu3DCameraPosSet(debugCamTbl[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); - } -} +// pos.x = (((sind(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].x); +// pos.y = (-sind(x) * debugCamZoom[i]) + debugCamPos[i].y; +// pos.z = ((cosd(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].z; +// target.x = debugCamPos[i].x; +// target.y = debugCamPos[i].y; +// target.z = debugCamPos[i].z; +// up.x = sind(y) * sind(x); +// up.y = cosd(x); +// up.z = cosd(y) * sind(x); +// Hu3DCameraPosSet(debugCamTbl[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); +// } +// } -void DebugCamUpdate(omObjData *obj) -{ - Vec pos; - Vec offset; - Vec dir; - Vec y_offset; +// void DebugCamUpdate(omObjData *obj) +// { +// Vec pos; +// Vec offset; +// Vec dir; +// Vec y_offset; - f32 z_rot; - s8 stick_pos; +// f32 z_rot; +// s8 stick_pos; - #if VERSION_NTSC - if ((HuPadBtnDown[0] & 0x800)) { - debugCamOnF = (debugCamOnF) ? 0 : 1; - } - #endif - if (debugCamOnF != 0) { - debugCamRot[0].y += 0.1f * HuPadStkX[0]; - debugCamRot[0].x += 0.1f * HuPadStkY[0]; - debugCamZoom[0] += HuPadTrigL[0] / 2; - debugCamZoom[0] -= HuPadTrigR[0] / 2; - if (debugCamZoom[0] < 100.0f) { - debugCamZoom[0] = 100.0f; - } - pos.x = debugCamPos[0].x + (debugCamZoom[0] * (sind(debugCamRot[0].y) * cosd(debugCamRot[0].x))); - pos.y = (debugCamPos[0].y + (debugCamZoom[0] * -sind(debugCamRot[0].x))); - pos.z = (debugCamPos[0].z + (debugCamZoom[0] * (cosd(debugCamRot[0].y) * cosd(debugCamRot[0].x)))); - offset.x = debugCamPos[0].x - pos.x; - offset.y = debugCamPos[0].y - pos.y; - offset.z = debugCamPos[0].z - pos.z; - dir.x = (sind(debugCamRot[0].y) * sind(debugCamRot[0].x)); - dir.y = cosd(debugCamRot[0].x); - dir.z = (cosd(debugCamRot[0].y) * sind(debugCamRot[0].x)); - z_rot = debugCamRot[0].z; - y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot)) - + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot)) - + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot)); +// #if VERSION_NTSC +// if ((HuPadBtnDown[0] & 0x800)) { +// debugCamOnF = (debugCamOnF) ? 0 : 1; +// } +// #endif +// if (debugCamOnF != 0) { +// debugCamRot[0].y += 0.1f * HuPadStkX[0]; +// debugCamRot[0].x += 0.1f * HuPadStkY[0]; +// debugCamZoom[0] += HuPadTrigL[0] / 2; +// debugCamZoom[0] -= HuPadTrigR[0] / 2; +// if (debugCamZoom[0] < 100.0f) { +// debugCamZoom[0] = 100.0f; +// } +// pos.x = debugCamPos[0].x + (debugCamZoom[0] * (sind(debugCamRot[0].y) * cosd(debugCamRot[0].x))); +// pos.y = (debugCamPos[0].y + (debugCamZoom[0] * -sind(debugCamRot[0].x))); +// pos.z = (debugCamPos[0].z + (debugCamZoom[0] * (cosd(debugCamRot[0].y) * cosd(debugCamRot[0].x)))); +// offset.x = debugCamPos[0].x - pos.x; +// offset.y = debugCamPos[0].y - pos.y; +// offset.z = debugCamPos[0].z - pos.z; +// dir.x = (sind(debugCamRot[0].y) * sind(debugCamRot[0].x)); +// dir.y = cosd(debugCamRot[0].x); +// dir.z = (cosd(debugCamRot[0].y) * sind(debugCamRot[0].x)); +// z_rot = debugCamRot[0].z; +// y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot)) +// + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot)) +// + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot)); - y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot)) - + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot)) - + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot)); +// y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot)) +// + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot)) +// + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot)); - y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot)) - + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot)) - + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot))); +// y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot)) +// + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot)) +// + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot))); - VECCrossProduct(&dir, &offset, &offset); - VECNormalize(&offset, &offset); - stick_pos = (HuPadSubStkX[0] & 0xF8); - if (stick_pos != 0) { - debugCamPos[0].x += 0.05f * (offset.x * stick_pos); - debugCamPos[0].y += 0.05f * (offset.y * stick_pos); - debugCamPos[0].z += 0.05f * (offset.z * stick_pos); - } - VECNormalize(&y_offset, &offset); - stick_pos = -(HuPadSubStkY[0] & 0xF8); - if (stick_pos != 0) { - debugCamPos[0].x += 0.05f * (offset.x * stick_pos); - debugCamPos[0].y += 0.05f * (offset.y * stick_pos); - debugCamPos[0].z += 0.05f * (offset.z * stick_pos); - } - } -} +// VECCrossProduct(&dir, &offset, &offset); +// VECNormalize(&offset, &offset); +// stick_pos = (HuPadSubStkX[0] & 0xF8); +// if (stick_pos != 0) { +// debugCamPos[0].x += 0.05f * (offset.x * stick_pos); +// debugCamPos[0].y += 0.05f * (offset.y * stick_pos); +// debugCamPos[0].z += 0.05f * (offset.z * stick_pos); +// } +// VECNormalize(&y_offset, &offset); +// stick_pos = -(HuPadSubStkY[0] & 0xF8); +// if (stick_pos != 0) { +// debugCamPos[0].x += 0.05f * (offset.x * stick_pos); +// debugCamPos[0].y += 0.05f * (offset.y * stick_pos); +// debugCamPos[0].z += 0.05f * (offset.z * stick_pos); +// } +// } +// } -void BootTitleCreate(void) -{ - s16 model; - s16 sprite; - AnimData *sprite_data; - s16 i; - titleMdlId[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF); - Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); - titleMdlId[1] = model = Hu3DModelCreateFile(TITLE_CUBE_HSF); - Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); - titleMdlId[2] = model = Hu3DModelCreateFile(TITLE_SKY_HSF); - Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); - Hu3DModelCameraInfoSet(model, 1); - Hu3DModelLightInfoSet(model, 1); - #if VERSION_NTSC - bootGrpId = HuSprGrpCreate(4); - #else - bootGrpId = HuSprGrpCreate(13); - #endif - sprite_data = HuSprAnimReadFile(TITLE_BG_ANM); - sprite = HuSprCreate(sprite_data, 0, 0); - HuSprGrpMemberSet(bootGrpId, 0, sprite); - HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); - HuSprDrawNoSet(bootGrpId, 0, 127); - HuSprPosSet(bootGrpId, 0, 288, 240); - sprite_data = HuSprAnimReadFile(TITLE_COPYRIGHT_ANM); - sprite = HuSprCreate(sprite_data, 1, 0); - HuSprGrpMemberSet(bootGrpId, 1, sprite); - HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); - HuSprPosSet(bootGrpId, 1, 288, 420); - #if VERSION_NTSC - sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_ANM); - sprite = HuSprCreate(sprite_data, 2, 0); - HuSprGrpMemberSet(bootGrpId, 2, sprite); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); - HuSprPosSet(bootGrpId, 2, 288, 380); - sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); - sprite = HuSprCreate(sprite_data, 0, 0); - HuSprGrpMemberSet(bootGrpId, 3, sprite); - HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); - HuSprPosSet(bootGrpId, 3, 288, 200); - #else - sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); - sprite = HuSprCreate(sprite_data, 0, 0); - HuSprGrpMemberSet(bootGrpId, 2, sprite); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); - HuSprPosSet(bootGrpId, 2, 288, 200); - for(i=0; i<5; i++) { - sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_EN_ANM+i); - sprite = HuSprCreate(sprite_data, 3+i, 0); - HuSprGrpMemberSet(bootGrpId, 3+i, sprite); - HuSprAttrSet(bootGrpId, 3+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); - HuSprPosSet(bootGrpId, 3+i, 288, 340); - } - for(i=0; i<5; i++) { - sprite_data = HuSprAnimReadFile(TITLE_LANGUAGE_EN_ANM+i); - sprite = HuSprCreate(sprite_data, 8+i, 0); - HuSprGrpMemberSet(bootGrpId, 8+i, sprite); - HuSprAttrSet(bootGrpId, 8+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); - HuSprPosSet(bootGrpId, 8+i, 288, 380); - } - #endif -} +// void BootTitleCreate(void) +// { +// s16 model; +// s16 sprite; +// AnimData *sprite_data; +// s16 i; +// titleMdlId[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF); +// Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); +// Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); +// titleMdlId[1] = model = Hu3DModelCreateFile(TITLE_CUBE_HSF); +// Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); +// Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); +// titleMdlId[2] = model = Hu3DModelCreateFile(TITLE_SKY_HSF); +// Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); +// Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); +// Hu3DModelCameraInfoSet(model, 1); +// Hu3DModelLightInfoSet(model, 1); +// #if VERSION_NTSC +// bootGrpId = HuSprGrpCreate(4); +// #else +// bootGrpId = HuSprGrpCreate(13); +// #endif +// sprite_data = HuSprAnimReadFile(TITLE_BG_ANM); +// sprite = HuSprCreate(sprite_data, 0, 0); +// HuSprGrpMemberSet(bootGrpId, 0, sprite); +// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); +// HuSprDrawNoSet(bootGrpId, 0, 127); +// HuSprPosSet(bootGrpId, 0, 288, 240); +// sprite_data = HuSprAnimReadFile(TITLE_COPYRIGHT_ANM); +// sprite = HuSprCreate(sprite_data, 1, 0); +// HuSprGrpMemberSet(bootGrpId, 1, sprite); +// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); +// HuSprPosSet(bootGrpId, 1, 288, 420); +// #if VERSION_NTSC +// sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_ANM); +// sprite = HuSprCreate(sprite_data, 2, 0); +// HuSprGrpMemberSet(bootGrpId, 2, sprite); +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); +// HuSprPosSet(bootGrpId, 2, 288, 380); +// sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); +// sprite = HuSprCreate(sprite_data, 0, 0); +// HuSprGrpMemberSet(bootGrpId, 3, sprite); +// HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); +// HuSprPosSet(bootGrpId, 3, 288, 200); +// #else +// sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); +// sprite = HuSprCreate(sprite_data, 0, 0); +// HuSprGrpMemberSet(bootGrpId, 2, sprite); +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); +// HuSprPosSet(bootGrpId, 2, 288, 200); +// for(i=0; i<5; i++) { +// sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_EN_ANM+i); +// sprite = HuSprCreate(sprite_data, 3+i, 0); +// HuSprGrpMemberSet(bootGrpId, 3+i, sprite); +// HuSprAttrSet(bootGrpId, 3+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); +// HuSprPosSet(bootGrpId, 3+i, 288, 340); +// } +// for(i=0; i<5; i++) { +// sprite_data = HuSprAnimReadFile(TITLE_LANGUAGE_EN_ANM+i); +// sprite = HuSprCreate(sprite_data, 8+i, 0); +// HuSprGrpMemberSet(bootGrpId, 8+i, sprite); +// HuSprAttrSet(bootGrpId, 8+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); +// HuSprPosSet(bootGrpId, 8+i, 288, 380); +// } +// #endif +// } -BOOL BootTitleExec(void) -{ - float scale; - float scale_time; - int seNo[32]; - s16 pressStartMemberNo; - s16 languageMemberNo; - s16 i; - s16 choice; - float temp; - repeat: - Hu3DModelAttrReset(titleMdlId[0], HU3D_ATTR_DISPOFF); - Hu3DModelAttrReset(titleMdlId[1], HU3D_ATTR_DISPOFF); - HuSprAttrReset(bootGrpId, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrReset(bootGrpId, 1, HUSPR_ATTR_DISPOFF); - OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, seNo)); - OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0)); - HuAudSStreamPlay(20); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - #if VERSION_NTSC - HuSprAttrReset(bootGrpId, 3, HUSPR_ATTR_DISPOFF); - for (i = 1; i <= 50; i++) { - scale = (cosd(i * 1.8) * 10.0) + 1.0; - HuSprScaleSet(bootGrpId, 3, scale, scale); - HuSprTPLvlSet(bootGrpId, 3, i / 50.0); - HuPrcVSleep(); - } - HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - #else - HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - for (i = 1; i <= 50; i++) { - scale = (cosd(i * 1.8) * 10.0) + 1.0; - HuSprScaleSet(bootGrpId, 2, scale, scale); - HuSprTPLvlSet(bootGrpId, 2, i / 50.0); - HuPrcVSleep(); - } - if(GwLanguage == -1) { - pressStartMemberNo = 3; - languageMemberNo = 8; - } else { - pressStartMemberNo = GwLanguage+3-1; - languageMemberNo = GwLanguage+8-1; - } - HuSprAttrReset(bootGrpId, pressStartMemberNo, HUSPR_ATTR_DISPOFF); - HuSprAttrReset(bootGrpId, languageMemberNo, HUSPR_ATTR_DISPOFF); - for(i=1; i<=20; i++) { - scale = sind(i*4.5); - HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); - HuSprScaleSet(bootGrpId, languageMemberNo, scale*0.7, scale*0.7); - HuPrcVSleep(); - } - choice = 0; - scale_time = 0; - #endif +// BOOL BootTitleExec(void) +// { +// float scale; +// float scale_time; +// int seNo[32]; +// s16 pressStartMemberNo; +// s16 languageMemberNo; +// s16 i; +// s16 choice; +// float temp; +// repeat: +// Hu3DModelAttrReset(titleMdlId[0], HU3D_ATTR_DISPOFF); +// Hu3DModelAttrReset(titleMdlId[1], HU3D_ATTR_DISPOFF); +// HuSprAttrReset(bootGrpId, 0, HUSPR_ATTR_DISPOFF); +// HuSprAttrReset(bootGrpId, 1, HUSPR_ATTR_DISPOFF); +// OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, seNo)); +// OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0)); +// HuAudSStreamPlay(20); +// WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); +// while (WipeStatGet()) { +// HuPrcVSleep(); +// } +// #if VERSION_NTSC +// HuSprAttrReset(bootGrpId, 3, HUSPR_ATTR_DISPOFF); +// for (i = 1; i <= 50; i++) { +// scale = (cosd(i * 1.8) * 10.0) + 1.0; +// HuSprScaleSet(bootGrpId, 3, scale, scale); +// HuSprTPLvlSet(bootGrpId, 3, i / 50.0); +// HuPrcVSleep(); +// } +// HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// #else +// HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// for (i = 1; i <= 50; i++) { +// scale = (cosd(i * 1.8) * 10.0) + 1.0; +// HuSprScaleSet(bootGrpId, 2, scale, scale); +// HuSprTPLvlSet(bootGrpId, 2, i / 50.0); +// HuPrcVSleep(); +// } +// if(GwLanguage == -1) { +// pressStartMemberNo = 3; +// languageMemberNo = 8; +// } else { +// pressStartMemberNo = GwLanguage+3-1; +// languageMemberNo = GwLanguage+8-1; +// } +// HuSprAttrReset(bootGrpId, pressStartMemberNo, HUSPR_ATTR_DISPOFF); +// HuSprAttrReset(bootGrpId, languageMemberNo, HUSPR_ATTR_DISPOFF); +// for(i=1; i<=20; i++) { +// scale = sind(i*4.5); +// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); +// HuSprScaleSet(bootGrpId, languageMemberNo, scale*0.7, scale*0.7); +// HuPrcVSleep(); +// } +// choice = 0; +// scale_time = 0; +// #endif - #if VERSION_NTSC - for (i = scale_time = 0; i < 1800; i++) { - #else - for (i = temp = 0; i < 1800; i++) { - #endif - #if VERSION_PAL - if((choice == 0 && (HuPadDStkRep[0] & PAD_BUTTON_DOWN)) || (choice != 0 && (HuPadDStkRep[0] & PAD_BUTTON_UP))) { - HuAudFXPlay(0); - for(i=1; i<=10; i++) { - scale = ((1-(i/10.0))*(((cosd(scale_time)*0.1)+0.9)-0.7))+0.7; - if(choice == 0) { - HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); - } else { - HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); - } - scale = ((1-(i/10.0))*(((cosd(scale_time/3.0)*0.05)+0.65)-1.0))+1.0; - if(choice == 0) { - HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); - } else { - HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); - } - HuPrcVSleep(); - } - choice ^= 1; - scale_time = 0; - } - if (HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) { - if(choice == 0) { - s32 ret = HuAudFXPlay(2092); - if (ret < 0) { - OSReport(">>>>>Error %d\n", ret); - } - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - return 1; - } else { - HuAudFXPlay(1); - HuAudSStreamAllFadeOut(500); - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - for(i=0; i<5; i++) { - HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); - } - for(i=0; i<5; i++) { - HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); - } - LanguageMenuExec(); - Hu3DModelCameraInfoSet(titleMdlId[2], 1); - Hu3DModelLightInfoSet(titleMdlId[2], 1); - HuWinInit(1); - goto repeat; - } - } - scale = (cosd(scale_time) * 0.1) + 0.9; - if(choice == 0) { - HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); - } else { - HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); - } - scale = (cosd(scale_time/3.0) * 0.05) + 0.65; - if(choice == 0) { - HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); - } else { - HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); - } - scale_time += 5; - HuPrcVSleep(); - #else - if (i <= 10) { - HuSprTPLvlSet(bootGrpId, 2, i / 10.0); - } - if (HuPadBtnDown[0] & PAD_BUTTON_START) { - s32 ret = HuAudFXPlay(2092); - if (ret < 0) { - OSReport(">>>>>Error %d\n", ret); - } - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - return 1; - } - scale = (sind(i * scale_time) * 0.1) + 0.9; - scale_time += 0.05; - if (scale_time > 5) { - scale_time = 5; - } - HuSprScaleSet(bootGrpId, 2, scale, scale); - HuPrcVSleep(); - #endif +// #if VERSION_NTSC +// for (i = scale_time = 0; i < 1800; i++) { +// #else +// for (i = temp = 0; i < 1800; i++) { +// #endif +// #if VERSION_PAL +// if((choice == 0 && (HuPadDStkRep[0] & PAD_BUTTON_DOWN)) || (choice != 0 && (HuPadDStkRep[0] & PAD_BUTTON_UP))) { +// HuAudFXPlay(0); +// for(i=1; i<=10; i++) { +// scale = ((1-(i/10.0))*(((cosd(scale_time)*0.1)+0.9)-0.7))+0.7; +// if(choice == 0) { +// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); +// } else { +// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); +// } +// scale = ((1-(i/10.0))*(((cosd(scale_time/3.0)*0.05)+0.65)-1.0))+1.0; +// if(choice == 0) { +// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); +// } else { +// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); +// } +// HuPrcVSleep(); +// } +// choice ^= 1; +// scale_time = 0; +// } +// if (HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) { +// if(choice == 0) { +// s32 ret = HuAudFXPlay(2092); +// if (ret < 0) { +// OSReport(">>>>>Error %d\n", ret); +// } +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// return 1; +// } else { +// HuAudFXPlay(1); +// HuAudSStreamAllFadeOut(500); +// WipeColorSet(255, 255, 255); +// WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); +// while (WipeStatGet()) { +// HuPrcVSleep(); +// } +// Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); +// Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); +// Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// for(i=0; i<5; i++) { +// HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); +// } +// for(i=0; i<5; i++) { +// HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); +// } +// LanguageMenuExec(); +// Hu3DModelCameraInfoSet(titleMdlId[2], 1); +// Hu3DModelLightInfoSet(titleMdlId[2], 1); +// HuWinInit(1); +// goto repeat; +// } +// } +// scale = (cosd(scale_time) * 0.1) + 0.9; +// if(choice == 0) { +// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); +// } else { +// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); +// } +// scale = (cosd(scale_time/3.0) * 0.05) + 0.65; +// if(choice == 0) { +// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); +// } else { +// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); +// } +// scale_time += 5; +// HuPrcVSleep(); +// #else +// if (i <= 10) { +// HuSprTPLvlSet(bootGrpId, 2, i / 10.0); +// } +// if (HuPadBtnDown[0] & PAD_BUTTON_START) { +// s32 ret = HuAudFXPlay(2092); +// if (ret < 0) { +// OSReport(">>>>>Error %d\n", ret); +// } +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// return 1; +// } +// scale = (sind(i * scale_time) * 0.1) + 0.9; +// scale_time += 0.05; +// if (scale_time > 5) { +// scale_time = 5; +// } +// HuSprScaleSet(bootGrpId, 2, scale, scale); +// HuPrcVSleep(); +// #endif - } - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while (WipeStatGet()) { - HuPrcVSleep(); - } - Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); - #if VERSION_NTSC - HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF); - #else - HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); - for(i=0; i<5; i++) { - HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); - } - for(i=0; i<5; i++) { - HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); - } - #endif - return 0; -} +// } +// WipeColorSet(255, 255, 255); +// WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); +// while (WipeStatGet()) { +// HuPrcVSleep(); +// } +// Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); +// Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); +// Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); +// #if VERSION_NTSC +// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF); +// #else +// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); +// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); +// for(i=0; i<5; i++) { +// HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); +// } +// for(i=0; i<5; i++) { +// HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); +// } +// #endif +// return 0; +// } -#include "nintendoData.inc" +// #include "nintendoData.inc" -void *NintendoDataDecode(void) -{ - u32 *src = (u32 *)nintendoData; - u32 size = *src++; - void *dst = HuMemDirectMalloc(HEAP_DATA, size); - int decode_type = *src++; - if(dst) { - HuDecodeData(src, dst, size, decode_type); - } - return dst; -} +// void *NintendoDataDecode(void) +// { +// u32 *src = (u32 *)nintendoData; +// u32 size = *src++; +// void *dst = HuMemDirectMalloc(HEAP_DATA, size); +// int decode_type = *src++; +// if(dst) { +// HuDecodeData(src, dst, size, decode_type); +// } +// return dst; +// } diff --git a/src/game/gamework.c b/src/game/gamework.c index 5c19db71..3c066ff6 100644 --- a/src/game/gamework.c +++ b/src/game/gamework.c @@ -4,14 +4,14 @@ #include "string.h" #include "version.h" -s16 GwLanguage = 1; -s16 GwLanguageSave = -1; +SHARED_SYM s16 GwLanguage = 1; +SHARED_SYM s16 GwLanguageSave = -1; -GameStat GWGameStatDefault; -GameStat GWGameStat; -SystemState GWSystem; -PlayerState GWPlayer[4]; -PlayerConfig GWPlayerCfg[4]; +SHARED_SYM GameStat GWGameStatDefault; +SHARED_SYM GameStat GWGameStat; +SHARED_SYM SystemState GWSystem; +SHARED_SYM PlayerState GWPlayer[4]; +SHARED_SYM PlayerConfig GWPlayerCfg[4]; static inline void GWErase(void) { diff --git a/src/game/main.c b/src/game/main.c index 09931a38..29f1b24f 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -125,7 +125,7 @@ void main(void) GWPlayerCfg[i].character = -1; } - //omMasterInit(0, _ovltbl, OVL_COUNT, OVL_BOOT); + omMasterInit(0, _ovltbl, OVL_COUNT, OVL_BOOT); VIWaitForRetrace(); if (VIGetNextField() == 0) { diff --git a/src/game/objdll.c b/src/game/objdll.c index c1414129..ec0b6b5a 100644 --- a/src/game/objdll.c +++ b/src/game/objdll.c @@ -5,6 +5,10 @@ typedef s32 (*DLLProlog)(void); typedef void (*DLLEpilog)(void); +#ifdef TARGET_PC +typedef void (*DLLObjectSetup)(void); +#endif + omDllData *omDLLinfoTbl[OM_DLL_MAX]; static FileListEntry *omDLLFileList; @@ -31,6 +35,10 @@ s32 omDLLStart(s16 overlay, s16 flag) dllno = omDLLSearch(overlay); if(dllno >= 0 && !flag) { omDllData *dll = omDLLinfoTbl[dllno]; +#ifdef TARGET_PC + // TODO PC + OSReport("objdll>Already Loaded %s\n", dll->name); +#else OSReport("objdll>Already Loaded %s(%08x %08x)\n", dll->name, dll->module, dll->bss); omDLLInfoDump(&dll->module->info); @@ -38,6 +46,7 @@ s32 omDLLStart(s16 overlay, s16 flag) memset(dll->bss, 0, dll->module->bssSize); HuMemDCFlushAll(); dll->ret = ((DLLProlog)dll->module->prolog)(); +#endif OSReport("objdll> %s prolog end\n", dll->name); return dllno; } else { @@ -80,8 +89,10 @@ void omDLLEnd(s16 dllno, s16 flag) } else { omDllData *dll; dll = omDLLinfoTbl[dllno]; +#ifdef __MWERKS__ OSReport("objdll>Call Epilog\n"); ((DLLEpilog)dll->module->epilog)(); +#endif OSReport("objdll>End DLL stayed:%s\n", omDLLinfoTbl[dllno]->name); } OSReport("objdll>End DLL finish\n"); @@ -95,6 +106,12 @@ omDllData *omDLLLink(omDllData **dll_ptr, s16 overlay, s16 flag) dll = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(omDllData)); *dll_ptr = dll; dll->name = dllFile->name; +#ifdef _WIN32 + dll->hModule = LoadLibrary(dllFile->name); + if (dll->hModule == NULL) { + OSReport("objdll>++++++++++++++++ DLL Link Failed\n"); + } +#else dll->module = HuDvdDataReadDirect(dllFile->name, HEAP_SYSTEM); dll->bss = HuMemDirectMalloc(HEAP_SYSTEM, dll->module->bssSize); if(OSLink(&dll->module->info, dll->bss) != TRUE) { @@ -103,9 +120,17 @@ omDllData *omDLLLink(omDllData **dll_ptr, s16 overlay, s16 flag) omDLLInfoDump(&dll->module->info); omDLLHeaderDump(dll->module); OSReport("objdll>LinkOK %08x %08x\n", dll->module, dll->bss); +#endif if(flag == 1) { OSReport("objdll> %s prolog start\n", dllFile->name); +#ifdef _WIN32 + { + DLLObjectSetup objectSetup = (DLLObjectSetup)GetProcAddress(dll->hModule, "ObjectSetup"); + objectSetup(); + } +#else dll->ret = ((DLLProlog)dll->module->prolog)(); +#endif OSReport("objdll> %s prolog end\n", dllFile->name); } return dll; @@ -114,6 +139,9 @@ omDllData *omDLLLink(omDllData **dll_ptr, s16 overlay, s16 flag) void omDLLUnlink(omDllData *dll_ptr, s16 flag) { OSReport("odjdll>Unlink DLL:%s\n", dll_ptr->name); +#ifdef _WIN32 + FreeLibrary(dll_ptr->hModule); +#else if(flag == 1) { OSReport("objdll>Unlink DLL epilog\n"); ((DLLEpilog)dll_ptr->module->epilog)(); @@ -124,6 +152,7 @@ void omDLLUnlink(omDllData *dll_ptr, s16 flag) } HuMemDirectFree(dll_ptr->bss); HuMemDirectFree(dll_ptr->module); +#endif HuMemDirectFree(dll_ptr); } @@ -169,4 +198,4 @@ void omDLLHeaderDump(OSModuleHeader *module) OSReport(" epilog func:0x%08x\n", module->epilog); OSReport(" unresolved func:0x%08x\n", module->unresolved); OSReport("================================\n"); -} \ No newline at end of file +} diff --git a/src/game/objmain.c b/src/game/objmain.c index 39bc9e12..a0e433c4 100644 --- a/src/game/objmain.c +++ b/src/game/objmain.c @@ -1,12 +1,13 @@ #include "game/audio.h" #include "game/chrman.h" #include "game/esprite.h" +#include "game/flag.h" #include "game/hsfdraw.h" #include "game/hsfman.h" -#include "game/printfunc.h" #include "game/object.h" #include "game/pad.h" -#include "game/flag.h" +#include "game/printfunc.h" + #define OM_OVL_HIS_MAX 16 #define OM_MAX_GROUPS 10 @@ -33,21 +34,21 @@ typedef struct om_obj_man { omObjData *omDBGSysKeyObj; Process *omwatchproc; OverlayID omnextovl; -OverlayID omcurovl; +SHARED_SYM OverlayID omcurovl; s32 omcurdll; -s32 omovlhisidx; -s32 omovlevtno; +SHARED_SYM s32 omovlhisidx; +SHARED_SYM s32 omovlevtno; s32 omnextovlevtno; -u32 omovlstat; +SHARED_SYM u32 omovlstat; static s32 omnextovlstat; char omUPauseFlag; -s16 omSysExitReq; +SHARED_SYM s16 omSysExitReq; s16 omdispinfo; static omOvlHisData omovlhis[OM_OVL_HIS_MAX]; -u8 omSysPauseEnableFlag = TRUE; -OverlayID omprevovl = OVL_INVALID; +SHARED_SYM u8 omSysPauseEnableFlag = TRUE; +SHARED_SYM OverlayID omprevovl = OVL_INVALID; static void omWatchOverlayProc(void); static void omInsertObj(Process *objman_process, omObjData *object); @@ -61,14 +62,17 @@ void omMasterInit(s32 prio, FileListEntry *ovl_list, s32 ovl_count, OverlayID st omovlhisidx = -1; omOvlCallEx(start_ovl, 1, 0, 0); omDBGSysKeyObj = NULL; +#ifdef __MWERKS__ + // TODO PC omSysPauseEnable(TRUE); +#endif } static void omWatchOverlayProc(void) { - while(1) { - if(omcurovl == OVL_INVALID) { - if(omnextovl >= 0 && fadeStat == 0) { + while (1) { + if (omcurovl == OVL_INVALID) { + if (omnextovl >= 0 && fadeStat == 0) { HuPrcSleep(0); OSReport("++++++++++++++++++++ Start New OVL %d (EVT:%d STAT:0x%08x) ++++++++++++++++++\n", omnextovl, omnextovlevtno, omnextovlstat); HuMemHeapDump(HuMemHeapPtrGet(HEAP_SYSTEM), -1); @@ -79,28 +83,37 @@ static void omWatchOverlayProc(void) OSReport("objman>Init esp\n"); espInit(); OSReport("objman>Call objectsetup\n"); +#ifdef __MWERKS__ + // TODO PC HuAudVoiceInit(omnextovl); HuAudDllSndGrpSet(omnextovl); +#endif omcurovl = omnextovl; omovlevtno = omnextovlevtno; omovlstat = omnextovlstat; omnextovl = OVL_INVALID; - if(_CheckFlag(FLAG_ID_MAKE(1, 12))) { +#ifdef __MWERKS__ + // TODO PC + if (_CheckFlag(FLAG_ID_MAKE(1, 12))) { MGSeqPracticeInit(); } omSysPauseEnable(TRUE); +#endif omcurdll = omDLLStart(omcurovl, 0); OSReport("objman>ObjectSetup end\n"); - if(omcurovl != OVL_INVALID) { + if (omcurovl != OVL_INVALID) { goto watch_child; - } else { + } + else { continue; } - } else { + } + else { HuPrcVSleep(); } - } else { - watch_child: + } + else { + watch_child: HuPrcChildWatch(); } } @@ -109,7 +122,7 @@ static void omWatchOverlayProc(void) void omOvlCallEx(OverlayID overlay, s16 arg2, s32 event, s32 stat) { OSReport("objman>Call New Ovl %d(%d)\n", overlay, arg2); - if(omovlhisidx >= OM_OVL_HIS_MAX) { + if (omovlhisidx >= OM_OVL_HIS_MAX) { OSReport("objman>OVL Call over error\n"); return; } @@ -122,7 +135,7 @@ void omOvlCallEx(OverlayID overlay, s16 arg2, s32 event, s32 stat) void omOvlGotoEx(OverlayID overlay, s16 arg2, s32 event, s32 stat) { omprevovl = omcurovl; - if(omcurovl >= 0) { + if (omcurovl >= 0) { omOvlKill(arg2); } omnextovl = overlay; @@ -134,7 +147,7 @@ void omOvlReturnEx(s16 level, s16 arg2) { omovlhisidx -= level; OSReport("objman>Ovl Return %d=%d(%d)\n", level, omovlhisidx, arg2); - if(omovlhisidx < 0) { + if (omovlhisidx < 0) { OSReport("objman>OVL under error\n"); omovlhisidx = 0; } @@ -143,10 +156,16 @@ void omOvlReturnEx(s16 level, s16 arg2) void omOvlKill(s16 arg) { +#ifdef __MWERKS__ + // TODO PC CharModelKill(-1); MGSeqKillAll(); +#endif Hu3DAllKill(); +#ifdef __MWERKS__ + // TODO PC HuWinAllKill(); +#endif HuSprClose(); HuPrcChildKill(omwatchproc); HuMemDirectFreeNum(HEAP_SYSTEM, MEMORY_DEFAULT_NUM); @@ -154,7 +173,10 @@ void omOvlKill(s16 arg) HuMemDirectFreeNum(HEAP_DVD, MEMORY_DEFAULT_NUM); HuMemDirectFreeNum(HEAP_DATA, MEMORY_DEFAULT_NUM); HuPadRumbleAllStop(); +#ifdef __MWERKS__ + // TODO PC HuAudFXListnerKill(); +#endif OSReport("OvlKill %d\n", arg); omSysExitReq = FALSE; omDLLNumEnd(omcurovl, arg); @@ -165,11 +187,11 @@ void omOvlKill(s16 arg) void omOvlHisChg(s32 level, OverlayID overlay, s32 event, s32 stat) { omOvlHisData *history; - if(omovlhisidx-level < 0 || omovlhisidx-level >= OM_OVL_HIS_MAX) { + if (omovlhisidx - level < 0 || omovlhisidx - level >= OM_OVL_HIS_MAX) { OSReport("objman> omOvlHisChg: overlay 実行履歴の範囲外を変更しようとしました\n"); return; } - history = &omovlhis[omovlhisidx-level]; + history = &omovlhis[omovlhisidx - level]; history->overlay = overlay; history->event = event; history->stat = stat; @@ -177,11 +199,11 @@ void omOvlHisChg(s32 level, OverlayID overlay, s32 event, s32 stat) omOvlHisData *omOvlHisGet(s32 level) { - if(omovlhisidx-level < 0 || omovlhisidx-level >= OM_OVL_HIS_MAX) { + if (omovlhisidx - level < 0 || omovlhisidx - level >= OM_OVL_HIS_MAX) { OSReport("objman> omOvlHisGet: overlay 実行履歴の範囲外を参照しようとしました\n"); return NULL; } - return &omovlhis[omovlhisidx-level]; + return &omovlhis[omovlhisidx - level]; } Process *omInitObjMan(s16 max_objs, s32 prio) @@ -196,7 +218,7 @@ Process *omInitObjMan(s16 max_objs, s32 prio) max_objs += 2; omSysExitReq = FALSE; process = HuPrcChildCreate(omMain, prio, 16384, 0, omwatchproc); - HuPrcSetStat(process, PROCESS_STAT_PAUSE_EN|PROCESS_STAT_UPAUSE_EN); + HuPrcSetStat(process, PROCESS_STAT_PAUSE_EN | PROCESS_STAT_UPAUSE_EN); objman = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(omObjMan), MEMORY_DEFAULT_NUM); objman->max_objs = max_objs; process->user_data = objman; @@ -205,24 +227,24 @@ Process *omInitObjMan(s16 max_objs, s32 prio) objman->next_idx = 0; objman->obj_last = -1; objman->obj_first = -1; - obj_all = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(omObjData), MEMORY_DEFAULT_NUM); - objman->obj = obj_all; - group_all = HuMemDirectMallocNum(HEAP_SYSTEM, OM_MAX_GROUPS*sizeof(omObjGroup), MEMORY_DEFAULT_NUM); + obj_all = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs * sizeof(omObjData), MEMORY_DEFAULT_NUM); + objman->obj = obj_all; + group_all = HuMemDirectMallocNum(HEAP_SYSTEM, OM_MAX_GROUPS * sizeof(omObjGroup), MEMORY_DEFAULT_NUM); objman->group = group_all; - for(i=0; istat = 1; - obj->prio = obj->prev =obj->next = -1; + obj->prio = obj->prev = obj->next = -1; obj->unk10 = 0; obj->trans.x = obj->trans.y = obj->trans.z = obj->rot.x = obj->rot.y = obj->rot.z = 0.0f; obj->scale.x = obj->scale.y = obj->scale.z = 1.0f; obj->model = obj->motion = NULL; obj->func = obj->data = NULL; - obj->next_idx = i+1; + obj->next_idx = i + 1; obj->mtncnt = 0; obj->motion = NULL; } - for(i=0; iuser_data; omObjData *obj_base = objman->obj; - if(objman->num_objs == objman->max_objs) { + if (objman->num_objs == objman->max_objs) { return NULL; } next_idx = objman->next_idx; @@ -258,26 +280,29 @@ omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt, object->next_idx_alloc = next_idx; object->prio = prio; omInsertObj(objman_process, object); - if(mdlcnt) { - object->model = HuMemDirectMallocNum(HEAP_SYSTEM, mdlcnt*sizeof(s16), MEMORY_DEFAULT_NUM); + if (mdlcnt) { + object->model = HuMemDirectMallocNum(HEAP_SYSTEM, mdlcnt * sizeof(s16), MEMORY_DEFAULT_NUM); object->mdlcnt = mdlcnt; - for(i=0; imodel[i] = -1; } - } else { + } + else { object->model = NULL; object->mdlcnt = 0; } - if(mtncnt) { - object->motion = HuMemDirectMallocNum(HEAP_SYSTEM, mtncnt*sizeof(s16), MEMORY_DEFAULT_NUM); + if (mtncnt) { + object->motion = HuMemDirectMallocNum(HEAP_SYSTEM, mtncnt * sizeof(s16), MEMORY_DEFAULT_NUM); object->mtncnt = mtncnt; - } else { + } + else { object->motion = NULL; object->mtncnt = 0; } - if(group >= 0) { + if (group >= 0) { omAddMember(objman_process, group, object); - } else { + } + else { object->group = group; object->group_idx = 0; } @@ -302,31 +327,33 @@ static void omInsertObj(Process *objman_process, omObjData *object) s16 prio = object->prio; s16 obj_idx; s16 prev_idx; - if(objman->obj_first == -1) { + if (objman->obj_first == -1) { object->prev = -1; object->next = -1; objman->obj_first = next_idx_alloc; objman->obj_last = next_idx_alloc; - (void)objman; //HACK for matching + (void)objman; // HACK for matching return; } - for(obj_idx = objman->obj_first; obj_idx != -1; obj_idx = obj_new->next) { + for (obj_idx = objman->obj_first; obj_idx != -1; obj_idx = obj_new->next) { obj_new = &obj_all[obj_idx]; - if(obj_new->prio <= prio) { + if (obj_new->prio <= prio) { break; } prev_idx = obj_idx; } - if(obj_idx != -1) { + if (obj_idx != -1) { object->prev = obj_new->prev; object->next = obj_idx; - if(obj_new->prev != -1) { + if (obj_new->prev != -1) { obj_all[obj_new->prev].next = next_idx_alloc; - } else { + } + else { objman->obj_first = next_idx_alloc; } obj_new->prev = next_idx_alloc; - } else { + } + else { object->next = -1; object->prev = prev_idx; obj_new->next = next_idx_alloc; @@ -338,7 +365,7 @@ void omAddMember(Process *objman_process, u16 group, omObjData *object) { omObjMan *objman = objman_process->user_data; omObjGroup *group_ptr = &objman->group[group]; - if(group_ptr->num_objs != group_ptr->max_objs) { + if (group_ptr->num_objs != group_ptr->max_objs) { object->group = group; object->group_idx = group_ptr->next_idx; group_ptr->obj[group_ptr->next_idx] = object; @@ -352,40 +379,41 @@ void omDelObjEx(Process *objman_process, omObjData *object) omObjMan *objman = objman_process->user_data; omObjData *obj_all = objman->obj; s16 next_idx_alloc = object->next_idx_alloc; - if(objman->num_objs == 0 || object->stat == 1) { + if (objman->num_objs == 0 || object->stat == 1) { return; } objman->num_objs--; - if(object->group >= 0) { + if (object->group >= 0) { omDelMember(objman_process, object); } - if(object->motion != NULL) { + if (object->motion != NULL) { HuMemDirectFree(object->motion); object->motion = NULL; } - if(object->model != NULL) { + if (object->model != NULL) { HuMemDirectFree(object->model); object->model = NULL; } - if(object->data != NULL) { + if (object->data != NULL) { HuMemDirectFree(object->data); object->data = NULL; } object->stat = OM_STAT_DELETED; - if(object->next >= 0) { + if (object->next >= 0) { obj_all[object->next].prev = object->prev; } - if(object->prev >= 0) { + if (object->prev >= 0) { obj_all[object->prev].next = object->next; } - if(objman->num_objs != 0) { - if(object->prev < 0) { + if (objman->num_objs != 0) { + if (object->prev < 0) { objman->obj_first = obj_all[object->next].next_idx_alloc; } - if(object->next < 0) { + if (object->next < 0) { objman->obj_last = obj_all[object->prev].next_idx_alloc; } - } else { + } + else { objman->obj_first = objman->obj_last = -1; } object->next_idx = objman->next_idx; @@ -394,7 +422,7 @@ void omDelObjEx(Process *objman_process, omObjData *object) void omDelMember(Process *objman_process, omObjData *object) { - if(object->group != -1) { + if (object->group != -1) { omObjMan *objman = objman_process->user_data; omObjData *obj_all = objman->obj; omObjGroup *group = &objman->group[object->group]; @@ -411,20 +439,20 @@ void omMakeGroupEx(Process *objman_process, u16 group, u16 max_objs) s32 i; omObjMan *objman = objman_process->user_data; omObjGroup *group_ptr = &objman->group[group]; - if(group_ptr->obj != NULL) { + if (group_ptr->obj != NULL) { HuMemDirectFree(group_ptr->obj); } - if(group_ptr->next != NULL) { + if (group_ptr->next != NULL) { HuMemDirectFree(group_ptr->next); } group_ptr->next_idx = 0; group_ptr->max_objs = max_objs; group_ptr->num_objs = 0; - group_ptr->obj = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(omObjData *), MEMORY_DEFAULT_NUM); - group_ptr->next = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(u16), MEMORY_DEFAULT_NUM); - for(i=0; iobj = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs * sizeof(omObjData *), MEMORY_DEFAULT_NUM); + group_ptr->next = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs * sizeof(u16), MEMORY_DEFAULT_NUM); + for (i = 0; i < max_objs; i++) { group_ptr->obj[i] = NULL; - group_ptr->next[i] = i+1; + group_ptr->next[i] = i + 1; } } @@ -473,38 +501,38 @@ void omMain(void) omObjData *object; s16 obj_index; omDLLDBGOut(); - while(1) { - if(omdispinfo) { + while (1) { + if (omdispinfo) { float scale = 1.5f; GXColor color; color.a = 96; color.r = 0; color.g = 0; color.b = 255; - printWin(7, 23, 128*scale, 40*scale, &color); + printWin(7, 23, 128 * scale, 40 * scale, &color); fontcolor = FONT_COLOR_YELLOW; print8(8, 24, scale, "\xFD\x01H:%08lX(%ld)", HuMemUsedMallocSizeGet(HEAP_SYSTEM), HuMemUsedMallocBlockGet(HEAP_SYSTEM)); - print8(8, 24+(8*scale), scale, "\xFD\x01M:%08lX(%ld)", HuMemUsedMallocSizeGet(HEAP_DATA), HuMemUsedMallocBlockGet(HEAP_DATA)); - print8(8, 24+(16*scale), scale, "\xFD\x01OBJ:%d/%d", objman->num_objs, objman->max_objs); - print8(8, 24+(24*scale), scale, "\xFD\x01OVL:%ld(%ld<%ld)", omovlhisidx, omcurovl, omprevovl); - print8(8, 24+(32*scale), scale, "\xFD\x01POL:%ld", totalPolyCnted); + print8(8, 24 + (8 * scale), scale, "\xFD\x01M:%08lX(%ld)", HuMemUsedMallocSizeGet(HEAP_DATA), HuMemUsedMallocBlockGet(HEAP_DATA)); + print8(8, 24 + (16 * scale), scale, "\xFD\x01OBJ:%d/%d", objman->num_objs, objman->max_objs); + print8(8, 24 + (24 * scale), scale, "\xFD\x01OVL:%ld(%ld<%ld)", omovlhisidx, omcurovl, omprevovl); + print8(8, 24 + (32 * scale), scale, "\xFD\x01POL:%ld", totalPolyCnted); } obj_index = objman->obj_last; - while(obj_index != -1) { + while (obj_index != -1) { object = &obj_all[obj_index]; obj_index = object->prev; - if((object->stat & (OM_STAT_DELETED|OM_STAT_DISABLED)) == 0) { - if(object->func != NULL && (object->stat & (0x40|0x8|OM_STAT_PAUSED)) == 0) { + if ((object->stat & (OM_STAT_DELETED | OM_STAT_DISABLED)) == 0) { + if (object->func != NULL && (object->stat & (0x40 | 0x8 | OM_STAT_PAUSED)) == 0) { object->func(object); } - if(omcurovl == -1 || objman->obj_last == -1) { + if (omcurovl == -1 || objman->obj_last == -1) { break; } - if((object->stat & (OM_STAT_DELETED|OM_STAT_DISABLED)) == 0) { - if((obj_all[obj_index].stat & (OM_STAT_DELETED|OM_STAT_DISABLED)) != 0) { + if ((object->stat & (OM_STAT_DELETED | OM_STAT_DISABLED)) == 0) { + if ((obj_all[obj_index].stat & (OM_STAT_DELETED | OM_STAT_DISABLED)) != 0) { obj_index = object->prev; } - if(object->model != NULL && object->model[0] != -1 && !(object->stat & OM_STAT_MODEL_PAUSED)) { + if (object->model != NULL && object->model[0] != -1 && !(object->stat & OM_STAT_MODEL_PAUSED)) { Hu3DModelPosSet(object->model[0], object->trans.x, object->trans.y, object->trans.z); Hu3DModelRotSet(object->model[0], object->rot.x, object->rot.y, object->rot.z); Hu3DModelScaleSet(object->model[0], object->scale.x, object->scale.y, object->scale.z); @@ -516,7 +544,7 @@ void omMain(void) } } -//Dummy function to force string literals in binary +// Dummy function to force string literals in binary static void omDumpObj(Process *objman_process) { omObjMan *objman = objman_process->user_data; @@ -524,14 +552,12 @@ static void omDumpObj(Process *objman_process) s32 i; OSReport("=================== 現在登録されている OBJECT ==================\n"); OSReport("STAT PRI GRPN MEMN PROG (TRA) (ROT) (SCA) mdlcnt mtncnt work[0] work[1] work[2] work[3] *data\n"); - for(i=0; imax_objs; i++) { + for (i = 0; i < objman->max_objs; i++) { omObjData *object = &obj_all[i]; - OSReport("%04d:%04X %04X %d %d %08X (%.2f %.2f %.2f) (%.2f %.2f %.2f) (%.2f %.2f %.2f) %d %d %08X %08X %08X %08X %08X\n", - object->stat, object->stat, object->prio, object->group, object->unk10, object->func, - object->trans.x, object->trans.y, object->trans.z, - object->rot.x, object->rot.y, object->rot.z, - object->scale.x, object->scale.y, object->scale.z, - object->mdlcnt, object->mtncnt, object->work[0], object->work[1], object->work[2], object->work[3], object->data); + OSReport("%04d:%04X %04X %d %d %08X (%.2f %.2f %.2f) (%.2f %.2f %.2f) (%.2f %.2f %.2f) %d %d %08X %08X %08X %08X %08X\n", object->stat, + object->stat, object->prio, object->group, object->unk10, object->func, object->trans.x, object->trans.y, object->trans.z, object->rot.x, + object->rot.y, object->rot.z, object->scale.x, object->scale.y, object->scale.z, object->mdlcnt, object->mtncnt, object->work[0], + object->work[1], object->work[2], object->work[3], object->data); } OSReport("================================================================\n"); } @@ -541,15 +567,16 @@ void omAllPause(BOOL pause) Process *objman_process = HuPrcCurrentGet(); omObjMan *objman = objman_process->user_data; s32 i; - if(pause) { - for(i=0; imax_objs; i++) { - if((objman->obj[i].stat & (OM_STAT_DELETED|OM_STAT_NOPAUSE)) == 0) { + if (pause) { + for (i = 0; i < objman->max_objs; i++) { + if ((objman->obj[i].stat & (OM_STAT_DELETED | OM_STAT_NOPAUSE)) == 0) { omSetStatBit(&objman->obj[i], OM_STAT_PAUSED); } } - } else { - for(i=0; imax_objs; i++) { - if((objman->obj[i].stat & (OM_STAT_DELETED|OM_STAT_NOPAUSE)) == 0) { + } + else { + for (i = 0; i < objman->max_objs; i++) { + if ((objman->obj[i].stat & (OM_STAT_DELETED | OM_STAT_NOPAUSE)) == 0) { omResetStatBit(&objman->obj[i], OM_STAT_PAUSED); } } @@ -558,9 +585,10 @@ void omAllPause(BOOL pause) char omPauseChk(void) { - if(omDBGSysKeyObj == NULL) { + if (omDBGSysKeyObj == NULL) { return 0; - } else { + } + else { return omDBGSysKeyObj->work[0] & 0x1; } } diff --git a/src/game/ovllist.c b/src/game/ovllist.c index e64fdd34..df997d83 100644 --- a/src/game/ovllist.c +++ b/src/game/ovllist.c @@ -1,11 +1,15 @@ #include "game/dvd.h" #include "game/object.h" -#define OVL_DEFINE(name, path) { path, 0 }, +#ifdef _WIN32 +#define OVL_DEFINE(name, path) { path ".dll", 0 }, +#else +#define OVL_DEFINE(name, path) { "dll/" path ".rel", 0 }, +#endif FileListEntry _ovltbl[OVL_COUNT+1] = { #include "ovl_table.h" { NULL, -1 } }; -#undef OVL_DEFINE \ No newline at end of file +#undef OVL_DEFINE diff --git a/src/port/stubs.c b/src/port/stubs.c index 52c6fe0a..2c89632f 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -9,7 +9,7 @@ // Credits: Super Monkey Ball -void OSReport(const char *msg, ...) +__declspec(dllexport) void OSReport(const char *msg, ...) { va_list args; va_start(args, msg); @@ -353,7 +353,7 @@ BOOL OSInitFont(OSFontHeader *fontData) BOOL OSLink(OSModuleInfo *newModule, void *bss) { puts("OSLink is a stub"); - return FALSE; + return TRUE; } void OSLoadContext(OSContext *context) @@ -699,7 +699,5 @@ void MGSeqMain(void) puts("MGSeqMain is a stub"); } -void omMasterInit(s32 prio, FileListEntry *ovl_list, s32 ovl_count, OverlayID start_ovl) -{ - puts("omMasterInit is a stub"); -} +// TODO remove +u8 fadeStat = 0; From c1bcbdc0677e5cf12f33fb59520d03b16ae232ad Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Sun, 6 Apr 2025 07:05:03 +0200 Subject: [PATCH 34/47] More exports --- CMakeLists.txt | 3 +- config/GMPE01_00/symbols.txt | 2 +- config/GMPE01_01/symbols.txt | 2 +- config/GMPJ01_00/symbols.txt | 2 +- config/GMPP01_00/symbols.txt | 2 +- dol.def | 31 ++ include/dolphin/os.h | 2 +- include/game/pad.h | 25 +- include/game/window.h | 7 +- include/game/wipe.h | 3 +- src/REL/bootDll/main.c | 924 ++++++++++++++++++----------------- src/game/main.c | 3 +- src/game/objmain.c | 5 +- src/game/pad.c | 22 +- src/game/window.c | 18 +- src/game/wipe.c | 2 +- src/port/audio.c | 707 +++++++++++++++++++++++++++ src/port/stubs.c | 9 +- 18 files changed, 1270 insertions(+), 499 deletions(-) create mode 100644 src/port/audio.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 41d2ddcc..795fcb2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,6 @@ set(DOLPHIN_FILES set(GAME_FILES src/game/armem.c - src/game/audio.c src/game/card.c src/game/ClusterExec.c src/game/data.c @@ -73,12 +72,14 @@ set(GAME_FILES src/game/perf.c src/game/printfunc.c src/game/process.c + src/game/window.c src/game/wipe.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 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/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/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/dol.def b/dol.def index cef22cf5..578710d3 100644 --- a/dol.def +++ b/dol.def @@ -1,6 +1,10 @@ EXPORTS OSReport OSGetTick + HuAudFXPlay + HuAudSStreamAllFadeOut + HuAudSStreamPlay + HuAudSndGrpSetSet HuMemDirectMalloc HuMemDirectFree HuDataSelHeapReadNum @@ -20,8 +24,35 @@ EXPORTS HuPrcCurrentGet HuPrcSleep HuPrcVSleep + HuSprAnimRead + HuSprCreate + HuSprGrpCreate + HuSprGrpMemberSet + HuSprGrpKill + HuSprAttrSet + HuSprAttrReset + HuSprDrawNoSet + HuSprPosSet + HuSprScaleSet + HuSprTPLvlSet + HuWindowInit + HuWinInit + HuWinCreate + HuWinKill + HuWinHomeClear + HuWinPriSet + HuWinAttrSet + HuWinBGTPLvlSet + HuWinMesSpeedSet + HuWinMesSet + HuWinMesMaxSizeBetGet omOvlCallEx omOvlReturnEx omOvlHisChg omOvlHisGet omInitObjMan + WipeColorSet + WipeCreate + WipeExecAlways + WipeInit + WipeStatGet diff --git a/include/dolphin/os.h b/include/dolphin/os.h index 02750f79..bfe75527 100644 --- a/include/dolphin/os.h +++ b/include/dolphin/os.h @@ -225,7 +225,7 @@ BOOL OSRestoreInterrupts(BOOL level); #endif // _DEBUG -__declspec(dllexport) void OSReport(const char *msg, ...); +void OSReport(const char *msg, ...); void OSPanic(const char *file, int line, const char *msg, ...); void OSFatal(GXColor fg, GXColor bg, const char *msg); diff --git a/include/game/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/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/src/REL/bootDll/main.c b/src/REL/bootDll/main.c index a3dc0d93..24793ced 100644 --- a/src/REL/bootDll/main.c +++ b/src/REL/bootDll/main.c @@ -23,7 +23,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; @@ -158,9 +158,15 @@ void ObjectSetup(void) WipeColorSet(255, 255, 255); if (!SystemInitF) { tick_prev = OSGetTick(); +#ifdef __MWERKS__ + // TODO PC CharManInit(); +#endif HuWindowInit(); +#ifdef __MWERKS__ + // TODO PC MGSeqInit(); +#endif HuWinInit(1); BootTitleCreate(); data = HuSprAnimReadFile(TITLE_HUDSON_ANM); @@ -198,11 +204,11 @@ void ObjectSetup(void) HuPrcVSleep(); } if (!SystemInitF) { - void *group_samp; + //void *group_samp; tick_prev = OSGetTick(); - group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0)); - msmSysLoadGroup(0, group_samp, 0); - HuMemDirectFree(group_samp); + //group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0)); + //msmSysLoadGroup(0, group_samp, 0); + //HuMemDirectFree(group_samp); while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { HuPrcVSleep(); } @@ -239,9 +245,9 @@ void ObjectSetup(void) 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); + //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); @@ -254,22 +260,22 @@ void ObjectSetup(void) HuPrcVSleep(); } skip_wait = FALSE; - while (!HuTHPEndCheck()) { - UpdateDemoMess(); - if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { - skip_wait = TRUE; - break; - } - HuPrcVSleep(); - } + //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(); + //HuTHPClose(); HuPrcVSleep(); - HuSprGrpKill(group_thp); + //HuSprGrpKill(group_thp); if (!skip_wait) { HuPrcSleep(60); } @@ -330,458 +336,468 @@ void ObjectSetup(void) } } -// #if VERSION_NTSC + #if VERSION_NTSC -// static u16 progPosTbl[] = { 236, 313, 353, 313 }; + static u16 progPosTbl[] = { 236, 313, 353, 313 }; -// void BootProgExec(void) -// { -// s16 i; -// s16 option; -// s16 group; -// s16 sprite; -// AnimData *data; -// option = 0; -// if (OSGetResetCode() != OS_RESET_RESTART) { -// return; -// } -// if (VIGetDTVStatus() != VI_NON_INTERLACE) { -// OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); -// return; -// } -// if (OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_OFF && !(HU_PAD_BTN_ALL & PAD_BUTTON_B)) { -// return; -// } -// if (OSGetProgressiveMode() == OS_PROGRESSIVE_MODE_ON) { -// VIConfigure(&GXNtsc480IntDf); -// VIFlush(); -// } -// group = HuSprGrpCreate(3); -// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CHOOSE_ANM); -// sprite = HuSprCreate(data, 0, 0); -// HuSprGrpMemberSet(group, 0, sprite); -// HuSprPosSet(group, 0, 288, 240); -// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_ON_ANM); -// sprite = HuSprCreate(data, 0, 0); -// HuSprGrpMemberSet(group, 1, sprite); -// HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); -// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_OFF_ANM); -// sprite = HuSprCreate(data, 0, 0); -// HuSprGrpMemberSet(group, 2, sprite); -// HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); -// HuSprAttrSet(group, 2, HUSPR_ATTR_DISPOFF); -// WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); -// while (WipeStatGet()) { -// HuPrcVSleep(); -// } -// for (i = 0; i < 600; i++) { -// if (HU_PAD_DSTK_ALL & (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT)) { -// option ^= 1; -// HuSprPosSet(group, 1, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); -// i = 0; -// } -// if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { -// HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); -// HuSprPosSet(group, 2, progPosTbl[option * 2], progPosTbl[(option * 2) + 1]); -// HuSprAttrReset(group, 2, HUSPR_ATTR_DISPOFF); -// break; -// } -// HuPrcVSleep(); -// } -// WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); -// while (WipeStatGet()) { -// HuPrcVSleep(); -// } -// if (!option) { -// OSSetProgressiveMode(OS_PROGRESSIVE_MODE_ON); -// VIConfigure(&GXNtsc480Prog); -// VIFlush(); -// HuPrcSleep(100); -// } -// else { -// OSSetProgressiveMode(OS_PROGRESSIVE_MODE_OFF); -// } -// HuSprGrpKill(group); -// group = HuSprGrpCreate(1); -// if (!option) { -// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_ON_ANM); -// } -// else { -// data = HuSprAnimReadFile(TITLE_PROGRESSIVE_OFF_ANM); -// } -// sprite = HuSprCreate(data, 0, 0); -// HuSprGrpMemberSet(group, 0, sprite); -// HuSprPosSet(group, 0, 288, 240); -// WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); -// while (WipeStatGet()) { -// HuPrcVSleep(); -// } -// HuPrcSleep(60); -// for (i = 0; i < 180; i++) { -// if (HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { -// break; -// } -// HuPrcVSleep(); -// } -// WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); -// while (WipeStatGet()) { -// HuPrcVSleep(); -// } -// HuSprGrpKill(group); -// HuPrcSleep(30); -// } + void BootProgExec(void) + { + s16 i; + s16 option; + s16 group; + s16 sprite; + AnimData *data; + option = 0; +#ifdef __MWERKS__ + 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__ + // TODO PC + 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); + } -// #endif + #endif -// static u16 debugCamTbl[] = { 1, 2 }; + static u16 debugCamTbl[] = { 1, 2 }; -// void DebugCamOutView(omObjData *obj) -// { -// s16 i; -// for (i = 0; i < 1; i++) { -// Vec pos, target, up; -// float x, y, z; + void DebugCamOutView(omObjData *obj) + { + s16 i; + for (i = 0; i < 1; i++) { + Vec pos, target, up; + float x, y, z; -// x = debugCamRot[i].x; -// y = debugCamRot[i].y; -// z = debugCamRot[i].z; + x = debugCamRot[i].x; + y = debugCamRot[i].y; + z = debugCamRot[i].z; -// pos.x = (((sind(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].x); -// pos.y = (-sind(x) * debugCamZoom[i]) + debugCamPos[i].y; -// pos.z = ((cosd(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].z; -// target.x = debugCamPos[i].x; -// target.y = debugCamPos[i].y; -// target.z = debugCamPos[i].z; -// up.x = sind(y) * sind(x); -// up.y = cosd(x); -// up.z = cosd(y) * sind(x); -// Hu3DCameraPosSet(debugCamTbl[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); -// } -// } + pos.x = (((sind(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].x); + pos.y = (-sind(x) * debugCamZoom[i]) + debugCamPos[i].y; + pos.z = ((cosd(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].z; + target.x = debugCamPos[i].x; + target.y = debugCamPos[i].y; + target.z = debugCamPos[i].z; + up.x = sind(y) * sind(x); + up.y = cosd(x); + up.z = cosd(y) * sind(x); + Hu3DCameraPosSet(debugCamTbl[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); + } + } -// void DebugCamUpdate(omObjData *obj) -// { -// Vec pos; -// Vec offset; -// Vec dir; -// Vec y_offset; + #ifdef __MWERKS__ + void DebugCamUpdate(omObjData *obj) + { + Vec pos; + Vec offset; + Vec dir; + Vec y_offset; -// f32 z_rot; -// s8 stick_pos; + f32 z_rot; + s8 stick_pos; -// #if VERSION_NTSC -// if ((HuPadBtnDown[0] & 0x800)) { -// debugCamOnF = (debugCamOnF) ? 0 : 1; -// } -// #endif -// if (debugCamOnF != 0) { -// debugCamRot[0].y += 0.1f * HuPadStkX[0]; -// debugCamRot[0].x += 0.1f * HuPadStkY[0]; -// debugCamZoom[0] += HuPadTrigL[0] / 2; -// debugCamZoom[0] -= HuPadTrigR[0] / 2; -// if (debugCamZoom[0] < 100.0f) { -// debugCamZoom[0] = 100.0f; -// } -// pos.x = debugCamPos[0].x + (debugCamZoom[0] * (sind(debugCamRot[0].y) * cosd(debugCamRot[0].x))); -// pos.y = (debugCamPos[0].y + (debugCamZoom[0] * -sind(debugCamRot[0].x))); -// pos.z = (debugCamPos[0].z + (debugCamZoom[0] * (cosd(debugCamRot[0].y) * cosd(debugCamRot[0].x)))); -// offset.x = debugCamPos[0].x - pos.x; -// offset.y = debugCamPos[0].y - pos.y; -// offset.z = debugCamPos[0].z - pos.z; -// dir.x = (sind(debugCamRot[0].y) * sind(debugCamRot[0].x)); -// dir.y = cosd(debugCamRot[0].x); -// dir.z = (cosd(debugCamRot[0].y) * sind(debugCamRot[0].x)); -// z_rot = debugCamRot[0].z; -// y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot)) -// + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot)) -// + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot)); + #if VERSION_NTSC + if ((HuPadBtnDown[0] & 0x800)) { + debugCamOnF = (debugCamOnF) ? 0 : 1; + } + #endif + if (debugCamOnF != 0) { + debugCamRot[0].y += 0.1f * HuPadStkX[0]; + debugCamRot[0].x += 0.1f * HuPadStkY[0]; + debugCamZoom[0] += HuPadTrigL[0] / 2; + debugCamZoom[0] -= HuPadTrigR[0] / 2; + if (debugCamZoom[0] < 100.0f) { + debugCamZoom[0] = 100.0f; + } + pos.x = debugCamPos[0].x + (debugCamZoom[0] * (sind(debugCamRot[0].y) * cosd(debugCamRot[0].x))); + pos.y = (debugCamPos[0].y + (debugCamZoom[0] * -sind(debugCamRot[0].x))); + pos.z = (debugCamPos[0].z + (debugCamZoom[0] * (cosd(debugCamRot[0].y) * cosd(debugCamRot[0].x)))); + offset.x = debugCamPos[0].x - pos.x; + offset.y = debugCamPos[0].y - pos.y; + offset.z = debugCamPos[0].z - pos.z; + dir.x = (sind(debugCamRot[0].y) * sind(debugCamRot[0].x)); + dir.y = cosd(debugCamRot[0].x); + dir.z = (cosd(debugCamRot[0].y) * sind(debugCamRot[0].x)); + z_rot = debugCamRot[0].z; + y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot)) + + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot)) + + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot)); -// y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot)) -// + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot)) -// + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot)); + y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot)) + + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot)) + + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot)); -// y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot)) -// + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot)) -// + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot))); + y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot)) + + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot)) + + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot))); -// VECCrossProduct(&dir, &offset, &offset); -// VECNormalize(&offset, &offset); -// stick_pos = (HuPadSubStkX[0] & 0xF8); -// if (stick_pos != 0) { -// debugCamPos[0].x += 0.05f * (offset.x * stick_pos); -// debugCamPos[0].y += 0.05f * (offset.y * stick_pos); -// debugCamPos[0].z += 0.05f * (offset.z * stick_pos); -// } -// VECNormalize(&y_offset, &offset); -// stick_pos = -(HuPadSubStkY[0] & 0xF8); -// if (stick_pos != 0) { -// debugCamPos[0].x += 0.05f * (offset.x * stick_pos); -// debugCamPos[0].y += 0.05f * (offset.y * stick_pos); -// debugCamPos[0].z += 0.05f * (offset.z * stick_pos); -// } -// } -// } + VECCrossProduct(&dir, &offset, &offset); + VECNormalize(&offset, &offset); + stick_pos = (HuPadSubStkX[0] & 0xF8); + if (stick_pos != 0) { + debugCamPos[0].x += 0.05f * (offset.x * stick_pos); + debugCamPos[0].y += 0.05f * (offset.y * stick_pos); + debugCamPos[0].z += 0.05f * (offset.z * stick_pos); + } + VECNormalize(&y_offset, &offset); + stick_pos = -(HuPadSubStkY[0] & 0xF8); + if (stick_pos != 0) { + debugCamPos[0].x += 0.05f * (offset.x * stick_pos); + debugCamPos[0].y += 0.05f * (offset.y * stick_pos); + debugCamPos[0].z += 0.05f * (offset.z * stick_pos); + } + } + } +#endif -// void BootTitleCreate(void) -// { -// s16 model; -// s16 sprite; -// AnimData *sprite_data; -// s16 i; -// titleMdlId[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF); -// Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); -// Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); -// titleMdlId[1] = model = Hu3DModelCreateFile(TITLE_CUBE_HSF); -// Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); -// Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); -// titleMdlId[2] = model = Hu3DModelCreateFile(TITLE_SKY_HSF); -// Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); -// Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); -// Hu3DModelCameraInfoSet(model, 1); -// Hu3DModelLightInfoSet(model, 1); -// #if VERSION_NTSC -// bootGrpId = HuSprGrpCreate(4); -// #else -// bootGrpId = HuSprGrpCreate(13); -// #endif -// sprite_data = HuSprAnimReadFile(TITLE_BG_ANM); -// sprite = HuSprCreate(sprite_data, 0, 0); -// HuSprGrpMemberSet(bootGrpId, 0, sprite); -// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); -// HuSprDrawNoSet(bootGrpId, 0, 127); -// HuSprPosSet(bootGrpId, 0, 288, 240); -// sprite_data = HuSprAnimReadFile(TITLE_COPYRIGHT_ANM); -// sprite = HuSprCreate(sprite_data, 1, 0); -// HuSprGrpMemberSet(bootGrpId, 1, sprite); -// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); -// HuSprPosSet(bootGrpId, 1, 288, 420); -// #if VERSION_NTSC -// sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_ANM); -// sprite = HuSprCreate(sprite_data, 2, 0); -// HuSprGrpMemberSet(bootGrpId, 2, sprite); -// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); -// HuSprPosSet(bootGrpId, 2, 288, 380); -// sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); -// sprite = HuSprCreate(sprite_data, 0, 0); -// HuSprGrpMemberSet(bootGrpId, 3, sprite); -// HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); -// HuSprPosSet(bootGrpId, 3, 288, 200); -// #else -// sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); -// sprite = HuSprCreate(sprite_data, 0, 0); -// HuSprGrpMemberSet(bootGrpId, 2, sprite); -// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); -// HuSprPosSet(bootGrpId, 2, 288, 200); -// for(i=0; i<5; i++) { -// sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_EN_ANM+i); -// sprite = HuSprCreate(sprite_data, 3+i, 0); -// HuSprGrpMemberSet(bootGrpId, 3+i, sprite); -// HuSprAttrSet(bootGrpId, 3+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); -// HuSprPosSet(bootGrpId, 3+i, 288, 340); -// } -// for(i=0; i<5; i++) { -// sprite_data = HuSprAnimReadFile(TITLE_LANGUAGE_EN_ANM+i); -// sprite = HuSprCreate(sprite_data, 8+i, 0); -// HuSprGrpMemberSet(bootGrpId, 8+i, sprite); -// HuSprAttrSet(bootGrpId, 8+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); -// HuSprPosSet(bootGrpId, 8+i, 288, 380); -// } -// #endif -// } + void BootTitleCreate(void) + { + s16 model; + s16 sprite; + AnimData *sprite_data; + s16 i; + titleMdlId[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF); + Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); + titleMdlId[1] = model = Hu3DModelCreateFile(TITLE_CUBE_HSF); + Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); + titleMdlId[2] = model = Hu3DModelCreateFile(TITLE_SKY_HSF); + Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); + Hu3DModelCameraInfoSet(model, 1); + Hu3DModelLightInfoSet(model, 1); + #if VERSION_NTSC + bootGrpId = HuSprGrpCreate(4); + #else + bootGrpId = HuSprGrpCreate(13); + #endif + sprite_data = HuSprAnimReadFile(TITLE_BG_ANM); + sprite = HuSprCreate(sprite_data, 0, 0); + HuSprGrpMemberSet(bootGrpId, 0, sprite); + HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); + HuSprDrawNoSet(bootGrpId, 0, 127); + HuSprPosSet(bootGrpId, 0, 288, 240); + sprite_data = HuSprAnimReadFile(TITLE_COPYRIGHT_ANM); + sprite = HuSprCreate(sprite_data, 1, 0); + HuSprGrpMemberSet(bootGrpId, 1, sprite); + HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); + HuSprPosSet(bootGrpId, 1, 288, 420); + #if VERSION_NTSC + sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_ANM); + sprite = HuSprCreate(sprite_data, 2, 0); + HuSprGrpMemberSet(bootGrpId, 2, sprite); + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); + HuSprPosSet(bootGrpId, 2, 288, 380); + sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); + sprite = HuSprCreate(sprite_data, 0, 0); + HuSprGrpMemberSet(bootGrpId, 3, sprite); + HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); + HuSprPosSet(bootGrpId, 3, 288, 200); + #else + sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); + sprite = HuSprCreate(sprite_data, 0, 0); + HuSprGrpMemberSet(bootGrpId, 2, sprite); + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); + HuSprPosSet(bootGrpId, 2, 288, 200); + for(i=0; i<5; i++) { + sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_EN_ANM+i); + sprite = HuSprCreate(sprite_data, 3+i, 0); + HuSprGrpMemberSet(bootGrpId, 3+i, sprite); + HuSprAttrSet(bootGrpId, 3+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); + HuSprPosSet(bootGrpId, 3+i, 288, 340); + } + for(i=0; i<5; i++) { + sprite_data = HuSprAnimReadFile(TITLE_LANGUAGE_EN_ANM+i); + sprite = HuSprCreate(sprite_data, 8+i, 0); + HuSprGrpMemberSet(bootGrpId, 8+i, sprite); + HuSprAttrSet(bootGrpId, 8+i, HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); + HuSprPosSet(bootGrpId, 8+i, 288, 380); + } + #endif + } -// BOOL BootTitleExec(void) -// { -// float scale; -// float scale_time; -// int seNo[32]; -// s16 pressStartMemberNo; -// s16 languageMemberNo; -// s16 i; -// s16 choice; -// float temp; -// repeat: -// Hu3DModelAttrReset(titleMdlId[0], HU3D_ATTR_DISPOFF); -// Hu3DModelAttrReset(titleMdlId[1], HU3D_ATTR_DISPOFF); -// HuSprAttrReset(bootGrpId, 0, HUSPR_ATTR_DISPOFF); -// HuSprAttrReset(bootGrpId, 1, HUSPR_ATTR_DISPOFF); -// OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, seNo)); -// OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0)); -// HuAudSStreamPlay(20); -// WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); -// while (WipeStatGet()) { -// HuPrcVSleep(); -// } -// #if VERSION_NTSC -// HuSprAttrReset(bootGrpId, 3, HUSPR_ATTR_DISPOFF); -// for (i = 1; i <= 50; i++) { -// scale = (cosd(i * 1.8) * 10.0) + 1.0; -// HuSprScaleSet(bootGrpId, 3, scale, scale); -// HuSprTPLvlSet(bootGrpId, 3, i / 50.0); -// HuPrcVSleep(); -// } -// HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); -// #else -// HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); -// for (i = 1; i <= 50; i++) { -// scale = (cosd(i * 1.8) * 10.0) + 1.0; -// HuSprScaleSet(bootGrpId, 2, scale, scale); -// HuSprTPLvlSet(bootGrpId, 2, i / 50.0); -// HuPrcVSleep(); -// } -// if(GwLanguage == -1) { -// pressStartMemberNo = 3; -// languageMemberNo = 8; -// } else { -// pressStartMemberNo = GwLanguage+3-1; -// languageMemberNo = GwLanguage+8-1; -// } -// HuSprAttrReset(bootGrpId, pressStartMemberNo, HUSPR_ATTR_DISPOFF); -// HuSprAttrReset(bootGrpId, languageMemberNo, HUSPR_ATTR_DISPOFF); -// for(i=1; i<=20; i++) { -// scale = sind(i*4.5); -// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); -// HuSprScaleSet(bootGrpId, languageMemberNo, scale*0.7, scale*0.7); -// HuPrcVSleep(); -// } -// choice = 0; -// scale_time = 0; -// #endif + BOOL BootTitleExec(void) + { + float scale; + float scale_time; + int seNo[32]; + s16 pressStartMemberNo; + s16 languageMemberNo; + s16 i; + s16 choice; + float temp; + repeat: + Hu3DModelAttrReset(titleMdlId[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(titleMdlId[1], HU3D_ATTR_DISPOFF); + HuSprAttrReset(bootGrpId, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(bootGrpId, 1, HUSPR_ATTR_DISPOFF); +#ifdef __MWERKS__ + // TODO PC + OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, seNo)); + OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0)); +#endif + HuAudSStreamPlay(20); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + #if VERSION_NTSC + HuSprAttrReset(bootGrpId, 3, HUSPR_ATTR_DISPOFF); + for (i = 1; i <= 50; i++) { + scale = (cosd(i * 1.8) * 10.0) + 1.0; + HuSprScaleSet(bootGrpId, 3, scale, scale); + HuSprTPLvlSet(bootGrpId, 3, i / 50.0); + HuPrcVSleep(); + } + HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + #else + HuSprAttrReset(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + for (i = 1; i <= 50; i++) { + scale = (cosd(i * 1.8) * 10.0) + 1.0; + HuSprScaleSet(bootGrpId, 2, scale, scale); + HuSprTPLvlSet(bootGrpId, 2, i / 50.0); + HuPrcVSleep(); + } + if(GwLanguage == -1) { + pressStartMemberNo = 3; + languageMemberNo = 8; + } else { + pressStartMemberNo = GwLanguage+3-1; + languageMemberNo = GwLanguage+8-1; + } + HuSprAttrReset(bootGrpId, pressStartMemberNo, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(bootGrpId, languageMemberNo, HUSPR_ATTR_DISPOFF); + for(i=1; i<=20; i++) { + scale = sind(i*4.5); + HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); + HuSprScaleSet(bootGrpId, languageMemberNo, scale*0.7, scale*0.7); + HuPrcVSleep(); + } + choice = 0; + scale_time = 0; + #endif -// #if VERSION_NTSC -// for (i = scale_time = 0; i < 1800; i++) { -// #else -// for (i = temp = 0; i < 1800; i++) { -// #endif -// #if VERSION_PAL -// if((choice == 0 && (HuPadDStkRep[0] & PAD_BUTTON_DOWN)) || (choice != 0 && (HuPadDStkRep[0] & PAD_BUTTON_UP))) { -// HuAudFXPlay(0); -// for(i=1; i<=10; i++) { -// scale = ((1-(i/10.0))*(((cosd(scale_time)*0.1)+0.9)-0.7))+0.7; -// if(choice == 0) { -// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); -// } else { -// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); -// } -// scale = ((1-(i/10.0))*(((cosd(scale_time/3.0)*0.05)+0.65)-1.0))+1.0; -// if(choice == 0) { -// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); -// } else { -// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); -// } -// HuPrcVSleep(); -// } -// choice ^= 1; -// scale_time = 0; -// } -// if (HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) { -// if(choice == 0) { -// s32 ret = HuAudFXPlay(2092); -// if (ret < 0) { -// OSReport(">>>>>Error %d\n", ret); -// } -// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); -// return 1; -// } else { -// HuAudFXPlay(1); -// HuAudSStreamAllFadeOut(500); -// WipeColorSet(255, 255, 255); -// WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); -// while (WipeStatGet()) { -// HuPrcVSleep(); -// } -// Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); -// Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); -// Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); -// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); -// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); -// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); -// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); -// for(i=0; i<5; i++) { -// HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); -// } -// for(i=0; i<5; i++) { -// HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); -// } -// LanguageMenuExec(); -// Hu3DModelCameraInfoSet(titleMdlId[2], 1); -// Hu3DModelLightInfoSet(titleMdlId[2], 1); -// HuWinInit(1); -// goto repeat; -// } -// } -// scale = (cosd(scale_time) * 0.1) + 0.9; -// if(choice == 0) { -// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); -// } else { -// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); -// } -// scale = (cosd(scale_time/3.0) * 0.05) + 0.65; -// if(choice == 0) { -// HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); -// } else { -// HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); -// } -// scale_time += 5; -// HuPrcVSleep(); -// #else -// if (i <= 10) { -// HuSprTPLvlSet(bootGrpId, 2, i / 10.0); -// } -// if (HuPadBtnDown[0] & PAD_BUTTON_START) { -// s32 ret = HuAudFXPlay(2092); -// if (ret < 0) { -// OSReport(">>>>>Error %d\n", ret); -// } -// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); -// return 1; -// } -// scale = (sind(i * scale_time) * 0.1) + 0.9; -// scale_time += 0.05; -// if (scale_time > 5) { -// scale_time = 5; -// } -// HuSprScaleSet(bootGrpId, 2, scale, scale); -// HuPrcVSleep(); -// #endif + #if VERSION_NTSC + for (i = scale_time = 0; i < 1800; i++) { + #else + for (i = temp = 0; i < 1800; i++) { + #endif + #if VERSION_PAL + if((choice == 0 && (HuPadDStkRep[0] & PAD_BUTTON_DOWN)) || (choice != 0 && (HuPadDStkRep[0] & PAD_BUTTON_UP))) { + HuAudFXPlay(0); + for(i=1; i<=10; i++) { + scale = ((1-(i/10.0))*(((cosd(scale_time)*0.1)+0.9)-0.7))+0.7; + if(choice == 0) { + HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); + } else { + HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); + } + scale = ((1-(i/10.0))*(((cosd(scale_time/3.0)*0.05)+0.65)-1.0))+1.0; + if(choice == 0) { + HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); + } else { + HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); + } + HuPrcVSleep(); + } + choice ^= 1; + scale_time = 0; + } + if (HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) { + if(choice == 0) { + s32 ret = HuAudFXPlay(2092); + if (ret < 0) { + OSReport(">>>>>Error %d\n", ret); + } + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + return 1; + } else { + HuAudFXPlay(1); + HuAudSStreamAllFadeOut(500); + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + for(i=0; i<5; i++) { + HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); + } + for(i=0; i<5; i++) { + HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); + } + LanguageMenuExec(); + Hu3DModelCameraInfoSet(titleMdlId[2], 1); + Hu3DModelLightInfoSet(titleMdlId[2], 1); + HuWinInit(1); + goto repeat; + } + } + scale = (cosd(scale_time) * 0.1) + 0.9; + if(choice == 0) { + HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); + } else { + HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); + } + scale = (cosd(scale_time/3.0) * 0.05) + 0.65; + if(choice == 0) { + HuSprScaleSet(bootGrpId, languageMemberNo, scale, scale); + } else { + HuSprScaleSet(bootGrpId, pressStartMemberNo, scale, scale); + } + scale_time += 5; + HuPrcVSleep(); + #else + if (i <= 10) { + HuSprTPLvlSet(bootGrpId, 2, i / 10.0); + } + if (HuPadBtnDown[0] & PAD_BUTTON_START) { + s32 ret = HuAudFXPlay(2092); + if (ret < 0) { + OSReport(">>>>>Error %d\n", ret); + } + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + return 1; + } + scale = (sind(i * scale_time) * 0.1) + 0.9; + scale_time += 0.05; + if (scale_time > 5) { + scale_time = 5; + } + HuSprScaleSet(bootGrpId, 2, scale, scale); + HuPrcVSleep(); + #endif -// } -// WipeColorSet(255, 255, 255); -// WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); -// while (WipeStatGet()) { -// HuPrcVSleep(); -// } -// Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); -// Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); -// Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); -// #if VERSION_NTSC -// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); -// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); -// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); -// HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF); -// #else -// HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); -// HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); -// HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); -// for(i=0; i<5; i++) { -// HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); -// } -// for(i=0; i<5; i++) { -// HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); -// } -// #endif -// return 0; -// } + } + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); + #if VERSION_NTSC + HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 3, HUSPR_ATTR_DISPOFF); + #else + HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); + for(i=0; i<5; i++) { + HuSprAttrSet(bootGrpId, i+3, HUSPR_ATTR_DISPOFF); + } + for(i=0; i<5; i++) { + HuSprAttrSet(bootGrpId, i+8, HUSPR_ATTR_DISPOFF); + } + #endif + return 0; + } -// #include "nintendoData.inc" + #include "nintendoData.inc" -// void *NintendoDataDecode(void) -// { -// u32 *src = (u32 *)nintendoData; -// u32 size = *src++; -// void *dst = HuMemDirectMalloc(HEAP_DATA, size); -// int decode_type = *src++; -// if(dst) { -// HuDecodeData(src, dst, size, decode_type); -// } -// return dst; -// } + void *NintendoDataDecode(void) + { + u32 *src = (u32 *)nintendoData; + u32 size = *src++; + void *dst = HuMemDirectMalloc(HEAP_DATA, size); + int decode_type = *src++; + if(dst) { + HuDecodeData(src, dst, size, decode_type); + } + return dst; + } diff --git a/src/game/main.c b/src/game/main.c index 29f1b24f..b104b7f2 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -15,6 +15,7 @@ #include "game/sprite.h" #include "game/sreset.h" #include "game/wipe.h" +#include "version.h" #ifdef TARGET_PC #include "port/imgui.h" @@ -45,7 +46,7 @@ static u32 pe_req; static u32 rf_req; static u32 fi_req; s32 HuDvdErrWait; -s32 SystemInitF; +SHARED_SYM s32 SystemInitF; #ifdef TARGET_PC #include diff --git a/src/game/objmain.c b/src/game/objmain.c index a0e433c4..1c3aeda5 100644 --- a/src/game/objmain.c +++ b/src/game/objmain.c @@ -8,7 +8,6 @@ #include "game/pad.h" #include "game/printfunc.h" - #define OM_OVL_HIS_MAX 16 #define OM_MAX_GROUPS 10 @@ -47,8 +46,8 @@ s16 omdispinfo; static omOvlHisData omovlhis[OM_OVL_HIS_MAX]; -SHARED_SYM u8 omSysPauseEnableFlag = TRUE; -SHARED_SYM OverlayID omprevovl = OVL_INVALID; +u8 omSysPauseEnableFlag = TRUE; +OverlayID omprevovl = OVL_INVALID; static void omWatchOverlayProc(void); static void omInsertObj(Process *objman_process, omObjData *object); diff --git a/src/game/pad.c b/src/game/pad.c index 3fa8da4f..1b828789 100644 --- a/src/game/pad.c +++ b/src/game/pad.c @@ -19,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]; diff --git a/src/game/window.c b/src/game/window.c index ac3be92e..8846f8f5 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; @@ -1313,6 +1313,8 @@ void HuWinMesRead(s32 mess_data_no) void HuWinMesSet(s16 window, u32 mess) { +#ifdef __MWERKS__ + // TODO PC WindowData *window_ptr = &winData[window]; window_ptr->stat = 1; @@ -1339,10 +1341,13 @@ void HuWinMesSet(s16 window, u32 mess) window_ptr->mess_time = 0; #endif } +#endif } void HuWinInsertMesSet(s16 window, u32 mess, s16 index) { +#ifdef __MWERKS__ + // TODO PC WindowData *window_ptr = &winData[window]; if (!(mess & 0x80000000)) { @@ -1358,6 +1363,7 @@ void HuWinInsertMesSet(s16 window, u32 mess, s16 index) else { window_ptr->insert_mess[index] = (u8 *)mess; } +#endif } s16 HuWinChoiceGet(s16 window, s16 start_choice) @@ -1662,6 +1668,8 @@ void HuWinMesMaxSizeBetGet(float *size, u32 start, u32 end) static void GetMesMaxSizeSub(u32 mess) { +#ifdef __MWERKS__ + // TODO PC s16 line_h; s16 char_w; s16 line_w; @@ -1765,6 +1773,7 @@ static void GetMesMaxSizeSub(u32 mess) if (winMaxHeight < line_h) { winMaxHeight = line_h; } +#endif } static s32 GetMesMaxSizeSub2(WindowData *window, u8 *mess_data) @@ -1845,6 +1854,8 @@ s16 HuWinKeyWaitNumGet(u32 mess) { s16 wait_num; u8 *mess_data; +#ifdef __MWERKS__ + // TODO PC if (mess > 0x80000000) { mess_data = (u8 *)mess; @@ -1857,6 +1868,7 @@ s16 HuWinKeyWaitNumGet(u32 mess) wait_num++; } } +#endif return wait_num; } diff --git a/src/game/wipe.c b/src/game/wipe.c index 2445cc5c..e35ac056 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); diff --git a/src/port/audio.c b/src/port/audio.c new file mode 100644 index 00000000..e1d4a9cb --- /dev/null +++ b/src/port/audio.c @@ -0,0 +1,707 @@ +#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) +{ + WipeState *wipe = &wipeData; + + if (omSysExitReq != 0 || (wipeData.mode == WIPE_MODE_OUT && wipe->time / wipe->duration > 0.5)) { + return 0; + } + return HuAudFXPlayVolPan(seId, MSM_VOL_MAX, MSM_PAN_CENTER); +} + +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); + return 12; +} + +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; + + 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; + + 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); +} + +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 *buf; + OSTick osTick; + s32 numPlay; + s32 err; + + if (sndGroupBak != dataSize) { + // msmMusStopAll(1, 0); + // msmSeStopAll(1, 0); + osTick = OSGetTick(); + // while ((msmMusGetNumPlay(1) != 0 || msmSeGetNumPlay(1) != 0) + // && OSTicksToMilliseconds(OSGetTick() - osTick) < 500); + OSReport("%d\n", OSTicksToMilliseconds(OSGetTick() - osTick)); + if (OSTicksToMilliseconds(OSGetTick() - osTick) >= 500) { + // numPlay = msmSeGetNumPlay(1); + // OSReport("Timed Out! Mus %d:SE %d\n", msmMusGetNumPlay(1), numPlay); + } + OSReport("GroupSet %d\n", dataSize); + sndGroupBak = dataSize; + // err = msmSysDelGroupAll(); + // buf = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(1)); + // err = msmSysLoadGroupSet(dataSize, buf); + OSReport("***********GroupSet Error %d\n", err); + // HuMemDirectFree(buf); + } +} + +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/stubs.c b/src/port/stubs.c index 2c89632f..79cf1fa1 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -9,7 +9,7 @@ // Credits: Super Monkey Ball -__declspec(dllexport) void OSReport(const char *msg, ...) +void OSReport(const char *msg, ...) { va_list args; va_start(args, msg); @@ -22,6 +22,11 @@ u32 OSGetConsoleType() return OS_CONSOLE_RETAIL1; } +u32 OSGetSoundMode() +{ + return 2; +} + s32 CARDCancel(CARDFileInfo *fileInfo) { puts("CARDCancel is a stub"); @@ -676,8 +681,6 @@ void ARQInit(void) { // Hudson void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { } -void HuAudInit(void) { } - void msmSysRegularProc(void) { puts("msmSysRegularProc is a stub"); From dee0ba15d496738f9d56b02be81dc1f5a9d58fbf Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Sun, 6 Apr 2025 18:28:42 +0200 Subject: [PATCH 35/47] Byteswap in nintendodecode --- CMakeLists.txt | 2 +- dol.def | 2 + include/port/byteswap.h | 2 + src/REL/bootDll/main.c | 128 +++++++++++++++++++++------------------- src/port/byteswap.cpp | 12 ++++ 5 files changed, 85 insertions(+), 61 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 795fcb2e..cc797b7a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -113,7 +113,7 @@ endif () target_link_libraries(marioparty4 PRIVATE aurora::aurora aurora::main musyx) add_library(bootDll SHARED src/REL/bootDll/main.c src/REL/bootDll/language.c) -target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=0 TARGET_REL) +target_compile_definitions(bootDll PRIVATE TARGET_PC VERSION=0 TARGET_REL) target_include_directories(bootDll PRIVATE include build/GMPE01_00/include) set_target_properties(bootDll PROPERTIES LINK_FLAGS "/EXPORT:ObjectSetup") target_link_libraries(bootDll PRIVATE musyx marioparty4) diff --git a/dol.def b/dol.def index 578710d3..65325067 100644 --- a/dol.def +++ b/dol.def @@ -1,4 +1,6 @@ EXPORTS + byteswap_u32 + byteswap_s32 OSReport OSGetTick HuAudFXPlay diff --git a/include/port/byteswap.h b/include/port/byteswap.h index 59df1f70..b1296121 100644 --- a/include/port/byteswap.h +++ b/include/port/byteswap.h @@ -8,6 +8,8 @@ extern "C" #include "game/animdata.h" +void byteswap_u32(u32 *src); +void byteswap_s32(s32 *src); void byteswap_animdata(void *src, AnimData* dest); void byteswap_animbankdata(void *src, AnimBankData *dest); void byteswap_animpatdata(void *src, AnimPatData *dest); diff --git a/src/REL/bootDll/main.c b/src/REL/bootDll/main.c index 24793ced..ba27c5ca 100644 --- a/src/REL/bootDll/main.c +++ b/src/REL/bootDll/main.c @@ -98,7 +98,7 @@ void ObjectSetup(void) Process *curr = HuPrcCurrentGet(); #if VERSION_NTSC if (omovlevtno == 0) { - BootProgExec(); + //BootProgExec(); } #else if(SystemInitF == FALSE) { @@ -120,11 +120,11 @@ void ObjectSetup(void) 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); + // 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; @@ -169,9 +169,9 @@ void ObjectSetup(void) #endif HuWinInit(1); BootTitleCreate(); - data = HuSprAnimReadFile(TITLE_HUDSON_ANM); - sprite_hudson = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 1, sprite_hudson); + // 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) { @@ -365,19 +365,19 @@ void ObjectSetup(void) } #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); + // 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(); @@ -414,15 +414,15 @@ void ObjectSetup(void) #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); + // 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(); @@ -557,28 +557,28 @@ void ObjectSetup(void) #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); + // 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); @@ -586,11 +586,11 @@ void ObjectSetup(void) 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); + // 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); @@ -794,8 +794,16 @@ void ObjectSetup(void) { u32 *src = (u32 *)nintendoData; u32 size = *src++; - void *dst = HuMemDirectMalloc(HEAP_DATA, size); - int decode_type = *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); } diff --git a/src/port/byteswap.cpp b/src/port/byteswap.cpp index 547dedcb..2358f02e 100644 --- a/src/port/byteswap.cpp +++ b/src/port/byteswap.cpp @@ -311,6 +311,18 @@ template void bswap(B &base, AnimLayerData &obj) bswap_flat(base, obj.vtx, sizeof(obj.vtx) / sizeof(s16)); } +void byteswap_u32(u32 *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} + +void byteswap_s32(s32 *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} + void byteswap_animdata(void *src, AnimData *dest) { auto *anim = reinterpret_cast(src); From 10efa92153f9a1c90702794e457fd7f684362f42 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Sun, 6 Apr 2025 22:04:10 +0200 Subject: [PATCH 36/47] More fixes --- CMakeLists.txt | 2 ++ include/dolphin/os.h | 5 ++++ src/REL/bootDll/main.c | 46 ++++++++++++++++---------------- src/REL/w03Dll/mg_coin.c | 2 +- src/REL/w05Dll/mg_coin.c | 4 +-- src/REL/w05Dll/mg_item.c | 2 +- src/port/OS.c | 57 ++++++++++++++++++++++++++++++++++++++-- src/port/stubs.c | 20 +++++++------- 8 files changed, 99 insertions(+), 39 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cc797b7a..5bbe66b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,6 +26,8 @@ if(APPLE) add_compile_options(-Wno-declaration-after-statement) endif () +add_compile_options(-fsanitize=address) + add_subdirectory(extern/aurora EXCLUDE_FROM_ALL) add_subdirectory(extern/musyx EXCLUDE_FROM_ALL) diff --git a/include/dolphin/os.h b/include/dolphin/os.h index bfe75527..849cf282 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 162000000 +#define OS_BUS_CLOCK 486000000 +#endif #define OS_TIMER_CLOCK (OS_BUS_CLOCK / 4) #ifndef _DEBUG diff --git a/src/REL/bootDll/main.c b/src/REL/bootDll/main.c index ba27c5ca..eb32e58b 100644 --- a/src/REL/bootDll/main.c +++ b/src/REL/bootDll/main.c @@ -126,7 +126,7 @@ void ObjectSetup(void) // HuSprPosSet(group, 1, 288, 240); // HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); HuWinInit(1); - BootTitleCreate(); + //BootTitleCreate(); SystemInitF = 1; } else { @@ -167,16 +167,16 @@ void ObjectSetup(void) // TODO PC MGSeqInit(); #endif - HuWinInit(1); - BootTitleCreate(); + //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(); - } + //while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { + // HuPrcVSleep(); + //} } else { for (i = 0; i < 180; i++) { @@ -209,9 +209,9 @@ void ObjectSetup(void) //group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0)); //msmSysLoadGroup(0, group_samp, 0); //HuMemDirectFree(group_samp); - while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { - HuPrcVSleep(); - } + //while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { + // HuPrcVSleep(); + //} } else { for (i = 0; i < 180; i++) { @@ -234,14 +234,14 @@ void ObjectSetup(void) while (WipeStatGet()) { HuPrcVSleep(); } - tick_prev = OSGetTick(); - if (!SystemInitF) { - HuAudSndGrpSetSet(0); - SystemInitF = 1; - } - while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 1000) { - 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); @@ -249,11 +249,11 @@ void ObjectSetup(void) //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); + //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()) { @@ -622,7 +622,7 @@ void ObjectSetup(void) OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, seNo)); OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0)); #endif - HuAudSStreamPlay(20); + //HuAudSStreamPlay(20); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); while (WipeStatGet()) { HuPrcVSleep(); 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/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/port/OS.c b/src/port/OS.c index 02850565..724a1925 100644 --- a/src/port/OS.c +++ b/src/port/OS.c @@ -3,12 +3,56 @@ #include +#ifndef _WIN32 +#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 GetGCTicksPerSec() +{ + return 486000000ull; +} + +static u64 GetGCTicks() +{ +#if __APPLE__ + return mach_absolute_time() * MachToDolphinNum / MachToDolphinDenom; +#elif __linux__ || __FreeBSD__ + struct timespec tp; + clock_gettime(CLOCK_MONOTONIC, &tp); + + return u64((tp.tv_sec * 1000000000ull) + tp.tv_nsec) * GetGCTicksPerSec() / 1000000000ull; +#elif _WIN32 + LARGE_INTEGER perf; + QueryPerformanceCounter(&perf); + perf.QuadPart *= GetGCTicksPerSec(); + perf.QuadPart /= PerfFrequency.QuadPart; + return perf.QuadPart; +#else + return 0; +#endif +} + void OSInit() { puts("OSInit is a stub"); @@ -16,16 +60,25 @@ void OSInit() OSSetArenaLo(arena); OSSetArenaHi(arena + MEM_SIZE); + + #if __APPLE__ + mach_timebase_info_data_t timebase; + mach_timebase_info(&timebase); + MachToDolphinNum = GetGCTicksPerSec() * timebase.numer; + MachToDolphinDenom = 1000000000ull * timebase.denom; +#elif _WIN32 + QueryPerformanceFrequency(&PerfFrequency); +#endif } OSTime OSGetTime(void) { - return 0; + return (OSTime)GetGCTicks(); } OSTick OSGetTick(void) { - return 0; + return (OSTick)GetGCTicks(); } u32 OSGetPhysicalMemSize(void) diff --git a/src/port/stubs.c b/src/port/stubs.c index 79cf1fa1..70bb4995 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -536,53 +536,53 @@ VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback callback) void GXSetGPMetric(GXPerf0 perf0, GXPerf1 perf1) { - puts("GXSetGPMetric is a stub"); + // puts("GXSetGPMetric is a stub"); } void GXReadGPMetric(u32 *cnt0, u32 *cnt1) { - puts("GXReadGPMetric is a stub"); + // puts("GXReadGPMetric is a stub"); } void GXClearGPMetric(void) { - puts("GXClearGPMetric is a stub"); + // 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"); + // puts("GXReadMemMetric is a stub"); } void GXClearMemMetric(void) { - puts("GXClearMemMetric is a stub"); + // puts("GXClearMemMetric is a stub"); } void GXClearVCacheMetric(void) { - puts("GXClearVCacheMetric is a stub"); + // 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"); + // puts("GXReadPixMetric is a stub"); } void GXClearPixMetric(void) { - puts("GXClearPixMetric is a stub"); + // puts("GXClearPixMetric is a stub"); } void GXSetVCacheMetric(GXVCachePerf attr) { - puts("GXSetVCacheMetric is a stub"); + // puts("GXSetVCacheMetric is a stub"); } void GXReadVCacheMetric(u32 *check, u32 *miss, u32 *stall) { - puts("GXReadVCacheMetric is a stub"); + // puts("GXReadVCacheMetric is a stub"); } void GXSetDrawSync(u16 token) From b480f7bfce867ff42dab8e55ccab146c5fbbe607 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Mon, 7 Apr 2025 01:07:57 +0200 Subject: [PATCH 37/47] More byteswaps --- include/port/byteswap.h | 4 + src/REL/bootDll/main.c | 170 ++++++++++++++++++++-------------------- src/game/data.c | 11 ++- src/game/hsfload.c | 17 ++-- src/port/byteswap.cpp | 37 +++++++++ 5 files changed, 147 insertions(+), 92 deletions(-) diff --git a/include/port/byteswap.h b/include/port/byteswap.h index b1296121..26286fab 100644 --- a/include/port/byteswap.h +++ b/include/port/byteswap.h @@ -7,6 +7,7 @@ extern "C" #endif #include "game/animdata.h" +#include "game/hsfformat.h" void byteswap_u32(u32 *src); void byteswap_s32(s32 *src); @@ -17,6 +18,9 @@ void byteswap_animbmpdata(void *src, AnimBmpData *dest); void byteswap_animframedata(AnimFrameData *src); void byteswap_animlayerdata(AnimLayerData *src); + +void byteswap_hsfheader(HsfHeader *src); + #ifdef __cplusplus } #endif diff --git a/src/REL/bootDll/main.c b/src/REL/bootDll/main.c index eb32e58b..b0aa1f02 100644 --- a/src/REL/bootDll/main.c +++ b/src/REL/bootDll/main.c @@ -98,7 +98,7 @@ void ObjectSetup(void) Process *curr = HuPrcCurrentGet(); #if VERSION_NTSC if (omovlevtno == 0) { - //BootProgExec(); + BootProgExec(); } #else if(SystemInitF == FALSE) { @@ -119,14 +119,14 @@ void ObjectSetup(void) 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(); + //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 { @@ -162,21 +162,21 @@ void ObjectSetup(void) // TODO PC CharManInit(); #endif - HuWindowInit(); #ifdef __MWERKS__ // TODO PC + HuWindowInit(); MGSeqInit(); #endif //HuWinInit(1); - //BootTitleCreate(); - // data = HuSprAnimReadFile(TITLE_HUDSON_ANM); - // sprite_hudson = HuSprCreate(data, 0, 0); - // HuSprGrpMemberSet(group, 1, sprite_hudson); + 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(); - //} + while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { + HuPrcVSleep(); + } } else { for (i = 0; i < 180; i++) { @@ -209,9 +209,9 @@ void ObjectSetup(void) //group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0)); //msmSysLoadGroup(0, group_samp, 0); //HuMemDirectFree(group_samp); - //while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { - // HuPrcVSleep(); - //} + while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 3000) { + HuPrcVSleep(); + } } else { for (i = 0; i < 180; i++) { @@ -234,21 +234,21 @@ void ObjectSetup(void) while (WipeStatGet()) { HuPrcVSleep(); } - //tick_prev = OSGetTick(); - //if (!SystemInitF) { + tick_prev = OSGetTick(); + if (!SystemInitF) { // HuAudSndGrpSetSet(0); - // SystemInitF = 1; - //} - //while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 1000) { - // HuPrcVSleep(); - //} + 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)); + //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); @@ -272,7 +272,7 @@ void ObjectSetup(void) while (WipeStatGet()) { HuPrcVSleep(); } - HuWinKill(demoWinId); + //HuWinKill(demoWinId); //HuTHPClose(); HuPrcVSleep(); //HuSprGrpKill(group_thp); @@ -286,7 +286,7 @@ void ObjectSetup(void) goto repeat; } WipeColorSet(255, 255, 255); - HuAudSStreamAllFadeOut(500); + //HuAudSStreamAllFadeOut(500); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); while (WipeStatGet()) { HuPrcVSleep(); @@ -328,10 +328,10 @@ void ObjectSetup(void) int i; for (i = 0; demoMessTimeTbl[i * 2] != -1; i++) { if (frame == demoMessTimeTbl[i * 2]) { - HuWinMesSet(demoWinId, MAKE_MESSID(54, i)); + //HuWinMesSet(demoWinId, MAKE_MESSID(54, i)); } if (frame == demoMessTimeTbl[(i * 2) + 1]) { - HuWinHomeClear(demoWinId); + //HuWinHomeClear(demoWinId); } } } @@ -365,19 +365,19 @@ void ObjectSetup(void) } #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); + 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(); @@ -414,15 +414,15 @@ void ObjectSetup(void) #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); + 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(); @@ -557,28 +557,28 @@ void ObjectSetup(void) #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); + 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); + 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); @@ -586,11 +586,11 @@ void ObjectSetup(void) 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); + 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); @@ -621,8 +621,8 @@ void ObjectSetup(void) // TODO PC OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, seNo)); OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0)); + HuAudSStreamPlay(20); #endif - //HuAudSStreamPlay(20); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); while (WipeStatGet()) { HuPrcVSleep(); @@ -744,10 +744,10 @@ void ObjectSetup(void) HuSprTPLvlSet(bootGrpId, 2, i / 10.0); } if (HuPadBtnDown[0] & PAD_BUTTON_START) { - s32 ret = HuAudFXPlay(2092); - if (ret < 0) { - OSReport(">>>>>Error %d\n", ret); - } + //s32 ret = HuAudFXPlay(2092); + //if (ret < 0) { + // OSReport(">>>>>Error %d\n", ret); + //} HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); return 1; } diff --git a/src/game/data.c b/src/game/data.c index 24373a3b..4686fa57 100644 --- a/src/game/data.c +++ b/src/game/data.c @@ -279,13 +279,20 @@ BOOL HuDataGetAsyncStat(s32 status) static void GetFileInfo(DataReadStat *read_stat, s32 file_num) { - uintptr_t *temp_ptr; - temp_ptr = (uintptr_t *)PTR_OFFSET(read_stat->dir, (file_num * 4))+1; + u32 *temp_ptr; + temp_ptr = (u32 *)PTR_OFFSET(read_stat->dir, (file_num * 4))+1; +#ifdef TARGET_PC + byteswap_u32(temp_ptr); +#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) diff --git a/src/game/hsfload.c b/src/game/hsfload.c index d5db2471..d4472e0f 100644 --- a/src/game/hsfload.c +++ b/src/game/hsfload.c @@ -2,6 +2,10 @@ #include "string.h" #include "ctype.h" +#ifdef TARGET_PC +#include "port/byteswap.h" +#endif + #define AS_S16(field) (*((s16 *)&(field))) #define AS_U16(field) (*((u16 *)&(field))) @@ -117,11 +121,14 @@ static void FileLoad(void *data) 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); +#endif + 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); } static HsfData *SetHsfModel(void) diff --git a/src/port/byteswap.cpp b/src/port/byteswap.cpp index 2358f02e..027978a2 100644 --- a/src/port/byteswap.cpp +++ b/src/port/byteswap.cpp @@ -311,6 +311,37 @@ template void bswap(B &base, AnimLayerData &obj) 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); +} + void byteswap_u32(u32 *src) { bswap(*src, *src); @@ -362,3 +393,9 @@ void byteswap_animlayerdata(AnimLayerData *src) bswap(*src, *src); sVisitedPtrs.clear(); } + +void byteswap_hsfheader(HsfHeader *src) +{ + bswap(*src, *src); + sVisitedPtrs.clear(); +} From 5fbbec350295fc4eb8b2a3732b7ce0bdea5caa26 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Mon, 7 Apr 2025 17:42:11 +0200 Subject: [PATCH 38/47] Update aurora --- extern/aurora | 2 +- include/dolphin/os.h | 4 ++-- src/REL/bootDll/main.c | 32 ++++++++++++++++---------------- src/port/OS.c | 9 ++------- src/port/stubs.c | 19 +++++++++---------- 5 files changed, 30 insertions(+), 36 deletions(-) diff --git a/extern/aurora b/extern/aurora index f713ca67..10bcf955 160000 --- a/extern/aurora +++ b/extern/aurora @@ -1 +1 @@ -Subproject commit f713ca675055fa522bf44e2d326eb3e7941ec381 +Subproject commit 10bcf955aaabf8e1470ab07da51302a2ca3a8bfa diff --git a/include/dolphin/os.h b/include/dolphin/os.h index 849cf282..b0f91c56 100644 --- a/include/dolphin/os.h +++ b/include/dolphin/os.h @@ -29,8 +29,8 @@ 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 162000000 -#define OS_BUS_CLOCK 486000000 +#define OS_BUS_CLOCK 162000000ull +#define OS_CORE_CLOCK 486000000ull #endif #define OS_TIMER_CLOCK (OS_BUS_CLOCK / 4) diff --git a/src/REL/bootDll/main.c b/src/REL/bootDll/main.c index b0aa1f02..ec5ace5f 100644 --- a/src/REL/bootDll/main.c +++ b/src/REL/bootDll/main.c @@ -541,17 +541,17 @@ void ObjectSetup(void) 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); + //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 @@ -613,8 +613,8 @@ void ObjectSetup(void) s16 choice; float temp; repeat: - Hu3DModelAttrReset(titleMdlId[0], HU3D_ATTR_DISPOFF); - Hu3DModelAttrReset(titleMdlId[1], HU3D_ATTR_DISPOFF); + //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__ @@ -766,9 +766,9 @@ void ObjectSetup(void) while (WipeStatGet()) { HuPrcVSleep(); } - Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); + //Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); + //Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); + //Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); #if VERSION_NTSC HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); diff --git a/src/port/OS.c b/src/port/OS.c index 724a1925..9d5f61d6 100644 --- a/src/port/OS.c +++ b/src/port/OS.c @@ -28,11 +28,6 @@ static LARGE_INTEGER PerfFrequency; u8 LC_CACHE_BASE[4096]; -static u64 GetGCTicksPerSec() -{ - return 486000000ull; -} - static u64 GetGCTicks() { #if __APPLE__ @@ -45,7 +40,7 @@ static u64 GetGCTicks() #elif _WIN32 LARGE_INTEGER perf; QueryPerformanceCounter(&perf); - perf.QuadPart *= GetGCTicksPerSec(); + perf.QuadPart *= OS_CORE_CLOCK; perf.QuadPart /= PerfFrequency.QuadPart; return perf.QuadPart; #else @@ -64,7 +59,7 @@ void OSInit() #if __APPLE__ mach_timebase_info_data_t timebase; mach_timebase_info(&timebase); - MachToDolphinNum = GetGCTicksPerSec() * timebase.numer; + MachToDolphinNum = OS_CORE_CLOCK * timebase.numer; MachToDolphinDenom = 1000000000ull * timebase.denom; #elif _WIN32 QueryPerformanceFrequency(&PerfFrequency); diff --git a/src/port/stubs.c b/src/port/stubs.c index 70bb4995..225f6640 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -452,7 +452,7 @@ void VIConfigurePan(u16 xOrg, u16 yOrg, u16 width, u16 height) u32 VIGetRetraceCount() { - puts("VIGetRetraceCount is a stub"); + // puts("VIGetRetraceCount is a stub"); return 0; // TODO this might be important } @@ -469,12 +469,12 @@ void VISetBlack(BOOL black) void VISetNextFrameBuffer(void *fb) { - puts("VISetNextFrameBuffer is a stub"); + // puts("VISetNextFrameBuffer is a stub"); } void VIWaitForRetrace() { - puts("VIWaitForRetrace is a stub"); + // puts("VIWaitForRetrace is a stub"); } s32 __CARDFormatRegionAsync(int a, int b) @@ -587,7 +587,7 @@ void GXReadVCacheMetric(u32 *check, u32 *miss, u32 *stall) void GXSetDrawSync(u16 token) { - puts("GXSetDrawSync is a stub"); + // puts("GXSetDrawSync is a stub"); } GXDrawSyncCallback GXSetDrawSyncCallback(GXDrawSyncCallback cb) @@ -635,17 +635,17 @@ void GXNormal3s16(s16 x, s16 y, s16 z) void GXPosition2u16(const u16 x, const u16 y) { - puts("GXPosition2u16 is a stub"); + GXPosition3f32(x, y, 0); } void GXPosition2f32(const f32 x, const f32 y) { - puts("GXPosition2f32 is a stub"); + GXPosition3f32(x, y, 0); } void GXPosition2s16(const s16 x, const s16 y) { - puts("GXPosition2s16 is a stub"); + GXPosition3f32(x, y, 0); } void GXColor1x8(u8 index) @@ -688,18 +688,17 @@ void msmSysRegularProc(void) void msmMusFdoutEnd(void) { - puts("msmMusFdoutEnd is a stub"); } s32 HuSoftResetButtonCheck(void) { - puts("HuSoftResetButtonCheck is a stub"); + //puts("HuSoftResetButtonCheck is a stub"); return 0; } void MGSeqMain(void) { - puts("MGSeqMain is a stub"); + // puts("MGSeqMain is a stub"); } // TODO remove From 1bb770e5d77a4740c7ca103d6d528fc3b823cfd8 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Tue, 8 Apr 2025 00:13:26 +0200 Subject: [PATCH 39/47] Get inputs working with a hack --- src/game/main.c | 12 +++++++----- src/port/stubs.c | 24 +++++++++++++++--------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/game/main.c b/src/game/main.c index b104b7f2..b0e793ed 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -79,6 +79,8 @@ void aurora_log_callback(AuroraLogLevel level, const char *message, unsigned int abort(); } } + +void VICallPostRetraceCallback(s32 retraceCount); #endif #ifdef TARGET_PC @@ -182,13 +184,9 @@ void main(void) pfDrawFonts(); HuPerfEnd(1); -#ifdef TARGET_PC - imgui_main(&auroraInfo); - aurora_end_frame(); -#endif - msmMusFdoutEnd(); HuSysDoneRender(retrace); + GXReadGPMetric(&met0, &met1); GXReadVCacheMetric(&vcheck, &vmiss, &vstall); GXReadPixMetric(&top_pixels_in, &top_pixels_out, &bot_pixels_in, &bot_pixels_out, &clr_pixels_in, &total_copy_clks); @@ -197,6 +195,10 @@ void main(void) GlobalCounter++; #ifdef TARGET_PC + imgui_main(&auroraInfo); + aurora_end_frame(); + // TODO PC remove + VICallPostRetraceCallback(0); frame_limiter(); #endif } diff --git a/src/port/stubs.c b/src/port/stubs.c index 225f6640..bfa5e413 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -1,4 +1,5 @@ #include "dolphin/gx/GXVert.h" +#include "dolphin/vitypes.h" #include #include #include @@ -527,11 +528,18 @@ void SISetSamplingRate(u32 msec) puts("SISetSamplingRate is a stub"); } +VIRetraceCallback postRetraceCallback = NULL; + VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback callback) { - puts("VISetPostRetraceCallback is a stub"); - // TODO - return callback; + postRetraceCallback = callback; + return NULL; +} + +void VICallPostRetraceCallback(s32 retraceCount) +{ + if (postRetraceCallback != NULL) + postRetraceCallback(retraceCount); } void GXSetGPMetric(GXPerf0 perf0, GXPerf1 perf1) @@ -674,7 +682,8 @@ void GXResetWriteGatherPipe(void) puts("GXResetWriteGatherPipe is a stub"); } -void ARQInit(void) { +void ARQInit(void) +{ puts("ARQInit is a stub"); } @@ -683,16 +692,13 @@ void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { } void msmSysRegularProc(void) { - puts("msmSysRegularProc is a stub"); } -void msmMusFdoutEnd(void) -{ -} +void msmMusFdoutEnd(void) { } s32 HuSoftResetButtonCheck(void) { - //puts("HuSoftResetButtonCheck is a stub"); + // puts("HuSoftResetButtonCheck is a stub"); return 0; } From 07b827eb2de8053c92a97cc79c670cf215c5c6ba Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Tue, 8 Apr 2025 14:40:04 +0200 Subject: [PATCH 40/47] Fixes by encounter --- CMakeLists.txt | 6 +- extern/aurora | 2 +- include/dolphin/gx/GXPriv.h | 3 +- include/game/jmp.h | 5 +- src/dolphin/mtx/mtx.c | 747 +++++++++++++++++++----------------- src/dolphin/mtx/mtx44.c | 143 ++++--- src/game/main.c | 14 +- src/port/imgui.cpp | 4 +- src/port/stubs.c | 76 +--- 9 files changed, 509 insertions(+), 491 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5bbe66b1..59e13d23 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,6 +28,10 @@ endif () add_compile_options(-fsanitize=address) +if (MSVC) + add_compile_options(/bigobj) +endif () + add_subdirectory(extern/aurora EXCLUDE_FROM_ALL) add_subdirectory(extern/musyx EXCLUDE_FROM_ALL) @@ -112,7 +116,7 @@ target_include_directories(marioparty4 PRIVATE include build/GMPE01_00/include) if (MSVC) target_link_options(marioparty4 PRIVATE "/DEF:${CMAKE_SOURCE_DIR}/dol.def") endif () -target_link_libraries(marioparty4 PRIVATE aurora::aurora aurora::main musyx) +target_link_libraries(marioparty4 PRIVATE aurora::core aurora::gx aurora::vi aurora::main musyx) add_library(bootDll SHARED src/REL/bootDll/main.c src/REL/bootDll/language.c) target_compile_definitions(bootDll PRIVATE TARGET_PC VERSION=0 TARGET_REL) diff --git a/extern/aurora b/extern/aurora index 10bcf955..d9de6603 160000 --- a/extern/aurora +++ b/extern/aurora @@ -1 +1 @@ -Subproject commit 10bcf955aaabf8e1470ab07da51302a2ca3a8bfa +Subproject commit d9de6603c79917a5353abd3a9cc26ec557ceee05 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/game/jmp.h b/include/game/jmp.h index 4ead22aa..8dfe2179 100755 --- a/include/game/jmp.h +++ b/include/game/jmp.h @@ -133,9 +133,12 @@ typedef struct _JUMP_BUFFER { #endif #endif -#if defined(_M_IX86) || defined(__i386__) || defined(_M_X64) || defined(__x86_64__) +#if defined(_M_IX86) || defined(__i386__) #define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Eip = (size_t)func #define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Esp = (size_t)sp +#elif defined(_M_X64) || defined(__x86_64__) +#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Rip = (size_t)func +#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Rsp = (size_t)sp #elif defined(_M_ARM) || defined(__arm__) #define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Pc = (size_t)func #define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (size_t)sp diff --git a/src/dolphin/mtx/mtx.c b/src/dolphin/mtx/mtx.c index 0d661294..30a3aa18 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,90 +1234,88 @@ 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 @@ -1310,20 +1329,39 @@ void C_MTXReorder(const Mtx src, ROMtx dest) } } -void C_MTXMultVec(const Mtx m, const Vec *in, Vec *out) -{ - out->x = m[0][0] * in->x + m[0][1] * in->y + m[0][2] * in->z + m[0][3]; - out->y = m[1][0] * in->x + m[1][1] * in->y + m[1][2] * in->z + m[1][3]; - out->z = m[2][0] * in->x + m[2][1] * in->y + m[2][2] * in->z + m[2][3]; +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) -{ +void C_MTXMultVecArray(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count) { u32 i; - for (i = 0; i < count; i++) { - dstBase[i].x = m[0][0] * srcBase[i].x + m[0][1] * srcBase[i].y + m[0][2] * srcBase[i].z + m[0][3]; - dstBase[i].y = m[1][0] * srcBase[i].x + m[1][1] * srcBase[i].y + m[1][2] * srcBase[i].z + m[1][3]; - dstBase[i].z = m[2][0] * srcBase[i].x + m[2][1] * srcBase[i].y + m[2][2] * srcBase[i].z + m[2][3]; + 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++; } } @@ -1341,14 +1379,19 @@ void C_MTXROMultVecArray(const ROMtx m, const Vec *srcBase, Vec *dstBase, u32 co } } -void C_MTXMultVecSR(const Mtx mtx, const Vec* in, Vec* out) { - float x = in->x; - float y = in->y; - float z = in->z; - - out->x = mtx[0][0] * x + mtx[0][1] * y + mtx[0][2] * z; - out->y = mtx[1][0] * x + mtx[1][1] * y + mtx[1][2] * z; - out->z = mtx[2][0] * x + mtx[2][1] * y + mtx[2][2] * 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 4c1e577d..39ddff22 100644 --- a/src/dolphin/mtx/mtx44.c +++ b/src/dolphin/mtx/mtx44.c @@ -1,77 +1,92 @@ #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 diff --git a/src/game/main.c b/src/game/main.c index b0e793ed..5424b56b 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -50,7 +50,7 @@ SHARED_SYM s32 SystemInitF; #ifdef TARGET_PC #include -void aurora_log_callback(AuroraLogLevel level, const char *message, unsigned int len) +void aurora_log_callback(AuroraLogLevel level, const char* module, const char *message, unsigned int len) { const char *levelStr = "??"; FILE *out = stdout; @@ -73,14 +73,12 @@ void aurora_log_callback(AuroraLogLevel level, const char *message, unsigned int out = stderr; break; } - fprintf(out, "[%s: %s]\n", levelStr, message); + fprintf(out, "[%s | %s] %s\n", levelStr, module, message); if (level == LOG_FATAL) { fflush(out); abort(); } } - -void VICallPostRetraceCallback(s32 retraceCount); #endif #ifdef TARGET_PC @@ -94,6 +92,11 @@ void main(void) &(AuroraConfig) { .appName = "Mario Party 4", .logCallback = &aurora_log_callback, + .desiredBackend = BACKEND_VULKAN, + .windowPosX = 100, + .windowPosY = 100, + .windowWidth = 640, + .windowHeight = 480, }); #endif u32 met0; @@ -186,7 +189,6 @@ void main(void) msmMusFdoutEnd(); HuSysDoneRender(retrace); - GXReadGPMetric(&met0, &met1); GXReadVCacheMetric(&vcheck, &vmiss, &vstall); GXReadPixMetric(&top_pixels_in, &top_pixels_out, &bot_pixels_in, &bot_pixels_out, &clr_pixels_in, &total_copy_clks); @@ -197,8 +199,6 @@ void main(void) #ifdef TARGET_PC imgui_main(&auroraInfo); aurora_end_frame(); - // TODO PC remove - VICallPostRetraceCallback(0); frame_limiter(); #endif } diff --git a/src/port/imgui.cpp b/src/port/imgui.cpp index 51bf83a2..2b70dc04 100644 --- a/src/port/imgui.cpp +++ b/src/port/imgui.cpp @@ -142,9 +142,9 @@ void imgui_main(const AuroraInfo *info) hasPrevious = true; ImGuiStringViewText( - fmt::format(FMT_STRING("Queued pipelines: {}\n"), aurora::gfx::queuedPipelines)); + fmt::format(FMT_STRING("Queued pipelines: {}\n"), aurora::gfx::queuedPipelines.load())); ImGuiStringViewText( - fmt::format(FMT_STRING("Done pipelines: {}\n"), aurora::gfx::createdPipelines)); + 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"), diff --git a/src/port/stubs.c b/src/port/stubs.c index bfa5e413..00f6b1ef 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -1,5 +1,4 @@ #include "dolphin/gx/GXVert.h" -#include "dolphin/vitypes.h" #include #include #include @@ -10,6 +9,8 @@ // Credits: Super Monkey Ball +static VIRetraceCallback sVIRetraceCallback = NULL; + void OSReport(const char *msg, ...) { va_list args; @@ -475,7 +476,10 @@ void VISetNextFrameBuffer(void *fb) void VIWaitForRetrace() { - // puts("VIWaitForRetrace is a stub"); +if (sVIRetraceCallback) +{ + sVIRetraceCallback(0); +} } s32 __CARDFormatRegionAsync(int a, int b) @@ -528,18 +532,10 @@ void SISetSamplingRate(u32 msec) puts("SISetSamplingRate is a stub"); } -VIRetraceCallback postRetraceCallback = NULL; - VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback callback) { - postRetraceCallback = callback; - return NULL; -} - -void VICallPostRetraceCallback(s32 retraceCount) -{ - if (postRetraceCallback != NULL) - postRetraceCallback(retraceCount); +sVIRetraceCallback = callback; + return callback; } void GXSetGPMetric(GXPerf0 perf0, GXPerf1 perf1) @@ -610,57 +606,11 @@ void PPCSync(void) puts("PPCSync is a stub"); } -void GXColor3u8(u8 r, u8 g, u8 b) -{ - // TODO - GXColor4u8(r, g, b, 255); -} - -void GXNormal1x16(u16 index) -{ - puts("GXNormal1x16 is a stub"); -} - -void GXColor1x16(u16 index) -{ - puts("GXColor1x16 is a stub"); -} - -void GXTexCoord1x16(u16 index) -{ - puts("GXTexCoord1x16 is a stub"); -} - void GXUnknownu16(const u16 x) { puts("GXUnknownu16 is a stub"); } -void GXNormal3s16(s16 x, s16 y, s16 z) -{ - puts("GXNormal3s16 is a stub"); -} - -void GXPosition2u16(const u16 x, const u16 y) -{ - GXPosition3f32(x, y, 0); -} - -void GXPosition2f32(const f32 x, const f32 y) -{ - GXPosition3f32(x, y, 0); -} - -void GXPosition2s16(const s16 x, const s16 y) -{ - GXPosition3f32(x, y, 0); -} - -void GXColor1x8(u8 index) -{ - puts("GXColor1x8 is a stub"); -} - void GXWaitDrawDone(void) { puts("GXWaitDrawDone is a stub"); @@ -682,8 +632,7 @@ void GXResetWriteGatherPipe(void) puts("GXResetWriteGatherPipe is a stub"); } -void ARQInit(void) -{ +void ARQInit(void) { puts("ARQInit is a stub"); } @@ -692,13 +641,16 @@ void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { } void msmSysRegularProc(void) { + puts("msmSysRegularProc is a stub"); } -void msmMusFdoutEnd(void) { } +void msmMusFdoutEnd(void) +{ +} s32 HuSoftResetButtonCheck(void) { - // puts("HuSoftResetButtonCheck is a stub"); + //puts("HuSoftResetButtonCheck is a stub"); return 0; } From a95def6dc0e05051eec0157daad35edb4f229df9 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Tue, 8 Apr 2025 15:08:40 +0200 Subject: [PATCH 41/47] Asan hack --- src/game/main.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/game/main.c b/src/game/main.c index 5424b56b..03394e18 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -22,6 +22,11 @@ #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[]; From 54d85f487cfadeb72a0cd19734f5a1a97b749df3 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Tue, 8 Apr 2025 17:12:51 +0200 Subject: [PATCH 42/47] Split off the DOL to improve the build process --- CMakeLists.txt | 32 +++++++++++++++++++++----------- dol.def | 1 + include/version.h | 2 +- src/game/frand.c | 2 +- src/game/main.c | 2 +- src/port/portmain.c | 7 +++++++ 6 files changed, 32 insertions(+), 14 deletions(-) create mode 100644 src/port/portmain.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 59e13d23..ec1cc87c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,8 @@ 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) @@ -106,20 +108,28 @@ set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-std=c89 -Dinline= endforeach() endif () -# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rdynamic") -add_executable(marioparty4 ${DOLPHIN_FILES} ${GAME_FILES} ${PORT_FILES}) -set_property(TARGET marioparty4 PROPERTY ENABLE_EXPORTS ON) -target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=0 TARGET_MAIN) -target_compile_definitions(musyx PRIVATE MUSY_VERSION_MAJOR=1 MUSY_VERSION_MINOR=5 MUSY_VERSION_PATCH=4) -target_include_directories(marioparty4 PRIVATE include build/GMPE01_00/include) +add_library(dol SHARED ${DOLPHIN_FILES} ${GAME_FILES} ${PORT_FILES}) +target_compile_definitions(dol PRIVATE TARGET_PC TARGET_DOL VERSION=${VERSION} MUSY_VERSION_MAJOR=1 MUSY_VERSION_MINOR=5 MUSY_VERSION_PATCH=4) +target_include_directories(dol PRIVATE include build/GMPE01_00/include) +target_link_libraries(dol PRIVATE aurora::core aurora::gx aurora::vi musyx) if (MSVC) -target_link_options(marioparty4 PRIVATE "/DEF:${CMAKE_SOURCE_DIR}/dol.def") -endif () -target_link_libraries(marioparty4 PRIVATE aurora::core aurora::gx aurora::vi aurora::main musyx) +target_link_options(dol PRIVATE "/DEF:${CMAKE_SOURCE_DIR}/dol.def") +else () +target_compile_options(dol PRIVATE "-fvisibility=default") +endif() add_library(bootDll SHARED src/REL/bootDll/main.c src/REL/bootDll/language.c) -target_compile_definitions(bootDll PRIVATE TARGET_PC VERSION=0 TARGET_REL) +target_compile_definitions(bootDll PRIVATE TARGET_PC VERSION=${VERSION}) target_include_directories(bootDll PRIVATE include build/GMPE01_00/include) +if (MSVC) set_target_properties(bootDll PROPERTIES LINK_FLAGS "/EXPORT:ObjectSetup") -target_link_libraries(bootDll PRIVATE musyx marioparty4) +else () +endif() +set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS OFF) +target_link_libraries(bootDll PRIVATE dol musyx) + +add_executable(marioparty4 src/port/portmain.c) +target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=${VERSION}) +target_include_directories(marioparty4 PRIVATE include) +target_link_libraries(marioparty4 PRIVATE dol aurora::main) diff --git a/dol.def b/dol.def index 65325067..941749d0 100644 --- a/dol.def +++ b/dol.def @@ -1,4 +1,5 @@ EXPORTS + game_main byteswap_u32 byteswap_s32 OSReport diff --git a/include/version.h b/include/version.h index de3a0e84..8a25ab40 100644 --- a/include/version.h +++ b/include/version.h @@ -22,7 +22,7 @@ #endif #if _WIN32 -#ifdef TARGET_MAIN +#ifdef TARGET_DOL #define SHARED_SYM __declspec(dllexport) #else #define SHARED_SYM __declspec(dllimport) diff --git a/src/game/frand.c b/src/game/frand.c index d997320f..5d1407f9 100644 --- a/src/game/frand.c +++ b/src/game/frand.c @@ -2,7 +2,7 @@ static u32 frand_seed; - extern s32 rand8(void); +extern s32 rand8(void); static inline u32 frandom(u32 param) { diff --git a/src/game/main.c b/src/game/main.c index 03394e18..b25ef144 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -87,7 +87,7 @@ void aurora_log_callback(AuroraLogLevel level, const char* module, const char *m #endif #ifdef TARGET_PC -int main(int argc, char *argv[]) +int game_main(int argc, char *argv[]) #else void main(void) #endif 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); +} From d19750362c70408d67ebafce787f9122ac1439b9 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Tue, 8 Apr 2025 22:49:54 +0200 Subject: [PATCH 43/47] Automatically rebuild bootDll when compiling marioparty4 --- CMakeLists.txt | 11 ++++++----- src/port/audio.c | 7 +------ src/port/stubs.c | 1 - 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ec1cc87c..a4e18016 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -119,6 +119,11 @@ else () target_compile_options(dol PRIVATE "-fvisibility=default") endif() +add_executable(marioparty4 src/port/portmain.c) +target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=${VERSION}) +target_include_directories(marioparty4 PRIVATE include) +target_link_libraries(marioparty4 PRIVATE dol aurora::main) + add_library(bootDll SHARED src/REL/bootDll/main.c src/REL/bootDll/language.c) target_compile_definitions(bootDll PRIVATE TARGET_PC VERSION=${VERSION}) target_include_directories(bootDll PRIVATE include build/GMPE01_00/include) @@ -128,8 +133,4 @@ else () endif() set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS OFF) target_link_libraries(bootDll PRIVATE dol musyx) - -add_executable(marioparty4 src/port/portmain.c) -target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=${VERSION}) -target_include_directories(marioparty4 PRIVATE include) -target_link_libraries(marioparty4 PRIVATE dol aurora::main) +add_dependencies(marioparty4 bootDll) diff --git a/src/port/audio.c b/src/port/audio.c index e1d4a9cb..f6e78076 100644 --- a/src/port/audio.c +++ b/src/port/audio.c @@ -108,12 +108,7 @@ void HuAudFadeOut(s32 speed) { int HuAudFXPlay(int seId) { - WipeState *wipe = &wipeData; - - if (omSysExitReq != 0 || (wipeData.mode == WIPE_MODE_OUT && wipe->time / wipe->duration > 0.5)) { - return 0; - } - return HuAudFXPlayVolPan(seId, MSM_VOL_MAX, MSM_PAN_CENTER); + return 5; } int HuAudFXPlayVol(int seId, s16 vol) { diff --git a/src/port/stubs.c b/src/port/stubs.c index 00f6b1ef..70a901f2 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -641,7 +641,6 @@ void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { } void msmSysRegularProc(void) { - puts("msmSysRegularProc is a stub"); } void msmMusFdoutEnd(void) From 05bae8b61143eebb054d8beb0562427e90e1f4c7 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Tue, 8 Apr 2025 23:07:42 +0200 Subject: [PATCH 44/47] Be matching again --- src/REL/bootDll/main.c | 143 +++++++++++++++++++++++++---------------- 1 file changed, 88 insertions(+), 55 deletions(-) diff --git a/src/REL/bootDll/main.c b/src/REL/bootDll/main.c index ec5ace5f..56bb9c06 100644 --- a/src/REL/bootDll/main.c +++ b/src/REL/bootDll/main.c @@ -119,13 +119,16 @@ void ObjectSetup(void) HuSprPosSet(group, 0, 288, 240); HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); if (omovlevtno != 0) { - //HuAudSndGrpSetSet(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); +#ifdef __MWERKS__ + // TODO PC + HuWinInit(1); +#endif BootTitleCreate(); SystemInitF = 1; } @@ -161,13 +164,10 @@ void ObjectSetup(void) #ifdef __MWERKS__ // TODO PC CharManInit(); -#endif -#ifdef __MWERKS__ - // TODO PC HuWindowInit(); MGSeqInit(); + HuWinInit(1); #endif - //HuWinInit(1); BootTitleCreate(); data = HuSprAnimReadFile(TITLE_HUDSON_ANM); sprite_hudson = HuSprCreate(data, 0, 0); @@ -204,11 +204,17 @@ void ObjectSetup(void) HuPrcVSleep(); } if (!SystemInitF) { - //void *group_samp; +#ifdef __MWERKS__ + // TODO PC + void *group_samp; +#endif tick_prev = OSGetTick(); - //group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0)); - //msmSysLoadGroup(0, group_samp, 0); - //HuMemDirectFree(group_samp); +#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(); } @@ -236,7 +242,7 @@ void ObjectSetup(void) } tick_prev = OSGetTick(); if (!SystemInitF) { - // HuAudSndGrpSetSet(0); + HuAudSndGrpSetSet(0); SystemInitF = 1; } while (OSTicksToMilliseconds(OSGetTick() - tick_prev) < 1000) { @@ -245,37 +251,49 @@ void ObjectSetup(void) 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); +#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(); - //} +#ifdef __MWERKS__ + // TODO PC + while (!HuTHPEndCheck()) { + UpdateDemoMess(); + if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { + skip_wait = TRUE; + break; + } + HuPrcVSleep(); + } +#endif WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); while (WipeStatGet()) { HuPrcVSleep(); } - //HuWinKill(demoWinId); - //HuTHPClose(); +#ifdef __MWERKS__ + // TODO PC + HuWinKill(demoWinId); + HuTHPClose(); +#endif HuPrcVSleep(); - //HuSprGrpKill(group_thp); +#ifdef __MWERKS__ + // TODO PC + HuSprGrpKill(group_thp); +#endif if (!skip_wait) { HuPrcSleep(60); } @@ -286,7 +304,7 @@ void ObjectSetup(void) goto repeat; } WipeColorSet(255, 255, 255); - //HuAudSStreamAllFadeOut(500); + HuAudSStreamAllFadeOut(500); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); while (WipeStatGet()) { HuPrcVSleep(); @@ -328,10 +346,16 @@ void ObjectSetup(void) int i; for (i = 0; demoMessTimeTbl[i * 2] != -1; i++) { if (frame == demoMessTimeTbl[i * 2]) { - //HuWinMesSet(demoWinId, MAKE_MESSID(54, i)); +#ifdef __MWERKS__ + // TODO PC + HuWinMesSet(demoWinId, MAKE_MESSID(54, i)); +#endif } if (frame == demoMessTimeTbl[(i * 2) + 1]) { - //HuWinHomeClear(demoWinId); +#ifdef __MWERKS__ + // TODO PC + HuWinHomeClear(demoWinId); +#endif } } } @@ -541,17 +565,20 @@ void ObjectSetup(void) 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); +#ifdef __MWERKS__ + // TODO PC + 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); +#endif #if VERSION_NTSC bootGrpId = HuSprGrpCreate(4); #else @@ -612,9 +639,12 @@ void ObjectSetup(void) s16 i; s16 choice; float temp; - repeat: - //Hu3DModelAttrReset(titleMdlId[0], HU3D_ATTR_DISPOFF); - //Hu3DModelAttrReset(titleMdlId[1], HU3D_ATTR_DISPOFF); + repeat: +#ifdef __MWERKS__ + // TODO PC + Hu3DModelAttrReset(titleMdlId[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(titleMdlId[1], HU3D_ATTR_DISPOFF); +#endif HuSprAttrReset(bootGrpId, 0, HUSPR_ATTR_DISPOFF); HuSprAttrReset(bootGrpId, 1, HUSPR_ATTR_DISPOFF); #ifdef __MWERKS__ @@ -744,10 +774,10 @@ void ObjectSetup(void) HuSprTPLvlSet(bootGrpId, 2, i / 10.0); } if (HuPadBtnDown[0] & PAD_BUTTON_START) { - //s32 ret = HuAudFXPlay(2092); - //if (ret < 0) { - // OSReport(">>>>>Error %d\n", ret); - //} + s32 ret = HuAudFXPlay(2092); + if (ret < 0) { + OSReport(">>>>>Error %d\n", ret); + } HuSprAttrSet(bootGrpId, 2, HUSPR_ATTR_DISPOFF); return 1; } @@ -766,9 +796,12 @@ void ObjectSetup(void) while (WipeStatGet()) { HuPrcVSleep(); } - //Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); - //Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); - //Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); +#ifdef __MWERKS__ + // TODO PC + Hu3DModelAttrSet(titleMdlId[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(titleMdlId[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(titleMdlId[2], HU3D_ATTR_DISPOFF); +#endif #if VERSION_NTSC HuSprAttrSet(bootGrpId, 0, HUSPR_ATTR_DISPOFF); HuSprAttrSet(bootGrpId, 1, HUSPR_ATTR_DISPOFF); From d327c22bb59d1231153156b052094d612e675006 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Wed, 9 Apr 2025 01:22:45 +0200 Subject: [PATCH 45/47] Destroy tex and tlut objects --- src/REL/instDll/main.c | 3 +++ src/REL/m404Dll/main.c | 3 +++ src/REL/m405Dll/main.c | 6 ++++++ src/REL/m408Dll/stage.c | 4 ++++ src/REL/m410Dll/player.c | 3 +++ src/REL/m416Dll/map.c | 3 +++ src/REL/m417Dll/water.c | 3 +++ src/REL/m419Dll/main.c | 4 ++++ src/REL/m421Dll/player.c | 3 +++ src/REL/m423Dll/main.c | 6 ++++++ src/REL/m427Dll/map.c | 6 ++++++ src/REL/m428Dll/main.c | 3 +++ src/REL/m430Dll/water.c | 3 +++ src/REL/m434Dll/map.c | 6 ++++++ src/REL/m440Dll/main.c | 8 +++++++- src/REL/m442Dll/main.c | 3 +++ src/REL/m448Dll/main.c | 3 +++ src/REL/m455Dll/stage.c | 6 ++++++ src/REL/m456Dll/stage.c | 6 ++++++ src/REL/m460Dll/map.c | 3 +++ src/REL/modeltestDll/main.c | 3 +++ src/REL/resultDll/battle.c | 3 +++ src/REL/ztardll/main.c | 3 +++ src/dolphin/demo/DEMOPuts.c | 3 +++ src/game/THPDraw.c | 5 +++++ src/game/board/space.c | 4 ++++ src/game/hsfdraw.c | 7 +++++++ src/game/printfunc.c | 3 +++ src/game/sprput.c | 6 +++++- src/game/wipe.c | 3 +++ src/port/audio.c | 24 ------------------------ 31 files changed, 123 insertions(+), 26 deletions(-) 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/m404Dll/main.c b/src/REL/m404Dll/main.c index ba9e9ca0..e11038f1 100644 --- a/src/REL/m404Dll/main.c +++ b/src/REL/m404Dll/main.c @@ -1308,6 +1308,9 @@ void fn_1_58E4(ModelData *modelData, Mtx arg1) GXSetTevColor(GX_TEVREG0, sp14); GXCallDisplayList(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 0b34e53d..94ab2c63 100755 --- a/src/REL/m405Dll/main.c +++ b/src/REL/m405Dll/main.c @@ -1008,6 +1008,9 @@ void fn_1_37A4(ModelData *arg0, Mtx arg1) GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); +#ifdef TARGET_PC + GXDestroyTexObj(&spC); +#endif } void fn_1_3F1C(ModelData *arg0, Mtx arg1) @@ -1077,6 +1080,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) diff --git a/src/REL/m408Dll/stage.c b/src/REL/m408Dll/stage.c index 71b8bafd..12c93d3d 100644 --- a/src/REL/m408Dll/stage.c +++ b/src/REL/m408Dll/stage.c @@ -1138,6 +1138,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) \ diff --git a/src/REL/m410Dll/player.c b/src/REL/m410Dll/player.c index 3286d2c0..f84d75ca 100644 --- a/src/REL/m410Dll/player.c +++ b/src/REL/m410Dll/player.c @@ -1144,4 +1144,7 @@ void fn_1_B140(ModelData *arg0, Mtx arg1) GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); } +#ifdef TARGET_PC + GXDestroyTexObj(&sp14); +#endif } diff --git a/src/REL/m416Dll/map.c b/src/REL/m416Dll/map.c index ea6a46bd..383cee5e 100644 --- a/src/REL/m416Dll/map.c +++ b/src/REL/m416Dll/map.c @@ -278,6 +278,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/water.c b/src/REL/m417Dll/water.c index 3838293e..e32b89f8 100644 --- a/src/REL/m417Dll/water.c +++ b/src/REL/m417Dll/water.c @@ -866,6 +866,9 @@ void fn_1_604C(ModelData *arg0, Mtx arg1) GXSetTevDirect(GX_TEVSTAGE1); GXSetTevDirect(GX_TEVSTAGE2); GXSetTevDirect(GX_TEVSTAGE3); +#ifdef TARGET_PC + GXDestroyTexObj(&sp18); +#endif } void fn_1_6B04(ModelData *model, Mtx arg1) diff --git a/src/REL/m419Dll/main.c b/src/REL/m419Dll/main.c index dd58a28a..0dc053ba 100755 --- a/src/REL/m419Dll/main.c +++ b/src/REL/m419Dll/main.c @@ -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) diff --git a/src/REL/m421Dll/player.c b/src/REL/m421Dll/player.c index ce14a94c..db7f98ee 100644 --- a/src/REL/m421Dll/player.c +++ b/src/REL/m421Dll/player.c @@ -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/m423Dll/main.c b/src/REL/m423Dll/main.c index 10927b93..1432ff5c 100755 --- a/src/REL/m423Dll/main.c +++ b/src/REL/m423Dll/main.c @@ -4497,6 +4497,9 @@ void fn_1_EF44(ModelData *arg0, Mtx arg1) } GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); +#ifdef TARGET_PC + GXDestroyTexObj(&sp14); +#endif } s32 fn_1_F574(Vec arg0, float arg1, s32 arg2) @@ -4911,6 +4914,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) diff --git a/src/REL/m427Dll/map.c b/src/REL/m427Dll/map.c index 5920f4b2..dc67c7c1 100644 --- a/src/REL/m427Dll/map.c +++ b/src/REL/m427Dll/map.c @@ -1076,6 +1076,9 @@ void fn_1_618C(ModelData *arg0, Mtx arg1) GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); +#ifdef TARGET_PC + GXDestroyTexObj(&sp14); +#endif } s32 lbl_1_data_FC[0xC] = { @@ -2443,6 +2446,9 @@ void fn_1_B3CC(ModelData *model, Mtx matrix) GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); +#ifdef TARGET_PC + GXDestroyTexObj(&sp44); +#endif } void fn_1_BD2C(ModelData *model, Mtx matrix) diff --git a/src/REL/m428Dll/main.c b/src/REL/m428Dll/main.c index 1ee62c82..f6610719 100644 --- a/src/REL/m428Dll/main.c +++ b/src/REL/m428Dll/main.c @@ -980,6 +980,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/m430Dll/water.c b/src/REL/m430Dll/water.c index cfb782c7..999e3e3d 100644 --- a/src/REL/m430Dll/water.c +++ b/src/REL/m430Dll/water.c @@ -1284,6 +1284,9 @@ void fn_1_8CE0(ModelData *model, Mtx matrix) GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); +#ifdef TARGET_PC + GXDestroyTexObj(&sp24); +#endif } Vec lbl_1_data_60[6] = { diff --git a/src/REL/m434Dll/map.c b/src/REL/m434Dll/map.c index ee77f381..79bb9202 100644 --- a/src/REL/m434Dll/map.c +++ b/src/REL/m434Dll/map.c @@ -348,6 +348,9 @@ void fn_1_2978(ModelData *model, Mtx mtx) GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); +#ifdef TARGET_PC + GXDestroyTexObj(&spC); +#endif } void fn_1_3004(void) @@ -468,6 +471,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 }; diff --git a/src/REL/m440Dll/main.c b/src/REL/m440Dll/main.c index b961d16b..def8da7f 100644 --- a/src/REL/m440Dll/main.c +++ b/src/REL/m440Dll/main.c @@ -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) @@ -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]) diff --git a/src/REL/m442Dll/main.c b/src/REL/m442Dll/main.c index e7ccd667..e8f1e5a4 100644 --- a/src/REL/m442Dll/main.c +++ b/src/REL/m442Dll/main.c @@ -1630,6 +1630,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) diff --git a/src/REL/m448Dll/main.c b/src/REL/m448Dll/main.c index 961f27be..3965c81c 100755 --- a/src/REL/m448Dll/main.c +++ b/src/REL/m448Dll/main.c @@ -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/m455Dll/stage.c b/src/REL/m455Dll/stage.c index ff708c84..71bd7ab4 100644 --- a/src/REL/m455Dll/stage.c +++ b/src/REL/m455Dll/stage.c @@ -968,6 +968,9 @@ 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) @@ -980,6 +983,9 @@ void fn_1_6594(s16 arg0, Work347CUnk4 *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_6698(Vec *arg0, float arg1, float arg2, s32 arg3) diff --git a/src/REL/m456Dll/stage.c b/src/REL/m456Dll/stage.c index 8e13a6cf..14e18f6b 100644 --- a/src/REL/m456Dll/stage.c +++ b/src/REL/m456Dll/stage.c @@ -857,6 +857,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 +873,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/m460Dll/map.c b/src/REL/m460Dll/map.c index 15fa7f53..3ce6f725 100644 --- a/src/REL/m460Dll/map.c +++ b/src/REL/m460Dll/map.c @@ -398,6 +398,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/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/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/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/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/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/board/space.c b/src/game/board/space.c index d092af1e..c76fac73 100644 --- a/src/game/board/space.c +++ b/src/game/board/space.c @@ -1095,6 +1095,10 @@ void BoardSpaceInit(s32 data_num) } } spaceDrawF = 1; +#ifdef TARGET_PC + GXDestroyTexObj(&spaceHiliteTex); + GXDestroyTexObj(&spaceTex); +#endif } void BoardSpaceDestroy(void) diff --git a/src/game/hsfdraw.c b/src/game/hsfdraw.c index 5dd8c0ff..fbac2536 100755 --- a/src/game/hsfdraw.c +++ b/src/game/hsfdraw.c @@ -1604,6 +1604,9 @@ static s32 SetShadowTex(void) { 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) { @@ -1837,6 +1840,10 @@ static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 GXInitTexObjLOD(&sp1C, GX_LIN_MIP_LIN, GX_LINEAR, 0.0f, arg1->maxLod - 1, 0.0f, GX_TRUE, GX_TRUE, GX_ANISO_1); } GXLoadTexObj(&sp1C, arg3); +#ifdef TARGET_PC + GXDestroyTexObj(&sp1C); + GXDestroyTlutObj(&sp10); +#endif } static void objNull(ModelData *arg0, HsfObject *arg1) { diff --git a/src/game/printfunc.c b/src/game/printfunc.c index 7211f4e5..032e786e 100644 --- a/src/game/printfunc.c +++ b/src/game/printfunc.c @@ -288,6 +288,9 @@ void pfDrawFonts(void) } } } +#ifdef TARGET_PC + GXDestroyTexObj(&font_tex); +#endif } #define SAFETY_W 16 diff --git a/src/game/sprput.c b/src/game/sprput.c index c2b061b1..8fb011d4 100644 --- a/src/game/sprput.c +++ b/src/game/sprput.c @@ -240,6 +240,10 @@ 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); + GXDestroyTlutObj(&tlut_obj); +#endif } void HuSprExecLayerSet(short draw_no, short layer) @@ -252,4 +256,4 @@ static void HuSprLayerHook(short layer) { HuSprDispInit(); HuSprExec(HuSprLayerDrawNo[layer]); -} \ No newline at end of file +} diff --git a/src/game/wipe.c b/src/game/wipe.c index e35ac056..919ff550 100644 --- a/src/game/wipe.c +++ b/src/game/wipe.c @@ -332,4 +332,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/audio.c b/src/port/audio.c index f6e78076..639159b1 100644 --- a/src/port/audio.c +++ b/src/port/audio.c @@ -478,30 +478,6 @@ void HuAudDllSndGrpSet(u16 ovl) { } void HuAudSndGrpSetSet(s16 dataSize) { - void *buf; - OSTick osTick; - s32 numPlay; - s32 err; - - if (sndGroupBak != dataSize) { - // msmMusStopAll(1, 0); - // msmSeStopAll(1, 0); - osTick = OSGetTick(); - // while ((msmMusGetNumPlay(1) != 0 || msmSeGetNumPlay(1) != 0) - // && OSTicksToMilliseconds(OSGetTick() - osTick) < 500); - OSReport("%d\n", OSTicksToMilliseconds(OSGetTick() - osTick)); - if (OSTicksToMilliseconds(OSGetTick() - osTick) >= 500) { - // numPlay = msmSeGetNumPlay(1); - // OSReport("Timed Out! Mus %d:SE %d\n", msmMusGetNumPlay(1), numPlay); - } - OSReport("GroupSet %d\n", dataSize); - sndGroupBak = dataSize; - // err = msmSysDelGroupAll(); - // buf = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(1)); - // err = msmSysLoadGroupSet(dataSize, buf); - OSReport("***********GroupSet Error %d\n", err); - // HuMemDirectFree(buf); - } } void HuAudSndGrpSet(s16 grpId) { From a09f283d77b340cf3adb990852a6781dc64ecf46 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Wed, 9 Apr 2025 01:38:15 +0200 Subject: [PATCH 46/47] Move the tex obj destroy in board/space --- src/game/board/space.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/game/board/space.c b/src/game/board/space.c index c76fac73..691a920a 100644 --- a/src/game/board/space.c +++ b/src/game/board/space.c @@ -1095,10 +1095,6 @@ void BoardSpaceInit(s32 data_num) } } spaceDrawF = 1; -#ifdef TARGET_PC - GXDestroyTexObj(&spaceHiliteTex); - GXDestroyTexObj(&spaceTex); -#endif } void BoardSpaceDestroy(void) @@ -1115,4 +1111,8 @@ void BoardSpaceDestroy(void) HuMemDirectFree(spaceTexData); spaceTexData = NULL; } +#ifdef TARGET_PC + GXDestroyTexObj(&spaceHiliteTex); + GXDestroyTexObj(&spaceTex); +#endif } From 7096111235a85d00032bbda600cf5b047adc8ceb Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Wed, 9 Apr 2025 02:02:29 +0200 Subject: [PATCH 47/47] Revert settings.json --- .vscode/settings.json | 59 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/.vscode/settings.json b/.vscode/settings.json index dcf6fec4..bd742134 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -83,4 +83,63 @@ "compile_commands.json": true }, "cmake.ignoreCMakeListsMissing": true, + "editor.fontFamily": "Fira Code", + "editor.fontLigatures": true, + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/VR_NR/Community/VC/Auxiliary/Build/vcvarsall.bat", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false }